Index: ipk/source/epg_crossepg_0_41_svn38/CONTROL/control
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/CONTROL/control	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/CONTROL/control	(revision 3613)
@@ -0,0 +1,10 @@
+Package: enigma2-plugin-epg-crossepg
+Version: 0.41
+Architecture: sh4
+OE: CrossEPG by sandro cavazzoni for SKYit, SKYuk, AUsat
+Section: epg
+Priority: optional
+Maintainer: sandro cavazzoni
+Homepage: http://code.google.com/p/crossepg/
+Source: http://code.google.com/p/crossepg/
+Description: Plugin CrossEPG by sandro cavazzoni (modded by Civer) for SKYit, SKYuk and AUsat
Index: ipk/source/epg_crossepg_0_41_svn38/CONTROL/postinst
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/CONTROL/postinst	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/CONTROL/postinst	(revision 3613)
@@ -0,0 +1,12 @@
+#!/bin/sh
+TMP=/tmp/.epg
+
+echo "successfully installed"
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo new freespace size $FREE kb
+fi
+exit 0
Index: ipk/source/epg_crossepg_0_41_svn38/CONTROL/postrm
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/CONTROL/postrm	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/CONTROL/postrm	(revision 3613)
@@ -0,0 +1,14 @@
+#!/bin/sh
+TMP=/tmp/.epg
+PLUGINDIR=/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG
+rm -r $PLUGINDIR > /dev/null 2>&1
+
+echo "successfully removed"
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo new freespace size $FREE kb
+fi
+exit 0
Index: ipk/source/epg_crossepg_0_41_svn38/CONTROL/preinst
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/CONTROL/preinst	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/CONTROL/preinst	(revision 3613)
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+TMP=/tmp/.epg
+echo "syncing disk"
+sync
+
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	SIZE=307
+	echo "checking freespace"
+	echo packege size $SIZE kb
+	echo freespace size $FREE kb
+	if  [ "$FREE" -lt "$SIZE" ]; then
+		echo "sorry no freespace left on device"
+		exit 1
+	else
+		echo ok
+	fi
+fi   
+echo "installing CrossEPG 0.41 ..."
+echo "checking OS"
+if  [ `cat /etc/motd | grep AAF | grep M | grep rev | wc -l` -eq 0 ]; then                      
+	echo ---------------------------
+	echo DONT USE this IPK Package!!
+	echo ---
+	echo Only for AAF Image!!
+	echo ---------------------------
+	exit 1
+fi
+exit 0
Index: ipk/source/epg_crossepg_0_41_svn38/CONTROL/prerm
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/CONTROL/prerm	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/CONTROL/prerm	(revision 3613)
@@ -0,0 +1,11 @@
+#!/bin/sh
+TMP=/tmp/.epg
+echo "syncing disk"
+sync
+if [ `df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1 | wc -l` -eq 1 ]; then
+	SPACE=`df | grep /dev/mtdblock | grep var | sed 's/ \+/ /g' | cut -d ' ' -f4 | tail -n1`
+	FREE=`expr $SPACE - 100`
+	echo freespace size $FREE kb
+fi
+echo "removing CrossEPG v0.41"
+exit 0
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/crossepg_epgmove.sh
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/crossepg_epgmove.sh	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/crossepg_epgmove.sh	(revision 3613)
@@ -0,0 +1,21 @@
+#!/bin/sh
+HOME=`echo $0 | sed "s/crossepg_epgmove\.sh//"`
+
+if [ -f "$HOME/crossepg.config" ] # if configuration exist
+then
+	DBROOT=`cat $HOME/crossepg.config | grep db_root= | sed "s/db_root=//"`
+else # else default path
+	DBROOT="/media/hdd/crossepg"
+fi
+
+if [ -f "$DBROOT/ext.epg.dat" ] # try on configuration path
+then
+	echo copying ext.epg.dat from $DBROOT
+	$HOME/crossepg_epgcopy "$DBROOT/ext.epg.dat" /media/hdd/epg.dat
+elif [ -f "/media/hdd/crossepg/ext.epg.dat" ] # if we have a bad path try with default path
+then
+	echo copying ext.epg.dat from /media/hdd/crossepg/
+	$HOME/crossepg_epgcopy /media/hdd/crossepg/ext.epg.dat /media/hdd/epg.dat
+else # no epg found
+	echo ext.epg.dat not found
+fi
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.conf
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.conf	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.conf	(revision 3613)
@@ -0,0 +1,12 @@
+# nid ,tsid, sid
+nid=4096
+tsid=17
+sid=17008
+namespace=102236160
+# channels pids
+channels_pids=17
+# titles pids
+titles_pids=48|49|50|51|52|53|54|55
+# summaries pids
+summaries_pids=64|65|66|67|68|69|70|71
+protocol=opentv
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.dict
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.dict	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/ausat_optusc1_156.0.dict	(revision 3613)
@@ -0,0 +1,512 @@
+ =101010111000110000101001100
+ =101010111000110000101001101
+ =101010111000110000101001110
+ =101010111000110000101001111
+ =101010111000110000101010000
+ =101010111000110000101010001
+ =101010111000110000101010010
+ =101010111000110000101010011
+ =101010111000110000101010100
+ =0001000
+ =1110111
+ =101010111000110000101010101
+ =101010111000110000101010110
+ =101010111000110000101010111
+ =101010111000110000101011000
+ =101010111000110000101011001
+ =101010111000110000101011010
+ =101010111000110000101011011
+ =101010111000110000101011100
+ =101010111000110000101011101
+ =101010111000110000101011110
+ =101010111000110000101011111
+ =101010111000110000101100000
+ =101010111000110000101100001
+ =101010111000110000101100010
+ =101010111000110000101100011
+ =101010111000110000101100100
+ =101010111000110000101100101
+ =101010111000110000101100110
+ =101010111000110000101100111
+ =101010111000110000101101000
+ =101010111000110000101101001
+ =110
+!=01000011000
+"=101010111000110000101101010
+#=101010111000110000101101011
+$=1010101110001101
+%=101010111000110000101101100
+&=10000011101
+'=10000010
+(=11101000101
+)=1010101100
+*=100010101110
++=101010111000110000101101101
+,=1011000
+-=10001011
+.=1110110
+/=00010100011110
+0=111010010
+1=101100111
+2=1000101000
+3=1000001111
+4=0001010000
+5=1110101000
+6=1000101001
+7=1000100010
+8=10001010110
+9=0100001101
+:=11101000110
+;=00010100010
+<=1110100011111
+==101010111000110000101101110
+>=1110101001100
+?=111010100111
+@=101010111000110001
+A=11100010
+B=01000000
+C=01000010
+D=111000111
+E=1110100000
+F=101010100
+G=100010000
+H=101010101
+I=1110100001
+J=000101001
+K=1110100111
+L=100000110
+M=10001001
+N=111010111
+O=010000010
+P=00010101
+Q=1000101010111
+R=111010110
+S=0001001
+T=0001011
+U=10101011101
+V=11101010101
+W=10110010
+X=1110001101101111
+Y=10101011110
+Z=1110101010000
+[=10101011100011001
+\=101010111000110000101101111
+]=11100011011011100
+^=101010111000110000101110000
+_=101010111000110000101110001
+`=11101010010
+a=1001
+b=1110000
+c=111001
+d=01001
+e=1111
+f=100001
+g=100011
+h=10111
+i=0101
+j=11100011010
+k=1000000
+l=10100
+m=101011
+n=0111
+o=0011
+p=000111
+q=10101011011
+r=0010
+s=0000
+t=0110
+u=101101
+v=1010100
+w=000110
+x=1110101011
+y=010001
+z=1011001100
+{=101010111000110000101110010
+|=101010111000110000101110011
+}=101010111000110000101110100
+~=101010111000110000101110101
+ =101010111000110000101110110
+ =101010111000110000101110111
+ =101010111000110000101111000
+ =101010111000110000101111001
+ =101010111000110000101111010
+ =101010111000110000101111011
+ =101010111000110000101111100
+ =101010111000110000101111101
+ =101010111000110000101111110
+ =101010111000110000101111111
+ =101010111000110000110000000
+ =101010111000110000110000001
+ =101010111000110000110000010
+ =101010111000110000110000011
+ =101010111000110000110000100
+ =101010111000110000110000101
+ =101010111000110000110000110
+ =101010111000110000110000111
+ =101010111000110000110001000
+ =101010111000110000110001001
+ =101010111000110000110001010
+ =101010111000110000110001011
+ =101010111000110000110001100
+ =101010111000110000110001101
+ =101010111000110000110001110
+ =101010111000110000110001111
+ =101010111000110000110010000
+ =101010111000110000110010001
+ =101010111000110000110010010
+ =11100011011011101
+ =101010111000110000110010011
+ =101010111000110000110010100
+ =101010111000110000110010101
+ =101010111000110000110010110
+¡=101010111000110000110010111
+¢=101010111000110000110011000
+£=101010111000110000110011001
+¤=101010111000110000110011010
+¥=101010111000110000110011011
+¦=101010111000110000110011100
+§=101010111000110000110011101
+¨=101010111000110000110011110
+©=101010111000110000110011111
+ª=101010111000110000110100000
+«=101010111000110000110100001
+¬=101010111000110000110100010
+­=101010111000110000110100011
+®=101010111000110000110100100
+¯=101010111000110000110100101
+°=101010111000110000110100110
+±=101010111000110000110100111
+²=101010111000110000110101000
+³=101010111000110000110101001
+´=101010111000110000110101010
+µ=101010111000110000110101011
+¶=101010111000110000110101100
+·=101010111000110000110101101
+¸=101010111000110000110101110
+¹=101010111000110000110101111
+º=101010111000110000110110000
+»=101010111000110000110110001
+¼=101010111000110000110110010
+½=101010111000110000110110011
+¾=101010111000110000110110100
+¿=101010111000110000110110101
+À=101010111000110000110110110
+Á=101010111000110000110110111
+Â=101010111000110000110111000
+Ã=101010111000110000110111001
+Ä=101010111000110000110111010
+Å=101010111000110000110111011
+Æ=101010111000110000110111100
+Ç=101010111000110000110111101
+È=101010111000110000110111110
+É=101010111000110000110111111
+Ê=101010111000110000111000000
+Ë=101010111000110000111000001
+Ì=101010111000110000111000010
+Í=101010111000110000111000011
+Î=101010111000110000111000100
+Ï=101010111000110000111000101
+Ð=101010111000110000111000110
+Ñ=101010111000110000111000111
+Ò=101010111000110000111001000
+Ó=101010111000110000111001001
+Ô=101010111000110000111001010
+Õ=101010111000110000111001011
+Ö=101010111000110000111001100
+×=101010111000110000111001101
+Ø=101010111000110000111001110
+Ù=101010111000110000111001111
+Ú=101010111000110000111010000
+Û=101010111000110000111010001
+Ü=101010111000110000111010010
+Ý=101010111000110000111010011
+Þ=101010111000110000111010100
+ß=101010111000110000111010101
+à=101010111000110000111010110
+á=101010111000110000111010111
+â=101010111000110000111011000
+ã=101010111000110000111011001
+ä=101010111000110000111011010
+å=101010111000110000111011011
+æ=101010111000110000111011100
+ç=101010111000110000111011101
+è=101010111000110000111011110
+é=101010111000110000111011111
+ê=101010111000110000111100000
+ë=101010111000110000111100001
+ì=101010111000110000111100010
+í=101010111000110000111100011
+î=101010111000110000111100100
+ï=101010111000110000111100101
+ð=101010111000110000111100110
+ñ=101010111000110000111100111
+ò=101010111000110000111101000
+ó=101010111000110000111101001
+ô=101010111000110000111101010
+õ=101010111000110000111101011
+ö=101010111000110000111101100
+÷=101010111000110000111101101
+ø=101010111000110000111101110
+ù=101010111000110000111101111
+ú=101010111000110000111110000
+û=101010111000110000111110001
+ü=101010111000110000111110010
+ý=101010111000110000111110011
+þ=101010111000110000111110100
+ÿ=101010111000110000111110101
+(Including =10101011111110
+(New Series)=11101000100010
+(Part =1110100011101
+(Repeat)=1110100110
+(Stereo)=010000111
+(Stereo) (Teletext)=010000011
+(Teletext)=1110001100
+(Widescreen)=100000111001110
+Action=101010111000111
+Adventures=10110011011111
+America=0100001100100
+Animated=111010100110111
+Australia=0100001100101
+Away=11101010100010
+BBC=10101011111111
+Baby=11100011011000
+Best=11101010100011
+Big=10110011011000
+Bill=1000101011111
+Black=1000101010000
+Blue=1011001101110
+Breakfast=000101000110
+Britain=1010101111100
+British=1110100011100
+Business=0100001100110
+Call=1010101111101
+Cartoon=10101011100000
+Channel=10101011100001
+Children=11101010100111
+Clock=11100011011001
+Comedy=11101000100011
+Cook=111010101001010
+Country=111010100110110
+Directed by =101010110100
+Drama=0100001100111
+East=1000101010001
+Education=100000111001111
+English=00010100011111
+Europe=0001010001110
+Extra=10110011011001
+Final=10101011100010
+Financial=111000110110100
+For=111000110111
+French=11101000111101
+From=1000101010010
+George=1010101111110
+Get=1000100011010
+Girls=10001000110110
+Golden=10001000110111
+Golf=111010101001011
+Good=1010101101010
+Great=11101000100100
+Hampshire=111010101001100
+Headlines=1000101010011
+Hear=11101010011010
+Hill=1000001110000
+Hollywood=111000110110101
+Home=1000101010100
+Hour=11101000100101
+House=1000001110010
+How=1010101101011
+ITN=11101010100100
+Important=111010101001101
+Including=1000101011110
+International=11101000100110
+John=10001000111
+Last=11101000100111
+Late=10000011100110
+Learn=10001010101100
+Little=10001010101101
+Live=1110100010000
+London=11101000111100
+Look=10110011011110
+Lunch=111000110110110
+Man=1000101010101
+Mark=1000001110001
+Meridian=101010111001
+Michael=1011001101101
+Minutes=101010111000110000111110110
+More=101010111000110000111110111
+Morning=101010111000110000111111000
+Murder=101010111000110000111111001
+Nation=101010111000110000111111010
+Neighbours=101010111000110000111111011
+New=101010111000110000111111100
+News & Weather=101010111000110000111111101
+News And Weather=101010111000110000111111110
+Paul=101010111000110000111111111
+Plus=10101011100011000000000000
+Prayer=10101011100011000000000001
+Present=10101011100011000000000010
+Presented by=10101011100011000000000011
+Quiz=10101011100011000000000100
+Regional=10101011100011000000000101
+Represent=10101011100011000000000110
+Resource=10101011100011000000000111
+Review=10101011100011000000001000
+Richard=10101011100011000000001001
+School=10101011100011000000001010
+Series=10101011100011000000001011
+Service=10101011100011000000001100
+Show=10101011100011000000001101
+Smith=10101011100011000000001110
+South=10101011100011000000001111
+Sport=10101011100011000000010000
+Star=10101011100011000000010001
+Street=10101011100011000000010010
+TV=10101011100011000000010011
+Teaching=10101011100011000000010100
+The=10101011100011000000010101
+Today=10101011100011000000010110
+Tonight=10101011100011000000010111
+Weather=10101011100011000000011000
+Western=10101011100011000000011001
+Westminster=10101011100011000000011010
+William=10101011100011000000011011
+With=10101011100011000000011100
+World=10101011100011000000011101
+about=10101011100011000000011110
+action-packed=10101011100011000000011111
+adventure=10101011100011000000100000
+afternoon=10101011100011000000100001
+alert=10101011100011000000100010
+all-star cast=10101011100011000000100011
+and=10101011100011000000100100
+anywhere=10101011100011000000100101
+audience=10101011100011000000100110
+based=10101011100011000000100111
+book=10101011100011000000101000
+business=10101011100011000000101001
+but=10101011100011000000101010
+celebrity=10101011100011000000101011
+chance=10101011100011000000101100
+chat=10101011100011000000101101
+child=10101011100011000000101110
+classic=10101011100011000000101111
+consumer=10101011100011000000110000
+contestants=10101011100011000000110001
+continues=10101011100011000000110010
+controversial=10101011100011000000110011
+dealer=10101011100011000000110100
+deliver=10101011100011000000110101
+discuss=10101011100011000000110110
+document=10101011100011000000110111
+drama=10101011100011000000111000
+edition=10101011100011000000111001
+education=10101011100011000000111010
+events=10101011100011000000111011
+every=10101011100011000000111100
+excellent=10101011100011000000111101
+eyed=10101011100011000000111110
+family=10101011100011000000111111
+famous=10101011100011000001000000
+featur=10101011100011000001000001
+film=10101011100011000001000010
+football=10101011100011000001000011
+for=10101011100011000001000100
+from=10101011100011000001000101
+general knowledge=10101011100011000001000110
+get=10101011100011000001000111
+guest=10101011100011000001001000
+guests=10101011100011000001001001
+has=10101011100011000001001010
+have=10101011100011000001001011
+headline=10101011100011000001001100
+her=10101011100011000001001101
+his=10101011100011000001001110
+home and abroad=10101011100011000001001111
+host=10101011100011000001010000
+how=10101011100011000001010001
+in=10101011100011000001010010
+including=10101011100011000001010011
+international=10101011100011000001010100
+interview=10101011100011000001010101
+introduce=10101011100011000001010110
+investigat=10101011100011000001010111
+invites=10101011100011000001011000
+issue=10101011100011000001011001
+knowledge=10101011100011000001011010
+life=10101011100011000001011011
+live=10101011100011000001011100
+look=10101011100011000001011101
+magazine=10101011100011000001011110
+meets =10101011100011000001011111
+morning=10101011100011000001100000
+morning magazine=10101011100011000001100001
+music=10101011100011000001100010
+near=10101011100011000001100011
+network=10101011100011000001100100
+new=10101011100011000001100101
+new series=10101011100011000001100110
+night=10101011100011000001100111
+of=10101011100011000001101000
+on=10101011100011000001101001
+onight=10101011100011000001101010
+out=10101011100011000001101011
+over=10101011100011000001101100
+part=10101011100011000001101101
+people=10101011100011000001101110
+phone=10101011100011000001101111
+poli=10101011100011000001110000
+police=10101011100011000001110001
+political chat show=10101011100011000001110010
+popular=10101011100011000001110011
+presented by =10101011100011000001110100
+programm=10101011100011000001110101
+quiz=10101011100011000001110110
+reconstruction=10101011100011000001110111
+report=10101011100011000001111000
+review=10101011100011000001111001
+school=10101011100011000001111010
+series=10101011100011000001111011
+short =10101011100011000001111100
+show=10101011100011000001111101
+some=10101011100011000001111110
+starring=10101011100011000001111111
+stars=10101011100011000010000000
+stories=10101011100011000010000001
+story=10101011100011000010000010
+studio=10101011100011000010000011
+surprise=10101011100011000010000100
+teller=10101011100011000010000101
+that=10101011100011000010000110
+the=10101011100011000010000111
+their=10101011100011000010001000
+them=10101011100011000010001001
+they=10101011100011000010001010
+this=10101011100011000010001011
+through=10101011100011000010001100
+to=10101011100011000010001101
+top=10101011100011000010001110
+trans=10101011100011000010001111
+under=10101011100011000010010000
+up=10101011100011000010010001
+very=10101011100011000010010010
+video=10101011100011000010010011
+view=10101011100011000010010100
+vintage=10101011100011000010010101
+visit=10101011100011000010010110
+was=10101011100011000010010111
+way=10101011100011000010011000
+week=10101011100011000010011001
+well=10101011100011000010011010
+what=10101011100011000010011011
+when=10101011100011000010011100
+which=10101011100011000010011101
+while=10101011100011000010011110
+who=10101011100011000010011111
+will=10101011100011000010100000
+win=10101011100011000010100001
+with=10101011100011000010100010
+words=10101011100011000010100011
+world=10101011100011000010100100
+written=10101011100011000010100101
+year=100010001100
+you=10110011010
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.conf
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.conf	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.conf	(revision 3613)
@@ -0,0 +1,12 @@
+# nid ,tsid, sid
+nid=64511
+tsid=5800
+sid=3635
+namespace=8519680
+# channels pids
+channels_pids=17
+# titles pids
+titles_pids=48|49|50|51|52|53|54|55
+# summaries pids
+summaries_pids=64|65|66|67|68|69|70|71
+protocol=opentv
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.dict
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.dict	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyit_hotbird_13.0.dict	(revision 3613)
@@ -0,0 +1,510 @@
+ =00001011010110001111010101010
+ =00001011010110001111010101011
+ =00001011010110001111010101100
+ =00001011010110001111010101101
+ =00001011010110001111010101110
+ =00001011010110001111010101111
+ =00001011010110001111010110000
+ =00001011010110001111010110001
+ =00001011010110001111010110010
+ =00001011010110001111010110011
+ =00001011010110001111010110100
+ =00001011010110001111010110101
+ =00001011010110001111010110110
+ =1001110
+ =00001011010110001111010110111
+ =00001011010110001111010111000
+ =00001011010110001111010111001
+ =00001011010110001111010111010
+ =00001011010110001111010111011
+ =00001011010110001111010111100
+ =00001011010110001111010111101
+ =00001011010110001111010111110
+ =00001011010110001111010111111
+ =00001011010110001111011000000
+ =00001011010110001111011000001
+ =00001011010110001111011000010
+ =00001011010110001111011000011
+ =00001011010110001111011000100
+ =00001011010110001111011000101
+ =00001011010110001111011000110
+ =00001011010110001111011000111
+ =00001011010110001111011001000
+ =01
+!=1110000011101
+"=11100010000100011
+#=00001011010110001111011001001
+$=00001011010110001111011001010
+%=00001011010110001111011001011
+&=11100010000101
+'=0000100
+(=0000101101010
+)=110100111111
+*=00001011010110001111011001100
++=000010110101100011111
+,=110000
+-=10110011
+.=100110
+/=111000100001001
+0=10010011
+1=100100000
+2=1111011001
+3=1110001110
+4=11000100101
+5=111101110100
+6=101100101111
+7=110100011110
+8=11010001110
+9=1111010111
+:=100100011
+;=10000111101
+<=00001011010110001111011001101
+==00001011010110001111011001110
+>=00001011010110001111011001111
+?=1100110110110
+@=1110001000010000
+A=00001010
+B=111101001
+C=10010100
+D=100001010
+E=111000000
+F=1110001100
+G=100101100
+H=1000011111
+I=1111011111
+J=1100010110
+K=11110100011
+L=001111101
+M=100001101
+N=100001011
+O=1100101011
+P=110100000
+Q=00001011000
+R=110010100
+S=10110100
+T=110101100
+U=110100010011
+V=1001000011
+W=1101000110
+X=1110001011001
+Y=1100011110011
+Z=1100010100110
+[=00001011010110001111011010000
+\=00001011010110001111011010001
+]=00001011010110001111011010010
+^=0000101101011000100
+_=00001011010110001111011010011
+`=00001011010111
+a=11111
+b=11100001
+c=111001
+d=1011000
+e=1010
+f=0011011
+g=000011
+h=10110110
+i=0001
+j=110100010000
+k=110001100
+l=1111001
+m=100010
+n=10111
+o=0010
+p=100011
+q=1110001001
+r=11011
+s=00000
+t=11101
+u=001110
+v=1100111
+w=001100110
+x=11100011110
+y=111101101
+z=0011010
+{=00001011010110001111011010100
+|=00001011010110001111011010101
+}=00001011010110001111011010110
+~=00001011010110001111011010111
+ =00001011010110001111011011000
+ =000010110101100000
+ =00001011010110001111011011001
+ =00001011010110001111011011010
+ =00001011010110001111011011011
+ =00001011010110001111011011100
+ =00001011010110001111011011101
+ =00001011010110001111011011110
+ =00001011010110001111011011111
+ =11100010000100010
+ =000010110101100001
+ =00001011010110001111011100000
+ =00001011010110001111011100001
+ =00001011010110001111011100010
+ =00001011010110001111011100011
+ =00001011010110001111011100100
+ =00001011010110001111011100101
+ =00001011010110001111011100110
+ =00001011010110001111011100111
+ =00001011010110001110
+ =00001011010110001111011101000
+ =00001011010110001111011101001
+ =00001011010110001111011101010
+ =00001011010110001111011101011
+ =0000101101011000101
+ =00001011010110001111011101100
+ =00001011010110001111011101101
+ =00001011010110001111011101110
+ =00001011010110001111011101111
+ =00001011010110001111011110000
+ =00001011010110001111011110001
+ =00001011010110001111011110010
+ =00001011010110001111011110011
+ =00001011010110001111011110100
+¡=00001011010110001111011110101
+¢=00001011010110001111011110110
+£=00001011010110001111011110111
+¤=00001011010110001111011111000
+¥=00001011010110001111011111001
+¦=00001011010110001111011111010
+§=00001011010110001111011111011
+¨=00001011010110001111011111100
+©=00001011010110001111011111101
+ª=00001011010110001111011111110
+«=00001011010110001111011111111
+¬=0000101101011000111100000000
+­=0000101101011000111100000001
+®=0000101101011000111100000010
+¯=0000101101011000111100000011
+°=0000101101011000111100000100
+±=0000101101011000111100000101
+²=0000101101011000111100000110
+³=0000101101011000111100000111
+´=0000101101011000111100001000
+µ=0000101101011000111100001001
+¶=0000101101011000111100001010
+·=0000101101011001
+¸=0000101101011000111100001011
+¹=0000101101011000111100001100
+º=0000101101011000111100001101
+»=0000101101011000111100001110
+¼=0000101101011000111100001111
+½=0000101101011000111100010000
+¾=0000101101011000111100010001
+¿=0000101101011000111100010010
+À=0000101101011000111100010011
+Á=0000101101011000111100010100
+Â=0000101101011000111100010101
+Ã=0000101101011000111100010110
+Ä=0000101101011000111100010111
+Å=0000101101011000111100011000
+Æ=000010110101101
+Ç=0000101101011000111100011001
+È=0000101101011000111100011010
+É=0000101101011000111100011011
+Ê=0000101101011000111100011100
+Ë=0000101101011000111100011101
+Ì=0000101101011000111100011110
+Í=0000101101011000111100011111
+Î=0000101101011000111100100000
+Ï=0000101101011000111100100001
+Ð=0000101101011000111100100010
+Ñ=0000101101011000111100100011
+Ò=0000101101011000111100100100
+Ó=0000101101011000111100100101
+Ô=0000101101011000111100100110
+Õ=0000101101011000111100100111
+Ö=0000101101011000111100101000
+×=0000101101011000111100101001
+Ø=0000101101011000111100101010
+Ù=0000101101011000111100101011
+Ú=0000101101011000111100101100
+Û=0000101101011000111100101101
+Ü=0000101101011000111100101110
+Ý=0000101101011000111100101111
+Þ=0000101101011000111100110000
+ß=0000101101011000111100110001
+à=0000101101011000110
+á=0000101101011000111100110010
+â=0000101101011000111100110011
+ã=0000101101011000111100110100
+ä=0000101101011000111100110101
+å=0000101101011000111100110110
+æ=0000101101011000111100110111
+ç=0000101101011000111100111000
+è=0000101101011000111100111001
+é=0000101101011000111100111010
+ê=0000101101011000111100111011
+ë=0000101101011000111100111100
+ì=0000101101011000111100111101
+í=0000101101011000111100111110
+î=0000101101011000111100111111
+ï=0000101101011000111101000000
+ð=0000101101011000111101000001
+ñ=0000101101011000111101000010
+ò=0000101101011000111101000011
+ó=0000101101011000111101000100
+ô=0000101101011000111101000101
+õ=0000101101011000111101000110
+ö=0000101101011000111101000111
+÷=0000101101011000111101001000
+ø=0000101101011000111101001001
+ù=0000101101011000111101001010
+ú=0000101101011000111101001011
+û=0000101101011000111101001100
+ü=0000101101011000111101001101
+ý=0000101101011000111101001110
+þ=0000101101011000111101001111
+ÿ=0000101101011000111101010000
+(dur=100001111000
+2001=001111100
+2002=111000110101
+Adulti=100001111001
+Alle=1100110111
+American=10110101100
+Argentina=110010101011
+Attualita'=110001000001
+Bateman=10010111111
+Bechis=1100010111011
+Campionato=1101001111000
+Carlos=1101000011101
+Cartoon=11110111011
+Club=10000110010
+Commedia=100001100001
+Con=10110101101
+D'Alo'=1100100011111
+Da=1001010111
+Dal=1111010100011
+Dalle=10010111110
+Drammatico=111101111001
+Durante=1101000111110
+Echeverria=1100011100110
+Emmanuelle=1100011100111
+Enzo=1101000100010
+Fares=00001011011
+Figli=1100100011000
+Film=1101011010
+Fine=100001001100
+Fiumi=00001011100
+Francia=10000110001
+Giallo=110001001000
+Giovanni=1100011101000
+Harron=10011110000
+ITV=1101000100100
+Il=0011001110
+In=1001011011
+Informazione=11110100001
+Intrattenimento=1000010000
+Italia=11100010001
+Javier=1100011101001
+Jean=10010101011
+John=1111011100101
+Kassovitz=00110000101
+L'appassionante=00001011101
+La=1001010110
+Le=11000100111
+Ma=1101001110
+Magazine=100001110010
+Mammuccari=1100011101010
+Manhattan=10110010010
+Marco=1110001011110
+Mary=10011110110
+Mathieu=00110000110
+Michael=1101001111011
+Momo=110010001011
+Nadia=00001011110
+News=110100111110
+Notiziario=101100101110
+Orario=1001000100
+Patrick=10110010110
+Paul=000010110011
+Per=11000100110
+Peter=1100101010101
+Programmazione=1110001101001
+Psycho=10011110111
+Regia=110010000
+Reno=00110000111
+Rosa=1100011110101
+Rubrica=1111011100100
+Sandrelli=1100100010001
+Seigner=1100011101011
+Servizi=001100000110
+Snow=100100001000
+Sorvino=1100011110110
+Stefania=1101011011010
+Stream=111101000100
+Street=10110101111
+Streghe=1100011101100
+TRAMA:=1100010111010
+Teo=110001110010
+USA=1101000101
+Un=11110111101
+Una=101100100010
+Veronesi=1100011101101
+Vincent=00110001001
+Wall=11000100001
+World=001100010110
+XXX=10000110011
+ad=1111010110
+affidare=00110000100
+ai=1001011110
+al=0011110
+alla=11010110111
+alle=111101110101
+amici=111000101110
+ammazzare=10011110001
+and=1111010101
+anfiteatro=1100100011001
+anni=10010101010
+as=110011010
+attraverso=1101011011001
+aver=000010110100
+bambina=1101000100011
+banda=1110001011000
+bello=10110101000
+brani=1100100010010
+broker=10011110010
+business=000010110010
+casa=101100100011
+casi=10000111010
+cassel=00001011111
+cerca=11100010100
+che=10010010
+chilometri=00110001111
+citta'=110001000101
+come=110001011100
+compagnia=1100110110001
+con=11010010
+conquista=1101000111111
+contro=110001000100
+crede=1110001111110
+cui=001100111110
+cultura=100001110001
+curiosita'=001100010111
+da=00110010
+dai=1101000100101
+dal=11110110000
+dalla=100101101001
+decidG266  :  dedicato=0000101101011000111101010001
+degli=110001000000
+dei=0011000110
+del=111100010
+della=1011001010
+delle=11000111000
+destra=1100101010001
+deve=1111010001011
+di=100000
+diabolici=1100100011010
+dice=1100110110000
+diretta=100100001011
+distanza=00110000000
+divide=10110010011
+divisi=1100011101110
+dolce=1101001111001
+domani=1111010100010
+due=1100011111
+e'=110001101
+ed=101101111
+essere=1110001000000
+esseri=1110001111101
+eventiG=0000101101011000111101010010
+fatti=001100111111
+feste=10110101001
+film=10000100011
+gemelli=1110001000011
+giorno=11110100000
+giovane=11100000110
+giovani=1111011110001
+gli=100101110
+grande=1110001011111
+grandi=1111010001010
+grigi'=1100100011011
+ha=1100010101
+il=11001011
+imbattere=1100100011100
+in=1101010
+incinta=1100101010000
+informazione=110001001001
+inizio=1001010100
+internazionale=100001110111
+interviste=100100001001
+la=11001100
+lavoro=11010000110
+le=11010111
+levatrice=1100011101111
+libro=1100011110100
+lo=111100011
+loro=11000101000
+ma=10011111
+maggiori=100001110110
+malcapitati=10110010000
+maschietto=1100011110000
+mondo=11100010101
+musica=111000001111
+nato=111101110011
+nel=11110111000
+nella=1111010100000
+nello=10000100100
+news=10010110101
+non=00110011110
+nord=1100100011101
+nuovi=001100000111
+of=1011010101
+ogni=100001110011
+ore=1101000010
+parte=1101011011011
+per=00111111
+piccola=1101001111010
+piu'=1001111010
+poliziotti=00110001110
+porpora=00110000001
+prima=1110001111100
+produttore=1100011110111
+programmazione=1110001101000
+proprio=1101011011000
+prossimo=1001000101
+quattro=1111011000110
+regime=1100011110001
+ricco=10110101110
+ricordi=1100101010100
+rovine=1110001000001
+salvare=1110000011100
+scrittore=1100110110111
+scrive=1101000011110
+serie=1111011000111
+servizi=100001110000
+settimanale=1100010100111
+si=11110000
+singolari=00110001000
+solo=110010001010
+sono=11000100011
+stesso=10000100010
+storia=11100011011
+streghe=1100100010000
+su=1110000010
+sua=10000100101
+successo=100101101000
+sui=110011011001
+sulle=100100001010
+suo=10000100111
+suoi=1101000011100
+tale=110010101001
+tempo=111101100010
+the=11110101001
+timida=1100100011110
+torturare=10011110011
+tra=110100110
+trasformarlo=1100011110010
+trecento=00110000010
+trovato=1101000011111
+tutto=110011011010
+ultimi=1100100010011
+un=11001001
+una=101101110
+uno=111000101101
+uomini=1111011110000
+vedono=00110001010
+vengono=100001001101
+verso=100001100000
+viaggio=110001010010
+viene=1111010100001
+vita=11000101111
+vuole=1110001111111
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.conf
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.conf	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.conf	(revision 3613)
@@ -0,0 +1,12 @@
+# nid ,tsid, sid
+nid=2
+tsid=2004
+sid=4049
+namespace=18481152
+# channels pids
+channels_pids=17
+# titles pids
+titles_pids=48|49|50|51|52|53|54|55
+# summaries pids
+summaries_pids=64|65|66|67|68|69|70|71
+protocol=opentv
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.dict
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.dict	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.2.dict	(revision 3613)
@@ -0,0 +1,512 @@
+ =101010111000110000101001100
+ =101010111000110000101001101
+ =101010111000110000101001110
+ =101010111000110000101001111
+ =101010111000110000101010000
+ =101010111000110000101010001
+ =101010111000110000101010010
+ =101010111000110000101010011
+ =101010111000110000101010100
+ =0001000
+ =1110111
+ =101010111000110000101010101
+ =101010111000110000101010110
+ =101010111000110000101010111
+ =101010111000110000101011000
+ =101010111000110000101011001
+ =101010111000110000101011010
+ =101010111000110000101011011
+ =101010111000110000101011100
+ =101010111000110000101011101
+ =101010111000110000101011110
+ =101010111000110000101011111
+ =101010111000110000101100000
+ =101010111000110000101100001
+ =101010111000110000101100010
+ =101010111000110000101100011
+ =101010111000110000101100100
+ =101010111000110000101100101
+ =101010111000110000101100110
+ =101010111000110000101100111
+ =101010111000110000101101000
+ =101010111000110000101101001
+ =110
+!=01000011000
+"=101010111000110000101101010
+#=101010111000110000101101011
+$=1010101110001101
+%=101010111000110000101101100
+&=10000011101
+'=10000010
+(=11101000101
+)=1010101100
+*=100010101110
++=101010111000110000101101101
+,=1011000
+-=10001011
+.=1110110
+/=00010100011110
+0=111010010
+1=101100111
+2=1000101000
+3=1000001111
+4=0001010000
+5=1110101000
+6=1000101001
+7=1000100010
+8=10001010110
+9=0100001101
+:=11101000110
+;=00010100010
+<=1110100011111
+==101010111000110000101101110
+>=1110101001100
+?=111010100111
+@=101010111000110001
+A=11100010
+B=01000000
+C=01000010
+D=111000111
+E=1110100000
+F=101010100
+G=100010000
+H=101010101
+I=1110100001
+J=000101001
+K=1110100111
+L=100000110
+M=10001001
+N=111010111
+O=010000010
+P=00010101
+Q=1000101010111
+R=111010110
+S=0001001
+T=0001011
+U=10101011101
+V=11101010101
+W=10110010
+X=1110001101101111
+Y=10101011110
+Z=1110101010000
+[=10101011100011001
+\=101010111000110000101101111
+]=11100011011011100
+^=101010111000110000101110000
+_=101010111000110000101110001
+`=11101010010
+a=1001
+b=1110000
+c=111001
+d=01001
+e=1111
+f=100001
+g=100011
+h=10111
+i=0101
+j=11100011010
+k=1000000
+l=10100
+m=101011
+n=0111
+o=0011
+p=000111
+q=10101011011
+r=0010
+s=0000
+t=0110
+u=101101
+v=1010100
+w=000110
+x=1110101011
+y=010001
+z=1011001100
+{=101010111000110000101110010
+|=101010111000110000101110011
+}=101010111000110000101110100
+~=101010111000110000101110101
+ =101010111000110000101110110
+ =101010111000110000101110111
+ =101010111000110000101111000
+ =101010111000110000101111001
+ =101010111000110000101111010
+ =101010111000110000101111011
+ =101010111000110000101111100
+ =101010111000110000101111101
+ =101010111000110000101111110
+ =101010111000110000101111111
+ =101010111000110000110000000
+ =101010111000110000110000001
+ =101010111000110000110000010
+ =101010111000110000110000011
+ =101010111000110000110000100
+ =101010111000110000110000101
+ =101010111000110000110000110
+ =101010111000110000110000111
+ =101010111000110000110001000
+ =101010111000110000110001001
+ =101010111000110000110001010
+ =101010111000110000110001011
+ =101010111000110000110001100
+ =101010111000110000110001101
+ =101010111000110000110001110
+ =101010111000110000110001111
+ =101010111000110000110010000
+ =101010111000110000110010001
+ =101010111000110000110010010
+ =11100011011011101
+ =101010111000110000110010011
+ =101010111000110000110010100
+ =101010111000110000110010101
+ =101010111000110000110010110
+¡=101010111000110000110010111
+¢=101010111000110000110011000
+£=101010111000110000110011001
+¤=101010111000110000110011010
+¥=101010111000110000110011011
+¦=101010111000110000110011100
+§=101010111000110000110011101
+¨=101010111000110000110011110
+©=101010111000110000110011111
+ª=101010111000110000110100000
+«=101010111000110000110100001
+¬=101010111000110000110100010
+­=101010111000110000110100011
+®=101010111000110000110100100
+¯=101010111000110000110100101
+°=101010111000110000110100110
+±=101010111000110000110100111
+²=101010111000110000110101000
+³=101010111000110000110101001
+´=101010111000110000110101010
+µ=101010111000110000110101011
+¶=101010111000110000110101100
+·=101010111000110000110101101
+¸=101010111000110000110101110
+¹=101010111000110000110101111
+º=101010111000110000110110000
+»=101010111000110000110110001
+¼=101010111000110000110110010
+½=101010111000110000110110011
+¾=101010111000110000110110100
+¿=101010111000110000110110101
+À=101010111000110000110110110
+Á=101010111000110000110110111
+Â=101010111000110000110111000
+Ã=101010111000110000110111001
+Ä=101010111000110000110111010
+Å=101010111000110000110111011
+Æ=101010111000110000110111100
+Ç=101010111000110000110111101
+È=101010111000110000110111110
+É=101010111000110000110111111
+Ê=101010111000110000111000000
+Ë=101010111000110000111000001
+Ì=101010111000110000111000010
+Í=101010111000110000111000011
+Î=101010111000110000111000100
+Ï=101010111000110000111000101
+Ð=101010111000110000111000110
+Ñ=101010111000110000111000111
+Ò=101010111000110000111001000
+Ó=101010111000110000111001001
+Ô=101010111000110000111001010
+Õ=101010111000110000111001011
+Ö=101010111000110000111001100
+×=101010111000110000111001101
+Ø=101010111000110000111001110
+Ù=101010111000110000111001111
+Ú=101010111000110000111010000
+Û=101010111000110000111010001
+Ü=101010111000110000111010010
+Ý=101010111000110000111010011
+Þ=101010111000110000111010100
+ß=101010111000110000111010101
+à=101010111000110000111010110
+á=101010111000110000111010111
+â=101010111000110000111011000
+ã=101010111000110000111011001
+ä=101010111000110000111011010
+å=101010111000110000111011011
+æ=101010111000110000111011100
+ç=101010111000110000111011101
+è=101010111000110000111011110
+é=101010111000110000111011111
+ê=101010111000110000111100000
+ë=101010111000110000111100001
+ì=101010111000110000111100010
+í=101010111000110000111100011
+î=101010111000110000111100100
+ï=101010111000110000111100101
+ð=101010111000110000111100110
+ñ=101010111000110000111100111
+ò=101010111000110000111101000
+ó=101010111000110000111101001
+ô=101010111000110000111101010
+õ=101010111000110000111101011
+ö=101010111000110000111101100
+÷=101010111000110000111101101
+ø=101010111000110000111101110
+ù=101010111000110000111101111
+ú=101010111000110000111110000
+û=101010111000110000111110001
+ü=101010111000110000111110010
+ý=101010111000110000111110011
+þ=101010111000110000111110100
+ÿ=101010111000110000111110101
+(Including =10101011111110
+(New Series)=11101000100010
+(Part =1110100011101
+(Repeat)=1110100110
+(Stereo)=010000111
+(Stereo) (Teletext)=010000011
+(Teletext)=1110001100
+(Widescreen)=100000111001110
+Action=101010111000111
+Adventures=10110011011111
+America=0100001100100
+Animated=111010100110111
+Australia=0100001100101
+Away=11101010100010
+BBC=10101011111111
+Baby=11100011011000
+Best=11101010100011
+Big=10110011011000
+Bill=1000101011111
+Black=1000101010000
+Blue=1011001101110
+Breakfast=000101000110
+Britain=1010101111100
+British=1110100011100
+Business=0100001100110
+Call=1010101111101
+Cartoon=10101011100000
+Channel=10101011100001
+Children=11101010100111
+Clock=11100011011001
+Comedy=11101000100011
+Cook=111010101001010
+Country=111010100110110
+Directed by =101010110100
+Drama=0100001100111
+East=1000101010001
+Education=100000111001111
+English=00010100011111
+Europe=0001010001110
+Extra=10110011011001
+Final=10101011100010
+Financial=111000110110100
+For=111000110111
+French=11101000111101
+From=1000101010010
+George=1010101111110
+Get=1000100011010
+Girls=10001000110110
+Golden=10001000110111
+Golf=111010101001011
+Good=1010101101010
+Great=11101000100100
+Hampshire=111010101001100
+Headlines=1000101010011
+Hear=11101010011010
+Hill=1000001110000
+Hollywood=111000110110101
+Home=1000101010100
+Hour=11101000100101
+House=1000001110010
+How=1010101101011
+ITN=11101010100100
+Important=111010101001101
+Including=1000101011110
+International=11101000100110
+John=10001000111
+Last=11101000100111
+Late=10000011100110
+Learn=10001010101100
+Little=10001010101101
+Live=1110100010000
+London=11101000111100
+Look=10110011011110
+Lunch=111000110110110
+Man=1000101010101
+Mark=1000001110001
+Meridian=101010111001
+Michael=1011001101101
+Minutes=101010111000110000111110110
+More=101010111000110000111110111
+Morning=101010111000110000111111000
+Murder=101010111000110000111111001
+Nation=101010111000110000111111010
+Neighbours=101010111000110000111111011
+New=101010111000110000111111100
+News & Weather=101010111000110000111111101
+News And Weather=101010111000110000111111110
+Paul=101010111000110000111111111
+Plus=10101011100011000000000000
+Prayer=10101011100011000000000001
+Present=10101011100011000000000010
+Presented by=10101011100011000000000011
+Quiz=10101011100011000000000100
+Regional=10101011100011000000000101
+Represent=10101011100011000000000110
+Resource=10101011100011000000000111
+Review=10101011100011000000001000
+Richard=10101011100011000000001001
+School=10101011100011000000001010
+Series=10101011100011000000001011
+Service=10101011100011000000001100
+Show=10101011100011000000001101
+Smith=10101011100011000000001110
+South=10101011100011000000001111
+Sport=10101011100011000000010000
+Star=10101011100011000000010001
+Street=10101011100011000000010010
+TV=10101011100011000000010011
+Teaching=10101011100011000000010100
+The=10101011100011000000010101
+Today=10101011100011000000010110
+Tonight=10101011100011000000010111
+Weather=10101011100011000000011000
+Western=10101011100011000000011001
+Westminster=10101011100011000000011010
+William=10101011100011000000011011
+With=10101011100011000000011100
+World=10101011100011000000011101
+about=10101011100011000000011110
+action-packed=10101011100011000000011111
+adventure=10101011100011000000100000
+afternoon=10101011100011000000100001
+alert=10101011100011000000100010
+all-star cast=10101011100011000000100011
+and=10101011100011000000100100
+anywhere=10101011100011000000100101
+audience=10101011100011000000100110
+based=10101011100011000000100111
+book=10101011100011000000101000
+business=10101011100011000000101001
+but=10101011100011000000101010
+celebrity=10101011100011000000101011
+chance=10101011100011000000101100
+chat=10101011100011000000101101
+child=10101011100011000000101110
+classic=10101011100011000000101111
+consumer=10101011100011000000110000
+contestants=10101011100011000000110001
+continues=10101011100011000000110010
+controversial=10101011100011000000110011
+dealer=10101011100011000000110100
+deliver=10101011100011000000110101
+discuss=10101011100011000000110110
+document=10101011100011000000110111
+drama=10101011100011000000111000
+edition=10101011100011000000111001
+education=10101011100011000000111010
+events=10101011100011000000111011
+every=10101011100011000000111100
+excellent=10101011100011000000111101
+eyed=10101011100011000000111110
+family=10101011100011000000111111
+famous=10101011100011000001000000
+featur=10101011100011000001000001
+film=10101011100011000001000010
+football=10101011100011000001000011
+for=10101011100011000001000100
+from=10101011100011000001000101
+general knowledge=10101011100011000001000110
+get=10101011100011000001000111
+guest=10101011100011000001001000
+guests=10101011100011000001001001
+has=10101011100011000001001010
+have=10101011100011000001001011
+headline=10101011100011000001001100
+her=10101011100011000001001101
+his=10101011100011000001001110
+home and abroad=10101011100011000001001111
+host=10101011100011000001010000
+how=10101011100011000001010001
+in=10101011100011000001010010
+including=10101011100011000001010011
+international=10101011100011000001010100
+interview=10101011100011000001010101
+introduce=10101011100011000001010110
+investigat=10101011100011000001010111
+invites=10101011100011000001011000
+issue=10101011100011000001011001
+knowledge=10101011100011000001011010
+life=10101011100011000001011011
+live=10101011100011000001011100
+look=10101011100011000001011101
+magazine=10101011100011000001011110
+meets =10101011100011000001011111
+morning=10101011100011000001100000
+morning magazine=10101011100011000001100001
+music=10101011100011000001100010
+near=10101011100011000001100011
+network=10101011100011000001100100
+new=10101011100011000001100101
+new series=10101011100011000001100110
+night=10101011100011000001100111
+of=10101011100011000001101000
+on=10101011100011000001101001
+onight=10101011100011000001101010
+out=10101011100011000001101011
+over=10101011100011000001101100
+part=10101011100011000001101101
+people=10101011100011000001101110
+phone=10101011100011000001101111
+poli=10101011100011000001110000
+police=10101011100011000001110001
+political chat show=10101011100011000001110010
+popular=10101011100011000001110011
+presented by =10101011100011000001110100
+programm=10101011100011000001110101
+quiz=10101011100011000001110110
+reconstruction=10101011100011000001110111
+report=10101011100011000001111000
+review=10101011100011000001111001
+school=10101011100011000001111010
+series=10101011100011000001111011
+short =10101011100011000001111100
+show=10101011100011000001111101
+some=10101011100011000001111110
+starring=10101011100011000001111111
+stars=10101011100011000010000000
+stories=10101011100011000010000001
+story=10101011100011000010000010
+studio=10101011100011000010000011
+surprise=10101011100011000010000100
+teller=10101011100011000010000101
+that=10101011100011000010000110
+the=10101011100011000010000111
+their=10101011100011000010001000
+them=10101011100011000010001001
+they=10101011100011000010001010
+this=10101011100011000010001011
+through=10101011100011000010001100
+to=10101011100011000010001101
+top=10101011100011000010001110
+trans=10101011100011000010001111
+under=10101011100011000010010000
+up=10101011100011000010010001
+very=10101011100011000010010010
+video=10101011100011000010010011
+view=10101011100011000010010100
+vintage=10101011100011000010010101
+visit=10101011100011000010010110
+was=10101011100011000010010111
+way=10101011100011000010011000
+week=10101011100011000010011001
+well=10101011100011000010011010
+what=10101011100011000010011011
+when=10101011100011000010011100
+which=10101011100011000010011101
+while=10101011100011000010011110
+who=10101011100011000010011111
+will=10101011100011000010100000
+win=10101011100011000010100001
+with=10101011100011000010100010
+words=10101011100011000010100011
+world=10101011100011000010100100
+written=10101011100011000010100101
+year=100010001100
+you=10110011010
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.conf
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.conf	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.conf	(revision 3613)
@@ -0,0 +1,12 @@
+# nid ,tsid, sid
+nid=2
+tsid=2004
+sid=4049
+namespace=18612224
+# channels pids
+channels_pids=17
+# titles pids
+titles_pids=48|49|50|51|52|53|54|55
+# summaries pids
+summaries_pids=64|65|66|67|68|69|70|71
+protocol=opentv
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.dict
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.dict	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg/providers/skyuk_astra2_28.4.dict	(revision 3613)
@@ -0,0 +1,512 @@
+ =101010111000110000101001100
+ =101010111000110000101001101
+ =101010111000110000101001110
+ =101010111000110000101001111
+ =101010111000110000101010000
+ =101010111000110000101010001
+ =101010111000110000101010010
+ =101010111000110000101010011
+ =101010111000110000101010100
+ =0001000
+ =1110111
+ =101010111000110000101010101
+ =101010111000110000101010110
+ =101010111000110000101010111
+ =101010111000110000101011000
+ =101010111000110000101011001
+ =101010111000110000101011010
+ =101010111000110000101011011
+ =101010111000110000101011100
+ =101010111000110000101011101
+ =101010111000110000101011110
+ =101010111000110000101011111
+ =101010111000110000101100000
+ =101010111000110000101100001
+ =101010111000110000101100010
+ =101010111000110000101100011
+ =101010111000110000101100100
+ =101010111000110000101100101
+ =101010111000110000101100110
+ =101010111000110000101100111
+ =101010111000110000101101000
+ =101010111000110000101101001
+ =110
+!=01000011000
+"=101010111000110000101101010
+#=101010111000110000101101011
+$=1010101110001101
+%=101010111000110000101101100
+&=10000011101
+'=10000010
+(=11101000101
+)=1010101100
+*=100010101110
++=101010111000110000101101101
+,=1011000
+-=10001011
+.=1110110
+/=00010100011110
+0=111010010
+1=101100111
+2=1000101000
+3=1000001111
+4=0001010000
+5=1110101000
+6=1000101001
+7=1000100010
+8=10001010110
+9=0100001101
+:=11101000110
+;=00010100010
+<=1110100011111
+==101010111000110000101101110
+>=1110101001100
+?=111010100111
+@=101010111000110001
+A=11100010
+B=01000000
+C=01000010
+D=111000111
+E=1110100000
+F=101010100
+G=100010000
+H=101010101
+I=1110100001
+J=000101001
+K=1110100111
+L=100000110
+M=10001001
+N=111010111
+O=010000010
+P=00010101
+Q=1000101010111
+R=111010110
+S=0001001
+T=0001011
+U=10101011101
+V=11101010101
+W=10110010
+X=1110001101101111
+Y=10101011110
+Z=1110101010000
+[=10101011100011001
+\=101010111000110000101101111
+]=11100011011011100
+^=101010111000110000101110000
+_=101010111000110000101110001
+`=11101010010
+a=1001
+b=1110000
+c=111001
+d=01001
+e=1111
+f=100001
+g=100011
+h=10111
+i=0101
+j=11100011010
+k=1000000
+l=10100
+m=101011
+n=0111
+o=0011
+p=000111
+q=10101011011
+r=0010
+s=0000
+t=0110
+u=101101
+v=1010100
+w=000110
+x=1110101011
+y=010001
+z=1011001100
+{=101010111000110000101110010
+|=101010111000110000101110011
+}=101010111000110000101110100
+~=101010111000110000101110101
+ =101010111000110000101110110
+ =101010111000110000101110111
+ =101010111000110000101111000
+ =101010111000110000101111001
+ =101010111000110000101111010
+ =101010111000110000101111011
+ =101010111000110000101111100
+ =101010111000110000101111101
+ =101010111000110000101111110
+ =101010111000110000101111111
+ =101010111000110000110000000
+ =101010111000110000110000001
+ =101010111000110000110000010
+ =101010111000110000110000011
+ =101010111000110000110000100
+ =101010111000110000110000101
+ =101010111000110000110000110
+ =101010111000110000110000111
+ =101010111000110000110001000
+ =101010111000110000110001001
+ =101010111000110000110001010
+ =101010111000110000110001011
+ =101010111000110000110001100
+ =101010111000110000110001101
+ =101010111000110000110001110
+ =101010111000110000110001111
+ =101010111000110000110010000
+ =101010111000110000110010001
+ =101010111000110000110010010
+ =11100011011011101
+ =101010111000110000110010011
+ =101010111000110000110010100
+ =101010111000110000110010101
+ =101010111000110000110010110
+¡=101010111000110000110010111
+¢=101010111000110000110011000
+£=101010111000110000110011001
+¤=101010111000110000110011010
+¥=101010111000110000110011011
+¦=101010111000110000110011100
+§=101010111000110000110011101
+¨=101010111000110000110011110
+©=101010111000110000110011111
+ª=101010111000110000110100000
+«=101010111000110000110100001
+¬=101010111000110000110100010
+­=101010111000110000110100011
+®=101010111000110000110100100
+¯=101010111000110000110100101
+°=101010111000110000110100110
+±=101010111000110000110100111
+²=101010111000110000110101000
+³=101010111000110000110101001
+´=101010111000110000110101010
+µ=101010111000110000110101011
+¶=101010111000110000110101100
+·=101010111000110000110101101
+¸=101010111000110000110101110
+¹=101010111000110000110101111
+º=101010111000110000110110000
+»=101010111000110000110110001
+¼=101010111000110000110110010
+½=101010111000110000110110011
+¾=101010111000110000110110100
+¿=101010111000110000110110101
+À=101010111000110000110110110
+Á=101010111000110000110110111
+Â=101010111000110000110111000
+Ã=101010111000110000110111001
+Ä=101010111000110000110111010
+Å=101010111000110000110111011
+Æ=101010111000110000110111100
+Ç=101010111000110000110111101
+È=101010111000110000110111110
+É=101010111000110000110111111
+Ê=101010111000110000111000000
+Ë=101010111000110000111000001
+Ì=101010111000110000111000010
+Í=101010111000110000111000011
+Î=101010111000110000111000100
+Ï=101010111000110000111000101
+Ð=101010111000110000111000110
+Ñ=101010111000110000111000111
+Ò=101010111000110000111001000
+Ó=101010111000110000111001001
+Ô=101010111000110000111001010
+Õ=101010111000110000111001011
+Ö=101010111000110000111001100
+×=101010111000110000111001101
+Ø=101010111000110000111001110
+Ù=101010111000110000111001111
+Ú=101010111000110000111010000
+Û=101010111000110000111010001
+Ü=101010111000110000111010010
+Ý=101010111000110000111010011
+Þ=101010111000110000111010100
+ß=101010111000110000111010101
+à=101010111000110000111010110
+á=101010111000110000111010111
+â=101010111000110000111011000
+ã=101010111000110000111011001
+ä=101010111000110000111011010
+å=101010111000110000111011011
+æ=101010111000110000111011100
+ç=101010111000110000111011101
+è=101010111000110000111011110
+é=101010111000110000111011111
+ê=101010111000110000111100000
+ë=101010111000110000111100001
+ì=101010111000110000111100010
+í=101010111000110000111100011
+î=101010111000110000111100100
+ï=101010111000110000111100101
+ð=101010111000110000111100110
+ñ=101010111000110000111100111
+ò=101010111000110000111101000
+ó=101010111000110000111101001
+ô=101010111000110000111101010
+õ=101010111000110000111101011
+ö=101010111000110000111101100
+÷=101010111000110000111101101
+ø=101010111000110000111101110
+ù=101010111000110000111101111
+ú=101010111000110000111110000
+û=101010111000110000111110001
+ü=101010111000110000111110010
+ý=101010111000110000111110011
+þ=101010111000110000111110100
+ÿ=101010111000110000111110101
+(Including =10101011111110
+(New Series)=11101000100010
+(Part =1110100011101
+(Repeat)=1110100110
+(Stereo)=010000111
+(Stereo) (Teletext)=010000011
+(Teletext)=1110001100
+(Widescreen)=100000111001110
+Action=101010111000111
+Adventures=10110011011111
+America=0100001100100
+Animated=111010100110111
+Australia=0100001100101
+Away=11101010100010
+BBC=10101011111111
+Baby=11100011011000
+Best=11101010100011
+Big=10110011011000
+Bill=1000101011111
+Black=1000101010000
+Blue=1011001101110
+Breakfast=000101000110
+Britain=1010101111100
+British=1110100011100
+Business=0100001100110
+Call=1010101111101
+Cartoon=10101011100000
+Channel=10101011100001
+Children=11101010100111
+Clock=11100011011001
+Comedy=11101000100011
+Cook=111010101001010
+Country=111010100110110
+Directed by =101010110100
+Drama=0100001100111
+East=1000101010001
+Education=100000111001111
+English=00010100011111
+Europe=0001010001110
+Extra=10110011011001
+Final=10101011100010
+Financial=111000110110100
+For=111000110111
+French=11101000111101
+From=1000101010010
+George=1010101111110
+Get=1000100011010
+Girls=10001000110110
+Golden=10001000110111
+Golf=111010101001011
+Good=1010101101010
+Great=11101000100100
+Hampshire=111010101001100
+Headlines=1000101010011
+Hear=11101010011010
+Hill=1000001110000
+Hollywood=111000110110101
+Home=1000101010100
+Hour=11101000100101
+House=1000001110010
+How=1010101101011
+ITN=11101010100100
+Important=111010101001101
+Including=1000101011110
+International=11101000100110
+John=10001000111
+Last=11101000100111
+Late=10000011100110
+Learn=10001010101100
+Little=10001010101101
+Live=1110100010000
+London=11101000111100
+Look=10110011011110
+Lunch=111000110110110
+Man=1000101010101
+Mark=1000001110001
+Meridian=101010111001
+Michael=1011001101101
+Minutes=101010111000110000111110110
+More=101010111000110000111110111
+Morning=101010111000110000111111000
+Murder=101010111000110000111111001
+Nation=101010111000110000111111010
+Neighbours=101010111000110000111111011
+New=101010111000110000111111100
+News & Weather=101010111000110000111111101
+News And Weather=101010111000110000111111110
+Paul=101010111000110000111111111
+Plus=10101011100011000000000000
+Prayer=10101011100011000000000001
+Present=10101011100011000000000010
+Presented by=10101011100011000000000011
+Quiz=10101011100011000000000100
+Regional=10101011100011000000000101
+Represent=10101011100011000000000110
+Resource=10101011100011000000000111
+Review=10101011100011000000001000
+Richard=10101011100011000000001001
+School=10101011100011000000001010
+Series=10101011100011000000001011
+Service=10101011100011000000001100
+Show=10101011100011000000001101
+Smith=10101011100011000000001110
+South=10101011100011000000001111
+Sport=10101011100011000000010000
+Star=10101011100011000000010001
+Street=10101011100011000000010010
+TV=10101011100011000000010011
+Teaching=10101011100011000000010100
+The=10101011100011000000010101
+Today=10101011100011000000010110
+Tonight=10101011100011000000010111
+Weather=10101011100011000000011000
+Western=10101011100011000000011001
+Westminster=10101011100011000000011010
+William=10101011100011000000011011
+With=10101011100011000000011100
+World=10101011100011000000011101
+about=10101011100011000000011110
+action-packed=10101011100011000000011111
+adventure=10101011100011000000100000
+afternoon=10101011100011000000100001
+alert=10101011100011000000100010
+all-star cast=10101011100011000000100011
+and=10101011100011000000100100
+anywhere=10101011100011000000100101
+audience=10101011100011000000100110
+based=10101011100011000000100111
+book=10101011100011000000101000
+business=10101011100011000000101001
+but=10101011100011000000101010
+celebrity=10101011100011000000101011
+chance=10101011100011000000101100
+chat=10101011100011000000101101
+child=10101011100011000000101110
+classic=10101011100011000000101111
+consumer=10101011100011000000110000
+contestants=10101011100011000000110001
+continues=10101011100011000000110010
+controversial=10101011100011000000110011
+dealer=10101011100011000000110100
+deliver=10101011100011000000110101
+discuss=10101011100011000000110110
+document=10101011100011000000110111
+drama=10101011100011000000111000
+edition=10101011100011000000111001
+education=10101011100011000000111010
+events=10101011100011000000111011
+every=10101011100011000000111100
+excellent=10101011100011000000111101
+eyed=10101011100011000000111110
+family=10101011100011000000111111
+famous=10101011100011000001000000
+featur=10101011100011000001000001
+film=10101011100011000001000010
+football=10101011100011000001000011
+for=10101011100011000001000100
+from=10101011100011000001000101
+general knowledge=10101011100011000001000110
+get=10101011100011000001000111
+guest=10101011100011000001001000
+guests=10101011100011000001001001
+has=10101011100011000001001010
+have=10101011100011000001001011
+headline=10101011100011000001001100
+her=10101011100011000001001101
+his=10101011100011000001001110
+home and abroad=10101011100011000001001111
+host=10101011100011000001010000
+how=10101011100011000001010001
+in=10101011100011000001010010
+including=10101011100011000001010011
+international=10101011100011000001010100
+interview=10101011100011000001010101
+introduce=10101011100011000001010110
+investigat=10101011100011000001010111
+invites=10101011100011000001011000
+issue=10101011100011000001011001
+knowledge=10101011100011000001011010
+life=10101011100011000001011011
+live=10101011100011000001011100
+look=10101011100011000001011101
+magazine=10101011100011000001011110
+meets =10101011100011000001011111
+morning=10101011100011000001100000
+morning magazine=10101011100011000001100001
+music=10101011100011000001100010
+near=10101011100011000001100011
+network=10101011100011000001100100
+new=10101011100011000001100101
+new series=10101011100011000001100110
+night=10101011100011000001100111
+of=10101011100011000001101000
+on=10101011100011000001101001
+onight=10101011100011000001101010
+out=10101011100011000001101011
+over=10101011100011000001101100
+part=10101011100011000001101101
+people=10101011100011000001101110
+phone=10101011100011000001101111
+poli=10101011100011000001110000
+police=10101011100011000001110001
+political chat show=10101011100011000001110010
+popular=10101011100011000001110011
+presented by =10101011100011000001110100
+programm=10101011100011000001110101
+quiz=10101011100011000001110110
+reconstruction=10101011100011000001110111
+report=10101011100011000001111000
+review=10101011100011000001111001
+school=10101011100011000001111010
+series=10101011100011000001111011
+short =10101011100011000001111100
+show=10101011100011000001111101
+some=10101011100011000001111110
+starring=10101011100011000001111111
+stars=10101011100011000010000000
+stories=10101011100011000010000001
+story=10101011100011000010000010
+studio=10101011100011000010000011
+surprise=10101011100011000010000100
+teller=10101011100011000010000101
+that=10101011100011000010000110
+the=10101011100011000010000111
+their=10101011100011000010001000
+them=10101011100011000010001001
+they=10101011100011000010001010
+this=10101011100011000010001011
+through=10101011100011000010001100
+to=10101011100011000010001101
+top=10101011100011000010001110
+trans=10101011100011000010001111
+under=10101011100011000010010000
+up=10101011100011000010010001
+very=10101011100011000010010010
+video=10101011100011000010010011
+view=10101011100011000010010100
+vintage=10101011100011000010010101
+visit=10101011100011000010010110
+was=10101011100011000010010111
+way=10101011100011000010011000
+week=10101011100011000010011001
+well=10101011100011000010011010
+what=10101011100011000010011011
+when=10101011100011000010011100
+which=10101011100011000010011101
+while=10101011100011000010011110
+who=10101011100011000010011111
+will=10101011100011000010100000
+win=10101011100011000010100001
+with=10101011100011000010100010
+words=10101011100011000010100011
+world=10101011100011000010100100
+written=10101011100011000010100101
+year=100010001100
+you=10110011010
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_auto.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_auto.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_auto.py	(revision 3613)
@@ -0,0 +1,265 @@
+from enigma import *
+from Components.ServiceEventTracker import ServiceEventTracker
+from Tools.Directories import fileExists
+from crossepglib import *
+from crossepg_downloader import CrossEPG_Downloader
+from crossepg_converter import CrossEPG_Converter
+from crossepg_loader import CrossEPG_Loader
+from crossepg_importer import CrossEPG_Importer
+from crossepg_exec import CrossEPG_Exec
+from crossepg_locale import _
+from Screens.Screen import Screen
+
+from time import *
+
+import os
+
+class CrossEPG_Auto(Screen):
+	def __init__(self):
+		self.session = None
+		self.timer = eTimer()
+		self.timer.callback.append(self.__dailyDownload)
+		self.standbyTimer = eTimer()
+		self.standbyTimer.callback.append(self.__backToStandby)
+		self.providers = list()
+		self.providers_id = list()
+		self.providers_last = list()
+		self.current_id = -1
+		self.downloader = None
+		self.converter = None
+		self.loader = None
+		self.auto_tune = 0
+		self.auto_tune_osd = 0
+		self.enabled = True
+	
+	def enable(self):
+		self.enabled = True
+		
+	def disable(self):
+		self.enabled = False
+		
+	def init(self, session):
+		self.session = session
+		Screen.__init__(self, session)
+		config = CrossEPG_Config()
+		config.load()
+		providers = config.getAllProviders()
+		for provider in providers:
+			self.providers.append(provider)
+			self.providers_id.append(config.getChannelID(provider))
+			self.providers_last.append(0)
+		
+		self.auto_tune = config.auto_tune
+		self.auto_tune_osd = config.auto_tune_osd
+		db_root = config.db_root
+		if not pathExists(db_root):
+			if not createDir(db_root):
+				db_root = "/media/hdd/crossepg"
+				
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+		{
+			iPlayableService.evEnd: self.__stopped,
+			iPlayableService.evTunedIn: self.__tuned,
+		})
+		
+		if config.auto_boot == 1:
+			try:
+				f = open("%s/ext.epg.dat" % (db_root), "r")
+			except Exception, e:
+				self.converter = CrossEPG_Converter(self.session, self.__convertOnInitEnded)
+			else:
+				f.seek(4);
+				if f.read(13) == "ENIGMA_EPG_V7":
+					self.loader = CrossEPG_Loader(self.session, self.__loaderEnded)
+				else:
+					self.converter = CrossEPG_Converter(self.session, self.__convertOnInitEnded)
+				f.close()
+		
+		self.dailyStart()
+		if fileExists("/tmp/crossepg.standby"):
+			os.system("rm /tmp/crossepg.standby")
+			print "[CrossEPG_Auto] coming back in standby in 30 seconds"
+			self.standbyTimer.start(30000, 1)
+	
+	def __backToStandby(self):
+		from Screens.Standby import inStandby
+		if inStandby == None:
+			print "[CrossEPG_Auto] coming back in standby"
+			from Screens.Standby import Standby
+			self.session.open(Standby)
+	
+	def dailyStart(self, hours = None, minutes = None, tomorrow = False):
+		config = CrossEPG_Config()
+		config.load()
+		
+		if not hours or not minutes:
+			if not config.auto_daily:
+				print "[CrossEPG_Auto] daily download disabled"
+				return
+			self.hours = config.auto_daily_hours
+			self.minutes = config.auto_daily_minutes
+		else:
+			self.hours = hours
+			self.minutes = minutes
+		
+		self.timer.stop()
+		now = time()
+		ttime = localtime(now)
+		ltime = (ttime[0], ttime[1], ttime[2], self.hours, self.minutes, 0, ttime[6], ttime[7], ttime[8])
+		stime = mktime(ltime)
+		if tomorrow:
+			stime += 60*60*24
+		if stime < now + 2:
+			stime += 60*60*24
+		
+		delta = int(stime - now);
+		if delta <= 0:
+			delta = 1
+			
+		print "[CrossEPG_Auto] enabled timer in %d minutes" % (delta / 60)
+		self.timer.start(1000*delta, 1)
+		
+	def dailyStop(self):
+		print "[CrossEPG_Auto] daily download disabled"
+		self.timer.stop()
+		
+	def stop(self):
+		if self.downloader:
+			self.current_id = -1
+			self.downloader.quit()
+			self.downloader = None
+		if self.converter:
+			self.converter.quit()
+			self.converter = None
+		if self.loader:
+			self.loader.quit()
+			self.loader = None
+	
+	def __dailyDownload(self):
+		print "[CrossEPG_Auto] daily action! starting downloader"
+		if self.enabled:
+			if self.session.nav.RecordTimer.isRecording():
+				now = time()
+				ttime = localtime(now)
+				hour = ttime[3] + 1;
+				if hour > 23:
+					hour = 0;
+				print "[CrossEPG_Auto] record in progress.. download delayed"
+				self.dailyStart(hour, ttime[4], False)
+			else:
+				self.stop()
+				self.session.open(CrossEPG_Downloader, self.__dailyDownloadEnded)
+				self.enabled = False
+				self.dailyStart(self.hours, self.minutes, True)
+		else:
+			print "[CrossEPG_Auto] another download is in progress... skipped"
+		
+	def __dailyDownloadEnded(self, session, ret):
+		if ret:
+			config = CrossEPG_Config()
+			config.load()
+			if config.enable_importer == 1:
+				self.scripts = config.getAllImportScripts()
+				self.scripts_index = 0;
+				self.__dailyStartScripts(session)
+			else:
+				self.session.open(CrossEPG_Converter, self.__dailyConvertEnded)
+		else:
+			self.enabled = True
+	
+	def __dailyStartScripts(self, session):
+		if len(self.scripts) > self.scripts_index:
+			self.session.open(CrossEPG_Exec, self.scripts[self.scripts_index], False, self.__dailyStartScripts)
+			self.scripts_index += 1
+		else:
+			self.session.open(CrossEPG_Importer, self.__dailyImporterEnded)
+
+	def __dailyImporterEnded(self, session, ret):
+		if ret:
+			self.session.open(CrossEPG_Converter, self.__dailyConvertEnded)
+		else:
+			self.enabled = True
+	
+	def __dailyConvertEnded(self, session, ret):
+		if ret:
+			config = CrossEPG_Config()
+			config.load()
+				
+			patchtype = getEPGPatchType()
+			if patchtype == 0 or patchtype == 1:
+				session.open(CrossEPG_Loader, self.__dailyLoaderEnded)
+			elif patchtype == 2 and config.auto_daily_reboot == 0:
+				session.open(CrossEPG_Loader, self.__dailyLoaderEnded)
+			elif config.auto_daily_reboot == 1:
+				from Screens.Standby import inStandby
+				if inStandby == None:
+					os.system("rm /tmp/crossepg.standby")
+				else:
+					print "[CrossEPG_Auto] decoder in standby"
+					os.system("touch /tmp/crossepg.standby")
+					
+				print "[CrossEPG_Auto] rebooting"
+				from Screens.Standby import TryQuitMainloop
+				session.open(TryQuitMainloop, 3)
+			else:
+				self.enabled = True
+		else:
+			self.enabled = True
+		
+	def __dailyLoaderEnded(self, session, ret):
+		self.enabled = True
+		
+	def __downloadEnded(self, session, ret):
+		self.downloader = None
+		if ret and self.current_id > -1:
+			print "[CrossEPG_Auto] download ok! ignore others download on this provider for 60 minutes"
+			self.providers_last[self.current_id] = time() + 3600
+			if self.auto_tune_osd == 1:
+				self.session.open(CrossEPG_Converter, self.__convertEnded)
+			else:
+				self.converter = CrossEPG_Converter(self.session, self.__convertEnded)
+		self.current_id = -1
+
+	def __convertOnInitEnded(self, session, ret):
+		self.converter = None
+		if ret:
+			self.loader = CrossEPG_Loader(self.session, self.__loaderEnded)
+
+	def __convertEnded(self, session, ret):
+		self.converter = None
+		if ret:
+			if self.auto_tune_osd == 1:
+				self.session.open(CrossEPG_Loader, self.__loaderEnded)
+			else:
+				self.loader = CrossEPG_Loader(self.session, self.__loaderEnded)
+	
+	def __loaderEnded(self, session, ret):
+		self.loader = None
+		
+	def __stopped(self):
+		if self.downloader:
+			self.current_id = -1
+			self.downloader.quit()
+			self.downloader = None
+			
+	def __tuned(self):
+		if self.auto_tune == 1 and self.enabled:
+			sservice = self.session.nav.getCurrentlyPlayingServiceReference()
+			if sservice:
+				service = sservice.toString()
+				count = 0
+				for provider in self.providers:
+					if self.providers_id[count] == service:
+						print "[CrossEPG_Auto] match with provider %s" % (provider)
+						if self.providers_last[count] > time():
+							print "[CrossEPG_Auto] epg already downloaded... download ignored"
+						else:
+							self.stop()
+							self.current_id = count
+							if self.auto_tune_osd == 1:
+								self.session.open(CrossEPG_Downloader, self.__downloadEnded, provider)
+							else:
+								self.downloader = CrossEPG_Downloader(self.session, self.__downloadEnded, provider)
+					count += 1
+		
+crossepg_auto = CrossEPG_Auto()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_converter.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_converter.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_converter.py	(revision 3613)
@@ -0,0 +1,116 @@
+from enigma import getDesktop, iPlayableService, eTimer, eServiceReference, eEPGCache
+from crossepglib import *
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import NumberActionMap
+from Plugins.Plugin import PluginDescriptor
+from ServiceReference import ServiceReference
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Screens.MessageBox import MessageBox
+
+import Screens.Standby
+
+import os
+import re
+import _enigma
+import new
+import time
+import os
+
+class CrossEPG_Converter(Screen):
+	def __init__(self, session, endCallback = None):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/downloader_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/downloader_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		
+		self["action"] = Label(_("Starting converter"))
+		self["status"] = Label("")
+		self["progress"] = ProgressBar()
+		self["progress"].hide()
+		self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
+		{
+			"back": self.__quit
+		}, -1)
+		
+		self.ret = True	
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.lamedb = self.config.lamedb
+		self.db_root = self.config.db_root
+		if not pathExists(self.db_root):
+			if not createDir(self.db_root):
+				self.db_root = "/hdd/crossepg"
+				
+		self.endCallback = endCallback
+		
+		self.wrapper = CrossEPG_Wrapper()
+		self.wrapper.addCallback(self.__wrapperCallback)
+		
+		self.hideprogress = eTimer()
+		self.hideprogress.callback.append(self["progress"].hide)
+		
+		self.wrapper.init(CrossEPG_Wrapper.CMD_CONVERTER, self.config.db_root)
+	
+	def quit(self):
+		self.__quit()
+	
+	def __wrapperCallback(self, event, param):
+		if event == CrossEPG_Wrapper.EVENT_READY:
+			self.wrapper.epgdat("%s/ext.epg.dat" % (self.db_root))
+			self.wrapper.lamedb("/etc/enigma2/%s" % (self.lamedb))
+			self.wrapper.convert()
+			
+		elif event == CrossEPG_Wrapper.EVENT_END:
+			self.wrapper.delCallback(self.__wrapperCallback)
+			self.wrapper.quit()
+			if self.endCallback:
+				self.endCallback(self.session, self.ret)
+			self.close()
+				
+		elif event == CrossEPG_Wrapper.EVENT_ACTION:
+			self["action"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_STATUS:
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESS:
+			self["progress"].setValue(param)
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESSONOFF:
+			if param:
+				self.hideprogress.stop()
+				self["progress"].setValue(0)
+				self["progress"].show()
+			else:
+				self["progress"].setValue(100)
+				self.hideprogress.start(500, 1)
+				
+		elif event == CrossEPG_Wrapper.EVENT_QUIT:
+			if self.endCallback:
+				self.endCallback(self.session, self.ret)
+			self.close()
+			
+		elif event == CrossEPG_Wrapper.EVENT_ERROR:
+			self.session.open(MessageBox, _("CrossEPG error: %s") % (param), type = MessageBox.TYPE_INFO, timeout = 20)
+			self.ret = False
+			self.quit()
+			
+	def __quit(self):
+		if self.wrapper.running():
+			self.ret = False
+			self.wrapper.quit()
+		else:
+			if self.endCallback:
+				self.endCallback(self.session, False)
+			self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_downloader.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_downloader.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_downloader.py	(revision 3613)
@@ -0,0 +1,165 @@
+from enigma import getDesktop, iPlayableService, eTimer, eServiceReference, eEPGCache
+from crossepglib import *
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import NumberActionMap
+from Plugins.Plugin import PluginDescriptor
+from ServiceReference import ServiceReference
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Screens.MessageBox import MessageBox
+
+import Screens.Standby
+
+import os
+import re
+import _enigma
+import new
+import time
+import os
+
+class CrossEPG_Downloader(Screen):
+	def __init__(self, session, endCallback = None, provider = None):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/downloader_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/downloader_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		
+		self["action"] = Label(_("Starting downloader"))
+		self["status"] = Label("")
+		self["progress"] = ProgressBar()
+		self["progress"].hide()
+		self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
+		{
+			"back": self.__quit
+		}, -1)
+		
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+		{
+			iPlayableService.evTunedIn: self.__tuned,
+		})
+		
+		self.ret = True
+		self.provider_index = 0
+		self.status = 0	
+		self.tune_enabled = False
+		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.provider = provider
+		self.endCallback = endCallback
+		
+		if len(self.config.providers) == 0 and not self.provider:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, True)
+			self.close()
+		
+		self.wrapper = CrossEPG_Wrapper()
+		self.wrapper.addCallback(self.__wrapperCallback)
+		
+		self.timeout = eTimer()
+		self.timeout.callback.append(self.__quit)
+		
+		self.hideprogress = eTimer()
+		self.hideprogress.callback.append(self["progress"].hide)
+		
+		self.wrapper.init(CrossEPG_Wrapper.CMD_DOWNLOADER, self.config.db_root)
+	
+	def quit(self):
+		self.__quit()
+	
+	def __download(self):
+		if self.provider:
+			self.wrapper.download(self.provider)
+		else:
+			service = self.config.getChannelID(self.config.providers[self.provider_index])
+			try:
+				cservice = self.session.nav.getCurrentlyPlayingServiceReference().toString()
+			except Exception, e:
+				cservice = None
+				
+			if service:
+				print "[CrossEPG_Downloader] %s service is %s" % (self.config.providers[self.provider_index], service)
+				if service == cservice:
+					self.wrapper.download(self.config.providers[self.provider_index])
+				else:
+					self.tune_enabled = True
+					self.wrapper.wait()
+					self.timeout.start(60000, 1)
+					self.session.nav.playService(eServiceReference(service))
+			else:
+				self.wrapper.quit()
+	
+	def __wrapperCallback(self, event, param):
+		if event == CrossEPG_Wrapper.EVENT_READY:
+			self.__download()
+			
+		elif event == CrossEPG_Wrapper.EVENT_END:
+			if self.status == 0:
+				self.provider_index += 1
+				if self.provider:
+					self.status = 1
+					self.wrapper.save()
+				else:
+					if self.provider_index < len(self.config.providers):
+						self.__download()
+					else:
+						self.status = 1
+						if self.oldService:
+							self.session.nav.playService(self.oldService)
+						self.wrapper.save()
+			else:
+				self.wrapper.quit()
+				
+		elif event == CrossEPG_Wrapper.EVENT_ACTION:
+			self["action"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_STATUS:
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESS:
+			self["progress"].setValue(param)
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESSONOFF:
+			if param:
+				self.hideprogress.stop()
+				self["progress"].setValue(0)
+				self["progress"].show()
+			else:
+				self["progress"].setValue(100)
+				self.hideprogress.start(500, 1)
+		elif event == CrossEPG_Wrapper.EVENT_QUIT:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, self.ret)
+			self.close()
+		elif event == CrossEPG_Wrapper.EVENT_ERROR:
+			self.session.open(MessageBox, _("CrossEPG error: %s") % (param), type = MessageBox.TYPE_INFO, timeout = 20)
+			self.ret = False
+			self.quit()
+			
+	def __tuned(self):
+		if self.tune_enabled:
+			self.timeout.stop()
+			self.wrapper.download(self.config.providers[self.provider_index])
+			self.tune_enabled = False
+			
+	def __quit(self):
+		if self.wrapper.running():
+			self.ret = False
+			self.wrapper.quit()
+		else:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, False)
+			self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_exec.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_exec.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_exec.py	(revision 3613)
@@ -0,0 +1,90 @@
+from enigma import *
+from crossepglib import CrossEPG_Config
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.ScrollLabel import ScrollLabel
+from Components.Pixmap import Pixmap
+from Components.ActionMap import NumberActionMap
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Tools.Directories import crawlDirectory, pathExists, createDir
+from Screens.MessageBox import MessageBox
+from Screens.Console import Console
+from Components.Button import Button
+
+import os
+import re
+import _enigma
+import new
+import time
+import os
+import sys
+
+class CrossEPG_Exec(Screen):
+	def __init__(self, session, cmd, stop = False, endCallback = None):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/exec_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/exec_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		self.skin_path = "%s/skins/" % (os.path.dirname(sys.modules[__name__].__file__))
+		Screen.__init__(self, session)
+		self.cmd = cmd
+		self.stop = stop
+		self.app = eConsoleAppContainer()
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.endCallback = endCallback
+		self["log"] = ScrollLabel("")
+		
+		self["actions"] = ActionMap(["SetupActions", "ColorActions", "DirectionActions"],
+		{
+			"red": self.__quit,
+			"cancel": self.__quit,
+			"up": self["log"].pageUp,
+			"down": self["log"].pageDown,
+		}, -2)
+		
+		self.timer = eTimer()
+		self.timer.callback.append(self.__execute)
+		self.quit = eTimer()
+		self.quit.callback.append(self.__quit)
+		self.timer.start(200, 1)
+	
+	def __execute(self):
+		importdir = "%s/import_scripts/" % (self.config.db_root)
+		if not pathExists(importdir):
+			importdir = "/media/hdd/crossepg/import_scripts/"
+		script = "%s/%s" % (importdir, self.cmd)
+		self.setTitle("CrossEPG Exec (%s)" % (self.cmd))
+		self.app.appClosed.append(self.__cmdFinished)
+		self.app.dataAvail.append(self.__cmdData)
+		if self.app.execute("%s/%s" % (importdir, self.cmd)):
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session)
+			self.close()
+			
+	def __cmdFinished(self, retval):
+		self.app.appClosed.remove(self.__cmdFinished)
+		self.app.dataAvail.remove(self.__cmdData)
+		if not self.stop:
+			self.quit.start(2000, 1)
+
+	def __cmdData(self, data):
+		self["log"].setText(self["log"].getText() + data)
+		self["log"].lastPage()
+		
+	def __quit(self):
+		if self.app.running():
+			self.app.kill()
+		else:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session)
+			self.close()
+
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_extra.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_extra.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_extra.py	(revision 3613)
@@ -0,0 +1,112 @@
+from enigma import *
+from crossepglib import *
+from crossepg_auto import crossepg_auto
+from crossepg_info import CrossEPG_Info
+from crossepg_downloader import CrossEPG_Downloader
+from crossepg_importer import CrossEPG_Importer
+from crossepg_converter import CrossEPG_Converter
+from crossepg_loader import CrossEPG_Loader
+from crossepg_exec import CrossEPG_Exec
+from crossepg_locale import _
+
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+
+from Components.Label import Label
+from Components.Button import Button
+from Components.PluginComponent import plugins
+from Components.ActionMap import ActionMap
+from Components.MenuList import MenuList
+from Components.ServiceEventTracker import ServiceEventTracker
+from time import *
+
+import _enigma
+
+class CrossEPG_Extra(Screen):
+	def __init__(self, session, auto_action):
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/extra_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/extra_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.scripts = self.config.getAllImportScripts()
+		self.session = session
+		self.auto_action = auto_action
+		self.providers_count = 0
+		self.provider_selected = None
+		self.old_service = None
+		
+		menulist = list()
+		menulist.append(_("Start automated task"))
+		for provider in self.config.getAllProviders():
+			menulist.append(_("Download %s") % (provider))
+			self.providers_count += 1
+			
+		for script in self.scripts:
+			menulist.append(_("Execute import script %s" % (script)))
+			
+		menulist.append(_("Import data"))
+		menulist.append(_("Convert db"))
+		if getEPGPatchType() > -1:
+			menulist.append(_("Load data"))
+		
+		self["menu"] = MenuList(menulist)
+		
+		self["key_red"] = Button(_("Exit"))
+		self["key_green"] = Button(" ")
+		self["key_yellow"] = Button(" ")
+		self["key_blue"] = Button(" ")
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"red": self.quit,
+			"cancel": self.quit,
+			"ok": self.ok,
+		}, -2)
+		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+		{
+			iPlayableService.evTunedIn: self.__tuned,
+		})
+		
+	def ok(self):
+		self.provider_selected = None
+		selected = self["menu"].getSelectedIndex()
+		if selected == 0: # automated task
+			self.auto_action(self.session)
+		else:
+			selected -= 1
+			if selected < self.providers_count: # download ...
+				service = self.config.getChannelID(self.config.getAllProviders()[selected])
+				if service:
+					self.provider_selected = self.config.getAllProviders()[selected]
+					self.old_service = self.session.nav.getCurrentlyPlayingServiceReference()
+					self.session.nav.playService(eServiceReference(service))
+			else:
+				selected -= self.providers_count
+				if selected < len(self.scripts): # import script ...
+					self.session.open(CrossEPG_Exec, self.scripts[selected], True)
+				else:
+					selected -= len(self.scripts)
+					if selected == 0: # import
+						self.session.open(CrossEPG_Importer)
+					elif selected == 1: # convert
+						self.session.open(CrossEPG_Converter)
+					elif selected == 2: # load
+						self.session.open(CrossEPG_Loader)
+	
+	def __tuned(self):
+		if self.provider_selected:
+			self.session.open(CrossEPG_Downloader, self.__downloaderEnded, self.provider_selected)
+			self.provider_selected = None
+	
+	def __downloaderEnded(self, session, ret):
+		if self.old_service:
+			self.session.nav.playService(self.old_service)
+			self.old_service = None
+		
+	def quit(self):
+		self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_importer.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_importer.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_importer.py	(revision 3613)
@@ -0,0 +1,130 @@
+from enigma import getDesktop, iPlayableService, eTimer, eServiceReference, eEPGCache
+from crossepglib import *
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import NumberActionMap
+from Plugins.Plugin import PluginDescriptor
+from ServiceReference import ServiceReference
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Screens.MessageBox import MessageBox
+
+import Screens.Standby
+
+import os
+import re
+import _enigma
+import new
+import time
+import os
+
+class CrossEPG_Importer(Screen):
+	def __init__(self, session, endCallback = None):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/downloader_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/downloader_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		
+		self["action"] = Label(_("Starting importer"))
+		self["status"] = Label("")
+		self["progress"] = ProgressBar()
+		self["progress"].hide()
+		self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
+		{
+			"back": self.__quit
+		}, -1)
+		
+		self.ret = True	
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.lamedb = self.config.lamedb
+		self.db_root = self.config.db_root
+		if not pathExists(self.db_root):
+			if not createDir(self.db_root):
+				self.db_root = "/media/hdd/crossepg"
+				
+		self.endCallback = endCallback
+		
+		self.wrapper = CrossEPG_Wrapper()
+		self.wrapper.addCallback(self.__wrapperCallback)
+		
+		self.hideprogress = eTimer()
+		self.hideprogress.callback.append(self["progress"].hide)
+		
+		self.status = 0
+		self.wrapper.init(CrossEPG_Wrapper.CMD_IMPORTER, self.config.db_root)
+	
+	def quit(self):
+		self.__quit()
+	
+	def __wrapperCallback(self, event, param):
+		if event == CrossEPG_Wrapper.EVENT_READY:
+			self.wrapper.importx()
+			
+		elif event == CrossEPG_Wrapper.EVENT_END:
+			if self.status == 0:
+				self.status += 1
+				self.wrapper.save()
+			else:
+				self.wrapper.delCallback(self.__wrapperCallback)
+				self.wrapper.quit()
+				self.hide()
+				if self.endCallback:
+					self.endCallback(self.session, self.ret)
+				self.close()
+				
+		elif event == CrossEPG_Wrapper.EVENT_FILE:
+			self["action"].text = _("Parsing")
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_URL:
+			self["action"].text = _("Downloading")
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_ACTION:
+			self["action"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_STATUS:
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESS:
+			self["progress"].setValue(param)
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESSONOFF:
+			if param:
+				self.hideprogress.stop()
+				self["progress"].setValue(0)
+				self["progress"].show()
+			else:
+				self["progress"].setValue(100)
+				self.hideprogress.start(500, 1)
+				
+		elif event == CrossEPG_Wrapper.EVENT_QUIT:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, self.ret)
+			self.close()
+			
+		elif event == CrossEPG_Wrapper.EVENT_ERROR:
+			self.session.open(MessageBox, _("CrossEPG error: %s") % (param), type = MessageBox.TYPE_INFO, timeout = 20)
+			self.ret = False
+			self.quit()
+			
+	def __quit(self):
+		if self.wrapper.running():
+			self.ret = False
+			self.wrapper.quit()
+		else:
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, False)
+			self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_info.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_info.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_info.py	(revision 3613)
@@ -0,0 +1,96 @@
+from enigma import getDesktop, iPlayableService, eTimer, eServiceReference, eEPGCache
+from crossepglib import *
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.Pixmap import Pixmap
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import NumberActionMap
+from Components.Button import Button
+from Plugins.Plugin import PluginDescriptor
+from ServiceReference import ServiceReference
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Screens.MessageBox import MessageBox
+
+import Screens.Standby
+
+import os
+import re
+import _enigma
+import new
+import time
+import os
+
+class CrossEPG_Info(Screen):
+	def __init__(self, session):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/info_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/info_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		self.skin_path = "%s/skins/" % (os.path.dirname(sys.modules[__name__].__file__))
+		Screen.__init__(self, session)
+		
+		self.config = CrossEPG_Config()
+		self.config.load()
+		
+		self["version"] = Label("")
+		self["create"] = Label("")
+		self["last_update"] = Label("")
+		self["headersdb_size"] = Label("")
+		self["descriptorsdb_size"] = Label("")
+		self["indexesdb_size"] = Label("")
+		self["aliasesdb_size"] = Label("")
+		self["total_size"] = Label("")
+		self["channels_count"] = Label("")
+		self["events_count"] = Label("")
+		self["hashes_count"] = Label("")
+		self["actions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"red": self.quit,
+			"cancel": self.quit
+		}, -2)
+		
+		self["key_red"] = Button(_("Exit"))
+		self["key_green"] = Button(" ")
+		self["key_yellow"] = Button(" ")
+		self["key_blue"] = Button(" ")
+		
+		self.wrapper = CrossEPG_Wrapper()
+		self.wrapper.addCallback(self.__wrapperCallback)
+		self.wrapper.init(CrossEPG_Wrapper.CMD_INFO, self.config.db_root)
+			
+	def quit(self):
+		if not self.wrapper.running():
+			self.close()
+	
+	def __wrapperCallback(self, event, param):
+		if event == CrossEPG_Wrapper.INFO_HEADERSDB_SIZE:
+			self["headersdb_size"].text = _("Headers db size: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_DESCRIPTORSDB_SIZE:
+			self["descriptorsdb_size"].text = _("Descriptors db size: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_INDEXESDB_SIZE:
+			self["indexesdb_size"].text = _("Indexes db size: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_ALIASESDB_SIZE:
+			self["aliasesdb_size"].text = _("Aliases db size: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_TOTAL_SIZE:
+			self["total_size"].text = _("Total size: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_CHANNELS_COUNT:
+			self["channels_count"].text = _("Channels count: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_EVENTS_COUNT:
+			self["events_count"].text = _("Events count: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_HASHES_COUNT:
+			self["hashes_count"].text = _("Hashes count: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_CREATION_TIME:
+			self["create"].text = _("Creation time: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_UPDATE_TIME:
+			self["last_update"].text = _("Last update time: %s") % (param)
+		elif event == CrossEPG_Wrapper.INFO_VERSION:
+			self["version"].text = _("Version: %s") % (param)
+			
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_loader.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_loader.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_loader.py	(revision 3613)
@@ -0,0 +1,219 @@
+from enigma import getDesktop, iPlayableService, eTimer, eServiceReference, eEPGCache
+from crossepglib import *
+from crossepg_locale import _
+from Screens.Screen import Screen
+from Components.Label import Label
+from Components.ProgressBar import ProgressBar
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import NumberActionMap
+from Components.config import config
+from Plugins.Plugin import PluginDescriptor
+from ServiceReference import ServiceReference
+from threading import Thread
+from Components.ActionMap import ActionMap
+from Tools import Notifications
+from Screens.MessageBox import MessageBox
+
+import Screens.Standby
+
+import os
+import re
+import _enigma
+import new
+import time
+import sys
+
+class CrossEPG_Loader(Screen):
+	def __init__(self, session, endCallback = None):
+		self.session = session
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/downloader_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/downloader_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		self["action"] = Label(_("Loading data"))
+		self["status"] = Label("")
+		self["progress"] = ProgressBar()
+		self["progress"].hide()
+		
+		self.ret = True	
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.db_root = self.config.db_root
+		if not pathExists(self.db_root):
+			if not createDir(self.db_root):
+				self.db_root = "/media/hdd/crossepg"
+				
+		self.endCallback = endCallback
+		self.wrapper = None
+		
+		if pathExists("/usr/crossepg"):
+			self.home_directory = "/usr/crossepg"
+		elif pathExists("/var/crossepg"):
+			self.home_directory = "/var/crossepg"
+#---- CIVER added
+		elif pathExists("/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg")
+			self.home_directory = "/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg"
+#---------------
+		else:
+			print "[CrossEPG_Config] ERROR!! CrossEPG binaries non found"
+		
+		# check for common patches
+		try:
+			self.epgpatch = new.instancemethod(_enigma.eEPGCache_load,None,eEPGCache)
+			print "[CrossEPG_Loader] patch epgcache.load() found"
+		except Exception, e:
+			self.epgpatch = None
+			print "[CrossEPG_Loader] patch epgcache.load() not found"
+			
+		try:
+			self.edgpatch = new.instancemethod(_enigma.eEPGCache_reloadEpg,None,eEPGCache)
+			print "[CrossEPG_Loader] patch EDG NEMESIS found"
+		except Exception, e:
+			self.edgpatch = None
+			print "[CrossEPG_Loader] patch EDG NEMESIS not found"
+			
+		try:
+			self.oudeispatch = new.instancemethod(_enigma.eEPGCache_importEvent,None,eEPGCache)
+			print "[CrossEPG_Loader] patch Oudeis found"
+		except Exception, e:
+			self.oudeispatch = None
+			print "[CrossEPG_Loader] patch Oudeis not found"
+		
+		if self.epgpatch:
+			self.timer = eTimer()
+			self.timer.callback.append(self.__loadEPG)
+			self.timer.start(200, 1)
+			
+		elif self.edgpatch:
+			self.timer = eTimer()
+			self.timer.callback.append(self.__loadEDG)
+			self.timer.start(200, 1)
+			
+		elif self.oudeispatch:
+			self["actions"] = NumberActionMap(["WizardActions", "InputActions"],
+			{
+				"back": self.__quit
+			}, -1)
+			
+			self.wrapper = CrossEPG_Wrapper()
+			self.wrapper.addCallback(self.__wrapperCallback)
+			
+			self.timeout = eTimer()
+			self.timeout.callback.append(self.__quit)
+			
+			self.hideprogress = eTimer()
+			self.hideprogress.callback.append(self["progress"].hide)
+			
+			self.epg_channel = None;
+			self.epg_tuple = ()
+			self.epg_starttime = 0
+			self.epg_length = 0
+			self.epg_name = ""
+			
+			self.wrapper.init(CrossEPG_Wrapper.CMD_CONVERTER, self.config.db_root)
+		else:
+			print "No patch found... please reboot enigma2 manually"
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, True)
+			self.close()
+	
+	def quit(self):
+		if self.epgpatch or self.edgpatch:
+			return
+			
+		self.__quit()
+	
+	def __loadEPG(self):
+		cmd = "%s/crossepg_epgcopy %s/ext.epg.dat /hdd/epg.dat" % (self.home_directory, self.db_root)
+		print "[CrossEPG_Loader] %s" % (cmd)
+		os.system(cmd)
+		self.epgpatch(eEPGCache.getInstance())
+		self.hide()
+		if self.endCallback:
+			self.endCallback(self.session, True)
+		self.close()
+		
+	def __loadEDG(self):
+		cmd = "%s/crossepg_epgcopy %s/ext.epg.dat %s/epg.dat" % (self.home_directory, self.db_root, config.nemepg.path.value)
+		print "[CrossEPG_Loader] %s" % (cmd)
+		os.system(cmd)
+		self.edgpatch(eEPGCache.getInstance())
+		self.hide()
+		if self.endCallback:
+			self.endCallback(self.session, True)
+		self.close()
+		
+	def __wrapperCallback(self, event, param):
+		if event == CrossEPG_Wrapper.EVENT_READY:
+			self.wrapper.text()
+			
+		elif event == CrossEPG_Wrapper.EVENT_END:
+			self.wrapper.quit()
+			
+		elif event == CrossEPG_Wrapper.EVENT_ACTION:
+			self["action"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_STATUS:
+			self["status"].text = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESS:
+			self["progress"].setValue(param)
+			
+		elif event == CrossEPG_Wrapper.EVENT_CHANNEL:
+			if self.epg_channel:
+				if len(self.epg_tuple) > 0:
+					self.oudeispatch(eEPGCache.getInstance(), self.epg_channel, self.epg_tuple)
+					self.epg_tuple = ()
+			self.epg_channel = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_STARTTIME:
+			self.epg_starttime = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_LENGTH:
+			self.epg_length = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_NAME:
+			self.epg_name = param
+			
+		elif event == CrossEPG_Wrapper.EVENT_DESCRIPTION:
+			if self.epg_channel:
+				self.epg_tuple += ((self.epg_starttime, self.epg_length, self.epg_name, self.epg_name, param, 0),)
+			
+		elif event == CrossEPG_Wrapper.EVENT_PROGRESSONOFF:
+			if param:
+				self.hideprogress.stop()
+				self["progress"].setValue(0)
+				self["progress"].show()
+			else:
+				self["progress"].setValue(100)
+				self.hideprogress.start(500, 1)
+		elif event == CrossEPG_Wrapper.EVENT_QUIT:
+			if self.epg_channel:
+				if len(self.epg_tuple) > 0:
+					self.oudeispatch(eEPGCache.getInstance(), self.epg_channel, self.epg_tuple)
+			self.hide()
+			if self.endCallback:
+				self.endCallback(self.session, self.ret)
+			self.close()
+			
+		elif event == CrossEPG_Wrapper.EVENT_ERROR:
+			self.session.open(MessageBox, _("CrossEPG error: %s") % (param), type = MessageBox.TYPE_INFO, timeout = 20)
+			self.ret = False
+			self.quit()
+			
+	def __quit(self):
+		if self.wrapper:
+			if self.wrapper.running():
+				self.ret = False
+				self.wrapper.quit()
+				return
+				
+		self.hide()
+		if self.endCallback:
+			self.endCallback(self.session, False)
+		self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_locale.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_locale.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_locale.py	(revision 3613)
@@ -0,0 +1,25 @@
+from Components.Language import language
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE
+
+import os,gettext
+
+PluginLanguageDomain = "CrossEPG"
+PluginLanguagePath = "SystemPlugins/CrossEPG/po"
+
+def localeInit():
+	lang = language.getLanguage()[:2] # getLanguage returns e.g. "fi_FI" for "language_country"
+	os.environ["LANGUAGE"] = lang # Enigma doesn't set this (or LC_ALL, LC_MESSAGES, LANG). gettext needs it!
+	print "[CrossEPG] set language to ", lang
+	gettext.bindtextdomain(PluginLanguageDomain, resolveFilename(SCOPE_PLUGINS, PluginLanguagePath))
+	gettext.bindtextdomain('enigma2', resolveFilename(SCOPE_LANGUAGE, ""))
+
+def _(txt):
+	t = gettext.dgettext(PluginLanguageDomain, txt)
+	if t == txt:
+		#print "[CrossEPG] fallback to default translation for", txt
+		t = gettext.dgettext('enigma2', txt)
+	return t
+
+
+localeInit()
+language.addCallback(localeInit)
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_main.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_main.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_main.py	(revision 3613)
@@ -0,0 +1,73 @@
+from enigma import *
+from crossepglib import *
+from crossepg_downloader import CrossEPG_Downloader
+from crossepg_importer import CrossEPG_Importer
+from crossepg_converter import CrossEPG_Converter
+from crossepg_loader import CrossEPG_Loader
+from crossepg_exec import CrossEPG_Exec
+from crossepg_setup import CrossEPG_Setup
+from crossepg_auto import crossepg_auto
+
+class CrossEPG_Main:
+	def __init__(self):
+		pass
+		
+	def downloader(self, session, **kwargs):
+		crossepg_auto.stop()
+		crossepg_auto.disable()
+		session.open(CrossEPG_Downloader, self.__callbackDownloader)
+
+	def __callbackDownloader(self, session, ret):
+		if ret:
+			config = CrossEPG_Config()
+			config.load()
+			if config.enable_importer == 1:
+				#session.open(CrossEPG_Importer, self.__callbackImporter)
+				self.scripts = config.getAllImportScripts()
+				self.scripts_index = 0;
+				self.__startScripts(session)
+			else:
+				session.open(CrossEPG_Converter, self.__callbackConverter)
+		else:
+			crossepg_auto.enable()
+	
+	def __startScripts(self, session):
+		if len(self.scripts) > self.scripts_index:
+			session.open(CrossEPG_Exec, self.scripts[self.scripts_index], False, self.__startScripts)
+			self.scripts_index += 1
+		else:
+			session.open(CrossEPG_Importer, self.__callbackImporter)
+			
+	def __callbackImporter(self, session, ret):
+		if ret:
+			session.open(CrossEPG_Converter, self.__callbackConverter)
+		else:
+			crossepg_auto.enable()
+			
+	def __callbackConverter(self, session, ret):
+		if ret:
+			config = CrossEPG_Config()
+			config.load()
+			patchtype = getEPGPatchType()
+			if patchtype == 0 or patchtype == 1:
+				session.open(CrossEPG_Loader, self.__callbackLoader)
+			elif patchtype == 2 and config.manual_reboot == 0:
+				session.open(CrossEPG_Loader, self.__callbackLoader)
+			elif config.manual_reboot == 1:
+				from Screens.Standby import TryQuitMainloop
+				session.open(TryQuitMainloop, 3)
+			else:
+				crossepg_auto.enable()
+		else:
+			crossepg_auto.enable()
+
+	def __callbackLoader(self, session, ret):
+		crossepg_auto.enable()
+
+	def setup(self, session, **kwargs):
+		session.open(CrossEPG_Setup, self.downloader)
+
+	def autostart(self, reason, session):
+		crossepg_auto.init(session)
+		
+crossepg_main = CrossEPG_Main()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_setup.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_setup.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg_setup.py	(revision 3613)
@@ -0,0 +1,179 @@
+from enigma import *
+from crossepglib import *
+from crossepg_auto import crossepg_auto
+from crossepg_info import CrossEPG_Info
+from crossepg_extra import CrossEPG_Extra
+from crossepg_locale import _
+
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+
+from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigInteger,ConfigYesNo,ConfigText,ConfigSelection,ConfigClock
+from Components.ConfigList import ConfigListScreen
+from Components.Label import Label
+from Components.Button import Button
+from Components.MenuList import MenuList
+from Components.MultiContent import MultiContentEntryText
+from Components.Harddisk import harddiskmanager
+from Components.PluginComponent import plugins
+from Components.ActionMap import ActionMap
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS
+from Plugins.Plugin import PluginDescriptor
+
+from time import *
+
+import _enigma
+
+class CrossEPG_Setup(ConfigListScreen,Screen):
+	def __init__(self, session, auto_action):
+		if (getDesktop(0).size().width() < 800):
+			skin = "%s/skins/setup_sd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		else:
+			skin = "%s/skins/setup_hd.xml" % (os.path.dirname(sys.modules[__name__].__file__))
+		f = open(skin, "r")
+		self.skin = f.read()
+		f.close()
+		Screen.__init__(self, session)
+		patchtype = getEPGPatchType()
+		if patchtype == 0 or patchtype == 1:
+			self.fastpatch = True
+		else:
+			self.fastpatch = False
+		
+		self.config = CrossEPG_Config()
+		self.config.load()
+		self.providers = self.config.getAllProviders()
+		self.lamedbs = self.config.getAllLamedbs()
+		self.lamedbs_desc = list()
+		self.citems = list()
+		self.mountpoint = list()
+		self.mountdescription = list()
+		self.session = session
+		self.auto_action = auto_action
+		ttime = localtime()
+		ltime = (ttime[0], ttime[1], ttime[2], self.config.auto_daily_hours, self.config.auto_daily_minutes, ttime[5], ttime[6], ttime[7], ttime[8])
+		default = None
+		
+		for partition in harddiskmanager.getMountedPartitions():
+			if partition.mountpoint != "/":
+				if partition.mountpoint + "/crossepg/" == self.config.db_root:
+					default = partition.description
+				self.mountdescription.append(partition.description)
+				self.mountpoint.append(partition.mountpoint + "/crossepg/")
+				
+		self.citems.append((_("Save data on device"), ConfigSelection(self.mountdescription, default)))
+		
+		for lamedb in self.lamedbs:
+			if lamedb == "lamedb":
+				self.lamedbs_desc.append("main lamedb")
+			else:
+				self.lamedbs_desc.append(lamedb.replace("lamedb.", "").replace(".", " "))
+				
+		if self.config.lamedb == "lamedb":
+			lamedbs_sel = "main lamedb"
+		else:
+			lamedbs_sel = self.config.lamedb.replace("lamedb.", "").replace(".", " ")
+				
+		self.citems.append((_("Preferred lamedb"), ConfigSelection(self.lamedbs_desc, lamedbs_sel)))
+		
+		for provider in self.providers:
+			self.citems.append((_("Enable provider %s") % (provider), ConfigYesNo(self.config.providers.count(provider) > 0)))
+		
+		self.citems.append((_("Enable csv import"), ConfigYesNo(self.config.enable_importer > 0)))
+		self.citems.append((_("Automatic load data on boot"), ConfigYesNo(self.config.auto_boot > 0)))
+		self.citems.append((_("Automatic daily download"), ConfigYesNo(self.config.auto_daily > 0)))
+		self.citems.append((_("Automatic daily download at"), ConfigClock(mktime(ltime))))
+		self.citems.append((_("Automatic download on tune"), ConfigYesNo(self.config.auto_tune > 0)))
+		self.citems.append((_("Show OSD for automatic download"), ConfigYesNo(self.config.auto_tune_osd > 0)))
+		if not self.fastpatch:
+			self.citems.append((_("Reboot after a daily download"), ConfigYesNo(self.config.auto_daily_reboot > 0)))
+			self.citems.append((_("Reboot after a manual download"), ConfigYesNo(self.config.manual_reboot > 0)))
+		self.citems.append((_("Show as plugin"), ConfigYesNo(self.config.show_plugin > 0)))
+		self.citems.append((_("Show as extension"), ConfigYesNo(self.config.show_extension > 0)))
+			
+		ConfigListScreen.__init__(self, self.citems)
+		self["key_red"] = Button(_("Cancel"))
+		self["key_green"] = Button(_("OK"))
+		self["key_yellow"] = Button(_("Info"))
+		self["key_blue"] = Button(_("Extra"))
+		self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
+		{
+			"red": self.cancel,
+			"green": self.save,
+			"yellow": self.info,
+			"blue": self.extra,
+			"save": self.save,
+			"cancel": self.cancel,
+			"ok": self.save,
+		}, -2)
+		
+	def save(self):
+		reload_plugins = False
+		self.config.providers = list()
+		
+		self.config.db_root = self.mountpoint[self.citems[0][1].getIndex()]
+		self.config.lamedb = self.lamedbs[self.citems[1][1].getIndex()]
+		i = 2
+			
+		for provider in self.providers:
+			if self.citems[i][1].getValue() == True:
+				self.config.providers.append(provider)
+			i += 1
+		
+		self.config.enable_importer = int(self.citems[i][1].getValue())
+		i += 1
+		self.config.auto_boot = int(self.citems[i][1].getValue())
+		i += 1
+		self.config.auto_daily = int(self.citems[i][1].getValue())
+		i += 1
+		self.config.auto_daily_hours = self.citems[i][1].getValue()[0]
+		self.config.auto_daily_minutes = self.citems[i][1].getValue()[1]
+		i += 1
+		self.config.auto_tune = int(self.citems[i][1].getValue())
+		i += 1
+		self.config.auto_tune_osd = int(self.citems[i][1].getValue())
+		i += 1
+		if not self.fastpatch:
+			self.config.auto_daily_reboot = int(self.citems[i][1].getValue())
+			i += 1
+			self.config.manual_reboot = int(self.citems[i][1].getValue())
+			i += 1
+		
+		if self.config.show_plugin != int(self.citems[i][1].getValue()):
+			reload_plugins = True
+		self.config.show_plugin = int(self.citems[i][1].getValue())
+		i += 1
+		if self.config.show_extension != int(self.citems[i][1].getValue()):
+			reload_plugins = True
+		self.config.show_extension = int(self.citems[i][1].getValue())
+		i += 1
+		
+		self.config.save()
+		if self.config.auto_daily:
+			crossepg_auto.dailyStart()
+		else:
+			crossepg_auto.dailyStop()
+		crossepg_auto.auto_tune = self.config.auto_tune
+		crossepg_auto.auto_tune_osd = self.config.auto_tune_osd
+		
+		if reload_plugins:
+			for plugin in plugins.getPlugins(PluginDescriptor.WHERE_PLUGINMENU):
+				if plugin.name == "CrossEPG Downloader":
+					plugins.removePlugin(plugin)
+				
+			for plugin in plugins.getPlugins(PluginDescriptor.WHERE_EXTENSIONSMENU):
+				if plugin.name == "CrossEPG Downloader":
+					plugins.removePlugin(plugin)
+				
+			plugins.readPluginList(resolveFilename(SCOPE_PLUGINS))
+		
+		self.close()
+		
+	def info(self):
+		self.session.open(CrossEPG_Info)
+		
+	def extra(self):
+		self.session.open(CrossEPG_Extra, self.auto_action)
+		
+	def cancel(self):
+		self.close()
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepglib.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepglib.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepglib.py	(revision 3613)
@@ -0,0 +1,462 @@
+from enigma import *
+from crossepg_locale import _
+from Tools.Directories import crawlDirectory, pathExists, createDir
+from types import *
+
+import sys, traceback
+import os
+import re
+import time
+import new
+import mutex
+import _enigma
+
+# return value
+# -1 none
+# 0 simple epgcache.load() patch
+# 1 edg nemesis patch
+# 2 oudeis patch
+def getEPGPatchType():
+	try:
+		epgpatch = new.instancemethod(_enigma.eEPGCache_load,None,eEPGCache)
+		return 0
+	except Exception, e:
+		pass
+		
+	try:
+		edgpatch = new.instancemethod(_enigma.eEPGCache_reloadEpg,None,eEPGCache)
+		return 1
+	except Exception, e:
+		pass
+		
+	try:
+		oudeispatch = new.instancemethod(_enigma.eEPGCache_importEvent,None,eEPGCache)
+		return 2
+	except Exception, e:
+		pass
+		
+	return -1
+
+class CrossEPG_Config:
+	providers = [ "skyitalia" ]
+	db_root = "/media/hdd/crossepg"
+	lamedb = "lamedb"
+	home_directory = ""
+	
+	auto_boot = 1
+	auto_daily = 0
+	auto_daily_hours = 4
+	auto_daily_minutes = 0
+	auto_daily_reboot = 1
+	auto_tune = 1
+	auto_tune_osd = 0
+	manual_reboot = 1
+	enable_importer = 0
+	show_plugin = 1
+	show_extension = 1
+	
+	def __init__(self):
+		if pathExists("/usr/crossepg"):
+			self.home_directory = "/usr/crossepg"
+		elif pathExists("/var/crossepg"):
+			self.home_directory = "/var/crossepg"
+#---- CIVER added
+		elif pathExists("/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg")
+			self.home_directory = "/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg"
+#---------------
+		else:
+			print "[CrossEPG_Config] ERROR!! CrossEPG binaries non found"
+			
+	def load(self):
+		try:
+			f = open("%s/crossepg.config" % (self.home_directory), "r")
+		except Exception, e:
+			print "[CrossEPG_Config] %s" % (e)
+			return
+			
+		commentRe = re.compile(r"#(.*)")
+		entryRe = re.compile(r"(.*)=(.*)")
+		
+		for line in f.readlines(): 
+			comment = re.findall(commentRe, line)
+			if not comment:
+				entry = re.findall(entryRe, line)
+				if entry:
+					key = entry[0][0].strip()
+					value = entry[0][1].strip()
+					if key == "db_root":
+						self.db_root = value
+					if key == "lamedb":
+						self.lamedb = value
+					elif key == "otv_provider":
+						self.providers = value.split("|")
+					elif key == "auto_boot":
+						self.auto_boot = int(value);
+					elif key == "auto_daily":
+						self.auto_daily = int(value);
+					elif key == "auto_daily_hours":
+						self.auto_daily_hours = int(value);
+					elif key == "auto_daily_minutes":
+						self.auto_daily_minutes = int(value);
+					elif key == "auto_tune":
+						self.auto_tune = int(value);
+					elif key == "auto_tune_osd":
+						self.auto_tune_osd = int(value);
+					elif key == "auto_daily_reboot":
+						self.auto_daily_reboot = int(value);
+					elif key == "manual_reboot":
+						self.manual_reboot = int(value);
+					elif key == "enable_importer":
+						self.enable_importer = int(value);
+					elif key == "show_plugin":
+						self.show_plugin = int(value);
+					elif key == "show_extension":
+						self.show_extension = int(value);
+						
+		f.close()
+		#print "[CrossEPG_Config] configuration loaded"
+		
+	def save(self):
+		try:
+			f = open("%s/crossepg.config" % (self.home_directory), "w")
+		except Exception, e:
+			print "[CrossEPG_Config] %s" % (e)
+			return
+		
+		f.write("db_root=%s\n" % (self.db_root))
+		f.write("lamedb=%s\n" % (self.lamedb))
+		f.write("otv_provider=%s\n" % ("|".join(self.providers)))
+		f.write("auto_boot=%d\n" % (self.auto_boot))
+		f.write("auto_daily=%d\n" % (self.auto_daily))
+		f.write("auto_daily_hours=%d\n" % (self.auto_daily_hours))
+		f.write("auto_daily_minutes=%d\n" % (self.auto_daily_minutes))
+		f.write("auto_tune=%d\n" % (self.auto_tune))
+		f.write("auto_tune_osd=%d\n" % (self.auto_tune_osd))
+		f.write("auto_daily_reboot=%d\n" % (self.auto_daily_reboot))
+		f.write("manual_reboot=%d\n" % (self.manual_reboot))
+		f.write("enable_importer=%d\n" % (self.enable_importer))
+		f.write("show_plugin=%d\n" % (self.show_plugin))
+		f.write("show_extension=%d\n" % (self.show_extension))
+		
+		f.close()
+		#print "[CrossEPG_Config] configuration saved"
+		
+	def getChannelID(self, provider):
+		try:
+			f = open("%s/providers/%s.conf" % (self.home_directory, provider), "r")
+		except Exception, e:
+			print "[CrossEPG_Config] %s" % (e)
+			return
+			
+		nid = -1;
+		tsid = -1;
+		sid = -1;
+		namespace = -1;
+		nidRe = re.compile(r"nid=(.*)")
+		tsidRe = re.compile(r"tsid=(.*)")
+		sidRe = re.compile(r"sid=(.*)")
+		namespaceRe = re.compile(r"namespace=(.*)")
+		
+		for line in f.readlines(): 
+			znid = re.findall(nidRe, line)
+			if znid:
+				nid = int(znid[0]);
+			zsid = re.findall(sidRe, line)
+			if zsid:
+				sid = int(zsid[0]);
+			ztsid = re.findall(tsidRe, line)	
+			if ztsid:
+				tsid = int(ztsid[0]);
+			znamespace = re.findall(namespaceRe, line)	
+			if znamespace:
+				namespace = int(znamespace[0]);
+		
+		if nid == -1 or sid == -1 or tsid == -1:
+			print "[CrossEPG_Config] invalid configuration file"
+			return
+		
+		f.close()
+		return "1:0:1:%X:%X:%X:%X:0:0:0:" % (sid, tsid, nid, namespace)
+		
+	def getAllProviders(self):
+		providers = list()
+		cfiles = crawlDirectory("%s/providers/" % (self.home_directory), ".*\.conf$")
+		for cfile in cfiles:
+			providers.append(cfile[1].replace(".conf", ""))
+		
+		providers.sort()
+		return providers
+		
+	def getAllLamedbs(self):
+		lamedbs = list()
+		cfiles = crawlDirectory("/etc/enigma2/", "^lamedb.*")
+		for cfile in cfiles:
+			lamedbs.append(cfile[1])
+			
+		return lamedbs
+		
+	def getAllImportScripts(self):
+		scripts = list()
+		importdir = "%s/import_scripts/" % (self.db_root)
+		if not pathExists(importdir):
+			importdir = "/media/hdd/crossepg/import_scripts/"
+		
+		cfiles = crawlDirectory(importdir, ".*")
+		for cfile in cfiles:
+			scripts.append(cfile[1])
+			
+		return scripts
+
+class CrossEPG_Wrapper:
+	EVENT_READY				= 0
+	EVENT_OK				= 1
+	EVENT_START				= 2
+	EVENT_END				= 3
+	EVENT_QUIT				= 4
+	EVENT_ERROR				= 5
+	EVENT_ACTION			= 6
+	EVENT_STATUS			= 7
+	EVENT_PROGRESS			= 8
+	EVENT_PROGRESSONOFF		= 9
+	EVENT_CHANNEL			= 10
+	EVENT_STARTTIME			= 11
+	EVENT_LENGTH			= 12
+	EVENT_NAME				= 13
+	EVENT_DESCRIPTION		= 14
+	EVENT_FILE				= 15
+	EVENT_URL				= 16
+	
+	INFO_HEADERSDB_SIZE		= 50
+	INFO_DESCRIPTORSDB_SIZE	= 51
+	INFO_INDEXESDB_SIZE		= 52
+	INFO_ALIASESDB_SIZE		= 53
+	INFO_TOTAL_SIZE			= 54
+	INFO_CHANNELS_COUNT		= 55
+	INFO_EVENTS_COUNT		= 56
+	INFO_HASHES_COUNT		= 57
+	INFO_CREATION_TIME		= 58
+	INFO_UPDATE_TIME		= 59
+	INFO_VERSION			= 60
+	
+	CMD_DOWNLOADER	= 0
+	CMD_CONVERTER	= 1
+	CMD_INFO		= 2
+	CMD_IMPORTER	= 3
+
+	home_directory = ""
+
+	def __init__(self):
+		self.cmd = eConsoleAppContainer()
+		self.cache = None
+		self.callbackList = []
+		self.type = 0
+		self.maxSize = "0 byte"
+		if pathExists("/usr/crossepg"):
+			self.home_directory = "/usr/crossepg"
+		elif pathExists("/var/crossepg"):
+			self.home_directory = "/var/crossepg"
+#---- CIVER added
+		elif pathExists("/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg")
+			self.home_directory = "/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/crossepg"
+#---------------
+		else:
+			print "[CrossEPG_Config] ERROR!! CrossEPG binaries non found"
+		
+	def init(self, cmd, dbdir):
+		if not pathExists(dbdir):
+			if not createDir(dbdir):
+				dbdir = "/media/hdd/crossepg"
+				
+		if cmd == self.CMD_DOWNLOADER:
+			x = "%s/crossepg_downloader -k 19 -r -d %s" % (self.home_directory, dbdir)
+		elif cmd == self.CMD_CONVERTER:
+			x = "%s/crossepg_dbconverter -k 19 -r -d %s" % (self.home_directory, dbdir)
+		elif cmd == self.CMD_INFO:
+			x = "%s/crossepg_dbinfo -k 19 -r -d %s" % (self.home_directory, dbdir)
+		elif cmd == self.CMD_IMPORTER:
+			x = "%s/crossepg_importer -k 19 -r -d %s" % (self.home_directory, dbdir)
+		else:
+			print "[CrossEPG_Wrapper] unknow command on init"
+			return
+			
+		print "[CrossEPG_Wrapper] executing %s" % (x)
+		self.cmd.appClosed.append(self.__cmdFinished)
+		self.cmd.dataAvail.append(self.__cmdData)
+		if self.cmd.execute(x):
+			self.cmdFinished(-1)
+			
+	def __cmdFinished(self, retval):
+		self.__callCallbacks(self.EVENT_QUIT)
+		self.cmd.appClosed.remove(self.__cmdFinished)
+		self.cmd.dataAvail.remove(self.__cmdData)
+
+	def __cmdData(self, data):
+		if self.cache is None:
+			self.cache = data
+		else:
+			self.cache += data
+
+		if '\n' in data:
+			splitcache = self.cache.split('\n')
+			if self.cache[-1] == '\n':
+				iteration = splitcache
+				self.cache = None
+			else:
+				iteration = splitcache[:-1]
+				self.cache = splitcache[-1]
+			for mydata in iteration:
+				if mydata != '':
+					self.__parseLine(mydata)
+
+	def __parseLine(self, data):
+		if data.find("CHANNEL ") == 0:
+			self.__callCallbacks(self.EVENT_CHANNEL, data[7:])
+		elif data.find("STARTTIME ") == 0:
+			self.__callCallbacks(self.EVENT_STARTTIME, int(data[10:]))
+		elif data.find("LENGTH ") == 0:
+			self.__callCallbacks(self.EVENT_LENGTH, int(data[7:]))
+		elif data.find("NAME ") == 0:
+			self.__callCallbacks(self.EVENT_NAME, data[5:])
+		elif data.find("DESCRIPTION ") == 0:
+			self.__callCallbacks(self.EVENT_DESCRIPTION, data[12:].replace("\\n", "\n"))
+		elif data == "READY":
+			print "[CrossEPG_Wrapper] <- READY"
+			self.__callCallbacks(self.EVENT_READY, None)
+		elif data == "START":
+			print "[CrossEPG_Wrapper] <- START"
+			self.__callCallbacks(self.EVENT_START, None)
+		elif data == "END":
+			print "[CrossEPG_Wrapper] <- END"
+			self.__callCallbacks(self.EVENT_END, None)
+		elif data == "OK":
+			print "[CrossEPG_Wrapper] <- OK"
+			self.__callCallbacks(self.EVENT_OK, None)
+		elif data.find("ERROR ") == 0:
+			ttype = data[5:]
+			self.__callCallbacks(self.EVENT_ERROR, data[6:])
+		elif data.find("TYPE ") == 0:
+			ttype = data[5:]
+			print "[CrossEPG_Wrapper] <- TYPE %s" % (ttype)
+			if (ttype == "READ CHANNELS"):
+				self.type = 0;
+				self.__callCallbacks(self.EVENT_ACTION, _("Reading channels"))
+			elif (ttype == "READ TITLES"):
+				self.type = 1;
+				self.__callCallbacks(self.EVENT_ACTION, _("Reading titles"))
+			elif (ttype == "PARSE TITLES"):
+				self.type = 2;
+				self.__callCallbacks(self.EVENT_ACTION, _("Parsing titles"))
+			elif (ttype == "READ SUMMARIES"):
+				self.type = 3;
+				self.__callCallbacks(self.EVENT_ACTION, _("Reading summaries"))
+			elif (ttype == "PARSE SUMMARIES"):
+				self.type = 4;
+				self.__callCallbacks(self.EVENT_ACTION, _("Parsing summaries"))
+		elif data.find("CHANNELS ") == 0:
+			self.__callCallbacks(self.EVENT_STATUS, _("%s channels") % (data[9:]))
+		elif data.find("SIZE ") == 0:
+			if self.type == 1 or self.type == 3:
+				self.maxSize = data[5:]
+				self.__callCallbacks(self.EVENT_STATUS, _("Read %s") % (data[5:]))
+			else:
+				self.__callCallbacks(self.EVENT_STATUS, _("%s of %s") % (data[5:], self.maxSize))
+		elif data.find("PROGRESS ") == 0:
+			if data[9:] == "ON":
+				self.__callCallbacks(self.EVENT_PROGRESSONOFF, True)
+			elif data[9:] == "OFF":
+				self.__callCallbacks(self.EVENT_PROGRESSONOFF, False)
+			else:
+				self.__callCallbacks(self.EVENT_PROGRESS, int(data[9:]))
+		elif data.find("FILE ") == 0:
+			self.__callCallbacks(self.EVENT_FILE, data[5:])
+		elif data.find("URL ") == 0:
+			self.__callCallbacks(self.EVENT_URL, data[4:])
+		elif data.find("VERSION ") == 0:
+			self.__callCallbacks(self.INFO_VERSION, data[8:])
+		elif data.find("HEADERSDB_SIZE ") == 0:
+			self.__callCallbacks(self.INFO_HEADERSDB_SIZE, data[15:])
+		elif data.find("DESCRIPTORSDB_SIZE ") == 0:
+			self.__callCallbacks(self.INFO_DESCRIPTORSDB_SIZE, data[19:])
+		elif data.find("INDEXESDB_SIZE ") == 0:
+			self.__callCallbacks(self.INFO_INDEXESDB_SIZE, data[15:])
+		elif data.find("ALIASESDB_SIZE ") == 0:
+			self.__callCallbacks(self.INFO_ALIASESDB_SIZE, data[15:])
+		elif data.find("TOTAL_SIZE ") == 0:
+			self.__callCallbacks(self.INFO_TOTAL_SIZE, data[11:])
+		elif data.find("CHANNELS_COUNT ") == 0:
+			self.__callCallbacks(self.INFO_CHANNELS_COUNT, data[15:])
+		elif data.find("EVENTS_COUNT ") == 0:
+			self.__callCallbacks(self.INFO_EVENTS_COUNT, data[13:])
+		elif data.find("HASHES_COUNT ") == 0:
+			self.__callCallbacks(self.INFO_HASHES_COUNT, data[13:])
+		elif data.find("CREATION_TIME ") == 0:
+			self.__callCallbacks(self.INFO_CREATION_TIME, data[14:])
+		elif data.find("UPDATE_TIME ") == 0:
+			self.__callCallbacks(self.INFO_UPDATE_TIME, data[12:])
+
+	def __callCallbacks(self, event, param = None):
+		for callback in self.callbackList:
+			callback(event, param)
+
+	def addCallback(self, callback):
+		self.callbackList.append(callback)
+
+	def delCallback(self, callback):
+		self.callbackList.remove(callback)
+
+	def running(self):
+		return self.cmd.running()
+		
+	def lamedb(self, value):
+		print "[CrossEPG_Wrapper] -> LAMEDB %s" % (value)
+		cmd = "LAMEDB %s\n" % (value)
+		self.cmd.write(cmd, len(cmd))
+		
+	def epgdat(self, value):
+		print "[CrossEPG_Wrapper] -> EPGDAT %s" % (value)
+		cmd = "EPGDAT %s\n" % (value)
+		self.cmd.write(cmd, len(cmd))
+			
+	def demuxer(self, value):
+		print "[CrossEPG_Wrapper] -> DEMUXER %s" % (value)
+		cmd = "DEMUXER %s\n" % (value)
+		self.cmd.write(cmd, len(cmd))
+
+	def download(self, provider):
+		print "[CrossEPG_Wrapper] -> DOWNLOAD %s" % (provider)
+		cmd = "DOWNLOAD %s\n" % (provider)
+		self.cmd.write(cmd, len(cmd))
+		
+	def convert(self):
+		print "[CrossEPG_Wrapper] -> CONVERT"
+		self.__callCallbacks(self.EVENT_ACTION, _("Converting data"))
+		self.__callCallbacks(self.EVENT_STATUS, "")
+		self.cmd.write("CONVERT\n", 8)
+		
+	def importx(self):
+		print "[CrossEPG_Wrapper] -> IMPORT"
+		self.cmd.write("IMPORT\n", 7)
+		
+	def text(self):
+		print "[CrossEPG_Wrapper] -> TEXT"
+		self.__callCallbacks(self.EVENT_ACTION, _("Loading data"))
+		self.__callCallbacks(self.EVENT_STATUS, "")
+		self.cmd.write("TEXT\n", 5)
+			
+	def stop(self):
+		print "[CrossEPG_Wrapper] -> STOP"
+		self.cmd.write("STOP\n", 5)
+
+	def save(self):
+		print "[CrossEPG_Wrapper] -> SAVE"
+		self.__callCallbacks(self.EVENT_ACTION, _("Saving data"))
+		self.__callCallbacks(self.EVENT_STATUS, "")
+		self.cmd.write("SAVE\n", 5)
+
+	def wait(self):
+		print "[CrossEPG_Wrapper] -> WAIT"
+		self.cmd.write("WAIT\n", 5)
+
+	def quit(self):
+		print "[CrossEPG_Wrapper] -> QUIT"
+		self.cmd.write("QUIT\n", 5)
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/plugin.py
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/plugin.py	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/plugin.py	(revision 3613)
@@ -0,0 +1,41 @@
+from crossepglib import CrossEPG_Config
+from crossepg_main import crossepg_main
+from crossepg_locale import _
+from Plugins.Plugin import PluginDescriptor
+
+def setup(menuid, **kwargs):
+	if menuid == "setup":
+		return [("CrossEPG", crossepg_main.setup, "crossepg", None)]
+	else:
+		return []
+
+def Plugins(**kwargs):
+	config = CrossEPG_Config()
+	config.load()
+	plugins = list()
+	if config.show_plugin == 1 and config.show_extension == 1:
+		plugins.append(PluginDescriptor(name="CrossEPG Downloader",
+										description=_("An EPG downloader"),
+										where = [ PluginDescriptor.WHERE_EXTENSIONSMENU, PluginDescriptor.WHERE_PLUGINMENU ],
+										fnc = crossepg_main.downloader))
+	elif config.show_extension == 1:
+		plugins.append(PluginDescriptor(name="CrossEPG Downloader",
+										description=_("An EPG downloader"),
+										where = PluginDescriptor.WHERE_EXTENSIONSMENU,
+										fnc = crossepg_main.downloader))
+	elif config.show_plugin == 1:
+		plugins.append(PluginDescriptor(name="CrossEPG Downloader",
+										description=_("An EPG downloader"),
+										where = PluginDescriptor.WHERE_PLUGINMENU,
+										fnc = crossepg_main.downloader))
+										
+	plugins.append(PluginDescriptor(name="CrossEPG",
+									description=_("CrossEPG setup panel"),
+									where = PluginDescriptor.WHERE_MENU,
+									fnc = setup))
+										
+	plugins.append(PluginDescriptor(name="CrossEPG Auto",
+									description = _("CrossEPG automatic actions"),
+									where = PluginDescriptor.WHERE_SESSIONSTART,
+									fnc = crossepg_main.autostart))
+	return plugins;
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_hd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_hd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_hd.xml	(revision 3613)
@@ -0,0 +1,5 @@
+<screen position="880,590" size="350,90" title="CrossEPG">
+	<widget name="action" halign="center" valign="center" position="5,5" size="340,25" font="Regular;18" />
+	<widget name="status" halign="center" valign="center" position="5,35" size="340,25" font="Regular;17" />
+	<widget name="progress" position="5,65" size="340,20" borderWidth="1" />
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_ks.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_ks.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_ks.xml	(revision 3613)
@@ -0,0 +1,5 @@
+<screen position="700,460" size="280,75" title="CrossEPG">
+	<widget name="action" halign="center" valign="center" position="5,2" size="270,20" font="Regular;16" />
+	<widget name="status" halign="center" valign="center" position="5,25" size="270,20" font="Regular;15" />
+	<widget name="progress" position="5,55" size="270,15" borderWidth="1" />
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_sd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_sd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/downloader_sd.xml	(revision 3613)
@@ -0,0 +1,5 @@
+<screen position="400,460" size="280,75" title="CrossEPG">
+	<widget name="action" halign="center" valign="center" position="5,2" size="270,20" font="Regular;16" />
+	<widget name="status" halign="center" valign="center" position="5,25" size="270,20" font="Regular;15" />
+	<widget name="progress" position="5,55" size="270,15" borderWidth="1" />
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_hd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_hd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_hd.xml	(revision 3613)
@@ -0,0 +1,3 @@
+<screen position="center,center" size="1080,550" title="CrossEPG Exec">
+	<widget name="log" position="10,10" size="1060,530" font="Regular;18" />
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_sd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_sd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/exec_sd.xml	(revision 3613)
@@ -0,0 +1,3 @@
+<screen position="center,center" size="560,400" title="CrossEPG Exec">
+	<widget name="log" position="10,10" size="540,380" font="Regular;16" />
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_hd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_hd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_hd.xml	(revision 3613)
@@ -0,0 +1,13 @@
+<screen position="center,center" size="560,400" title="CrossEPG Extra">
+	<widget name="menu" position="5,5" size="550,350" scrollbarMode="showOnDemand" />
+
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_sd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_sd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/extra_sd.xml	(revision 3613)
@@ -0,0 +1,13 @@
+<screen position="center,center" size="560,400" title="CrossEPG Extra">
+	<widget name="menu" position="10,10" size="540,350" scrollbarMode="showOnDemand" />
+	
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_hd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_hd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_hd.xml	(revision 3613)
@@ -0,0 +1,23 @@
+<screen position="center,center" size="560,400" title="CrossEPG Info">
+	<widget name="version" position="10,10" size="540,25" font="Regular;20" />
+	<widget name="create" position="10,40" size="540,25" font="Regular;20" />
+	<widget name="last_update" position="10,70" size="540,25" font="Regular;20" />
+	<widget name="headersdb_size" position="10,100" size="540,25" font="Regular;20" />
+	<widget name="descriptorsdb_size" position="10,130" size="540,25" font="Regular;20" />
+	<widget name="indexesdb_size" position="10,160" size="540,25" font="Regular;20" />
+	<widget name="aliasesdb_size" position="10,190" size="540,25" font="Regular;20" />
+	<widget name="total_size" position="10,220" size="540,25" font="Regular;20" />
+	<widget name="channels_count" position="10,250" size="540,25" font="Regular;20" />
+	<widget name="events_count" position="10,280" size="540,25" font="Regular;20" />
+	<widget name="hashes_count" position="10,310" size="540,25" font="Regular;20" />
+
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_sd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_sd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/info_sd.xml	(revision 3613)
@@ -0,0 +1,23 @@
+<screen position="center,center" size="560,400" title="CrossEPG Info">
+	<widget name="version" position="10,10" size="540,25" font="Regular;20" />
+	<widget name="create" position="10,40" size="540,25" font="Regular;20" />
+	<widget name="last_update" position="10,70" size="540,25" font="Regular;20" />
+	<widget name="headersdb_size" position="10,100" size="540,25" font="Regular;20" />
+	<widget name="descriptorsdb_size" position="10,130" size="540,25" font="Regular;20" />
+	<widget name="indexesdb_size" position="10,160" size="540,25" font="Regular;20" />
+	<widget name="aliasesdb_size" position="10,190" size="540,25" font="Regular;20" />
+	<widget name="total_size" position="10,220" size="540,25" font="Regular;20" />
+	<widget name="channels_count" position="10,250" size="540,25" font="Regular;20" />
+	<widget name="events_count" position="10,280" size="540,25" font="Regular;20" />
+	<widget name="hashes_count" position="10,310" size="540,25" font="Regular;20" />
+
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_hd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_hd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_hd.xml	(revision 3613)
@@ -0,0 +1,13 @@
+<screen position="center,center" size="560,400" title="CrossEPG Setup">
+	<widget name="config" position="5,5" size="550,350" scrollbarMode="showOnDemand" zPosition="1"/>
+	
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
Index: ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_sd.xml
===================================================================
--- ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_sd.xml	(revision 3613)
+++ ipk/source/epg_crossepg_0_41_svn38/var/usr/lib/enigma2/python/Plugins/SystemPlugins/CrossEPG/skins/setup_sd.xml	(revision 3613)
@@ -0,0 +1,13 @@
+<screen position="center,center" size="560,400" title="CrossEPG Setup">
+	<widget name="config" position="5,5" size="550,350" scrollbarMode="showOnDemand" zPosition="1"/>
+	
+	<widget name="key_red" position="0,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_green" position="140,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_yellow" position="280,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	<widget name="key_blue" position="420,360" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+	
+	<ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+	<ePixmap name="blue" pixmap="skin_default/buttons/blue.png" position="420,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+</screen>
