39 files changed, 2136 insertions, 1652 deletions
diff --git a/library/applnk.cpp b/library/applnk.cpp index 4adf1bd..8763eb2 100644 --- a/library/applnk.cpp +++ b/library/applnk.cpp @@ -1,1493 +1,1493 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_MIMEEXT #define QTOPIA_INTERNAL_PRELOADACCESS #define QTOPIA_INTERNAL_APPLNKASSIGN #include "applnk.h" #include <qpe/qpeapplication.h> #include <qpe/categories.h> #include <qpe/categoryselect.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/global.h> #include <qpe/mimetype.h> #include <qpe/config.h> #include <qpe/storage.h> #include <qpe/resource.h> #include <qdict.h> #include <qdir.h> #include <qregexp.h> #include <qgfx_qws.h> #include <stdlib.h> int AppLnk::lastId = 5000; static int smallSize = 14; static int bigSize = 32; static QString safeFileName(const QString& n) { QString safename=n; safename.replace(QRegExp("[^0-9A-Za-z.]"),"_"); safename.replace(QRegExp("^[^A-Za-z]*"),""); if ( safename.isEmpty() ) safename = "_"; return safename; } static bool prepareDirectories(const QString& lf) { if ( !QFile::exists(lf) ) { // May need to create directories QFileInfo fi(lf); if ( system(("mkdir -p "+fi.dirPath(TRUE))) ) return FALSE; } return TRUE; } class AppLnkPrivate { public: /* the size of the Pixmap */ enum Size {Normal = 0, Big }; AppLnkPrivate() { /* we want one normal and one big item */ QPixmap pix; mPixmaps.insert(0, pix ); mPixmaps.insert(1, pix); } QStringList mCatList; // always correct QArray<int> mCat; // cached value; correct if not empty QMap<int, QPixmap> mPixmaps; void updateCatListFromArray() { Categories cat( 0 ); cat.load( categoryFileName() ); // we need to update the names for the mCat... to mCatList mCatList.clear(); for (uint i = 0; i < mCat.count(); i++ ) mCatList << cat.label("Document View", mCat[i] ); } void setCatArrayDirty() { mCat.resize(0); } void ensureCatArray() { if ( mCat.count() > 0 || mCatList.count()==0 ) return; Categories cat( 0 ); cat.load( categoryFileName() ); mCat.resize( mCatList.count() ); int i; QStringList::ConstIterator it; for ( i = 0, it = mCatList.begin(); it != mCatList.end(); ++it, i++ ) { bool number; int id = (*it).toInt( &number ); if ( !number ) { id = cat.id( "Document View", *it ); if ( id == 0 ) id = cat.addCategory( "Document View", *it ); } mCat[i] = id; } } }; /*! \class AppLnk applnk.h \brief The AppLnk class represents an application available on the system. Every Qtopia application \e app has a corresponding \e app.desktop file. When one of these files is read its data is stored as an AppLnk object. The AppLnk class introduces some Qtopia-specific concepts, and provides a variety of functions, as described in the following sections. \tableofcontents \target Types \section1 Types Every AppLnk object has a \e type. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. \target files-and-links \section1 Files and Links When you create an AppLnk (or more likely, a \link doclnk.html DocLnk\endlink), you don't deal directly with filenames in the filesystem. Instead you do this: \code DocLnk d; d.setType("text/plain"); d.setName("My Nicely Named Document / Whatever"); // Yes, "/" is legal. \endcode At this point, the file() and linkFile() are unknown. Normally this is uninteresting, and the names become automatically known, and more importantly, becomes reserved, when you ask what they are: \code QString fn = d.file(); \endcode This invents a filename, and creates the file on disk (an empty reservation file) to prevent the name being used by another application. In some circumstances, you don't want to create the file if it doesn't already exist (e.g. in the Document tab, some of the \link doclnk.html DocLnk\endlink objects represented by icons are DocLnk's created just for that view - they don't have corresponding \c .desktop files. To avoid littering empty reservation files around, we check in a few places to see whether the file really needs to exist). \section1 Functionality AppLnk objects are created by calling the constructor with the name of a \e .desktop file. The object can be checked for validity using isValid(). The following functions are used to set or retrieve information about the application: \table \header \i Get Function \i Set Function \i Short Description \row \i \l name() \i \l setName() \i application's name \row \i \l pixmap() \i \e none \i application's icon \row \i \l bigPixmap() \i \e none \i application's large icon \row \i \e none \i setIcon() \i sets the icon's filename \row \i \l type() \i \l setType() \i see \link #Types Types\endlink above \row \i \l rotation() \i \e none \i 0, 90, 180 or 270 degrees \row \i \l comment() \i \l setComment() \i text for the Details dialog \row \i \l exec() \i \l setExec() \i executable's filename \row \i \l file() \i \e none \i document's filename \row \i \l linkFile() \i \l setLinkFile() \i \e .desktop filename \row \i \l mimeTypes() \i \e none \i the mime types the application can view or edit \row \i \l categories() \i \l setCategories() \i \e{see the function descriptions} \row \i \l fileKnown() \i \e none \i see \link #files-and-links Files and Links\endlink above \row \i \l linkFileKnown() \i \e none \i see \link #files-and-links Files and Links\endlink above \row \i \l property() \i \l setProperty() \i any AppLnk property can be retrieved or set (if writeable) using these \endtable To save an AppLnk to disk use writeLink(). To execute the application that the AppLnk object refers to, use execute(). AppLnk's can be deleted from disk using removeLinkFile(). To remove both the link and the application's executable use removeFiles(). Icon sizes can be globally changed (but only for AppLnk objects created after the calls) with setSmallIconSize() and setBigIconSize(). \ingroup qtopiaemb */ /*! Sets the size used for small icons to \a small pixels. Only affects AppLnk objects created after the call. \sa smallIconSize() setIcon() */ void AppLnk::setSmallIconSize(int small) { smallSize = small; } /*! Returns the size used for small icons. \sa setSmallIconSize() setIcon() */ int AppLnk::smallIconSize() { return smallSize; } /*! Sets the size used for large icons to \a big pixels. Only affects AppLnk objects created after the call. \sa bigIconSize() setIcon() */ void AppLnk::setBigIconSize(int big) { bigSize = big; } /*! Returns the size used for large icons. \sa setBigIconSize() setIcon() */ int AppLnk::bigIconSize() { return bigSize; } /*! \fn QString AppLnk::name() const Returns the Name property. This is the user-visible name for the document or application, not the filename. See \link #files-and-links Files and Links\endlink. \sa setName() */ /*! \fn QString AppLnk::exec() const Returns the Exec property. This is the name of the executable program associated with the AppLnk. \sa setExec() */ /*! \fn QString AppLnk::rotation() const Returns the Rotation property. The value is 0, 90, 180 or 270 degrees. */ /*! \fn QString AppLnk::comment() const Returns the Comment property. \sa setComment() */ /*! \fn QStringList AppLnk::mimeTypes() const Returns the MimeTypes property. This is the list of MIME types that the application can view or edit. */ /*! \fn const QArray<int>& AppLnk::categories() const Returns the Categories property. See the CategoryWidget for more details. \sa setCategories() */ const QArray<int>& AppLnk::categories() const { d->ensureCatArray(); return d->mCat; } /*! \fn int AppLnk::id() const Returns the id of the AppLnk. If the AppLnk is not in an AppLnkSet, this value is 0, otherwise it is a value that is unique for the duration of the current process. \sa AppLnkSet::find() */ /*! \fn bool AppLnk::isValid() const Returns TRUE if this AppLnk is valid; otherwise returns FALSE. */ /*! \fn bool AppLnk::fileKnown() const If the with the AppLnk associated file is not equal to QString::null */ /*! \fn bool AppLnk::linkFileKnown()const The filename of the AppLnk */ /*! \fn void AppLnk::setRotation( const QString& ) The default rotation of the associated application. This function is included inline for binary compatible issues */ /*! Creates an invalid AppLnk. \sa isValid() */ AppLnk::AppLnk() { mId = 0; d = new AppLnkPrivate(); } /*! Loads \a file (e.g. \e app.desktop) as an AppLnk. \sa writeLink() */ AppLnk::AppLnk( const QString &file ) { QStringList sl; d = new AppLnkPrivate(); if ( !file.isNull() ) { Config config( file, Config::File ); if ( config.isValid() ) { config.setGroup( "Desktop Entry" ); mName = config.readEntry( "Name", file ); mExec = config.readEntry( "Exec" ); mType = config.readEntry( "Type", QString::null ); mIconFile = config.readEntry( "Icon", QString::null ); mRotation = config.readEntry( "Rotation", "" ); mComment = config.readEntry( "Comment", QString::null ); // MIME types are case-insensitive. mMimeTypes = config.readListEntry( "MimeType", ';' ); for (QStringList::Iterator it=mMimeTypes.begin(); it!=mMimeTypes.end(); ++it) *it = (*it).lower(); mMimeTypeIcons = config.readListEntry( "MimeTypeIcons", ';' ); mLinkFile = file; mFile = config.readEntry("File", QString::null); if ( !mExec. isEmpty ( )) { mFile = QString::null; } else if ( mFile[0] != '/' ) { int slash = file.findRev('/'); if ( slash >= 0 ) { mFile = file.left(slash) + '/' + mFile; } } d->mCatList = config.readListEntry("Categories", ';'); if ( d->mCatList[0].toInt() < -1 ) { // numeric cats in file! convert to text Categories cat( 0 ); cat.load( categoryFileName() ); d->mCat.resize( d->mCatList.count() ); int i; QStringList::ConstIterator it; for ( i = 0, it = d->mCatList.begin(); it != d->mCatList.end(); ++it, i++ ) { bool number; int id = (*it).toInt( &number ); if ( !number ) { // convert from text id = cat.id( "Document View", *it ); if ( id == 0 ) id = cat.addCategory( "Document View", *it ); } d->mCat[i] = id; } d->updateCatListFromArray(); } } } mId = 0; } AppLnk& AppLnk::operator=(const AppLnk ©) { if ( this == © ) return *this; if ( mId ) qWarning("Deleting AppLnk that is in an AppLnkSet"); if ( d ) delete d; mName = copy.mName; /* remove for Qtopia 3.0 -zecke */ mPixmap = copy.mPixmap; mBigPixmap = copy.mBigPixmap; mExec = copy.mExec; mType = copy.mType; mRotation = copy.mRotation; mComment = copy.mComment; mFile = copy.mFile; mLinkFile = copy.mLinkFile; mIconFile = copy.mIconFile; mMimeTypes = copy.mMimeTypes; mMimeTypeIcons = copy.mMimeTypeIcons; mId = 0; d = new AppLnkPrivate(); d->mCat = copy.d->mCat; d->mCatList = copy.d->mCatList; d->mPixmaps = copy.d->mPixmaps; return *this; } /*! protected internally to share code should I document that at all? I don't know the TT style for that */ const QPixmap& AppLnk::pixmap( int pos, int size ) const { if ( d->mPixmaps[pos].isNull() ) { AppLnk* that = (AppLnk*)this; if ( mIconFile.isEmpty() ) { MimeType mt(type()); - that->d->mPixmaps[pos] = mt.pixmap(); + that->d->mPixmaps[pos] = pos ? mt.bigPixmap() : mt.pixmap(); if ( that->d->mPixmaps[pos].isNull() ) that->d->mPixmaps[pos].convertFromImage( Resource::loadImage("UnknownDocument") .smoothScale( size, size ) ); return that->d->mPixmaps[pos]; } QImage unscaledIcon = Resource::loadImage( that->mIconFile ); if ( unscaledIcon.isNull() ) { // qDebug( "Cannot find icon: %s", that->mIconFile.latin1() ); that->d->mPixmaps[pos].convertFromImage( Resource::loadImage("UnknownDocument") .smoothScale( size, size ) ); } else { that->d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); that->d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); } return that->d->mPixmaps[pos]; } return d->mPixmaps[pos]; } /*! Returns a small pixmap associated with the application. \sa bigPixmap() setIcon() */ const QPixmap& AppLnk::pixmap() const { if ( d->mPixmaps[0].isNull() ) { return pixmap(AppLnkPrivate::Normal, smallSize ); } return d->mPixmaps[0]; } /*! Returns a large pixmap associated with the application. \sa pixmap() setIcon() */ const QPixmap& AppLnk::bigPixmap() const { if ( d->mPixmaps[1].isNull() ) { return pixmap( AppLnkPrivate::Big, bigSize ); } return d->mPixmaps[1]; } /*! Returns the type of the AppLnk. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. */ QString AppLnk::type() const { if ( mType.isNull() ) { AppLnk* that = (AppLnk*)this; QString f = file(); if ( !f.isNull() ) { MimeType mt(f); that->mType = mt.id(); return that->mType; } } return mType; } /*! Returns the file associated with the AppLnk. \sa exec() name() */ QString AppLnk::file() const { if ( mExec.isEmpty ( ) && mFile.isNull() ) { AppLnk* that = (AppLnk*)this; QString ext = MimeType(mType).extension(); if ( !ext.isEmpty() ) ext = "." + ext; if ( !mLinkFile.isEmpty() ) { that->mFile = mLinkFile.right(8)==".desktop" // 8 = strlen(".desktop") ? mLinkFile.left(mLinkFile.length()-8) : mLinkFile; qDebug("mFile now == %s", mFile.latin1()); } else if ( mType.contains('/') ) { that->mFile = QString(getenv("HOME"))+"/Documents/"+mType+"/"+safeFileName(that->mName); /* * A file with the same name or a .desktop file already exists */ if ( QFile::exists(that->mFile+ext) || QFile::exists(that->mFile+".desktop") ) { int n=1; QString nn; while (QFile::exists((nn=(that->mFile+"_"+QString::number(n)))+ext) || QFile::exists(nn+".desktop")) n++; that->mFile = nn; } that->mLinkFile = that->mFile+".desktop"; that->mFile += ext; } prepareDirectories(that->mFile); if ( !that->mFile.isEmpty() ) { QFile f(that->mFile); if ( !f.open(IO_WriteOnly) ) that->mFile = QString::null; return that->mFile; } } return mFile; } /*! Returns the desktop file corresponding to this AppLnk. \sa file() exec() name() */ QString AppLnk::linkFile() const { if ( mLinkFile.isNull() ) { AppLnk* that = (AppLnk*)this; if ( type().contains('/') ) { StorageInfo storage; const FileSystem *fs = storage.fileSystemOf( that->mFile ); /* tmpfs + and ramfs are available too but not removable * either we fix storage or add this */ if ( fs && ( fs->isRemovable() || fs->disk() == "/dev/mtdblock6" || fs->disk() == "tmpfs") ) { that->mLinkFile = fs->path(); } else that->mLinkFile = getenv( "HOME" ); that->mLinkFile += "/Documents/"+type()+"/"+safeFileName(that->mName); /* the desktop file exists make sure we don't point to the same file */ if ( QFile::exists(that->mLinkFile+".desktop") ) { AppLnk lnk( that->mLinkFile + ".desktop" ); /* the linked is different */ if(that->file() != lnk.file() ) { int n = 1; QString nn; while (QFile::exists((nn=that->mLinkFile+"_"+QString::number(n))+".desktop")) { n++; /* just to be sure */ AppLnk lnk(nn ); if (lnk.file() == that->file() ) break; } that->mLinkFile = nn; } } that->mLinkFile += ".desktop"; storeLink(); } return that->mLinkFile; } return mLinkFile; } /*! Copies \a copy. */ AppLnk::AppLnk( const AppLnk © ) { mName = copy.mName; mPixmap = copy.mPixmap; mBigPixmap = copy.mBigPixmap; mExec = copy.mExec; mType = copy.mType; mRotation = copy.mRotation; mComment = copy.mComment; mFile = copy.mFile; mLinkFile = copy.mLinkFile; mIconFile = copy.mIconFile; mMimeTypes = copy.mMimeTypes; mMimeTypeIcons = copy.mMimeTypeIcons; mId = 0; d = new AppLnkPrivate(); d->mCat = copy.d->mCat; d->mCatList = copy.d->mCatList; d->mPixmaps = copy.d->mPixmaps; } /*! Destroys the AppLnk. Note that if the AppLnk is currently a member of an AppLnkSet, this will produce a run-time warning. \sa AppLnkSet::add() AppLnkSet::remove() */ AppLnk::~AppLnk() { if ( mId ) qWarning("Deleting AppLnk that is in an AppLnkSet"); if ( d ) delete d; } /*! \overload Executes the application associated with this AppLnk. \sa exec() */ void AppLnk::execute() const { execute(QStringList()); } /*! Executes the application associated with this AppLnk, with \a args as arguments. \sa exec() */ void AppLnk::execute(const QStringList& args) const { #ifdef Q_WS_QWS if ( !mRotation.isEmpty() ) { // ######## this will only work in the server int rot = QPEApplication::defaultRotation(); rot = (rot+mRotation.toInt())%360; QCString old = getenv("QWS_DISPLAY"); setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1); invoke(args); setenv("QWS_DISPLAY", old.data(), 1); } else #endif invoke(args); } /*! Invokes the application associated with this AppLnk, with \a args as arguments. Rotation is not taken into account by this function, so you should not call it directly. \sa execute() */ void AppLnk::invoke(const QStringList& args) const { Global::execute( exec(), args[0] ); } /*! Sets the Exec property to \a exec. \sa exec() name() */ void AppLnk::setExec( const QString& exec ) { mExec = exec; } #if 0 // this was inlined for better BC /*! Sets the Rotation property to \a rot. \sa rotation() */ void AppLnk::setRotation ( const QString &rot ) { mRotation = rot; } #endif /*! Sets the Name property to \a docname. \sa name() */ void AppLnk::setName( const QString& docname ) { mName = docname; } /*! Sets the File property to \a filename. \sa file() name() */ void AppLnk::setFile( const QString& filename ) { mFile = filename; } /*! Sets the LinkFile property to \a filename. \sa linkFile() */ void AppLnk::setLinkFile( const QString& filename ) { mLinkFile = filename; } /*! Sets the Comment property to \a comment. This text is displayed in the 'Details Dialog', for example if the user uses the 'press-and-hold' gesture. \sa comment() */ void AppLnk::setComment( const QString& comment ) { mComment = comment; } /*! Sets the Type property to \a type. For applications, games and settings the type should be \c Application; for documents the type should be the document's MIME type. \sa type() */ void AppLnk::setType( const QString& type ) { mType = type; } /*! \fn QString AppLnk::icon() const Returns the Icon property. \sa setIcon() */ /*! Sets the Icon property to \a iconname. This is the filename from which the pixmap() and bigPixmap() are obtained. \sa icon() setSmallIconSize() setBigIconSize() */ void AppLnk::setIcon( const QString& iconname ) { mIconFile = iconname; QImage unscaledIcon = Resource::loadImage( mIconFile ); d->mPixmaps[0].convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); d->mPixmaps[1].convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); } /*! Sets the Categories property to \a c. See the CategoryWidget for more details. \sa categories() */ void AppLnk::setCategories( const QArray<int>& c ) { d->mCat = c; d->updateCatListFromArray(); } /*! \fn QStringList AppLnk::mimeTypeIcons() const Returns the MimeTypeIcons property of the AppLnk. */ /*! Attempts to ensure that the link file for this AppLnk exists, including creating any required directories. Returns TRUE if successful; otherwise returns FALSE. You should not need to use this function. */ bool AppLnk::ensureLinkExists() const { QString lf = linkFile(); return prepareDirectories(lf); } /*! Commits the AppLnk to disk. Returns TRUE if the operation succeeded; otherwise returns FALSE. In addition, the "linkChanged(QString)" message is sent to the "QPE/System" \link qcop.html QCop\endlink channel. */ bool AppLnk::writeLink() const { // Only re-writes settable parts QString lf = linkFile(); if ( !ensureLinkExists() ) return FALSE; storeLink(); return TRUE; } /*! \internal */ void AppLnk::storeLink() const { Config config( mLinkFile, Config::File ); config.setGroup("Desktop Entry"); config.writeEntry("Name",mName); if ( !mIconFile.isNull() ) config.writeEntry("Icon",mIconFile); config.writeEntry("Type",type()); if(!rotation().isEmpty()) config.writeEntry("Rotation",rotation()); else config.removeEntry("Rotation"); if ( !mComment.isNull() ) config.writeEntry("Comment",mComment); QString f = file(); int i = 0; while ( i < (int)f.length() && i < (int)mLinkFile.length() && f[i] == mLinkFile[i] ) i++; while ( i && f[i] != '/' ) i--; // simple case where in the same directory if ( mLinkFile.find( '/', i + 1 ) < 0 ) f = f.mid(i+1); // ### could do relative ie ../../otherDocs/file.doc config.writeEntry("File",f); config.writeEntry( "Categories", d->mCatList, ';' ); #ifndef QT_NO_COP QCopEnvelope e("QPE/System", "linkChanged(QString)"); e << mLinkFile; #endif } /*! Sets the property named \a key to \a value. \sa property() */ void AppLnk::setProperty(const QString& key, const QString& value) { if ( ensureLinkExists() ) { Config cfg(linkFile(), Config::File); cfg.writeEntry(key,value); } } /*! Returns the property named \a key. \sa setProperty() */ QString AppLnk::property(const QString& key) const { QString lf = linkFile(); if ( !QFile::exists(lf) ) return QString::null; Config cfg(lf, Config::File); return cfg.readEntry(key); } bool AppLnk::isPreloaded() const { // Preload information is stored in the Launcher config in v1.5. Config cfg("Launcher"); cfg.setGroup("Preload"); QStringList apps = cfg.readListEntry("Apps",','); if (apps.contains(exec())) return true; return false; } void AppLnk::setPreloaded(bool yesNo) { // Preload information is stored in the Launcher config in v1.5. Config cfg("Launcher"); cfg.setGroup("Preload"); QStringList apps = cfg.readListEntry("Apps", ','); if (apps.contains(exec()) && !yesNo) apps.remove(exec()); else if (yesNo && !apps.contains(exec())) apps.append(exec()); cfg.writeEntry("Apps", apps, ','); } /*! Deletes both the linkFile() and the file() associated with this AppLnk. \sa removeLinkFile() */ void AppLnk::removeFiles() { bool valid = isValid(); if ( !valid || !linkFileKnown() || QFile::remove(linkFile()) ) { if ( QFile::remove(file()) ) { #ifndef QT_NO_COP QCopEnvelope e("QPE/System", "linkChanged(QString)"); if ( linkFileKnown() ) e << linkFile(); else e << file(); #endif } else if ( valid ) { // restore link writeLink(); } } } /*! Deletes the linkFile(), leaving any file() untouched. \sa removeFiles() */ void AppLnk::removeLinkFile() { if ( isValid() && linkFileKnown() && QFile::remove(linkFile()) ) { #ifndef QT_NO_COP QCopEnvelope e("QPE/System", "linkChanged(QString)"); e << linkFile(); #endif } } class AppLnkSetPrivate { public: AppLnkSetPrivate() { typPix.setAutoDelete(TRUE); typPixBig.setAutoDelete(TRUE); typName.setAutoDelete(TRUE); } QDict<QPixmap> typPix; QDict<QPixmap> typPixBig; QDict<QString> typName; }; /*! \class AppLnkSet applnk.h \brief The AppLnkSet class is a set of AppLnk objects. */ /*! \fn QStringList AppLnkSet::types() const Returns the list of \link applnk.html#Types types\endlink in the set. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. \sa AppLnk::type(), typeName(), typePixmap(), typeBigPixmap() */ /*! \fn const QList<AppLnk>& AppLnkSet::children() const Returns the members of the set. */ /*! Constructs an empty AppLnkSet. */ AppLnkSet::AppLnkSet() : d(new AppLnkSetPrivate) { } /*! Constructs an AppLnkSet that contains AppLnk objects representing all the files in the given \a directory (and any subdirectories recursively). \omit The directories may contain ".directory" files which override any AppLnk::type() values for AppLnk objects found in the directory. This allows simple localization of application types. \endomit */ AppLnkSet::AppLnkSet( const QString &directory ) : d(new AppLnkSetPrivate) { QDir dir( directory ); mFile = directory; findChildren(directory,QString::null,QString::null); } /*! Detaches all AppLnk objects from the set. The set become empty and the caller becomes responsible for deleting the AppLnk objects. */ void AppLnkSet::detachChildren() { QListIterator<AppLnk> it( mApps ); for ( ; it.current(); ) { AppLnk* a = *it; ++it; a->mId = 0; } mApps.clear(); } /*! Destroys the set, deleting all the AppLnk objects it contains. \sa detachChildren() */ AppLnkSet::~AppLnkSet() { QListIterator<AppLnk> it( mApps ); for ( ; it.current(); ) { AppLnk* a = *it; ++it; a->mId = 0; delete a; } delete d; } void AppLnkSet::findChildren(const QString &dr, const QString& typ, const QString& typName, int depth) { depth++; if ( depth > 10 ) return; QDir dir( dr ); QString typNameLocal = typName; if ( dir.exists( ".directory" ) ) { Config config( dr + "/.directory", Config::File ); config.setGroup( "Desktop Entry" ); typNameLocal = config.readEntry( "Name", typNameLocal ); if ( !typ.isEmpty() ) { QString iconFile = config.readEntry( "Icon", "AppsIcon" ); QImage unscaledIcon = Resource::loadImage( iconFile ); QPixmap pm, bpm; pm.convertFromImage( unscaledIcon.smoothScale( smallSize, smallSize ) ); bpm.convertFromImage( unscaledIcon.smoothScale( bigSize, bigSize ) ); d->typPix.insert(typ, new QPixmap(pm)); d->typPixBig.insert(typ, new QPixmap(bpm)); d->typName.insert(typ, new QString(typNameLocal)); } } const QFileInfoList *list = dir.entryInfoList(); if ( list ) { QFileInfo* fi; bool cadded=FALSE; for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) { QString bn = fi->fileName(); // qDebug("findChildren "+bn); if ( bn[0] != '.' && bn != "CVS" ) { if ( fi->isDir() ) { QString c = typ.isNull() ? bn : typ+"/"+bn; QString d = typNameLocal.isNull() ? bn : typNameLocal+"/"+bn; findChildren(fi->filePath(), c, d, depth ); } else { if ( fi->extension(FALSE) == "desktop" ) { AppLnk* app = new AppLnk( fi->filePath() ); #ifdef QT_NO_QWS_MULTIPROCESS if ( !Global::isBuiltinCommand( app->exec() ) ) delete app; else #endif { if ( !typ.isEmpty() ) { if ( !cadded ) { typs.append(typ); cadded = TRUE; } app->setType(typ); } add(app); } } } } } } } /*! Adds AppLnk \a f to the set. The set takes responsibility for deleting \a f. \sa remove() */ void AppLnkSet::add( AppLnk *f ) { if ( f->mId == 0 ) { AppLnk::lastId++; f->mId = AppLnk::lastId; mApps.append( f ); } else { qWarning("Attempt to add an AppLnk twice"); } } /*! Removes AppLnk \a f to the set. The caller becomes responsible for deleting \a f. Returns TRUE if \a f was in the set; otherwise returns FALSE. \sa add() */ bool AppLnkSet::remove( AppLnk *f ) { if ( mApps.remove( f ) ) { f->mId = 0; return TRUE; } return FALSE; } /*! Returns the localized name for type \a t. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. */ QString AppLnkSet::typeName( const QString& t ) const { QString *st = d->typName.find(t); return st ? *st : QString::null; } /*! Returns the small pixmap associated with type \a t. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. */ QPixmap AppLnkSet::typePixmap( const QString& t ) const { QPixmap *pm = d->typPix.find(t); return pm ? *pm : QPixmap(); } /*! Returns the large pixmap associated with type \a t. For applications, games and settings the type is \c Application; for documents the type is the document's MIME type. */ QPixmap AppLnkSet::typeBigPixmap( const QString& t ) const { QPixmap *pm = d->typPixBig.find(t); return pm ? *pm : QPixmap(); } /*! Returns the AppLnk with the given \a id. */ const AppLnk *AppLnkSet::find( int id ) const { QListIterator<AppLnk> it( children() ); for ( ; it.current(); ++it ) { const AppLnk *app = it.current(); if ( app->id() == id ) return app; } return 0; } /*! Returns the AppLnk with the given \a exec attribute. */ const AppLnk *AppLnkSet::findExec( const QString& exec ) const { QListIterator<AppLnk> it( children() ); for ( ; it.current(); ++it ) { const AppLnk *app = it.current(); if ( app->exec() == exec ) return app; } return 0; } /*! \class DocLnkSet applnk.h \brief The DocLnkSet class is a set of DocLnk objects. */ /*! \fn const QList<DocLnk>& DocLnkSet::children() const Returns the members of the set. */ /*! Constructs an empty DocLnkSet. \sa appendFrom() */ DocLnkSet::DocLnkSet() { } /*! Constructs a DocLnkSet that contains DocLnk objects representing all the files in the \a directory (and any subdirectories, recursively). If \a mimefilter is not null, only documents with a MIME type matching \a mimefilter are selected. The value may contain multiple wild-card patterns separated by ";", such as \c{*o/mpeg;audio/x-wav}. See also \link applnk.html#files-and-links Files and Links\endlink. */ DocLnkSet::DocLnkSet( const QString &directory, const QString& mimefilter ) : AppLnkSet() { QDir dir( directory ); mFile = dir.dirName(); QDict<void> reference; QStringList subFilter = QStringList::split(";", mimefilter); QValueList<QRegExp> mimeFilters; for( QStringList::Iterator it = subFilter.begin(); it != subFilter.end(); ++ it ) mimeFilters.append( QRegExp(*it, FALSE, TRUE) ); findChildren(directory, mimeFilters, reference); const QList<DocLnk> &list = children(); for ( QListIterator<DocLnk> it( list ); it.current(); ++it ) { reference.remove( (*it)->file() ); } for ( QDictIterator<void> dit(reference); dit.current(); ++dit ) { if ( dit.current() == (void*)2 ) { // Unreferenced, make an unwritten link DocLnk* dl = new DocLnk; QFileInfo fi( dit.currentKey() ); dl->setFile(fi.filePath()); dl->setName(fi.baseName()); // #### default to current path? // dl->setCategories( ... ); bool match = mimefilter.isNull(); if ( !match ) for( QValueList<QRegExp>::Iterator it = mimeFilters.begin(); it != mimeFilters.end() && !match; ++ it ) if ( (*it).match(dl->type()) >= 0 ) match = TRUE; if ( match /* && dl->type() != "application/octet-stream" */ && !!dl->exec() ) add(dl); else delete dl; } } } // other becomes empty /*! Transfers all DocLnk objects from \a other to this set. \a other becomes empty. */ void DocLnkSet::appendFrom( DocLnkSet& other ) { if ( &other == this ) return; QListIterator<AppLnk> it( other.mApps ); for ( ; it.current(); ) { mApps.append(*it); ++it; } other.mApps.clear(); } void DocLnkSet::findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth) { depth++; if ( depth > 10 ) return; QDir dir( dr ); /* Opie got a different approach * I guess it's geek vs. consumer * in this case to be discussed */ if ( dir.exists( ".Qtopia-ignore" ) ) return; const QFileInfoList *list = dir.entryInfoList(); if ( list ) { QFileInfo* fi; for ( QFileInfoListIterator it(*list); (fi=*it); ++it ) { QString bn = fi->fileName(); if ( bn[0] != '.' ) { if ( fi->isDir() ) { if ( bn != "CVS" && bn != "Qtopia" && bn != "QtPalmtop" ) findChildren(fi->filePath(), mimeFilters, reference, depth); } else { if ( fi->extension(FALSE) == "desktop" ) { DocLnk* dl = new DocLnk( fi->filePath() ); QFileInfo fi2(dl->file()); bool match = FALSE; if ( !fi2.exists() ) { dir.remove( dl->file() ); } if ( mimeFilters.count() == 0 ) { add( dl ); match = TRUE; } else { for( QValueList<QRegExp>::ConstIterator it = mimeFilters.begin(); it != mimeFilters.end(); ++ it ) { if ( (*it).match(dl->type()) >= 0 ) { add(dl); match = TRUE; } } } if ( !match ) delete dl; } else { if ( !reference.find(fi->fileName()) ) reference.insert(fi->filePath(), (void*)2); } } } } } } /*! \class DocLnk applnk.h \brief The DocLnk class represents loaded document references. */ /*! \fn DocLnk::DocLnk( const DocLnk &o ) Copies \a o. */ /*! Constructs a DocLnk from a valid .desktop \a file or a new .desktop \a file for other files. */ DocLnk::DocLnk( const QString &file ) : AppLnk(file) { init(file); } /*! Constructs a DocLnk from a valid .desktop \a file or a new .desktop \a file for other files. If \a may_be_desktopfile is TRUE, then an attempt is made to read \a file as a .desktop file; if that fails it is read as a normal file. */ DocLnk::DocLnk( const QString &file, bool may_be_desktopfile ) : AppLnk(may_be_desktopfile ? file : QString::null) { init(file); } void DocLnk::init(const QString &file) { if ( isValid() ) { #ifndef FORCED_DIR_STRUCTURE_WAY if ( mType.isNull() ) // try to infer it #endif { int s0 = file.findRev('/'); if ( s0 > 0 ) { int s1 = file.findRev('/',s0-1); if ( s1 > 0 ) { int s2 = file.findRev('/',s1-1); if ( s2 > 0 ) { mType = file.mid(s2+1,s0-s2-1); } } } } } else if ( QFile::exists(file) ) { QString n = file; n.replace(QRegExp(".*/"),""); n.replace(QRegExp("\\..*"),""); setName( n ); setFile( file ); } MimeType mt(mType); if( mt.application() ) mExec = mt.application()->exec(); } /*! Constructs an invalid DocLnk. */ DocLnk::DocLnk() { } /*! Destroys the DocLnk. Just like AppLnk objects, a run-time error occurs if the DocLnk is a member of a DocLnkSet (or AppLnkSet). */ DocLnk::~DocLnk() { } /*! \reimp */ QString DocLnk::exec() const { MimeType mt(type()); const AppLnk* app = mt.application(); if ( app ) return app->exec(); else return QString::null; } /*! \reimp */ void DocLnk::invoke(const QStringList& args) const { MimeType mt(type()); const AppLnk* app = mt.application(); if ( app ) { QStringList a = args; if ( linkFileKnown() && QFile::exists( linkFile() ) ) a.append(linkFile()); else a.append(file()); app->execute(a); diff --git a/library/applnk.h b/library/applnk.h index b4590d3..87971f7 100644 --- a/library/applnk.h +++ b/library/applnk.h @@ -1,208 +1,206 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef __APPLNK_H__ #define __APPLNK_H__ #include <qobject.h> #include <qiconset.h> #include <qlist.h> #include <qdict.h> #include <qstringlist.h> class AppLnkSetPrivate; class AppLnkPrivate; class AppLnk { public: AppLnk(); AppLnk( const QString &file ); AppLnk( const AppLnk © ); // copy constructor virtual ~AppLnk(); bool isValid() const { return !mLinkFile.isNull(); } static void setSmallIconSize(int); static void setBigIconSize(int); static int smallIconSize(); static int bigIconSize(); QString name() const { return mName; } const QPixmap& pixmap() const; const QPixmap& bigPixmap() const; QString icon() const { return mIconFile; } virtual QString exec() const { return mExec; } QString type() const; QString rotation() const { return mRotation; } QString comment() const { return mComment; } QString file() const; QString linkFile() const; QStringList mimeTypes() const { return mMimeTypes; } QStringList mimeTypeIcons() const { return mMimeTypeIcons; } const QArray<int> &categories() const; int id() const { return mId; } bool fileKnown() const { return !mFile.isNull(); } bool linkFileKnown() const { return !mLinkFile.isNull(); } void execute() const; void execute(const QStringList& args) const; void removeFiles(); void removeLinkFile(); void setName( const QString& docname ); void setExec( const QString& exec ); void setFile( const QString& filename ); void setLinkFile( const QString& filename ); void setComment( const QString& comment ); void setType( const QString& mimetype ); inline void setRotation ( const QString &rot ) { mRotation = rot; } // inline for BC void setIcon( const QString& iconname ); void setCategories( const QArray<int> &v ); bool writeLink() const; void setProperty(const QString& key, const QString& value); QString property(const QString& key) const; #ifdef QTOPIA_INTERNAL_PRELOADACCESS bool isPreloaded() const; void setPreloaded(bool yesNo); #endif -#ifdef QTOPIA_INTERNAL_APPLNKASSIGN AppLnk &operator=(const AppLnk &other); -#endif protected: QString mName; /* remove for Qtopia 3.0 -zecke */ QPixmap mPixmap; /* remove for Qtopia 3.0 -zecke */ QPixmap mBigPixmap; QString mExec; QString mType; QString mRotation; QString mComment; QString mFile; QString mLinkFile; QString mIconFile; QStringList mMimeTypes; QStringList mMimeTypeIcons; int mId; static int lastId; AppLnkPrivate *d; friend class AppLnkSet; virtual void invoke(const QStringList& args) const; bool ensureLinkExists() const; void storeLink() const; private: const QPixmap& pixmap(int pos, int size) const; }; class DocLnk : public AppLnk { public: DocLnk(); DocLnk( const DocLnk &o ) : AppLnk(o) { } DocLnk( const QString &file ); DocLnk( const QString &file, bool may_be_desktopfile ); virtual ~DocLnk(); #ifdef QTOPIA_INTERNAL_APPLNKASSIGN DocLnk &operator=(const DocLnk &other) { AppLnk::operator=(other); return *this; } #endif QString exec() const; protected: void invoke(const QStringList& args) const; private: void init(const QString &file); }; class AppLnkSet { public: AppLnkSet(); AppLnkSet( const QString &dir ); ~AppLnkSet(); const AppLnk *find( int id ) const; const AppLnk *findExec( const QString& execname ) const; QStringList types() const { return typs; } QString typeName( const QString& ) const; QPixmap typePixmap( const QString& ) const; QPixmap typeBigPixmap( const QString& ) const; void add(AppLnk*); bool remove(AppLnk*); void clear() { QListIterator<AppLnk> it( mApps ); for ( ; it.current(); ) { AppLnk* a = *it; ++it; a->mId = 0; delete a; } mApps.clear(); typs.clear(); } const QList<AppLnk> &children() const { return mApps; } void detachChildren(); protected: friend class AppLnk; QList<AppLnk> mApps; QString mFile; QStringList typs; AppLnkSetPrivate *d; private: AppLnkSet( const AppLnkSet & ); // no copying! void findChildren(const QString &, const QString& t, const QString& lt, int depth = 0); }; class DocLnkSet : public AppLnkSet { public: DocLnkSet(); DocLnkSet( const QString &dir, const QString &mimefilter=QString::null ); const QList<DocLnk> &children() const { return (const QList<DocLnk> &)mApps; } void appendFrom( DocLnkSet& other ); private: DocLnkSet( const DocLnkSet & ); // no copying! void findChildren(const QString &dr, const QValueList<QRegExp> &mimeFilters, QDict<void> &reference, int depth=0); }; #endif // __APPLNK_H__ diff --git a/library/backend/vcc.y b/library/backend/vcc.y index 94a8fea..4c79368 100644 --- a/library/backend/vcc.y +++ b/library/backend/vcc.y @@ -12,1207 +12,1209 @@ The term Licensor shall mean any of the Licensors. Subject to acceptance of the following conditions, permission is hereby
granted by Licensors without the need for written agreement and without
license or royalty fees, to use, copy, modify and distribute this
software for any purpose.
The above copyright notice and the following four paragraphs must be
reproduced in all copies of this software and any software including
this software.
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
MODIFICATIONS.
IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
The software is provided with RESTRICTED RIGHTS. Use, duplication, or
disclosure by the government are subject to restrictions set forth in
DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
***************************************************************************/
/*
* src: vcc.c
* doc: Parser for vCard and vCalendar. Note that this code is
* generated by a yacc parser generator. Generally it should not
* be edited by hand. The real source is vcc.y. The #line directives
* can be commented out here to make it easier to trace through
* in a debugger. However, if a bug is found it should
* be fixed in vcc.y and this file regenerated.
*/
/* debugging utilities */
#if __DEBUG
#define DBG_(x) printf x
#else
#define DBG_(x)
#endif
/**** External Functions ****/
/* assign local name to parser variables and functions so that
we can use more than one yacc based parser.
*/
#if 0
#define yyparse mime_parse
#define yylex mime_lex
#define yyerror mime_error
#define yychar mime_char
/* #define p_yyval p_mime_val */
#undef yyval
#define yyval mime_yyval
/* #define p_yylval p_mime_lval */
#undef yylval
#define yylval mime_yylval
#define yydebug mime_debug
#define yynerrs mime_nerrs
#define yyerrflag mime_errflag
#define yyss mime_ss
#define yyssp mime_ssp
#define yyvs mime_vs
#define yyvsp mime_vsp
#define yylhs mime_lhs
#define yylen mime_len
#define yydefred mime_defred
#define yydgoto mime_dgoto
#define yysindex mime_sindex
#define yyrindex mime_rindex
#define yygindex mime_gindex
#define yytable mime_table
#define yycheck mime_check
#define yyname mime_name
#define yyrule mime_rule
#ifdef YYPREFIX
#undef YYPREFIX
#endif
#define YYPREFIX "mime_"
#endif
#ifndef _NO_LINE_FOLDING
#define _SUPPORT_LINE_FOLDING 1
#endif
/* undef below if compile with MFC */
/* #define INCLUDEMFC 1 */
#if defined(WIN32) || defined(_WIN32)
#ifdef INCLUDEMFC
#include <afx.h>
#endif
#endif
#include <string.h>
#ifndef __MWERKS__
#include <stdlib.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
//#ifdef PALMTOPCENTER
//#include <qpe/vobject_p.h>
//#else
#include "vobject_p.h"
//#endif
/**** Types, Constants ****/
#define YYDEBUG 0 /* 1 to compile in some debugging code */
#define MAXTOKEN 256 /* maximum token (line) length */
#define YYSTACKSIZE 100 // ~unref ?
#define MAXLEVEL 10 /* max # of nested objects parseable */
/* (includes outermost) */
/**** Global Variables ****/
int mime_lineNum, mime_numErrors; /* yyerror() can use these */
static VObject* vObjList;
static VObject *curProp;
static VObject *curObj;
static VObject* ObjStack[MAXLEVEL];
static int ObjStackTop;
/* A helpful utility for the rest of the app. */
#if __CPLUSPLUS__
extern "C" {
#endif
extern void yyerror(char *s);
#if __CPLUSPLUS__
};
#endif
int yyparse();
enum LexMode {
L_NORMAL,
L_VCARD,
L_VCAL,
L_VEVENT,
L_VTODO,
L_VALUES,
L_BASE64,
L_QUOTED_PRINTABLE
};
/**** Private Forward Declarations ****/
static int pushVObject(const char *prop);
static VObject* popVObject();
static void lexPopMode(int top);
static int lexWithinMode(enum LexMode mode);
static void lexPushMode(enum LexMode mode);
static void enterProps(const char *s);
static void enterAttr(const char *s1, const char *s2);
static void enterValues(const char *value);
#define mime_error yyerror
void mime_error(char *s);
void mime_error_(char *s);
%}
/***************************************************************************/
/*** The grammar ****/
/***************************************************************************/
%union {
char *str;
VObject *vobj;
}
%token
EQ COLON DOT SEMICOLON SPACE HTAB LINESEP NEWLINE
BEGIN_VCARD END_VCARD BEGIN_VCAL END_VCAL
BEGIN_VEVENT END_VEVENT BEGIN_VTODO END_VTODO
ID
/*
* NEWLINE is the token that would occur outside a vCard,
* while LINESEP is the token that would occur inside a vCard.
*/
%token <str>
STRING ID
%type <str> name value
%type <vobj> vcard vcal vobject
%start mime
%%
mime: vobjects
;
vobjects: vobjects vobject
{ addList(&vObjList, $2); curObj = 0; }
| vobject
{ addList(&vObjList, $1); curObj = 0; }
;
vobject: vcard
| vcal
;
vcard:
BEGIN_VCARD
{
lexPushMode(L_VCARD);
if (!pushVObject(VCCardProp)) YYERROR;
}
items END_VCARD
{
lexPopMode(0);
$$ = popVObject();
}
| BEGIN_VCARD
{
lexPushMode(L_VCARD);
if (!pushVObject(VCCardProp)) YYERROR;
}
END_VCARD
{
lexPopMode(0);
$$ = popVObject();
}
;
items: items item
| item
;
item: prop COLON
{
lexPushMode(L_VALUES);
}
values LINESEP
{
if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE))
lexPopMode(0);
lexPopMode(0);
}
| error
;
prop: name
{
enterProps($1);
}
attr_params
| name
{
enterProps($1);
}
;
attr_params: attr_params attr_param
| attr_param
;
attr_param: SEMICOLON attr
;
attr: name
{
enterAttr($1,0);
}
| name EQ name
{
enterAttr($1,$3);
}
;
name: ID
;
values: value SEMICOLON { enterValues($1); } values
| value
{ enterValues($1); }
;
value: STRING
|
{ $$ = 0; }
;
vcal:
BEGIN_VCAL
{ if (!pushVObject(VCCalProp)) YYERROR; }
calitems
END_VCAL
{ $$ = popVObject(); }
| BEGIN_VCAL
{ if (!pushVObject(VCCalProp)) YYERROR; }
END_VCAL
{ $$ = popVObject(); }
;
calitems: calitems calitem
| calitem
;
calitem:
eventitem
| todoitem
| items
;
eventitem:
BEGIN_VEVENT
{
lexPushMode(L_VEVENT);
if (!pushVObject(VCEventProp)) YYERROR;
}
items
END_VEVENT
{
lexPopMode(0);
popVObject();
}
| BEGIN_VEVENT
{
lexPushMode(L_VEVENT);
if (!pushVObject(VCEventProp)) YYERROR;
}
END_VEVENT
{
lexPopMode(0);
popVObject();
}
;
todoitem:
BEGIN_VTODO
{
lexPushMode(L_VTODO);
if (!pushVObject(VCTodoProp)) YYERROR;
}
items
END_VTODO
{
lexPopMode(0);
popVObject();
}
| BEGIN_VTODO
{
lexPushMode(L_VTODO);
if (!pushVObject(VCTodoProp)) YYERROR;
}
END_VTODO
{
lexPopMode(0);
popVObject();
}
;
%%
/*------------------------------------*/
static int pushVObject(const char *prop)
{
VObject *newObj;
if (ObjStackTop == MAXLEVEL)
return FALSE;
ObjStack[++ObjStackTop] = curObj;
if (curObj) {
newObj = addProp(curObj,prop);
curObj = newObj;
}
else
curObj = newVObject(prop);
return TRUE;
}
/*---------------------------------------*/
/* This pops the recently built vCard off the stack and returns it. */
static VObject* popVObject()
{
VObject *oldObj;
if (ObjStackTop < 0) {
yyerror("pop on empty Object Stack\n");
return 0;
}
oldObj = curObj;
curObj = ObjStack[ObjStackTop--];
return oldObj;
}
static void enterValues(const char *value)
{
if (fieldedProp && *fieldedProp) {
if (value) {
addPropValue(curProp,*fieldedProp,value);
}
/* else this field is empty, advance to next field */
fieldedProp++;
}
else {
if (value) {
setVObjectStringZValue_(curProp,strdup( value ));
}
}
deleteStr(value);
}
static void enterProps(const char *s)
{
curProp = addGroup(curObj,s);
deleteStr(s);
}
static void enterAttr(const char *s1, const char *s2)
{
const char *p1, *p2;
p1 = lookupProp_(s1);
if (s2) {
VObject *a;
p2 = lookupProp_(s2);
a = addProp(curProp,p1);
setVObjectStringZValue(a,p2);
}
else
addProp(curProp,p1);
if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0))
lexPushMode(L_BASE64);
else if (qstricmp(p1,VCQuotedPrintableProp) == 0
|| (s2 && qstricmp(p2,VCQuotedPrintableProp)==0))
lexPushMode(L_QUOTED_PRINTABLE);
deleteStr(s1); deleteStr(s2);
}
#define MAX_LEX_LOOKAHEAD_0 32
#define MAX_LEX_LOOKAHEAD 64
#define MAX_LEX_MODE_STACK_SIZE 10
#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop])
struct LexBuf {
/* input */
#ifdef INCLUDEMFC
CFile *inputFile;
#else
FILE *inputFile;
#endif
char *inputString;
unsigned long curPos;
unsigned long inputLen;
/* lookahead buffer */
/* -- lookahead buffer is short instead of char so that EOF
/ can be represented correctly.
*/
unsigned long len;
short buf[MAX_LEX_LOOKAHEAD];
unsigned long getPtr;
/* context stack */
unsigned long lexModeStackTop;
enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE];
/* token buffer */
unsigned long maxToken;
char *strs;
unsigned long strsLen;
} lexBuf;
static void lexPushMode(enum LexMode mode)
{
if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1))
yyerror("lexical context stack overflow");
else {
lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode;
}
}
static void lexPopMode(int top)
{
/* special case of pop for ease of error recovery -- this
version will never underflow */
if (top)
lexBuf.lexModeStackTop = 0;
else
if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--;
}
static int lexWithinMode(enum LexMode mode) {
unsigned long i;
for (i=0;i<lexBuf.lexModeStackTop;i++)
if (mode == lexBuf.lexModeStack[i]) return 1;
return 0;
}
static int lexGetc_()
{
/* get next char from input, no buffering. */
if (lexBuf.curPos == lexBuf.inputLen)
return EOF;
else if (lexBuf.inputString)
return *(lexBuf.inputString + lexBuf.curPos++);
else {
#ifdef INCLUDEMFC
char result;
return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF;
#else
return fgetc(lexBuf.inputFile);
#endif
}
}
static int lexGeta()
{
++lexBuf.len;
return (lexBuf.buf[lexBuf.getPtr] = lexGetc_());
}
static int lexGeta_(int i)
{
++lexBuf.len;
return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_());
}
static void lexSkipLookahead() {
if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
/* don't skip EOF. */
lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
lexBuf.len--;
}
}
static int lexLookahead() {
int c = (lexBuf.len)?
lexBuf.buf[lexBuf.getPtr]:
lexGeta();
/* do the \r\n -> \n or \r -> \n translation here */
if (c == '\r') {
int a = (lexBuf.len>1)?
lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]:
lexGeta_(1);
if (a == '\n') {
lexSkipLookahead();
}
lexBuf.buf[lexBuf.getPtr] = c = '\n';
}
else if (c == '\n') {
int a = (lexBuf.len>1)?
lexBuf.buf[lexBuf.getPtr+1]:
lexGeta_(1);
if (a == '\r') {
lexSkipLookahead();
}
lexBuf.buf[lexBuf.getPtr] = '\n';
}
return c;
}
static int lexGetc() {
int c = lexLookahead();
if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
/* EOF will remain in lookahead buffer */
lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
lexBuf.len--;
}
return c;
}
static void lexSkipLookaheadWord() {
if (lexBuf.strsLen <= lexBuf.len) {
lexBuf.len -= lexBuf.strsLen;
lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD;
}
}
static void lexClearToken()
{
lexBuf.strsLen = 0;
}
static void lexAppendc(int c)
{
lexBuf.strs[lexBuf.strsLen] = c;
/* append up to zero termination */
if (c == 0) return;
lexBuf.strsLen++;
if (lexBuf.strsLen > lexBuf.maxToken) {
/* double the token string size */
lexBuf.maxToken <<= 1;
lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken);
}
}
static char* lexStr() {
return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1);
}
static void lexSkipWhite() {
int c = lexLookahead();
while (c == ' ' || c == '\t') {
lexSkipLookahead();
c = lexLookahead();
}
}
static char* lexGetWord() {
int c;
lexSkipWhite();
lexClearToken();
c = lexLookahead();
while (c != EOF && !strchr("\t\n ;:=",c)) {
lexAppendc(c);
lexSkipLookahead();
c = lexLookahead();
}
lexAppendc(0);
return lexStr();
}
static void lexPushLookaheadc(int c) {
int putptr;
/* can't putback EOF, because it never leaves lookahead buffer */
if (c == EOF) return;
putptr = (int)lexBuf.getPtr - 1;
if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
lexBuf.getPtr = putptr;
lexBuf.buf[putptr] = c;
lexBuf.len += 1;
}
static char* lexLookaheadWord() {
/* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0
/ and thing bigger than that will stop the lookahead and return 0;
/ leading white spaces are not recoverable.
*/
int c;
int len = 0;
int curgetptr = 0;
lexSkipWhite();
lexClearToken();
curgetptr = (int)lexBuf.getPtr; // remember!
while (len < (MAX_LEX_LOOKAHEAD_0)) {
c = lexGetc();
len++;
if (c == EOF || strchr("\t\n ;:=", c)) {
lexAppendc(0);
/* restore lookahead buf. */
lexBuf.len += len;
lexBuf.getPtr = curgetptr;
return lexStr();
}
else
lexAppendc(c);
}
lexBuf.len += len; /* char that has been moved to lookahead buffer */
lexBuf.getPtr = curgetptr;
return 0;
}
#ifdef _SUPPORT_LINE_FOLDING
static void handleMoreRFC822LineBreak(int c) {
/* suport RFC 822 line break in cases like
* ADR: foo;
* morefoo;
* more foo;
*/
if (c == ';') {
int a;
lexSkipLookahead();
/* skip white spaces */
a = lexLookahead();
while (a == ' ' || a == '\t') {
lexSkipLookahead();
a = lexLookahead();
}
if (a == '\n') {
lexSkipLookahead();
a = lexLookahead();
if (a == ' ' || a == '\t') {
/* continuation, throw away all the \n and spaces read so
* far
*/
lexSkipWhite();
lexPushLookaheadc(';');
}
else {
lexPushLookaheadc('\n');
lexPushLookaheadc(';');
}
}
else {
lexPushLookaheadc(';');
}
}
}
static char* lexGet1Value() {
int c;
lexSkipWhite();
c = lexLookahead();
lexClearToken();
while (c != EOF && (c != ';' || !fieldedProp)) {
if (c == '\\' ) {
int a;
lexSkipLookahead();
a = lexLookahead();
if ( a == ';' ) {
lexAppendc( ';' );
lexSkipLookahead();
} else if ( a == '\n' ) {
lexAppendc( '\n' );
lexSkipLookahead();
} else if ( a == '\\' ) {
lexAppendc( '\\' );
lexSkipLookahead();
} else {
lexAppendc('\\');
}
} else if (c == '\n') {
int a;
lexSkipLookahead();
a = lexLookahead();
if (a == ' ' || a == '\t') {
lexAppendc(' ');
lexSkipLookahead();
}
else {
lexPushLookaheadc('\n');
break;
}
}
else {
lexAppendc(c);
lexSkipLookahead();
}
c = lexLookahead();
}
lexAppendc(0);
handleMoreRFC822LineBreak(c);
return c==EOF?0:lexStr();
}
#endif
static int match_begin_name(int end) {
char *n = lexLookaheadWord();
int token = ID;
if (n) {
if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD;
else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL;
else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT;
else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO;
deleteStr(n);
return token;
}
return 0;
}
#ifdef INCLUDEMFC
void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile)
#else
void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile)
#endif
{
// initialize lex mode stack
lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL;
// iniatialize lex buffer.
lexBuf.inputString = (char*) inputstring;
lexBuf.inputLen = inputlen;
lexBuf.curPos = 0;
lexBuf.inputFile = inputfile;
lexBuf.len = 0;
lexBuf.getPtr = 0;
lexBuf.maxToken = MAXTOKEN;
lexBuf.strs = (char*)malloc(MAXTOKEN);
lexBuf.strsLen = 0;
}
static void finiLex() {
free(lexBuf.strs);
}
/*-----------------------------------*/
/* This parses and converts the base64 format for binary encoding into
* a decoded buffer (allocated with new). See RFC 1521.
*/
static char * lexGetDataFromBase64()
{
unsigned long bytesLen = 0, bytesMax = 0;
int quadIx = 0, pad = 0;
unsigned long trip = 0;
unsigned char b;
int c;
unsigned char *bytes = NULL;
unsigned char *oldBytes = NULL;
DBG_(("db: lexGetDataFromBase64\n"));
while (1) {
c = lexGetc();
if (c == '\n') {
++mime_lineNum;
if (lexLookahead() == '\n') {
/* a '\n' character by itself means end of data */
break;
}
else continue; /* ignore '\n' */
}
else {
if ((c >= 'A') && (c <= 'Z'))
b = (unsigned char)(c - 'A');
else if ((c >= 'a') && (c <= 'z'))
b = (unsigned char)(c - 'a') + 26;
else if ((c >= '0') && (c <= '9'))
b = (unsigned char)(c - '0') + 52;
else if (c == '+')
b = 62;
else if (c == '/')
b = 63;
else if (c == '=') {
b = 0;
pad++;
} else if ((c == ' ') || (c == '\t')) {
continue;
} else { /* error condition */
if (bytes) free(bytes);
else if (oldBytes) free(oldBytes);
// error recovery: skip until 2 adjacent newlines.
DBG_(("db: invalid character 0x%x '%c'\n", c,c));
if (c != EOF) {
c = lexGetc();
while (c != EOF) {
if (c == '\n' && lexLookahead() == '\n') {
++mime_lineNum;
break;
}
c = lexGetc();
}
}
return NULL;
}
trip = (trip << 6) | b;
if (++quadIx == 4) {
unsigned char outBytes[3];
int numOut;
int i;
for (i = 0; i < 3; i++) {
outBytes[2-i] = (unsigned char)(trip & 0xFF);
trip >>= 8;
}
numOut = 3 - pad;
if (bytesLen + numOut > bytesMax) {
if (!bytes) {
bytesMax = 1024;
bytes = (unsigned char*)malloc((size_t)bytesMax);
}
else {
bytesMax <<= 2;
oldBytes = bytes;
bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax);
}
if (bytes == 0) {
mime_error("out of memory while processing BASE64 data\n");
}
}
if (bytes) {
memcpy(bytes + bytesLen, outBytes, numOut);
bytesLen += numOut;
}
trip = 0;
quadIx = 0;
}
}
} /* while */
DBG_(("db: bytesLen = %d\n", bytesLen));
/* kludge: all this won't be necessary if we have tree form
representation */
if (bytes) {
setValueWithSize(curProp,bytes,(unsigned int)bytesLen);
free(bytes);
}
else if (oldBytes) {
setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen);
free(oldBytes);
}
return 0;
}
static int match_begin_end_name(int end) {
int token;
lexSkipWhite();
if (lexLookahead() != ':') return ID;
lexSkipLookahead();
lexSkipWhite();
token = match_begin_name(end);
if (token == ID) {
lexPushLookaheadc(':');
DBG_(("db: ID '%s'\n", yylval.str));
return ID;
}
else if (token != 0) {
lexSkipLookaheadWord();
deleteStr(yylval.str);
DBG_(("db: begin/end %d\n", token));
return token;
}
return 0;
}
static char* lexGetQuotedPrintable()
{
int c;
lexSkipWhite();
c = lexLookahead();
lexClearToken();
while (c != EOF && c != ';') {
if (c == '\n') {
// break, leave '\n' on remaining chars.
break;
} else if (c == '=') {
int cur = 0;
int next;
lexSkipLookahead(); // skip '='
next = lexLookahead();
if (next == '\n') {
// skip and only skip the \n
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum; // aid in error reporting
continue;
} else if (next >= '0' && next <= '9') {
cur = next - '0';
} else if (next >= 'A' && next <= 'F') {
cur = next - 'A' + 10;
} else {
// we have been sent buggy stuff. doesn't matter
// what we do so long as we keep going.
// should probably spit an error here
lexSkipLookahead();
c = lexLookahead();
continue;
}
lexSkipLookahead(); // skip A-Z0-9
next = lexLookahead();
cur = cur * 16;
// this time really just expecting 0-9A-F
if (next >= '0' && next <= '9') {
cur += next - '0';
} else if (next >= 'A' && next <= 'F') {
cur += next - 'A' + 10;
} else {
// we have been sent buggy stuff. doesn't matter
// what we do so long as we keep going.
// should probably spit an error here
lexSkipLookahead();
c = lexLookahead();
continue;
}
// got a valid escaped =. append it.
lexSkipLookahead(); // skip second 0-9A-F
lexAppendc(cur);
} else {
lexSkipLookahead(); // skip whatever we just read.
lexAppendc(c); // and append it.
}
c = lexLookahead();
}
lexAppendc(0);
return c==EOF?0:lexStr();
}
static int yylex() {
int lexmode = LEXMODE();
if (lexmode == L_VALUES) {
int c = lexGetc();
if (c == ';' && fieldedProp) {
DBG_(("db: SEMICOLON\n"));
lexPushLookaheadc(c);
handleMoreRFC822LineBreak(c);
lexSkipLookahead();
return SEMICOLON;
}
else if (strchr("\n",c)) {
++mime_lineNum;
/* consume all line separator(s) adjacent to each other */
c = lexLookahead();
while (strchr("\n",c)) {
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum;
}
DBG_(("db: LINESEP\n"));
return LINESEP;
}
else {
char *p = 0;
lexPushLookaheadc(c);
if (lexWithinMode(L_BASE64)) {
/* get each char and convert to bin on the fly... */
p = lexGetDataFromBase64();
+#if 0 yylval.str = p;
return STRING;
+#endif }
else if (lexWithinMode(L_QUOTED_PRINTABLE)) {
p = lexGetQuotedPrintable();
}
else {
#ifdef _SUPPORT_LINE_FOLDING
p = lexGet1Value();
#else
p = lexGetStrUntil(";\n");
#endif
}
if (p) {
DBG_(("db: STRING: '%s'\n", p));
yylval.str = p;
return STRING;
}
else return 0;
}
}
else {
/* normal mode */
while (1) {
int c = lexGetc();
switch(c) {
case ':': {
/* consume all line separator(s) adjacent to each other */
/* ignoring linesep immediately after colon. */
/* I don't see this in the spec, and it breaks null values -- WA
c = lexLookahead();
while (strchr("\n",c)) {
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum;
}
*/
DBG_(("db: COLON\n"));
return COLON;
}
case ';':
DBG_(("db: SEMICOLON\n"));
return SEMICOLON;
case '=':
DBG_(("db: EQ\n"));
return EQ;
/* ignore whitespace in this mode */
case '\t':
case ' ': continue;
case '\n': {
++mime_lineNum;
continue;
}
case EOF: return 0;
break;
default: {
lexPushLookaheadc(c);
if (isalnum(c)) {
char *t = lexGetWord();
yylval.str = t;
if (!qstricmp(t, "begin")) {
return match_begin_end_name(0);
}
else if (!qstricmp(t,"end")) {
return match_begin_end_name(1);
}
else {
DBG_(("db: ID '%s'\n", t));
return ID;
}
}
else {
/* unknow token */
return 0;
}
break;
}
}
}
}
return 0;
}
/***************************************************************************/
/*** Public Functions ****/
/***************************************************************************/
static VObject* Parse_MIMEHelper()
{
ObjStackTop = -1;
mime_numErrors = 0;
mime_lineNum = 1;
vObjList = 0;
curObj = 0;
if (yyparse() != 0)
return 0;
finiLex();
return vObjList;
}
/*--------------------------------------------*/
DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len)
{
initLex(input, len, 0);
return Parse_MIMEHelper();
}
#if INCLUDEMFC
DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file)
{
unsigned long startPos;
VObject *result;
initLex(0,-1,file);
startPos = file->GetPosition();
if (!(result = Parse_MIMEHelper()))
file->Seek(startPos, CFile::begin);
return result;
}
#else
VObject* Parse_MIME_FromFile(FILE *file)
{
VObject *result;
long startPos;
initLex(0,(unsigned long)-1,file);
startPos = ftell(file);
if (!(result = Parse_MIMEHelper())) {
fseek(file,startPos,SEEK_SET);
}
return result;
}
DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname)
{
FILE *fp = fopen(fname,"r");
if (fp) {
VObject* o = Parse_MIME_FromFile(fp);
fclose(fp);
return o;
}
else {
char msg[80];
sprintf(msg, "can't open file '%s' for reading\n", fname);
mime_error_(msg);
return 0;
}
}
#endif
/*-------------------------------------*/
static MimeErrorHandler mimeErrorHandler;
DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me)
{
mimeErrorHandler = me;
}
void mime_error(char *s)
{
char msg[256];
if (mimeErrorHandler) {
sprintf(msg,"%s at line %d", s, mime_lineNum);
mimeErrorHandler(msg);
}
}
void mime_error_(char *s)
{
if (mimeErrorHandler) {
mimeErrorHandler(s);
}
}
diff --git a/library/backend/vcc_yacc.cpp b/library/backend/vcc_yacc.cpp index 5649522..5f53aef 100644 --- a/library/backend/vcc_yacc.cpp +++ b/library/backend/vcc_yacc.cpp @@ -32,1564 +32,1566 @@ static char yyrcsid[] = "$Id$"; #define yycheck vcccheck #define yyname vccname #define yyrule vccrule #define YYPREFIX "vcc" #line 1 "backend/vcc.y" /***************************************************************************
(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
For purposes of this license notice, the term Licensors shall mean,
collectively, Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
The term Licensor shall mean any of the Licensors.
Subject to acceptance of the following conditions, permission is hereby
granted by Licensors without the need for written agreement and without
license or royalty fees, to use, copy, modify and distribute this
software for any purpose.
The above copyright notice and the following four paragraphs must be
reproduced in all copies of this software and any software including
this software.
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
MODIFICATIONS.
IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
The software is provided with RESTRICTED RIGHTS. Use, duplication, or
disclosure by the government are subject to restrictions set forth in
DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
***************************************************************************/
/*
* src: vcc.c
* doc: Parser for vCard and vCalendar. Note that this code is
* generated by a yacc parser generator. Generally it should not
* be edited by hand. The real source is vcc.y. The #line directives
* can be commented out here to make it easier to trace through
* in a debugger. However, if a bug is found it should
* be fixed in vcc.y and this file regenerated.
*/
/* debugging utilities */
#if __DEBUG
#define DBG_(x) printf x
#else
#define DBG_(x)
#endif
/**** External Functions ****/
/* assign local name to parser variables and functions so that
we can use more than one yacc based parser.
*/
#if 0
#define yyparse mime_parse
#define yylex mime_lex
#define yyerror mime_error
#define yychar mime_char
/* #define p_yyval p_mime_val */
#undef yyval
#define yyval mime_yyval
/* #define p_yylval p_mime_lval */
#undef yylval
#define yylval mime_yylval
#define yydebug mime_debug
#define yynerrs mime_nerrs
#define yyerrflag mime_errflag
#define yyss mime_ss
#define yyssp mime_ssp
#define yyvs mime_vs
#define yyvsp mime_vsp
#define yylhs mime_lhs
#define yylen mime_len
#define yydefred mime_defred
#define yydgoto mime_dgoto
#define yysindex mime_sindex
#define yyrindex mime_rindex
#define yygindex mime_gindex
#define yytable mime_table
#define yycheck mime_check
#define yyname mime_name
#define yyrule mime_rule
#ifdef YYPREFIX
#undef YYPREFIX
#endif
#define YYPREFIX "mime_"
#endif
#ifndef _NO_LINE_FOLDING
#define _SUPPORT_LINE_FOLDING 1
#endif
/* undef below if compile with MFC */
/* #define INCLUDEMFC 1 */
#if defined(WIN32) || defined(_WIN32)
#ifdef INCLUDEMFC
#include <afx.h>
#endif
#endif
#include <string.h>
#ifndef __MWERKS__
#include <stdlib.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
/*#ifdef PALMTOPCENTER
*/ /*#include <qpe/vobject_p.h>
*/ /*#else
*/ #include "vobject_p.h"
/*#endif
*/ /**** Types, Constants ****/
#define YYDEBUG 0 /* 1 to compile in some debugging code */
#define MAXTOKEN 256 /* maximum token (line) length */
#define YYSTACKSIZE 100 /* ~unref ?
*/ #define MAXLEVEL 10 /* max # of nested objects parseable */
/* (includes outermost) */
/**** Global Variables ****/
int mime_lineNum, mime_numErrors; /* yyerror() can use these */
static VObject* vObjList;
static VObject *curProp;
static VObject *curObj;
static VObject* ObjStack[MAXLEVEL];
static int ObjStackTop;
/* A helpful utility for the rest of the app. */
#if __CPLUSPLUS__
extern "C" {
#endif
extern void yyerror(char *s);
#if __CPLUSPLUS__
};
#endif
int yyparse();
enum LexMode {
L_NORMAL,
L_VCARD,
L_VCAL,
L_VEVENT,
L_VTODO,
L_VALUES,
L_BASE64,
L_QUOTED_PRINTABLE
};
/**** Private Forward Declarations ****/
static int pushVObject(const char *prop);
static VObject* popVObject();
static void lexPopMode(int top);
static int lexWithinMode(enum LexMode mode);
static void lexPushMode(enum LexMode mode);
static void enterProps(const char *s);
static void enterAttr(const char *s1, const char *s2);
static void enterValues(const char *value);
#define mime_error yyerror
void mime_error(char *s);
void mime_error_(char *s);
#line 189 "backend/vcc.y" typedef union {
char *str;
VObject *vobj;
} YYSTYPE; #line 225 "y.tab.c" #define EQ 257 #define COLON 258 #define DOT 259 #define SEMICOLON 260 #define SPACE 261 #define HTAB 262 #define LINESEP 263 #define NEWLINE 264 #define BEGIN_VCARD 265 #define END_VCARD 266 #define BEGIN_VCAL 267 #define END_VCAL 268 #define BEGIN_VEVENT 269 #define END_VEVENT 270 #define BEGIN_VTODO 271 #define END_VTODO 272 #define ID 273 #define STRING 274 #define YYERRCODE 256 short vcclhs[] = { -1, 0, 6, 6, 5, 5, 8, 3, 9, 3, 7, 7, 13, 10, 10, 15, 11, 11, 14, 14, 16, 17, 17, 1, 18, 12, 12, 2, 2, 20, 4, 21, 4, 19, 19, 22, 22, 22, 25, 23, 26, 23, 27, 24, 28, 24, }; short vcclen[] = { 2, 1, 2, 1, 1, 1, 0, 4, 0, 3, 2, 1, 0, 5, 1, 0, 3, 1, 2, 1, 2, 1, 3, 1, 0, 4, 1, 1, 0, 0, 4, 0, 3, 2, 1, 1, 1, 1, 0, 4, 0, 3, 0, 4, 0, 3, }; short vccdefred[] = { 0, 0, 0, 0, 4, 5, 3, 0, 0, 0, 0, 0, 2, 14, 23, 0, 0, 11, 0, 9, 0, 0, 0, 0, 34, 35, 36, 32, 0, 7, 10, 12, 0, 0, 0, 0, 30, 33, 0, 0, 19, 0, 0, 41, 0, 45, 0, 20, 18, 27, 0, 0, 39, 43, 0, 24, 13, 22, 0, 25, }; short vccdgoto[] = { 3, 15, 50, 4, 5, 6, 7, 22, 8, 9, 17, 18, 51, 41, 39, 28, 40, 47, 58, 23, 10, 11, 24, 25, 26, 32, 33, 34, 35, }; short vccsindex[] = { -262, 0, 0, 0, 0, 0, 0, -262, -252, -219, -249, -256, 0, 0, 0, 0, -227, 0, -242, 0, 0, 0, -252, -254, 0, 0, 0, 0, -208, 0, 0, 0, -252, -228, -252, -213, 0, 0, -212, -208, 0, -214, -233, 0, -224, 0, -195, 0, 0, 0, -197, -199, 0, 0, -212, 0, 0, 0, -214, 0, }; short vccrindex[] = { 0, -222, -238, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, -220, -218, -260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, -250, 0, 0, 0, 0, -202, 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, -250, 0, }; short vccgindex[] = { 0, 3, 0, 0, 0, 61, 0, -7, 0, 0, -16, 0, 11, 0, 0, 0, 31, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 71 short vcctable[] = { 30, 16, 13, 1, 13, 2, 30, 13, 37, 37, 28, 37, 27, 28, 36, 20, 31, 21, 29, 14, 20, 14, 21, 13, 14, 42, 30, 44, 30, 13, 31, 29, 13, 29, 6, 29, 38, 52, 42, 29, 14, 46, 43, 17, 8, 15, 14, 19, 53, 14, 40, 6, 38, 38, 44, 42, 21, 57, 21, 45, 49, 14, 54, 55, 56, 1, 16, 26, 12, 59, 48, 37, }; short vcccheck[] = { 16, 8, 256, 265, 256, 267, 22, 256, 268, 269, 260, 271, 268, 263, 268, 269, 258, 271, 256, 273, 269, 273, 271, 256, 273, 32, 42, 34, 44, 256, 268, 269, 256, 271, 256, 273, 256, 270, 256, 266, 273, 38, 270, 258, 266, 260, 273, 266, 272, 273, 270, 273, 260, 273, 272, 273, 258, 54, 260, 272, 274, 273, 257, 260, 263, 0, 258, 263, 7, 58, 39, 23, }; #define YYFINAL 3 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 274 #if YYDEBUG char *vccname[] = { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"EQ","COLON","DOT","SEMICOLON", "SPACE","HTAB","LINESEP","NEWLINE","BEGIN_VCARD","END_VCARD","BEGIN_VCAL", "END_VCAL","BEGIN_VEVENT","END_VEVENT","BEGIN_VTODO","END_VTODO","ID","STRING", }; char *vccrule[] = { "$accept : mime", "mime : vobjects", "vobjects : vobjects vobject", "vobjects : vobject", "vobject : vcard", "vobject : vcal", "$$1 :", "vcard : BEGIN_VCARD $$1 items END_VCARD", "$$2 :", "vcard : BEGIN_VCARD $$2 END_VCARD", "items : items item", "items : item", "$$3 :", "item : prop COLON $$3 values LINESEP", "item : error", "$$4 :", "prop : name $$4 attr_params", "prop : name", "attr_params : attr_params attr_param", "attr_params : attr_param", "attr_param : SEMICOLON attr", "attr : name", "attr : name EQ name", "name : ID", "$$5 :", "values : value SEMICOLON $$5 values", "values : value", "value : STRING", "value :", "$$6 :", "vcal : BEGIN_VCAL $$6 calitems END_VCAL", "$$7 :", "vcal : BEGIN_VCAL $$7 END_VCAL", "calitems : calitems calitem", "calitems : calitem", "calitem : eventitem", "calitem : todoitem", "calitem : items", "$$8 :", "eventitem : BEGIN_VEVENT $$8 items END_VEVENT", "$$9 :", "eventitem : BEGIN_VEVENT $$9 END_VEVENT", "$$10 :", "todoitem : BEGIN_VTODO $$10 items END_VTODO", "$$11 :", "todoitem : BEGIN_VTODO $$11 END_VTODO", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 500 #define YYMAXDEPTH 500 #endif #endif int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short yyss[YYSTACKSIZE]; YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE #line 382 "backend/vcc.y" /*------------------------------------*/
static int pushVObject(const char *prop)
{
VObject *newObj;
if (ObjStackTop == MAXLEVEL)
return FALSE;
ObjStack[++ObjStackTop] = curObj;
if (curObj) {
newObj = addProp(curObj,prop);
curObj = newObj;
}
else
curObj = newVObject(prop);
return TRUE;
}
/*---------------------------------------*/
/* This pops the recently built vCard off the stack and returns it. */
static VObject* popVObject()
{
VObject *oldObj;
if (ObjStackTop < 0) {
yyerror("pop on empty Object Stack\n");
return 0;
}
oldObj = curObj;
curObj = ObjStack[ObjStackTop--];
return oldObj;
}
static void enterValues(const char *value)
{
if (fieldedProp && *fieldedProp) {
if (value) {
addPropValue(curProp,*fieldedProp,value);
}
/* else this field is empty, advance to next field */
fieldedProp++;
}
else {
if (value) {
setVObjectStringZValue_(curProp,strdup( value ));
}
}
deleteStr(value);
}
static void enterProps(const char *s)
{
curProp = addGroup(curObj,s);
deleteStr(s);
}
static void enterAttr(const char *s1, const char *s2)
{
const char *p1, *p2;
p1 = lookupProp_(s1);
if (s2) {
VObject *a;
p2 = lookupProp_(s2);
a = addProp(curProp,p1);
setVObjectStringZValue(a,p2);
}
else
addProp(curProp,p1);
if (qstricmp(p1,VCBase64Prop) == 0 || (s2 && qstricmp(p2,VCBase64Prop)==0))
lexPushMode(L_BASE64);
else if (qstricmp(p1,VCQuotedPrintableProp) == 0
|| (s2 && qstricmp(p2,VCQuotedPrintableProp)==0))
lexPushMode(L_QUOTED_PRINTABLE);
deleteStr(s1); deleteStr(s2);
}
#define MAX_LEX_LOOKAHEAD_0 32
#define MAX_LEX_LOOKAHEAD 64
#define MAX_LEX_MODE_STACK_SIZE 10
#define LEXMODE() (lexBuf.lexModeStack[lexBuf.lexModeStackTop])
struct LexBuf {
/* input */
#ifdef INCLUDEMFC
CFile *inputFile;
#else
FILE *inputFile;
#endif
char *inputString;
unsigned long curPos;
unsigned long inputLen;
/* lookahead buffer */
/* -- lookahead buffer is short instead of char so that EOF
/ can be represented correctly.
*/
unsigned long len;
short buf[MAX_LEX_LOOKAHEAD];
unsigned long getPtr;
/* context stack */
unsigned long lexModeStackTop;
enum LexMode lexModeStack[MAX_LEX_MODE_STACK_SIZE];
/* token buffer */
unsigned long maxToken;
char *strs;
unsigned long strsLen;
} lexBuf;
static void lexPushMode(enum LexMode mode)
{
if (lexBuf.lexModeStackTop == (MAX_LEX_MODE_STACK_SIZE-1))
yyerror("lexical context stack overflow");
else {
lexBuf.lexModeStack[++lexBuf.lexModeStackTop] = mode;
}
}
static void lexPopMode(int top)
{
/* special case of pop for ease of error recovery -- this
version will never underflow */
if (top)
lexBuf.lexModeStackTop = 0;
else
if (lexBuf.lexModeStackTop > 0) lexBuf.lexModeStackTop--;
}
static int lexWithinMode(enum LexMode mode) {
unsigned long i;
for (i=0;i<lexBuf.lexModeStackTop;i++)
if (mode == lexBuf.lexModeStack[i]) return 1;
return 0;
}
static int lexGetc_()
{
/* get next char from input, no buffering. */
if (lexBuf.curPos == lexBuf.inputLen)
return EOF;
else if (lexBuf.inputString)
return *(lexBuf.inputString + lexBuf.curPos++);
else {
#ifdef INCLUDEMFC
char result;
return lexBuf.inputFile->Read(&result, 1) == 1 ? result : EOF;
#else
return fgetc(lexBuf.inputFile);
#endif
}
}
static int lexGeta()
{
++lexBuf.len;
return (lexBuf.buf[lexBuf.getPtr] = lexGetc_());
}
static int lexGeta_(int i)
{
++lexBuf.len;
return (lexBuf.buf[(lexBuf.getPtr+i)%MAX_LEX_LOOKAHEAD] = lexGetc_());
}
static void lexSkipLookahead() {
if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
/* don't skip EOF. */
lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
lexBuf.len--;
}
}
static int lexLookahead() {
int c = (lexBuf.len)?
lexBuf.buf[lexBuf.getPtr]:
lexGeta();
/* do the \r\n -> \n or \r -> \n translation here */
if (c == '\r') {
int a = (lexBuf.len>1)?
lexBuf.buf[(lexBuf.getPtr+1)%MAX_LEX_LOOKAHEAD]:
lexGeta_(1);
if (a == '\n') {
lexSkipLookahead();
}
lexBuf.buf[lexBuf.getPtr] = c = '\n';
}
else if (c == '\n') {
int a = (lexBuf.len>1)?
lexBuf.buf[lexBuf.getPtr+1]:
lexGeta_(1);
if (a == '\r') {
lexSkipLookahead();
}
lexBuf.buf[lexBuf.getPtr] = '\n';
}
return c;
}
static int lexGetc() {
int c = lexLookahead();
if (lexBuf.len > 0 && lexBuf.buf[lexBuf.getPtr]!=EOF) {
/* EOF will remain in lookahead buffer */
lexBuf.getPtr = (lexBuf.getPtr + 1) % MAX_LEX_LOOKAHEAD;
lexBuf.len--;
}
return c;
}
static void lexSkipLookaheadWord() {
if (lexBuf.strsLen <= lexBuf.len) {
lexBuf.len -= lexBuf.strsLen;
lexBuf.getPtr = (lexBuf.getPtr + lexBuf.strsLen) % MAX_LEX_LOOKAHEAD;
}
}
static void lexClearToken()
{
lexBuf.strsLen = 0;
}
static void lexAppendc(int c)
{
lexBuf.strs[lexBuf.strsLen] = c;
/* append up to zero termination */
if (c == 0) return;
lexBuf.strsLen++;
if (lexBuf.strsLen > lexBuf.maxToken) {
/* double the token string size */
lexBuf.maxToken <<= 1;
lexBuf.strs = (char*) realloc(lexBuf.strs,(size_t)lexBuf.maxToken);
}
}
static char* lexStr() {
return dupStr(lexBuf.strs,(size_t)lexBuf.strsLen+1);
}
static void lexSkipWhite() {
int c = lexLookahead();
while (c == ' ' || c == '\t') {
lexSkipLookahead();
c = lexLookahead();
}
}
static char* lexGetWord() {
int c;
lexSkipWhite();
lexClearToken();
c = lexLookahead();
while (c != EOF && !strchr("\t\n ;:=",c)) {
lexAppendc(c);
lexSkipLookahead();
c = lexLookahead();
}
lexAppendc(0);
return lexStr();
}
static void lexPushLookaheadc(int c) {
int putptr;
/* can't putback EOF, because it never leaves lookahead buffer */
if (c == EOF) return;
putptr = (int)lexBuf.getPtr - 1;
if (putptr < 0) putptr += MAX_LEX_LOOKAHEAD;
lexBuf.getPtr = putptr;
lexBuf.buf[putptr] = c;
lexBuf.len += 1;
}
static char* lexLookaheadWord() {
/* this function can lookahead word with max size of MAX_LEX_LOOKAHEAD_0
/ and thing bigger than that will stop the lookahead and return 0;
/ leading white spaces are not recoverable.
*/
int c;
int len = 0;
int curgetptr = 0;
lexSkipWhite();
lexClearToken();
curgetptr = (int)lexBuf.getPtr; // remember!
while (len < (MAX_LEX_LOOKAHEAD_0)) {
c = lexGetc();
len++;
if (c == EOF || strchr("\t\n ;:=", c)) {
lexAppendc(0);
/* restore lookahead buf. */
lexBuf.len += len;
lexBuf.getPtr = curgetptr;
return lexStr();
}
else
lexAppendc(c);
}
lexBuf.len += len; /* char that has been moved to lookahead buffer */
lexBuf.getPtr = curgetptr;
return 0;
}
#ifdef _SUPPORT_LINE_FOLDING
static void handleMoreRFC822LineBreak(int c) {
/* suport RFC 822 line break in cases like
* ADR: foo;
* morefoo;
* more foo;
*/
if (c == ';') {
int a;
lexSkipLookahead();
/* skip white spaces */
a = lexLookahead();
while (a == ' ' || a == '\t') {
lexSkipLookahead();
a = lexLookahead();
}
if (a == '\n') {
lexSkipLookahead();
a = lexLookahead();
if (a == ' ' || a == '\t') {
/* continuation, throw away all the \n and spaces read so
* far
*/
lexSkipWhite();
lexPushLookaheadc(';');
}
else {
lexPushLookaheadc('\n');
lexPushLookaheadc(';');
}
}
else {
lexPushLookaheadc(';');
}
}
}
static char* lexGet1Value() {
int c;
lexSkipWhite();
c = lexLookahead();
lexClearToken();
while (c != EOF && (c != ';' || !fieldedProp)) {
if (c == '\\' ) {
int a;
lexSkipLookahead();
a = lexLookahead();
if ( a == ';' ) {
lexAppendc( ';' );
lexSkipLookahead();
} else if ( a == '\n' ) {
lexAppendc( '\n' );
lexSkipLookahead();
} else if ( a == '\\' ) {
lexAppendc( '\\' );
lexSkipLookahead();
} else {
lexAppendc('\\');
}
} else if (c == '\n') {
int a;
lexSkipLookahead();
a = lexLookahead();
if (a == ' ' || a == '\t') {
lexAppendc(' ');
lexSkipLookahead();
}
else {
lexPushLookaheadc('\n');
break;
}
}
else {
lexAppendc(c);
lexSkipLookahead();
}
c = lexLookahead();
}
lexAppendc(0);
handleMoreRFC822LineBreak(c);
return c==EOF?0:lexStr();
}
#endif
static int match_begin_name(int end) {
char *n = lexLookaheadWord();
int token = ID;
if (n) {
if (!qstricmp(n,"vcard")) token = end?END_VCARD:BEGIN_VCARD;
else if (!qstricmp(n,"vcalendar")) token = end?END_VCAL:BEGIN_VCAL;
else if (!qstricmp(n,"vevent")) token = end?END_VEVENT:BEGIN_VEVENT;
else if (!qstricmp(n,"vtodo")) token = end?END_VTODO:BEGIN_VTODO;
deleteStr(n);
return token;
}
return 0;
}
#ifdef INCLUDEMFC
void initLex(const char *inputstring, unsigned long inputlen, CFile *inputfile)
#else
void initLex(const char *inputstring, unsigned long inputlen, FILE *inputfile)
#endif
{
// initialize lex mode stack
lexBuf.lexModeStack[lexBuf.lexModeStackTop=0] = L_NORMAL;
// iniatialize lex buffer.
lexBuf.inputString = (char*) inputstring;
lexBuf.inputLen = inputlen;
lexBuf.curPos = 0;
lexBuf.inputFile = inputfile;
lexBuf.len = 0;
lexBuf.getPtr = 0;
lexBuf.maxToken = MAXTOKEN;
lexBuf.strs = (char*)malloc(MAXTOKEN);
lexBuf.strsLen = 0;
}
static void finiLex() {
free(lexBuf.strs);
}
/*-----------------------------------*/
/* This parses and converts the base64 format for binary encoding into
* a decoded buffer (allocated with new). See RFC 1521.
*/
static char * lexGetDataFromBase64()
{
unsigned long bytesLen = 0, bytesMax = 0;
int quadIx = 0, pad = 0;
unsigned long trip = 0;
unsigned char b;
int c;
unsigned char *bytes = NULL;
unsigned char *oldBytes = NULL;
DBG_(("db: lexGetDataFromBase64\n"));
while (1) {
c = lexGetc();
if (c == '\n') {
++mime_lineNum;
if (lexLookahead() == '\n') {
/* a '\n' character by itself means end of data */
break;
}
else continue; /* ignore '\n' */
}
else {
if ((c >= 'A') && (c <= 'Z'))
b = (unsigned char)(c - 'A');
else if ((c >= 'a') && (c <= 'z'))
b = (unsigned char)(c - 'a') + 26;
else if ((c >= '0') && (c <= '9'))
b = (unsigned char)(c - '0') + 52;
else if (c == '+')
b = 62;
else if (c == '/')
b = 63;
else if (c == '=') {
b = 0;
pad++;
} else if ((c == ' ') || (c == '\t')) {
continue;
} else { /* error condition */
if (bytes) free(bytes);
else if (oldBytes) free(oldBytes);
// error recovery: skip until 2 adjacent newlines.
DBG_(("db: invalid character 0x%x '%c'\n", c,c));
if (c != EOF) {
c = lexGetc();
while (c != EOF) {
if (c == '\n' && lexLookahead() == '\n') {
++mime_lineNum;
break;
}
c = lexGetc();
}
}
return NULL;
}
trip = (trip << 6) | b;
if (++quadIx == 4) {
unsigned char outBytes[3];
int numOut;
int i;
for (i = 0; i < 3; i++) {
outBytes[2-i] = (unsigned char)(trip & 0xFF);
trip >>= 8;
}
numOut = 3 - pad;
if (bytesLen + numOut > bytesMax) {
if (!bytes) {
bytesMax = 1024;
bytes = (unsigned char*)malloc((size_t)bytesMax);
}
else {
bytesMax <<= 2;
oldBytes = bytes;
bytes = (unsigned char*)realloc(bytes,(size_t)bytesMax);
}
if (bytes == 0) {
mime_error("out of memory while processing BASE64 data\n");
}
}
if (bytes) {
memcpy(bytes + bytesLen, outBytes, numOut);
bytesLen += numOut;
}
trip = 0;
quadIx = 0;
}
}
} /* while */
DBG_(("db: bytesLen = %d\n", bytesLen));
/* kludge: all this won't be necessary if we have tree form
representation */
if (bytes) {
setValueWithSize(curProp,bytes,(unsigned int)bytesLen);
free(bytes);
}
else if (oldBytes) {
setValueWithSize(curProp,oldBytes,(unsigned int)bytesLen);
free(oldBytes);
}
return 0;
}
static int match_begin_end_name(int end) {
int token;
lexSkipWhite();
if (lexLookahead() != ':') return ID;
lexSkipLookahead();
lexSkipWhite();
token = match_begin_name(end);
if (token == ID) {
lexPushLookaheadc(':');
DBG_(("db: ID '%s'\n", yylval.str));
return ID;
}
else if (token != 0) {
lexSkipLookaheadWord();
deleteStr(yylval.str);
DBG_(("db: begin/end %d\n", token));
return token;
}
return 0;
}
static char* lexGetQuotedPrintable()
{
int c;
lexSkipWhite();
c = lexLookahead();
lexClearToken();
while (c != EOF && c != ';') {
if (c == '\n') {
// break, leave '\n' on remaining chars.
break;
} else if (c == '=') {
int cur = 0;
int next;
lexSkipLookahead(); // skip '='
next = lexLookahead();
if (next == '\n') {
// skip and only skip the \n
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum; // aid in error reporting
continue;
} else if (next >= '0' && next <= '9') {
cur = next - '0';
} else if (next >= 'A' && next <= 'F') {
cur = next - 'A' + 10;
} else {
// we have been sent buggy stuff. doesn't matter
// what we do so long as we keep going.
// should probably spit an error here
lexSkipLookahead();
c = lexLookahead();
continue;
}
lexSkipLookahead(); // skip A-Z0-9
next = lexLookahead();
cur = cur * 16;
// this time really just expecting 0-9A-F
if (next >= '0' && next <= '9') {
cur += next - '0';
} else if (next >= 'A' && next <= 'F') {
cur += next - 'A' + 10;
} else {
// we have been sent buggy stuff. doesn't matter
// what we do so long as we keep going.
// should probably spit an error here
lexSkipLookahead();
c = lexLookahead();
continue;
}
// got a valid escaped =. append it.
lexSkipLookahead(); // skip second 0-9A-F
lexAppendc(cur);
} else {
lexSkipLookahead(); // skip whatever we just read.
lexAppendc(c); // and append it.
}
c = lexLookahead();
}
lexAppendc(0);
return c==EOF?0:lexStr();
}
static int yylex() {
int lexmode = LEXMODE();
if (lexmode == L_VALUES) {
int c = lexGetc();
if (c == ';' && fieldedProp) {
DBG_(("db: SEMICOLON\n"));
lexPushLookaheadc(c);
handleMoreRFC822LineBreak(c);
lexSkipLookahead();
return SEMICOLON;
}
else if (strchr("\n",c)) {
++mime_lineNum;
/* consume all line separator(s) adjacent to each other */
c = lexLookahead();
while (strchr("\n",c)) {
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum;
}
DBG_(("db: LINESEP\n"));
return LINESEP;
}
else {
char *p = 0;
lexPushLookaheadc(c);
if (lexWithinMode(L_BASE64)) {
/* get each char and convert to bin on the fly... */
p = lexGetDataFromBase64();
+#if 0 yylval.str = p;
return STRING;
+#endif }
else if (lexWithinMode(L_QUOTED_PRINTABLE)) {
p = lexGetQuotedPrintable();
}
else {
#ifdef _SUPPORT_LINE_FOLDING
p = lexGet1Value();
#else
p = lexGetStrUntil(";\n");
#endif
}
if (p) {
DBG_(("db: STRING: '%s'\n", p));
yylval.str = p;
return STRING;
}
else return 0;
}
}
else {
/* normal mode */
while (1) {
int c = lexGetc();
switch(c) {
case ':': {
/* consume all line separator(s) adjacent to each other */
/* ignoring linesep immediately after colon. */
/* I don't see this in the spec, and it breaks null values -- WA
c = lexLookahead();
while (strchr("\n",c)) {
lexSkipLookahead();
c = lexLookahead();
++mime_lineNum;
}
*/
DBG_(("db: COLON\n"));
return COLON;
}
case ';':
DBG_(("db: SEMICOLON\n"));
return SEMICOLON;
case '=':
DBG_(("db: EQ\n"));
return EQ;
/* ignore whitespace in this mode */
case '\t':
case ' ': continue;
case '\n': {
++mime_lineNum;
continue;
}
case EOF: return 0;
break;
default: {
lexPushLookaheadc(c);
if (isalnum(c)) {
char *t = lexGetWord();
yylval.str = t;
if (!qstricmp(t, "begin")) {
return match_begin_end_name(0);
}
else if (!qstricmp(t,"end")) {
return match_begin_end_name(1);
}
else {
DBG_(("db: ID '%s'\n", t));
return ID;
}
}
else {
/* unknow token */
return 0;
}
break;
}
}
}
}
return 0;
}
/***************************************************************************/
/*** Public Functions ****/
/***************************************************************************/
static VObject* Parse_MIMEHelper()
{
ObjStackTop = -1;
mime_numErrors = 0;
mime_lineNum = 1;
vObjList = 0;
curObj = 0;
if (yyparse() != 0)
return 0;
finiLex();
return vObjList;
}
/*--------------------------------------------*/
DLLEXPORT(VObject*) Parse_MIME(const char *input, unsigned long len)
{
initLex(input, len, 0);
return Parse_MIMEHelper();
}
#if INCLUDEMFC
DLLEXPORT(VObject*) Parse_MIME_FromFile(CFile *file)
{
unsigned long startPos;
VObject *result;
initLex(0,-1,file);
startPos = file->GetPosition();
if (!(result = Parse_MIMEHelper()))
file->Seek(startPos, CFile::begin);
return result;
}
#else
VObject* Parse_MIME_FromFile(FILE *file)
{
VObject *result;
long startPos;
initLex(0,(unsigned long)-1,file);
startPos = ftell(file);
if (!(result = Parse_MIMEHelper())) {
fseek(file,startPos,SEEK_SET);
}
return result;
}
DLLEXPORT(VObject*) Parse_MIME_FromFileName(char *fname)
{
FILE *fp = fopen(fname,"r");
if (fp) {
VObject* o = Parse_MIME_FromFile(fp);
fclose(fp);
return o;
}
else {
char msg[80];
sprintf(msg, "can't open file '%s' for reading\n", fname);
mime_error_(msg);
return 0;
}
}
#endif
/*-------------------------------------*/
static MimeErrorHandler mimeErrorHandler;
DLLEXPORT(void) registerMimeErrorHandler(MimeErrorHandler me)
{
mimeErrorHandler = me;
}
void mime_error(char *s)
{
char msg[256];
if (mimeErrorHandler) {
sprintf(msg,"%s at line %d", s, mime_lineNum);
mimeErrorHandler(msg);
}
}
void mime_error_(char *s)
{
if (mimeErrorHandler) {
mimeErrorHandler(s);
}
}
#line 1240 "y.tab.c" #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int #if defined(__STDC__) yyparse(void) #else yyparse() #endif { register int yym, yyn, yystate; #if YYDEBUG register char *yys; extern char *getenv(); if (yys = getenv("YYDEBUG")) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 2: #line 221 "backend/vcc.y" { addList(&vObjList, yyvsp[0].vobj); curObj = 0; } break; case 3: #line 223 "backend/vcc.y" { addList(&vObjList, yyvsp[0].vobj); curObj = 0; } break; case 6: #line 232 "backend/vcc.y" {
lexPushMode(L_VCARD);
if (!pushVObject(VCCardProp)) YYERROR;
} break; case 7: #line 237 "backend/vcc.y" {
lexPopMode(0);
yyval.vobj = popVObject();
} break; case 8: #line 242 "backend/vcc.y" {
lexPushMode(L_VCARD);
if (!pushVObject(VCCardProp)) YYERROR;
} break; case 9: #line 247 "backend/vcc.y" {
lexPopMode(0);
yyval.vobj = popVObject();
} break; case 12: #line 258 "backend/vcc.y" {
lexPushMode(L_VALUES);
} break; case 13: #line 262 "backend/vcc.y" {
if (lexWithinMode(L_BASE64) || lexWithinMode(L_QUOTED_PRINTABLE))
lexPopMode(0);
lexPopMode(0);
} break; case 15: #line 271 "backend/vcc.y" {
enterProps(yyvsp[0].str);
} break; case 17: #line 276 "backend/vcc.y" {
enterProps(yyvsp[0].str);
} break; case 21: #line 289 "backend/vcc.y" {
enterAttr(yyvsp[0].str,0);
} break; case 22: #line 293 "backend/vcc.y" {
enterAttr(yyvsp[-2].str,yyvsp[0].str);
} break; case 24: #line 302 "backend/vcc.y" { enterValues(yyvsp[-1].str); } break; case 26: #line 304 "backend/vcc.y" { enterValues(yyvsp[0].str); } break; case 28: #line 309 "backend/vcc.y" { yyval.str = 0; } break; case 29: #line 314 "backend/vcc.y" { if (!pushVObject(VCCalProp)) YYERROR; } break; case 30: #line 317 "backend/vcc.y" { yyval.vobj = popVObject(); } break; case 31: #line 319 "backend/vcc.y" { if (!pushVObject(VCCalProp)) YYERROR; } break; case 32: #line 321 "backend/vcc.y" { yyval.vobj = popVObject(); } break; case 38: #line 336 "backend/vcc.y" {
lexPushMode(L_VEVENT);
if (!pushVObject(VCEventProp)) YYERROR;
} break; case 39: #line 342 "backend/vcc.y" {
lexPopMode(0);
popVObject();
} break; case 40: #line 347 "backend/vcc.y" {
lexPushMode(L_VEVENT);
if (!pushVObject(VCEventProp)) YYERROR;
} break; case 41: #line 352 "backend/vcc.y" {
lexPopMode(0);
popVObject();
} break; case 42: #line 360 "backend/vcc.y" {
lexPushMode(L_VTODO);
if (!pushVObject(VCTodoProp)) YYERROR;
} break; case 43: #line 366 "backend/vcc.y" {
lexPopMode(0);
popVObject();
} break; case 44: #line 371 "backend/vcc.y" {
lexPushMode(L_VTODO);
if (!pushVObject(VCTodoProp)) YYERROR;
} break; case 45: #line 376 "backend/vcc.y" {
lexPopMode(0);
popVObject();
} break; #line 1540 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); } diff --git a/library/backend/vobject.cpp b/library/backend/vobject.cpp index b6d17dc..4c8de70 100644 --- a/library/backend/vobject.cpp +++ b/library/backend/vobject.cpp @@ -1,1365 +1,1366 @@ /*************************************************************************** (C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International Business Machines Corporation and Siemens Rolm Communications Inc. For purposes of this license notice, the term Licensors shall mean, collectively, Apple Computer, Inc., AT&T Corp., International Business Machines Corporation and Siemens Rolm Communications Inc. The term Licensor shall mean any of the Licensors. Subject to acceptance of the following conditions, permission is hereby granted by Licensors without the need for written agreement and without license or royalty fees, to use, copy, modify and distribute this software for any purpose. The above copyright notice and the following four paragraphs must be reproduced in all copies of this software and any software including this software. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS. IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The software is provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by the government are subject to restrictions set forth in DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable. ***************************************************************************/ /* * src: vobject.c * doc: vobject and APIs to construct vobject, APIs pretty print * vobject, and convert a vobject into its textual representation. */ #ifndef MWERKS #include <malloc.h> #endif #include <qtopia/config.h> #include "vobject_p.h" #include "qfiledirect_p.h" #include <string.h> #include <stdio.h> #include <fcntl.h> //#include <io.h> #define NAME_OF(o) o->id #define VALUE_TYPE(o) o->valType #define STRINGZ_VALUE_OF(o) o->val.strs #define INTEGER_VALUE_OF(o) o->val.i #define LONG_VALUE_OF(o) o->val.l #define ANY_VALUE_OF(o) o->val.any #define VOBJECT_VALUE_OF(o) o->val.vobj static char vobj_cs[10]; static enum { EightBit, QuotedPrintable, Base64 } vobj_enc=EightBit; static const char *vobj_enc_s=0; typedef union ValueItem { const char *strs; unsigned int i; unsigned long l; void *any; VObject *vobj; } ValueItem; struct VObject { VObject *next; const char *id; VObject *prop; unsigned short valType; ValueItem val; }; typedef struct StrItem StrItem; struct StrItem { StrItem *next; const char *s; unsigned int refCnt; }; DLLEXPORT(const char**) fieldedProp; /*---------------------------------------------------------------------- The following functions involve with memory allocation: newVObject deleteVObject dupStr deleteStr newStrItem deleteStrItem ----------------------------------------------------------------------*/ DLLEXPORT(VObject*) newVObject_(const char *id) { VObject *p = (VObject*)malloc(sizeof(VObject)); p->next = 0; p->id = id; p->prop = 0; VALUE_TYPE(p) = 0; ANY_VALUE_OF(p) = 0; return p; } DLLEXPORT(VObject*) newVObject(const char *id) { return newVObject_(lookupStr(id)); } DLLEXPORT(void) deleteVObject(VObject *p) { unUseStr(p->id); free(p); } DLLEXPORT(char*) dupStr(const char *s, unsigned int size) { char *t; if (size == 0) { size = strlen(s); } t = (char*)malloc(size+1); if (t) { memcpy(t,s,size); t[size] = 0; return t; } else { return (char*)0; } } DLLEXPORT(void) deleteStr(const char *p) { if (p) free((void*)p); } static StrItem* newStrItem(const char *s, StrItem *next) { StrItem *p = (StrItem*)malloc(sizeof(StrItem)); p->next = next; p->s = s; p->refCnt = 1; return p; } static void deleteStrItem(StrItem *p) { free((void*)p); } /*---------------------------------------------------------------------- The following function provide accesses to VObject's value. ----------------------------------------------------------------------*/ DLLEXPORT(const char*) vObjectName(VObject *o) { return NAME_OF(o); } DLLEXPORT(void) setVObjectName(VObject *o, const char* id) { NAME_OF(o) = id; } DLLEXPORT(const char*) vObjectStringZValue(VObject *o) { return STRINGZ_VALUE_OF(o); } DLLEXPORT(void) setVObjectStringZValue(VObject *o, const char *s) { STRINGZ_VALUE_OF(o) = dupStr(s,0); VALUE_TYPE(o) = VCVT_STRINGZ; } DLLEXPORT(void) setVObjectStringZValue_(VObject *o, const char *s) { STRINGZ_VALUE_OF(o) = s; VALUE_TYPE(o) = VCVT_STRINGZ; } DLLEXPORT(unsigned int) vObjectIntegerValue(VObject *o) { return INTEGER_VALUE_OF(o); } DLLEXPORT(void) setVObjectIntegerValue(VObject *o, unsigned int i) { INTEGER_VALUE_OF(o) = i; VALUE_TYPE(o) = VCVT_UINT; } DLLEXPORT(unsigned long) vObjectLongValue(VObject *o) { return LONG_VALUE_OF(o); } DLLEXPORT(void) setVObjectLongValue(VObject *o, unsigned long l) { LONG_VALUE_OF(o) = l; VALUE_TYPE(o) = VCVT_ULONG; } DLLEXPORT(void*) vObjectAnyValue(VObject *o) { return ANY_VALUE_OF(o); } DLLEXPORT(void) setVObjectAnyValue(VObject *o, void *t) { ANY_VALUE_OF(o) = t; VALUE_TYPE(o) = VCVT_RAW; } DLLEXPORT(VObject*) vObjectVObjectValue(VObject *o) { return VOBJECT_VALUE_OF(o); } DLLEXPORT(void) setVObjectVObjectValue(VObject *o, VObject *p) { VOBJECT_VALUE_OF(o) = p; VALUE_TYPE(o) = VCVT_VOBJECT; } DLLEXPORT(int) vObjectValueType(VObject *o) { return VALUE_TYPE(o); } /*---------------------------------------------------------------------- The following functions can be used to build VObject. ----------------------------------------------------------------------*/ DLLEXPORT(VObject*) addVObjectProp(VObject *o, VObject *p) { /* circular link list pointed to tail */ /* o {next,id,prop,val} V pn {next,id,prop,val} V ... p1 {next,id,prop,val} V pn --> o {next,id,prop,val} V pn {next,id,prop,val} V p {next,id,prop,val} ... p1 {next,id,prop,val} V pn */ VObject *tail = o->prop; if (tail) { p->next = tail->next; o->prop = tail->next = p; } else { o->prop = p->next = p; } return p; } DLLEXPORT(VObject*) addProp(VObject *o, const char *id) { return addVObjectProp(o,newVObject(id)); } DLLEXPORT(VObject*) addProp_(VObject *o, const char *id) { return addVObjectProp(o,newVObject_(id)); } DLLEXPORT(void) addList(VObject **o, VObject *p) { p->next = 0; if (*o == 0) { *o = p; } else { VObject *t = *o; while (t->next) { t = t->next; } t->next = p; } } DLLEXPORT(VObject*) nextVObjectInList(VObject *o) { return o->next; } DLLEXPORT(VObject*) setValueWithSize_(VObject *prop, void *val, unsigned int size) { VObject *sizeProp; setVObjectAnyValue(prop, val); sizeProp = addProp(prop,VCDataSizeProp); setVObjectLongValue(sizeProp, size); return prop; } DLLEXPORT(VObject*) setValueWithSize(VObject *prop, void *val, unsigned int size) { void *p = dupStr((const char *)val,size); return setValueWithSize_(prop,p,p?size:0); } DLLEXPORT(void) initPropIterator(VObjectIterator *i, VObject *o) { i->start = o->prop; i->next = 0; } DLLEXPORT(void) initVObjectIterator(VObjectIterator *i, VObject *o) { i->start = o->next; i->next = 0; } DLLEXPORT(int) moreIteration(VObjectIterator *i) { return (i->start && (i->next==0 || i->next!=i->start)); } DLLEXPORT(VObject*) nextVObject(VObjectIterator *i) { if (i->start && i->next != i->start) { if (i->next == 0) { i->next = i->start->next; return i->next; } else { i->next = i->next->next; return i->next; } } else return (VObject*)0; } DLLEXPORT(VObject*) isAPropertyOf(VObject *o, const char *id) { VObjectIterator i; initPropIterator(&i,o); while (moreIteration(&i)) { VObject *each = nextVObject(&i); if (!qstricmp(id,each->id)) return each; } return (VObject*)0; } DLLEXPORT(VObject*) addGroup(VObject *o, const char *g) { /* a.b.c --> prop(c) prop(VCGrouping=b) prop(VCGrouping=a) */ char *dot = strrchr(g,'.'); if (dot) { VObject *p, *t; char *gs, *n = dot+1; gs = dupStr(g,0); /* so we can write to it. */ /* used to be * t = p = addProp_(o,lookupProp_(n)); */ t = p = addProp_(o,lookupProp(n)); dot = strrchr(gs,'.'); *dot = 0; do { dot = strrchr(gs,'.'); if (dot) { n = dot+1; *dot=0; } else n = gs; /* property(VCGroupingProp=n); * and the value may have VCGrouping property */ t = addProp(t,VCGroupingProp); setVObjectStringZValue(t,lookupProp_(n)); } while (n != gs); deleteStr(gs); return p; } else return addProp_(o,lookupProp(g)); } DLLEXPORT(VObject*) addPropValue(VObject *o, const char *p, const char *v) { VObject *prop; prop = addProp(o,p); setVObjectStringZValue_(prop, strdup( v ) ); return prop; } DLLEXPORT(VObject*) addPropSizedValue_(VObject *o, const char *p, const char *v, unsigned int size) { VObject *prop; prop = addProp(o,p); setValueWithSize_(prop, (void*)v, size); return prop; } DLLEXPORT(VObject*) addPropSizedValue(VObject *o, const char *p, const char *v, unsigned int size) { return addPropSizedValue_(o,p,dupStr(v,size),size); } DLLEXPORT(void) cleanVObject(VObject *o) { if (o == 0) return; if (o->prop) { /* destroy time: cannot use the iterator here. Have to break the cycle in the circular link list and turns it into regular NULL-terminated list -- since at some point of destruction, the reference entry for the iterator to work will not longer be valid. */ VObject *p; p = o->prop->next; o->prop->next = 0; do { VObject *t = p->next; cleanVObject(p); p = t; } while (p); } switch (VALUE_TYPE(o)) { case VCVT_STRINGZ: case VCVT_RAW: // assume they are all allocated by malloc. free((char*)STRINGZ_VALUE_OF(o)); break; case VCVT_VOBJECT: cleanVObject(VOBJECT_VALUE_OF(o)); break; } deleteVObject(o); } DLLEXPORT(void) cleanVObjects(VObject *list) { while (list) { VObject *t = list; list = nextVObjectInList(list); cleanVObject(t); } } /*---------------------------------------------------------------------- The following is a String Table Facilities. ----------------------------------------------------------------------*/ #define STRTBLSIZE 255 static StrItem *strTbl[STRTBLSIZE]; static unsigned int hashStr(const char *s) { unsigned int h = 0; int i; for (i=0;s[i];i++) { h += s[i]*i; } return h % STRTBLSIZE; } DLLEXPORT(const char*) lookupStr(const char *s) { StrItem *t; unsigned int h = hashStr(s); if ((t = strTbl[h]) != 0) { do { if (qstricmp(t->s,s) == 0) { t->refCnt++; return t->s; } t = t->next; } while (t); } s = dupStr(s,0); strTbl[h] = newStrItem(s,strTbl[h]); return s; } DLLEXPORT(void) unUseStr(const char *s) { StrItem *t, *p; unsigned int h = hashStr(s); if ((t = strTbl[h]) != 0) { p = t; do { if (qstricmp(t->s,s) == 0) { t->refCnt--; if (t->refCnt == 0) { if (p == strTbl[h]) { strTbl[h] = t->next; } else { p->next = t->next; } deleteStr(t->s); deleteStrItem(t); return; } } p = t; t = t->next; } while (t); } } DLLEXPORT(void) cleanStrTbl() { int i; for (i=0; i<STRTBLSIZE;i++) { StrItem *t = strTbl[i]; while (t) { StrItem *p; deleteStr(t->s); p = t; t = t->next; deleteStrItem(p); } while (t); strTbl[i] = 0; } } struct PreDefProp { const char *name; const char *alias; const char** fields; unsigned int flags; }; /* flags in PreDefProp */ #define PD_BEGIN 0x1 #define PD_INTERNAL 0x2 static const char *adrFields[] = { VCPostalBoxProp, VCExtAddressProp, VCStreetAddressProp, VCCityProp, VCRegionProp, VCPostalCodeProp, VCCountryNameProp, 0 }; static const char *nameFields[] = { VCFamilyNameProp, VCGivenNameProp, VCAdditionalNamesProp, VCNamePrefixesProp, VCNameSuffixesProp, NULL }; static const char *orgFields[] = { VCOrgNameProp, VCOrgUnitProp, VCOrgUnit2Prop, VCOrgUnit3Prop, VCOrgUnit4Prop, NULL }; static const char *AAlarmFields[] = { VCRunTimeProp, VCSnoozeTimeProp, VCRepeatCountProp, VCAudioContentProp, 0 }; /* ExDate -- has unamed fields */ /* RDate -- has unamed fields */ static const char *DAlarmFields[] = { VCRunTimeProp, VCSnoozeTimeProp, VCRepeatCountProp, VCDisplayStringProp, 0 }; static const char *MAlarmFields[] = { VCRunTimeProp, VCSnoozeTimeProp, VCRepeatCountProp, VCEmailAddressProp, VCNoteProp, 0 }; static const char *PAlarmFields[] = { VCRunTimeProp, VCSnoozeTimeProp, VCRepeatCountProp, VCProcedureNameProp, 0 }; static struct PreDefProp propNames[] = { { VC7bitProp, 0, 0, 0 }, { VC8bitProp, 0, 0, 0 }, { VCAAlarmProp, 0, AAlarmFields, 0 }, { VCAdditionalNamesProp, 0, 0, 0 }, { VCAdrProp, 0, adrFields, 0 }, { VCAgentProp, 0, 0, 0 }, { VCAIFFProp, 0, 0, 0 }, { VCAOLProp, 0, 0, 0 }, { VCAppleLinkProp, 0, 0, 0 }, { VCAttachProp, 0, 0, 0 }, { VCAttendeeProp, 0, 0, 0 }, { VCATTMailProp, 0, 0, 0 }, { VCAudioContentProp, 0, 0, 0 }, { VCAVIProp, 0, 0, 0 }, { VCBase64Prop, 0, 0, 0 }, { VCBBSProp, 0, 0, 0 }, { VCBirthDateProp, 0, 0, 0 }, { VCBMPProp, 0, 0, 0 }, { VCBodyProp, 0, 0, 0 }, { VCBusinessRoleProp, 0, 0, 0 }, { VCCalProp, 0, 0, PD_BEGIN }, { VCCaptionProp, 0, 0, 0 }, { VCCardProp, 0, 0, PD_BEGIN }, { VCCarProp, 0, 0, 0 }, { VCCategoriesProp, 0, 0, 0 }, { VCCellularProp, 0, 0, 0 }, { VCCGMProp, 0, 0, 0 }, { VCCharSetProp, 0, 0, 0 }, { VCCIDProp, VCContentIDProp, 0, 0 }, { VCCISProp, 0, 0, 0 }, { VCCityProp, 0, 0, 0 }, { VCClassProp, 0, 0, 0 }, { VCCommentProp, 0, 0, 0 }, { VCCompletedProp, 0, 0, 0 }, { VCContentIDProp, 0, 0, 0 }, { VCCountryNameProp, 0, 0, 0 }, { VCDAlarmProp, 0, DAlarmFields, 0 }, { VCDataSizeProp, 0, 0, PD_INTERNAL }, { VCDayLightProp, 0, 0, 0 }, { VCDCreatedProp, 0, 0, 0 }, { VCDeliveryLabelProp, 0, 0, 0 }, { VCDescriptionProp, 0, 0, 0 }, { VCDIBProp, 0, 0, 0 }, { VCDisplayStringProp, 0, 0, 0 }, { VCDomesticProp, 0, 0, 0 }, { VCDTendProp, 0, 0, 0 }, { VCDTstartProp, 0, 0, 0 }, { VCDueProp, 0, 0, 0 }, { VCEmailAddressProp, 0, 0, 0 }, { VCEncodingProp, 0, 0, 0 }, { VCEndProp, 0, 0, 0 }, { VCEventProp, 0, 0, PD_BEGIN }, { VCEWorldProp, 0, 0, 0 }, { VCExNumProp, 0, 0, 0 }, { VCExpDateProp, 0, 0, 0 }, { VCExpectProp, 0, 0, 0 }, { VCExtAddressProp, 0, 0, 0 }, { VCFamilyNameProp, 0, 0, 0 }, { VCFaxProp, 0, 0, 0 }, { VCFullNameProp, 0, 0, 0 }, { VCGeoLocationProp, 0, 0, 0 }, { VCGeoProp, 0, 0, 0 }, { VCGIFProp, 0, 0, 0 }, { VCGivenNameProp, 0, 0, 0 }, { VCGroupingProp, 0, 0, 0 }, { VCHomeProp, 0, 0, 0 }, { VCIBMMailProp, 0, 0, 0 }, { VCInlineProp, 0, 0, 0 }, { VCInternationalProp, 0, 0, 0 }, { VCInternetProp, 0, 0, 0 }, { VCISDNProp, 0, 0, 0 }, { VCJPEGProp, 0, 0, 0 }, { VCLanguageProp, 0, 0, 0 }, { VCLastModifiedProp, 0, 0, 0 }, { VCLastRevisedProp, 0, 0, 0 }, { VCLocationProp, 0, 0, 0 }, { VCLogoProp, 0, 0, 0 }, { VCMailerProp, 0, 0, 0 }, { VCMAlarmProp, 0, MAlarmFields, 0 }, { VCMCIMailProp, 0, 0, 0 }, { VCMessageProp, 0, 0, 0 }, { VCMETProp, 0, 0, 0 }, { VCModemProp, 0, 0, 0 }, { VCMPEG2Prop, 0, 0, 0 }, { VCMPEGProp, 0, 0, 0 }, { VCMSNProp, 0, 0, 0 }, { VCNamePrefixesProp, 0, 0, 0 }, { VCNameProp, 0, nameFields, 0 }, { VCNameSuffixesProp, 0, 0, 0 }, { VCNoteProp, 0, 0, 0 }, { VCOrgNameProp, 0, 0, 0 }, { VCOrgProp, 0, orgFields, 0 }, { VCOrgUnit2Prop, 0, 0, 0 }, { VCOrgUnit3Prop, 0, 0, 0 }, { VCOrgUnit4Prop, 0, 0, 0 }, { VCOrgUnitProp, 0, 0, 0 }, { VCPagerProp, 0, 0, 0 }, { VCPAlarmProp, 0, PAlarmFields, 0 }, { VCParcelProp, 0, 0, 0 }, { VCPartProp, 0, 0, 0 }, { VCPCMProp, 0, 0, 0 }, { VCPDFProp, 0, 0, 0 }, { VCPGPProp, 0, 0, 0 }, { VCPhotoProp, 0, 0, 0 }, { VCPICTProp, 0, 0, 0 }, { VCPMBProp, 0, 0, 0 }, { VCPostalBoxProp, 0, 0, 0 }, { VCPostalCodeProp, 0, 0, 0 }, { VCPostalProp, 0, 0, 0 }, { VCPowerShareProp, 0, 0, 0 }, { VCPreferredProp, 0, 0, 0 }, { VCPriorityProp, 0, 0, 0 }, { VCProcedureNameProp, 0, 0, 0 }, { VCProdIdProp, 0, 0, 0 }, { VCProdigyProp, 0, 0, 0 }, { VCPronunciationProp, 0, 0, 0 }, { VCPSProp, 0, 0, 0 }, { VCPublicKeyProp, 0, 0, 0 }, { VCQPProp, VCQuotedPrintableProp, 0, 0 }, + { VCQPProp, VCBase64Prop, 0, 0 }, { VCQuickTimeProp, 0, 0, 0 }, { VCQuotedPrintableProp, 0, 0, 0 }, { VCRDateProp, 0, 0, 0 }, { VCRegionProp, 0, 0, 0 }, { VCRelatedToProp, 0, 0, 0 }, { VCRepeatCountProp, 0, 0, 0 }, { VCResourcesProp, 0, 0, 0 }, { VCRNumProp, 0, 0, 0 }, { VCRoleProp, 0, 0, 0 }, { VCRRuleProp, 0, 0, 0 }, { VCRSVPProp, 0, 0, 0 }, { VCRunTimeProp, 0, 0, 0 }, { VCSequenceProp, 0, 0, 0 }, { VCSnoozeTimeProp, 0, 0, 0 }, { VCStartProp, 0, 0, 0 }, { VCStatusProp, 0, 0, 0 }, { VCStreetAddressProp, 0, 0, 0 }, { VCSubTypeProp, 0, 0, 0 }, { VCSummaryProp, 0, 0, 0 }, { VCTelephoneProp, 0, 0, 0 }, { VCTIFFProp, 0, 0, 0 }, { VCTimeZoneProp, 0, 0, 0 }, { VCTitleProp, 0, 0, 0 }, { VCTLXProp, 0, 0, 0 }, { VCTodoProp, 0, 0, PD_BEGIN }, { VCTranspProp, 0, 0, 0 }, { VCUniqueStringProp, 0, 0, 0 }, { VCURLProp, 0, 0, 0 }, { VCURLValueProp, 0, 0, 0 }, { VCValueProp, 0, 0, 0 }, { VCVersionProp, 0, 0, 0 }, { VCVideoProp, 0, 0, 0 }, { VCVoiceProp, 0, 0, 0 }, { VCWAVEProp, 0, 0, 0 }, { VCWMFProp, 0, 0, 0 }, { VCWorkProp, 0, 0, 0 }, { VCX400Prop, 0, 0, 0 }, { VCX509Prop, 0, 0, 0 }, { VCXRuleProp, 0, 0, 0 }, { 0,0,0,0 } }; static struct PreDefProp* lookupPropInfo(const char* str) { /* brute force for now, could use a hash table here. */ int i; for (i = 0; propNames[i].name; i++) if (qstricmp(str, propNames[i].name) == 0) { return &propNames[i]; } return 0; } DLLEXPORT(const char*) lookupProp_(const char* str) { int i; for (i = 0; propNames[i].name; i++) if (qstricmp(str, propNames[i].name) == 0) { const char* s; s = propNames[i].alias?propNames[i].alias:propNames[i].name; return lookupStr(s); } return lookupStr(str); } DLLEXPORT(const char*) lookupProp(const char* str) { int i; for (i = 0; propNames[i].name; i++) if (qstricmp(str, propNames[i].name) == 0) { const char *s; fieldedProp = propNames[i].fields; s = propNames[i].alias?propNames[i].alias:propNames[i].name; return lookupStr(s); } fieldedProp = 0; return lookupStr(str); } /*---------------------------------------------------------------------- APIs to Output text form. ----------------------------------------------------------------------*/ #define OFILE_REALLOC_SIZE 256 typedef struct OFile { FILE *fp; char *s; int len; int limit; int alloc:1; int fail:1; } OFile; #if 0 static void appendsOFile(OFile *fp, const char *s) { int slen; if (fp->fail) return; slen = strlen(s); if (fp->fp) { fwrite(s,1,slen,fp->fp); } else { stuff: if (fp->len + slen < fp->limit) { memcpy(fp->s+fp->len,s,slen); fp->len += slen; return; } else if (fp->alloc) { fp->limit = fp->limit + OFILE_REALLOC_SIZE; if (OFILE_REALLOC_SIZE <= slen) fp->limit += slen; fp->s = (char *) realloc(fp->s,fp->limit); if (fp->s) goto stuff; } if (fp->alloc) free(fp->s); fp->s = 0; fp->fail = 1; } } static void appendcOFile(OFile *fp, char c) { if (fp->fail) return; if (fp->fp) { fputc(c,fp->fp); } else { stuff: if (fp->len+1 < fp->limit) { fp->s[fp->len] = c; fp->len++; return; } else if (fp->alloc) { fp->limit = fp->limit + OFILE_REALLOC_SIZE; fp->s = (char *) realloc(fp->s,fp->limit); if (fp->s) goto stuff; } if (fp->alloc) free(fp->s); fp->s = 0; fp->fail = 1; } } #else static void appendcOFile_(OFile *fp, char c) { if (fp->fail) return; if (fp->fp) { fputc(c,fp->fp); } else { stuff: if (fp->len+1 < fp->limit) { fp->s[fp->len] = c; fp->len++; return; } else if (fp->alloc) { fp->limit = fp->limit + OFILE_REALLOC_SIZE; fp->s = (char *)realloc(fp->s,fp->limit); if (fp->s) goto stuff; } if (fp->alloc) free(fp->s); fp->s = 0; fp->fail = 1; } } static void appendcOFile(OFile *fp, char c) { if (c == '\n') { /* write out as <CR><LF> */ appendcOFile_(fp,0xd); appendcOFile_(fp,0xa); } else appendcOFile_(fp,c); } static void appendsOFile(OFile *fp, const char *s) { int i, slen; slen = strlen(s); for (i=0; i<slen; i++) { appendcOFile(fp,s[i]); } } #endif static void appendsOFileEncCs(OFile *fp) { if ( vobj_enc_s ) { appendsOFile(fp, ";" VCEncodingProp "="); appendsOFile(fp, vobj_enc_s); } appendsOFile(fp, ";" VCCharSetProp "="); appendsOFile(fp, vobj_cs); } static void initOFile(OFile *fp, FILE *ofp) { fp->fp = ofp; fp->s = 0; fp->len = 0; fp->limit = 0; fp->alloc = 0; fp->fail = 0; } static int writeBase64(OFile *fp, unsigned char *s, long len) { long cur = 0; int i, numQuads = 0; unsigned long trip; unsigned char b; char quad[5]; #define MAXQUADS 16 quad[4] = 0; while (cur < len) { // collect the triplet of bytes into 'trip' trip = 0; for (i = 0; i < 3; i++) { b = (cur < len) ? *(s + cur) : 0; cur++; trip = trip << 8 | b; } // fill in 'quad' with the appropriate four characters for (i = 3; i >= 0; i--) { b = (unsigned char)(trip & 0x3F); trip = trip >> 6; if ((3 - i) < (cur - len)) quad[i] = '='; // pad char else if (b < 26) quad[i] = (char)b + 'A'; else if (b < 52) quad[i] = (char)(b - 26) + 'a'; else if (b < 62) quad[i] = (char)(b - 52) + '0'; else if (b == 62) quad[i] = '+'; else quad[i] = '/'; } // now output 'quad' with appropriate whitespace and line ending appendsOFile(fp, (numQuads == 0 ? " " : "")); appendsOFile(fp, quad); appendsOFile(fp, ((cur >= len)?"\n" :(numQuads==MAXQUADS-1?"\n" : ""))); numQuads = (numQuads + 1) % MAXQUADS; } appendcOFile(fp,'\n'); return 1; } static const char *qpReplaceChar(unsigned char c) { if (c == '\n') { return "=0A=\n"; } else if ( // RFC 1521 (c >= 32 && c <= 60) // Note: " " not allowed at EOL || (c >= 62 && c <= 126) ) { return 0; } static char trans[4]; trans[0] = '='; trans[3] = '\0'; int rem = c % 16; int div = c / 16; if (div < 10) trans[1] = '0' + div; else trans[1] = 'A' + (div - 10); if (rem < 10) trans[2] = '0' + rem; else trans[2] = 'A' + (rem - 10); return trans; } static void writeEncString(OFile *fp, const char *s, bool nosemi) { /* only A-Z, 0-9 and "'" (ASCII code 39) "(" (ASCII code 40) ")" (ASCII code 41) "+" (ASCII code 43) "," (ASCII code 44) "-" (ASCII code 45) "/" (ASCII code 47) "?" (ASCII code 63) should remain un-encoded. '=' needs to be encoded as it is the escape character. ';' needs to be as it is a field separator. */ const char *p = s; switch ( vobj_enc ) { case EightBit: while (*p) { if ( *p == '\n' || nosemi && ( *p == '\\' || *p == ';' ) ) appendcOFile(fp, '\\'); appendcOFile(fp, *p); p++; } break; case QuotedPrintable: while (*p) { const char *rep = qpReplaceChar(*p); if (rep) appendsOFile(fp, rep); else if ( *p == ';' && nosemi ) appendsOFile(fp, "=3B"); else if ( *p == ' ' ) { if ( !p[1] || p[1] == '\n' ) // RFC 1521 appendsOFile(fp, "=20"); else appendcOFile(fp, *p); } else appendcOFile(fp, *p); p++; } break; case Base64: writeBase64(fp, (unsigned char*)p, strlen(p)); break; } } static bool includesUnprintable(VObject *o) { if (o) { if (VALUE_TYPE(o) == VCVT_STRINGZ) { const char *p = STRINGZ_VALUE_OF(o); if (p) { while (*p) { if (*p==' ' && (!p[1] || p[1]=='\n') // RFC 1521: spaces at ends need quoting || qpReplaceChar(*p) ) return TRUE; p++; } } } } return FALSE; } static void writeVObject_(OFile *fp, VObject *o); static void writeValue(OFile *fp, VObject *o, unsigned long size, bool nosemi) { if (o == 0) return; switch (VALUE_TYPE(o)) { case VCVT_STRINGZ: { writeEncString(fp, STRINGZ_VALUE_OF(o), nosemi); break; } case VCVT_UINT: { char buf[16]; sprintf(buf,"%u", INTEGER_VALUE_OF(o)); appendsOFile(fp,buf); break; } case VCVT_ULONG: { char buf[16]; sprintf(buf,"%lu", LONG_VALUE_OF(o)); appendsOFile(fp,buf); break; } case VCVT_RAW: { appendcOFile(fp,'\n'); writeBase64(fp,(unsigned char*)(ANY_VALUE_OF(o)),size); break; } case VCVT_VOBJECT: appendcOFile(fp,'\n'); writeVObject_(fp,VOBJECT_VALUE_OF(o)); break; } } static void writeAttrValue(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_INTERNAL) != 0)) return; if ( includesUnprintable(o) ) appendsOFileEncCs(fp); appendcOFile(fp,';'); appendsOFile(fp,NAME_OF(o)); } else { appendcOFile(fp,';'); } if (VALUE_TYPE(o)) { appendcOFile(fp,'='); writeValue(fp,o,0,TRUE); } } static void writeGroup(OFile *fp, VObject *o) { char buf1[256]; char buf2[256]; strcpy(buf1,NAME_OF(o)); while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { strcpy(buf2,STRINGZ_VALUE_OF(o)); strcat(buf2,"."); strcat(buf2,buf1); strcpy(buf1,buf2); } appendsOFile(fp,buf1); } static int inList(const char **list, const char *s) { if (list == 0) return 0; while (*list) { if (qstricmp(*list,s) == 0) return 1; list++; } return 0; } static void writeProp(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; VObjectIterator t; const char **fields_ = 0; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_BEGIN) != 0)) { writeVObject_(fp,o); return; } if (isAPropertyOf(o,VCGroupingProp)) writeGroup(fp,o); else appendsOFile(fp,NAME_OF(o)); if (pi) fields_ = pi->fields; initPropIterator(&t,o); while (moreIteration(&t)) { const char *s; VObject *eachProp = nextVObject(&t); s = NAME_OF(eachProp); if (qstricmp(VCGroupingProp,s) && !inList(fields_,s)) writeAttrValue(fp,eachProp); } if (fields_) { int i = 0, n = 0; const char** fields = fields_; /* output prop as fields */ bool printable = TRUE; while (*fields && printable) { VObject *t = isAPropertyOf(o,*fields); if (includesUnprintable(t)) printable = FALSE; fields++; } fields = fields_; if (!printable) appendsOFileEncCs(fp); appendcOFile(fp,':'); while (*fields) { VObject *t = isAPropertyOf(o,*fields); i++; if (t) n = i; fields++; } fields = fields_; for (i=0;i<n;i++) { writeValue(fp,isAPropertyOf(o,*fields),0,TRUE); fields++; if (i<(n-1)) appendcOFile(fp,';'); } } } if (VALUE_TYPE(o)) { if ( includesUnprintable(o) ) appendsOFileEncCs(fp); unsigned long size = 0; VObject *p = isAPropertyOf(o,VCDataSizeProp); if (p) size = LONG_VALUE_OF(p); appendcOFile(fp,':'); writeValue(fp,o,size,FALSE); } appendcOFile(fp,'\n'); } static void writeVObject_(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_BEGIN) != 0)) { VObjectIterator t; const char *begin = NAME_OF(o); appendsOFile(fp,"BEGIN:"); appendsOFile(fp,begin); appendcOFile(fp,'\n'); initPropIterator(&t,o); while (moreIteration(&t)) { VObject *eachProp = nextVObject(&t); writeProp(fp, eachProp); } appendsOFile(fp,"END:"); appendsOFile(fp,begin); appendsOFile(fp,"\n\n"); } } } static void initVObjectEncoding() { Config pimConfig( "Beam" ); pimConfig.setGroup("Send"); Config devcfg(pimConfig.readEntry("DeviceConfig"),Config::File); QString enc = "QP"; QString cs = "UTF-8"; if ( devcfg.isValid() ) { devcfg.setGroup("Send"); enc = devcfg.readEntry("Encoding","QP"); cs = devcfg.readEntry("CharSet","UTF-8"); } strncpy(vobj_cs,cs.latin1(),10); if ( enc == "QP" ) { vobj_enc = QuotedPrintable; vobj_enc_s = VCQuotedPrintableProp; } else if ( enc == "B64" ) { vobj_enc = Base64; vobj_enc_s = VCBase64Prop; } else { vobj_enc = EightBit; vobj_enc_s = 0; } } void writeVObject(FILE *fp, VObject *o) { initVObjectEncoding(); OFile ofp; // ##### //_setmode(_fileno(fp), _O_BINARY); initOFile(&ofp,fp); writeVObject_(&ofp,o); } DLLEXPORT(void) writeVObjectToFile(char *fname, VObject *o) { QFileDirect f( fname); if ( !f.open( IO_WriteOnly ) ) { qWarning("Unable to open vobject write %s", fname); return; } writeVObject( f.directHandle(),o ); } DLLEXPORT(void) writeVObjectsToFile(char *fname, VObject *list) { QFileDirect f( fname); if ( !f.open( IO_WriteOnly ) ) { qWarning("Unable to open vobject write %s", fname); return; } while (list) { writeVObject(f.directHandle(),list); list = nextVObjectInList(list); } } DLLEXPORT(const char *) vObjectTypeInfo(VObject *o) { const char *type = vObjectName( o ); if ( strcmp( type, "TYPE" ) == 0 ) type = vObjectStringZValue( o ); return type; } // end of source file vobject.c diff --git a/library/calendar.cpp b/library/calendar.cpp index b9ef585..c7536c3 100644 --- a/library/calendar.cpp +++ b/library/calendar.cpp @@ -1,66 +1,112 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "calendar.h" #include <qdatetime.h> +#include <qobject.h> + +/*! \class Calendar calendar.html + + \brief The Calendar class provides programmers with an easy to calculate + and get information about dates, months and years. + + \ingroup qtopiaemb +*/ + + + +static void never_called_tr_function_um_libqpe_ts_etwas_unter_zu_jubeln() { + (void)QObject::tr("Jan"); + (void)QObject::tr("Feb"); + (void)QObject::tr("Mar"); + (void)QObject::tr("Apr"); + (void)QObject::tr("May"); + (void)QObject::tr("Jun"); + (void)QObject::tr("Jul"); + (void)QObject::tr("Aug"); + (void)QObject::tr("Sep"); + (void)QObject::tr("Oct"); + (void)QObject::tr("Nov"); + (void)QObject::tr("Dec"); + (void)QObject::tr("Mon"); + (void)QObject::tr("Tue"); + (void)QObject::tr("Wed"); + (void)QObject::tr("Thu"); + (void)QObject::tr("Fri"); + (void)QObject::tr("Sat"); + (void)QObject::tr("Sun"); +} + + + +/*! + Returns the name of the month for \a m. + Equivalent to QDate::monthName(). +*/ QString Calendar::nameOfMonth( int m ) { QDate d; - return d.monthName( m ); + qDebug( d.monthName( m ) ); + return QObject::tr( d.monthName( m ) ); } +/*! + Returns the name of the day for \a d. + Equivalent to QDate::dayName(). +*/ QString Calendar::nameOfDay( int d ) { QDate dt; - return dt.dayName( d ); + return QObject::tr( dt.dayName( d ) ); } +/*! \obsolete */ QValueList<Calendar::Day> Calendar::daysOfMonth( int year, int month, bool startWithMonday ) { QDate temp; temp.setYMD( year, month, 1 ); int firstDay = temp.dayOfWeek(); int i; QDate prev; - QValueList<Day> days; + QValueList<Day> days; if ( startWithMonday ) i = 1; else i = 0; - + if ( month > 1 ) prev.setYMD( year, month - 1, 1 ); else - prev.setYMD( year - 1, 12, 1 ); + prev.setYMD( year - 1, 12, 1 ); for ( ; i < firstDay; i++ ) { days.append( Day( prev.daysInMonth() - ( firstDay - i - 1 ), Day::PrevMonth, FALSE ) ); } for ( i = 1; i <= temp.daysInMonth(); i++ ) days.append( Day( i, Day::ThisMonth, FALSE ) ); i = 0; while ( days.count() < 6 * 7 ) days.append( Day( ++i, Day::NextMonth, FALSE ) ); return days; } diff --git a/library/categoryedit_p.cpp b/library/categoryedit_p.cpp index 07e707e..9321259 100644 --- a/library/categoryedit_p.cpp +++ b/library/categoryedit_p.cpp @@ -1,229 +1,230 @@ /********************************************************************** ** Copyright (C) 2001 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "categoryedit_p.h" #include <qpe/categories.h> #include <qdir.h> #include <qcheckbox.h> #include <qlineedit.h> #include <qlistview.h> #include <qstringlist.h> #include <qtoolbutton.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> using namespace Qtopia; class CategoryEditPrivate { public: CategoryEditPrivate( QWidget *parent, const QString &appName ) : mCategories( parent, "" ), mStrApp( appName ) { editItem = 0; mCategories.load( categoryFileName() ); } Categories mCategories; QListViewItem *editItem; QString mStrApp; QString mVisible; }; CategoryEdit::CategoryEdit( QWidget *parent, const char *name ) : CategoryEditBase( parent, name ) { d = 0; } CategoryEdit::CategoryEdit( const QArray<int> &recCats, const QString &appName, const QString &visibleName, QWidget *parent, const char *name ) : CategoryEditBase( parent, name ) { d = 0; setCategories( recCats, appName, visibleName ); } void CategoryEdit::setCategories( const QArray<int> &recCats, const QString &appName, const QString &visibleName ) { if ( !d ) d = new CategoryEditPrivate( (QWidget*)parent(), name() ); d->mStrApp = appName; d->mVisible = visibleName; QStringList appCats = d->mCategories.labels( d->mStrApp ); QArray<int> cats = d->mCategories.ids(d->mStrApp, appCats); lvView->clear(); QStringList::ConstIterator it; int i, j; for ( i = 0, it = appCats.begin(); it != appCats.end(); i++, ++it ) { QCheckListItem *chk; chk = new QCheckListItem( lvView, (*it), QCheckListItem::CheckBox ); if ( !d->mCategories.isGlobal((*it)) ) chk->setText( 1, tr(d->mVisible) ); else chk->setText( 1, tr("All") ); // Is this record using this category, then we should check it for ( j = 0; j < int(recCats.count()); j++ ) { if ( cats[i] == recCats[j] ) { chk->setOn( true ); break; } } } lvView->setSorting( 0, TRUE ); lvView->sort(); if ( lvView->childCount() < 1 ) txtCat->setEnabled( FALSE ); else { lvView->setSelected( lvView->firstChild(), true ); } } CategoryEdit::~CategoryEdit() { if ( d ) delete d; } void CategoryEdit::slotSetText( QListViewItem *selected ) { d->editItem = selected; if ( !d->editItem ) return; txtCat->setText( d->editItem->text(0) ); txtCat->setEnabled( true ); if ( d->editItem->text(1) == tr("All") ) chkGlobal->setChecked( true ); else chkGlobal->setChecked( false ); } void CategoryEdit::slotAdd() { QString name = tr( "New Category" ); bool insertOk = FALSE; int num = 0; while ( !insertOk ) { if ( num++ > 0 ) name = tr("New Category ") + QString::number(num); insertOk = d->mCategories.addCategory( d->mStrApp, name ); } QCheckListItem *chk; chk = new QCheckListItem( lvView, name, QCheckListItem::CheckBox ); if ( !chkGlobal->isChecked() ) chk->setText( 1, tr(d->mVisible) ); else chk->setText( 1, tr("All") ); lvView->setSelected( chk, TRUE ); txtCat->selectAll(); + txtCat->setFocus(); } void CategoryEdit::slotRemove() { d->editItem = lvView->selectedItem(); if ( d->editItem ) { QListViewItem *sibling = d->editItem->nextSibling(); d->mCategories.removeCategory( d->mStrApp, d->editItem->text(0) ); delete d->editItem; d->editItem = 0; if ( sibling ) lvView->setSelected( sibling, TRUE ); } if ( lvView->childCount() < 1 ) { txtCat->clear(); txtCat->setEnabled( FALSE ); } } void CategoryEdit::slotSetGlobal( bool isChecked ) { if ( d->editItem ) { if ( isChecked ) d->editItem->setText( 1, tr("All") ); else d->editItem->setText( 1, tr(d->mVisible) ); d->mCategories.setGlobal( d->mStrApp, d->editItem->text( 0 ), isChecked ); } } void CategoryEdit::slotTextChanged( const QString &strNew ) { if ( d->editItem ) { if ( chkGlobal->isChecked() ) d->mCategories.renameGlobalCategory( d->editItem->text(0), strNew ); else d->mCategories.renameCategory( d->mStrApp, d->editItem->text(0), strNew ); d->editItem->setText( 0, strNew ); } } QArray<int> CategoryEdit::newCategories() { QArray<int> a; if ( d ) { d->mCategories.save( categoryFileName() ); QListViewItemIterator it( lvView ); QValueList<int> l; for ( ; it.current(); ++it ) { if ( reinterpret_cast<QCheckListItem*>(it.current())->isOn() ) l.append( d->mCategories.id( d->mStrApp, it.current()->text(0) ) ); } uint i = 0; a.resize( l.count() ); for ( QValueList<int>::Iterator lit = l.begin(); lit != l.end(); ++lit ) a[i++] = *lit; } return a; } void CategoryEdit::accept() { // write our categories out... d->mCategories.save( categoryFileName() ); // QDialog::accept(); } QString categoryFileName() { QDir dir = (QString(getenv("HOME")) + "/Settings"); if ( !dir.exists() ) mkdir( dir.path().local8Bit(), 0700 ); return dir.path() + "/" + "Categories" + ".xml"; } void CategoryEdit::kludge() { lvView->setMaximumHeight( 130 ); } diff --git a/library/categorymenu.cpp b/library/categorymenu.cpp index e733107..5d7adf7 100644 --- a/library/categorymenu.cpp +++ b/library/categorymenu.cpp @@ -1,110 +1,162 @@ /********************************************************************** ** Copyright (C) 2001 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "categorymenu.h" #include "backend/categories.h" #include "categoryselect.h" #include <qstring.h> #include <qmap.h> +/*! + \class CategoryMenu + \brief The CategoryMenu widget aids in filtering records or files by Category. + + The CategoryMenu widget provides a popup menu that will make filtering records + or files by category much easier. The widget will lookup the available + categories for an application, populate the menu, and keep a track of which + categories are being filtered against. A set of categories can be tested + by the isSelected() function to see if a record or file containing those + categories would be allowed through by the filter. + + \warning Currently this class is not suitable for extending. + + \ingroup qtopiaemb +*/ + +/*! + \fn void CategoryMenu::categoryChange() + This signal is emitted when the user selects a different category in the + menu, hence changing what records or files should be selected. +*/ + +/*! + Creates a new CategoryMenu with \a parent and \a name. The menu will be + populated with the available categories for \a application. + + If \a globals is TRUE then it will also poplulate the menu with the + global categories. +*/ CategoryMenu::CategoryMenu( const QString &n, bool ig = TRUE, - QWidget *parent, const char *name ) : + QWidget *parent, const char *name ) : QPopupMenu(parent, name), appName(n), includeGlobal(ig) { currentMid = 1; reload(); connect(this, SIGNAL(activated(int)), this, SLOT(mapMenuId(int))); } -CategoryMenu::~CategoryMenu( ) +/*! + Destroys a CategoryMenu. +*/ +CategoryMenu::~CategoryMenu( ) { } +/*! + Repopulates the widget's list of available categories. +*/ void CategoryMenu::reload() { clear(); Categories c; c.load(categoryFileName()); QStringList sl = c.labels(appName, includeGlobal); int mid = 1; insertItem(tr("All"), mid); mid++; insertItem(tr("Unfiled"), mid); mid++; for (QStringList::Iterator it = sl.begin(); it != sl.end(); ++it ) { int cid = c.id(appName, *it); insertItem(*it, mid); menuToId.insert(mid, cid); idToMenu.insert(cid, mid); mid++; } setItemChecked(currentMid, TRUE ); } -void CategoryMenu::mapMenuId(int id) +/*! + \internal +*/ +void CategoryMenu::mapMenuId(int id) { if (id == currentMid) return; setItemChecked( currentMid, FALSE ); setItemChecked( id, TRUE ); currentMid = id; emit categoryChange(); } +/*! + Returns TRUE if a record or file with the set of category ids \a cUids + is allowed by the current selection in the CategoryMenu. + Otherwise returns FALSE. +*/ bool CategoryMenu::isSelected(const QArray<int> &cUids) const { if (currentMid == 1) return TRUE; - if (currentMid == 2 && cUids.count() == 0) + if (currentMid == 2 && cUids.count() == 0) return TRUE; if (cUids.contains(menuToId[currentMid])) return TRUE; return FALSE; } +/*! + Sets the menu to have \a newCatUid as the currently selected Category. +*/ void CategoryMenu::setCurrentCategory( int newCatUid ) { - if (!idToMenu.contains(newCatUid)) + if (!idToMenu.contains(newCatUid)) return; mapMenuId(idToMenu[newCatUid]); } +/*! + Sets the menu to allow all category sets. +*/ void CategoryMenu::setCurrentCategoryAll( ) { mapMenuId(1); } +/*! + Sets the menu to allow only empty category sets. +*/ void CategoryMenu::setCurrentCategoryUnfiled( ) { mapMenuId(2); } diff --git a/library/categoryselect.cpp b/library/categoryselect.cpp index 21b3f91..8473aeb 100644 --- a/library/categoryselect.cpp +++ b/library/categoryselect.cpp @@ -1,452 +1,560 @@ /********************************************************************** ** Copyright (C) 2001 Trolltech AS. All rights reserved. +** Copyright (C) 2003 zecke introduce a needed symbol ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qpe/categories.h> #include <qpe/palmtoprecord.h> #include <qmessagebox.h> #include <qlayout.h> #include <qtoolbutton.h> #include <qfile.h> #include "categorywidget.h" #include "categoryselect.h" #include <stdlib.h> + +/*! \enum CategorySelect::SelectorWidget + Chooses a type of widget to use as the selection widget. + + \value ComboBox + \value ListView +*/ + +/*! + \class CategorySelect + \brief The CategorySelect widget allows users to select Categories with a + combobox interface. + + CategorySelect is useful to provide a QComboBox of Categories for + filtering (such as in the Contacts table view) or to allow the user + to select multiple Categories. The allCategories variable sets + whether the CategorySelect is in filtering or selecting mode. + + In filtering mode, the All and Unfiled categories are added. The + + In selecting mode, the CategorySelect may either be a QComboBox and + a QToolButton or a QListView with checkable items depending on the + screen size. + + CategorySelect automatically updates itself if Categories has been + changed elsewhere in the environment. + + Signals and slots are provided to notify the application of the users + selections. A QToolButton is also provided so that users can edit the + Categories manually. + + \ingroup qtopiaemb +*/ + + static QString categoryEdittingFileName() { QString str = getenv("HOME"); str +="/.cateditting"; return str; } class CategoryComboPrivate { public: CategoryComboPrivate(QObject *o) : mCat( o ) { } QArray<int> mAppCats; QString mStrAppName; QString mStrVisibleName; Categories mCat; }; class CategorySelectPrivate { public: CategorySelectPrivate( const QArray<int> &cats) : mRec( cats ), usingAll( false ) { } CategorySelectPrivate() { } QArray<int> mRec; bool usingAll; QString mVisibleName; }; CategoryCombo::CategoryCombo( QWidget *parent, const char *name , int width) : QComboBox( parent, name ) { d = new CategoryComboPrivate(this); if (width) setFixedWidth(width); } void CategoryCombo::initCombo( const QArray<int> &recCats, const QString &appName ) { initCombo( recCats, appName, appName ); } void CategoryCombo::initCombo( const QArray<int> &recCats, const QString &appName, const QString &visibleName ) { d->mStrAppName = appName; d->mStrVisibleName = visibleName; clear(); QStringList slApp; QObject::disconnect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); QObject::connect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); bool loadOk = d->mCat.load( categoryFileName() ); slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); int i, j, saveMe, recCount; QStringList::Iterator it; // now add in all the items... recCount = recCats.count(); saveMe = -1; if ( recCount > 1 && loadOk ) { it = slApp.begin(); for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { // grr... we have to go through and compare... if ( j < int(d->mAppCats.size()) ) { for ( i = 0; i < recCount; i++ ) { if ( recCats[i] == d->mAppCats[j] ) { (*it).append( tr(" (Multi.)") ); if ( saveMe < 0 ) saveMe = j; // no need to continue through the list. break; } } } insertItem( *it ); } insertItem( *it ); } else insertStringList( slApp ); if ( recCount > 0 && loadOk ) { for ( i = 0; i < int(d->mAppCats.size()); i++ ) { if ( d->mAppCats[i] == recCats[0] ) { setCurrentItem( i ); break; } } } else { setCurrentItem( slApp.count()-1 ); // unfiled } } // this is a new function by SHARP instead of initCombo() QArray<int> CategoryCombo::initComboWithRefind( const QArray<int> &recCats, const QString &appName) { QString visibleName = appName; d->mStrAppName = appName; d->mStrVisibleName = visibleName; clear(); QStringList slApp; QArray<int> results; QObject::disconnect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); QObject::connect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); bool loadOk = d->mCat.load( categoryFileName() ); slApp = d->mCat.labels( d->mStrAppName, TRUE, Categories::UnfiledLabel ); d->mAppCats = d->mCat.ids( d->mStrAppName, slApp); // addition part // make new recCats if (loadOk){ int i,j; int value; int rCount = recCats.count(); int mCount = d->mAppCats.count(); for (i=0; i<rCount; i++){ value = 0; for (j=0; j<mCount; j++){ if (recCats[i] == d->mAppCats[j]){ value = recCats[i]; break; } } if (value != 0){ int tmp = results.size(); results.resize( tmp + 1 ); results[ tmp ] = value; } } } else{ results = recCats; } // addition end int i, j, saveMe, recCount; QStringList::Iterator it; // now add in all the items... recCount = results.count(); saveMe = -1; if ( recCount > 1 && loadOk ) { it = slApp.begin(); for ( j = 0; j< (int)(slApp.count()-1); ++it, j++ ) { // grr... we have to go through and compare... if ( j < int(d->mAppCats.size()) ) { for ( i = 0; i < recCount; i++ ) { if ( results[i] == d->mAppCats[j] ) { (*it).append( tr(" (Multi.)") ); if ( saveMe < 0 ) saveMe = j; // no need to continue through the list. break; } } } insertItem( *it ); } insertItem( *it ); } else insertStringList( slApp ); if ( recCount > 0 && loadOk ) { for ( i = 0; i < int(d->mAppCats.size()); i++ ) { if ( d->mAppCats[i] == results[0] ) { setCurrentItem( i ); break; } } } else { setCurrentItem( slApp.count()-1 ); // unfiled } /* QObject::connect( this, SIGNAL(activated(int)), this, SLOT(slotValueChanged(int)) ); */ return results; } CategoryCombo::~CategoryCombo() { delete d; } int CategoryCombo::currentCategory() const { int returnMe; returnMe = currentItem(); - + if ( returnMe == (int)d->mAppCats.count() ) returnMe = -1; else if ( returnMe > (int)d->mAppCats.count() ) // only happen on "All" returnMe = -2; else returnMe = d->mAppCats[returnMe]; return returnMe; } void CategoryCombo::setCurrentCategory( int newCatUid ) { int i; for ( i = 0; i < int(d->mAppCats.size()); i++ ) { if ( d->mAppCats[i] == newCatUid ) setCurrentItem( i ); } } void CategoryCombo::setCurrentText( const QString &str ) { int i; int stop; stop = count(); for ( i = 0; i < stop; i++ ) { if ( text( i ) == str ) { setCurrentItem( i ); break; } } } void CategoryCombo::slotValueChanged( int ) { emit sigCatChanged( currentCategory() ); } +/*! + Constructs a category selector with parent \a parent, name \a name. + + This constructor is provided to make Opie compatible with Sharp ROM. +*/ +CategorySelect::CategorySelect( QWidget* parent, const char* name ) + : QHBox( parent, name ), + cmbCat( 0 ), + cmdCat( 0 ), + d( 0 ) +{ + d = new CategorySelectPrivate(); + init(0); // default argument +} +/*! + Constructs a category selector with parent \a parent, name \a name and + fixed width \a width. + + This constructor is provided to make integration with Qt Designer easier. +*/ CategorySelect::CategorySelect( QWidget *parent, const char *name,int width) : QHBox( parent, name ), cmbCat( 0 ), cmdCat( 0 ), d( 0 ) { d = new CategorySelectPrivate(); init(width); } +/*! + \overload + This constructor accepts an array \a vl of integers representing Categories. + \a appName is used as the visible name string. +*/ CategorySelect::CategorySelect( const QArray<int> &vl, const QString &appName, QWidget *parent, const char *name ,int width) : QHBox( parent, name ) { d = new CategorySelectPrivate( vl ); init(width); setCategories( vl, appName, appName ); } +/*! + \overload + + This constructor accepts an array \a vl of integers representing Categories. + \a visibleName is the string used when the name of this widget is required + to be displayed. \a width is an integer used as the fixed width of the widget. +*/ CategorySelect::CategorySelect( const QArray<int> &vl, const QString &appName, const QString &visibleName, QWidget *parent, const char *name , int width) : QHBox( parent, name ) { d = new CategorySelectPrivate( vl ); init(width); setCategories( vl, appName, visibleName ); } +/*! + Destructs a CategorySelect widget. +*/ CategorySelect::~CategorySelect() { delete d; } +/*! + This slot is called when the user pushes the button to edit Categories. +*/ void CategorySelect::slotDialog() { if (QFile::exists( categoryEdittingFileName() )){ QMessageBox::warning(this,tr("Error"), tr("Sorry, another application is\nediting categories.") ); return; } QFile f( categoryEdittingFileName() ); if ( !f.open( IO_WriteOnly) ){ return; } QDialog editDlg( this, 0, TRUE ); editDlg.setCaption( tr("Edit Categories") ); QVBoxLayout *vb = new QVBoxLayout( &editDlg ); QScrollView *sv = new QScrollView( &editDlg ); sv->setResizePolicy( QScrollView::AutoOneFit ); sv->setHScrollBarMode( QScrollView::AlwaysOff ); vb->addWidget( sv ); CategoryWidget ce( d->mRec, mStrAppName, d->mVisibleName, &editDlg ); sv->addChild( &ce ); editDlg.showMaximized(); if ( editDlg.exec() ) { d->mRec = ce.newCategories(); cmbCat->initCombo( d->mRec, mStrAppName ); } f.close(); QFile::remove( categoryEdittingFileName() ); } + +/*! + This slot is called when a new Category is available. +*/ void CategorySelect::slotNewCat( int newUid ) { if ( newUid != -1 ) { bool alreadyIn = false; for ( uint it = 0; it < d->mRec.count(); ++it ) { if ( d->mRec[it] == newUid ) { alreadyIn = true; break; } } if ( !alreadyIn ) { d->mRec.resize( 1 ); d->mRec[ 0 ] = newUid; } } else d->mRec.resize(0); // now Unfiled. emit signalSelected( currentCategory() ); } +/*! + \overload + + Resets the CategorySelect to select the \a vlCats for + the Categories assoicated with \a appName. + + This function should only be called if <i>filtering</i> + on Categories and not selecting and therefore possibly + allowing the user to edit Categories. +*/ QString CategorySelect::setCategories( const QArray<int> &rec, const QString &appName ) { return setCategories( rec, appName, appName ); } +/*! + Resets the CategorySelect to select the \a vlCats for + the Categories assoicated with \a appName and displays + the \a visibleName if the user is selecting and therefore editing + new Categories. + */ QString CategorySelect::setCategories( const QArray<int> &rec, const QString &appName, const QString &visibleName ) { d->mVisibleName = visibleName; mStrAppName = appName; d->mRec = cmbCat->initComboWithRefind( rec, appName ); return Qtopia::Record::idsToString(d->mRec); } void CategorySelect::init(int width) { cmbCat = new CategoryCombo( this, 0, width); QObject::connect( cmbCat, SIGNAL(sigCatChanged(int)), this, SLOT(slotNewCat(int)) ); cmdCat = new QToolButton( this ); QObject::connect( cmdCat, SIGNAL(clicked()), this, SLOT(slotDialog()) ); cmdCat->setTextLabel( "...", FALSE ); cmdCat->setUsesTextLabel( true ); cmdCat->setMaximumSize( cmdCat->sizeHint() ); cmdCat->setFocusPolicy( TabFocus ); } - +/*! + Return the value of the currently selected category. + */ int CategorySelect::currentCategory() const { return cmbCat->currentCategory(); } + void CategorySelect::setCurrentCategory( int newCatUid ) { cmbCat->setCurrentCategory( newCatUid ); } - +/*! + Returns a shallow copy of the categories in this CategorySelect. + */ const QArray<int> &CategorySelect::currentCategories() const { return d->mRec; } +/*! + Hides the edit section of the CategorySelect widget if \a remove is TRUE. + */ void CategorySelect::setRemoveCategoryEdit( bool remove ) { if ( remove ) { cmdCat->setEnabled( FALSE ); cmdCat->hide(); } else { cmdCat->setEnabled( TRUE ); cmdCat->show(); } } +/*! + Changes this CategorySelect to the All category if \a all is TRUE. + */ void CategorySelect::setAllCategories( bool add ) { d->usingAll = add; if ( add ) { cmbCat->insertItem( tr( "All" ), cmbCat->count() ); cmbCat->setCurrentItem( cmbCat->count() - 1 ); } else cmbCat->removeItem( cmbCat->count() - 1 ); } // 01.12.21 added +/*! + Sets the fixed width of the widget to \a width. + */ void CategorySelect::setFixedWidth(int width) { width -= cmdCat->width(); cmbCat->setFixedWidth(width); } diff --git a/library/categoryselect.h b/library/categoryselect.h index 7a8e491..8ec1941 100644 --- a/library/categoryselect.h +++ b/library/categoryselect.h @@ -1,113 +1,121 @@ /********************************************************************** ** Copyright (C) 2001 Trolltech AS. All rights reserved. +** Copyright (C) 2003 zecke Introduce Sharp to the glory of default arguments ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef __CATEGORYCOMBO_H__ #define __CATEGORYCOMBO_H__ #include <qcombobox.h> #include <qhbox.h> #include <qstring.h> #include <qarray.h> extern QString categoryFileName(); class QToolButton; class CategoryComboPrivate; class CategoryCombo : public QComboBox { Q_OBJECT public: - CategoryCombo( QWidget *parent, const char* name = 0, int width=0); + CategoryCombo( QWidget *parent, const char* name = 0, int width = 0); ~CategoryCombo(); int currentCategory() const; void setCurrentCategory( int id ); // depreciated. void initCombo( const QArray<int> &recCats, const QString &appName ); void initCombo( const QArray<int> &recCats, const QString &appName, const QString &visibleName /* = appName */ ); QArray<int> initComboWithRefind( const QArray<int> &recCats, const QString &appName ); signals: void sigCatChanged( int newUid ); private slots: void slotValueChanged( int ); private: void setCurrentText( const QString &str ); CategoryComboPrivate *d; }; #endif class CategorySelectPrivate; class CategorySelect : public QHBox { Q_OBJECT public: // we need two constructors, the first gets around designer limitations - CategorySelect( QWidget *parent = 0, const char *name = 0, int width = 0 ); + /* + * The Sharp libqpe does have two c'tor and no default argument for int width + * to stay BC cause the Kompany have the original headers and don't compile + * against the normal SDK we need to provide the two symbols as well + * -zecke + */ + CategorySelect( QWidget* parent = 0, const char* name = 0 ); + CategorySelect( QWidget *parent /*= 0 */, const char *name/* = 0*/ , int width /* = 0 if we break bc -zecke */ ); CategorySelect( const QArray<int> &vlCats, const QString &appName, - QWidget *parent = 0, const char *name = 0, + QWidget *parent = 0, const char *name = 0, int width = 0); CategorySelect( const QArray<int> &vlCats, const QString &appName, const QString &visibleName, QWidget *parent = 0, const char *name = 0 , int width = 0); ~CategorySelect(); const QArray<int> ¤tCategories() const; int currentCategory() const; void setCurrentCategory( int newCatUid ); // pretty much if you don't set it the constructor, you need to // call it here ASAP! // however this call is depreciated... QString setCategories( const QArray<int> &vlCats, const QString &appName ); QString setCategories( const QArray<int> &vlCats, const QString &appName, const QString &visibleName ); // these were added for find dialog. void setRemoveCategoryEdit( bool remove ); void setAllCategories( bool add ); void setFixedWidth(int width); signals: void signalSelected( int ); private slots: void slotDialog(); public slots: void slotNewCat( int id ); private: void init(int width=0); QString mStrAppName; CategoryCombo *cmbCat; QToolButton *cmdCat; CategorySelectPrivate *d; }; diff --git a/library/config.cpp b/library/config.cpp index b47c620..b28c771 100644 --- a/library/config.cpp +++ b/library/config.cpp @@ -1,570 +1,580 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qdir.h> #include <qfile.h> #include <qfileinfo.h> #include <qmessagebox.h> #if QT_VERSION <= 230 && defined(QT_NO_CODECS) #include <qtextcodec.h> #endif #include <qtextstream.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #define QTOPIA_INTERNAL_LANGLIST #include "config.h" #include "global.h" /*! \internal */ QString Config::configFilename(const QString& name, Domain d) { switch (d) { case File: return name; case User: { QDir dir = (QString(getenv("HOME")) + "/Settings"); if ( !dir.exists() ) mkdir(dir.path().local8Bit(),0700); return dir.path() + "/" + name + ".conf"; } } return name; } /*! \class Config config.h \brief The Config class provides for saving application cofniguration state. You should keep a Config in existence only while you do not want others to be able to change the state. There is no locking currently, but there may be in the future. */ /*! \enum Config::ConfigGroup \internal */ /*! \enum Config::Domain \value File \value User See Config for details. */ /*! Constructs a config that will load or create a configuration with the given \a name in the given \a domain. You must call setGroup() before doing much else with the Config. In the default Domain, \e User, the configuration is user-specific. \a name should not contain "/" in this case, and in general should be the name of the C++ class that is primarily responsible for maintaining the configuration. In the File Domain, \a name is an absolute filename. */ Config::Config( const QString &name, Domain domain ) : filename( configFilename(name,domain) ) { git = groups.end(); read(); QStringList l = Global::languageList(); lang = l[0]; glang = l[1]; } // Sharp ROM compatibility Config::Config ( const QString &name, bool what ) : filename( configFilename(name,what ? User : File) ) { git = groups.end(); read(); QStringList l = Global::languageList(); lang = l[0]; glang = l[1]; } /*! Writes any changes to disk and destroys the in-memory object. */ Config::~Config() { if ( changed ) write(); } /*! Returns whether the current group has an entry called \a key. */ bool Config::hasKey( const QString &key ) const { if ( groups.end() == git ) return FALSE; ConfigGroup::ConstIterator it = ( *git ).find( key ); return it != ( *git ).end(); } /*! Sets the current group for subsequent reading and writing of entries to \a gname. Grouping allows the application to partition the namespace. This function must be called prior to any reading or writing of entries. The \a gname must not be empty. */ void Config::setGroup( const QString &gname ) { QMap< QString, ConfigGroup>::Iterator it = groups.find( gname ); if ( it == groups.end() ) { git = groups.insert( gname, ConfigGroup() ); changed = TRUE; return; } git = it; } /*! Writes a (\a key, \a value) entry to the current group. \sa readEntry() */ void Config::writeEntry( const QString &key, const char* value ) { writeEntry(key,QString(value)); } /*! Writes a (\a key, \a value) entry to the current group. \sa readEntry() */ void Config::writeEntry( const QString &key, const QString &value ) { if ( git == groups.end() ) { qWarning( "no group set" ); return; } if ( (*git)[key] != value ) { ( *git ).insert( key, value ); changed = TRUE; } } /* Note that the degree of protection offered by the encryption here is only sufficient to avoid the most casual observation of the configuration files. People with access to the files can write down the contents and decrypt it using this source code. Conceivably, and at some burden to the user, this encryption could be improved. */ static QString encipher(const QString& plain) { // mainly, we make it long QString cipher; int mix=28730492; for (int i=0; i<(int)plain.length(); i++) { int u = plain[i].unicode(); int c = u ^ mix; QString x = QString::number(c,36); cipher.append(QChar('a'+x.length())); cipher.append(x); mix *= u; } return cipher; } static QString decipher(const QString& cipher) { QString plain; int mix=28730492; for (int i=0; i<(int)cipher.length();) { int l = cipher[i].unicode()-'a'; QString x = cipher.mid(i+1,l); i+=l+1; int u = x.toInt(0,36) ^ mix; plain.append(QChar(u)); mix *= u; } return plain; } /*! Writes an encrypted (\a key, \a value) entry to the current group. Note that the degree of protection offered by the encryption is only sufficient to avoid the most casual observation of the configuration files. \sa readEntry() */ void Config::writeEntryCrypt( const QString &key, const QString &value ) { if ( git == groups.end() ) { qWarning( "no group set" ); return; } QString evalue = encipher(value); if ( (*git)[key] != evalue ) { ( *git ).insert( key, evalue ); changed = TRUE; } } /*! Writes a (\a key, \a num) entry to the current group. \sa readNumEntry() */ void Config::writeEntry( const QString &key, int num ) { QString s; s.setNum( num ); writeEntry( key, s ); } #ifdef Q_HAS_BOOL_TYPE /*! Writes a (\a key, \a b) entry to the current group. This is equivalent to writing a 0 or 1 as an integer entry. \sa readBoolEntry() */ void Config::writeEntry( const QString &key, bool b ) { QString s; s.setNum( ( int )b ); writeEntry( key, s ); } #endif /*! Writes a (\a key, \a lst) entry to the current group. The list is separated by \a sep, so the strings must not contain that character. \sa readListEntry() */ void Config::writeEntry( const QString &key, const QStringList &lst, const QChar &sep ) { QString s; QStringList::ConstIterator it = lst.begin(); for ( ; it != lst.end(); ++it ) s += *it + sep; writeEntry( key, s ); } /*! Removes the \a key entry from the current group. Does nothing if there is no such entry. */ void Config::removeEntry( const QString &key ) { if ( git == groups.end() ) { qWarning( "no group set" ); return; } ( *git ).remove( key ); changed = TRUE; } /*! \fn bool Config::operator == ( const Config & other ) const Tests for equality with \a other. Config objects are equal if they refer to the same filename. */ /*! \fn bool Config::operator != ( const Config & other ) const Tests for inequality with \a other. Config objects are equal if they refer to the same filename. */ /*! \fn QString Config::readEntry( const QString &key, const QString &deflt ) const Reads a string entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ QString Config::readEntry( const QString &key, const QString &deflt ) { QString res = readEntryDirect( key+"["+lang+"]" ); if ( !res.isNull() ) return res; if ( !glang.isEmpty() ) { res = readEntryDirect( key+"["+glang+"]" ); if ( !res.isNull() ) return res; } return readEntryDirect( key, deflt ); } /*! \fn QString Config::readEntryCrypt( const QString &key, const QString &deflt ) const Reads an encrypted string entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ QString Config::readEntryCrypt( const QString &key, const QString &deflt ) { QString res = readEntryDirect( key+"["+lang+"]" ); if ( res.isNull() && glang.isEmpty() ) res = readEntryDirect( key+"["+glang+"]" ); if ( res.isNull() ) res = readEntryDirect( key, QString::null ); if ( res.isNull() ) return deflt; return decipher(res); } /*! \fn QString Config::readEntryDirect( const QString &key, const QString &deflt ) const \internal */ /*! \internal For compatibility, non-const version. */ QString Config::readEntryDirect( const QString &key, const QString &deflt ) { if ( git == groups.end() ) { //qWarning( "no group set" ); return deflt; } ConfigGroup::ConstIterator it = ( *git ).find( key ); if ( it != ( *git ).end() ) return *it; else return deflt; } /*! \fn int Config::readNumEntry( const QString &key, int deflt ) const Reads a numeric entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ int Config::readNumEntry( const QString &key, int deflt ) { QString s = readEntry( key ); if ( s.isEmpty() ) return deflt; else return s.toInt(); } /*! \fn bool Config::readBoolEntry( const QString &key, bool deflt ) const Reads a bool entry stored with \a key, defaulting to \a deflt if there is no entry. */ /*! \internal For compatibility, non-const version. */ bool Config::readBoolEntry( const QString &key, bool deflt ) { QString s = readEntry( key ); if ( s.isEmpty() ) return deflt; else return (bool)s.toInt(); } /*! \fn QStringList Config::readListEntry( const QString &key, const QChar &sep ) const Reads a string list entry stored with \a key, and with \a sep as the separator. */ /*! \internal For compatibility, non-const version. */ QStringList Config::readListEntry( const QString &key, const QChar &sep ) { QString s = readEntry( key ); if ( s.isEmpty() ) return QStringList(); else return QStringList::split( sep, s ); } /*! Removes all entries from the current group. */ void Config::clearGroup() { if ( git == groups.end() ) { qWarning( "no group set" ); return; } if ( !(*git).isEmpty() ) { ( *git ).clear(); changed = TRUE; } } /*! \internal */ void Config::write( const QString &fn ) { QString strNewFile; if ( !fn.isEmpty() ) filename = fn; strNewFile = filename + ".new"; QFile f( strNewFile ); if ( !f.open( IO_WriteOnly|IO_Raw ) ) { qWarning( "could not open for writing `%s'", strNewFile.latin1() ); git = groups.end(); return; } - + QString str; - QCString cstr; + QCString cstr; QMap< QString, ConfigGroup >::Iterator g_it = groups.begin(); for ( ; g_it != groups.end(); ++g_it ) { str += "[" + g_it.key() + "]\n"; ConfigGroup::Iterator e_it = ( *g_it ).begin(); for ( ; e_it != ( *g_it ).end(); ++e_it ) str += e_it.key() + " = " + *e_it + "\n"; } cstr = str.utf8(); - + int total_length; total_length = f.writeBlock( cstr.data(), cstr.length() ); if ( total_length != int(cstr.length()) ) { QMessageBox::critical( 0, QObject::tr("Out of Space"), QObject::tr("There was a problem creating\nConfiguration Information \nfor this program.\n\nPlease free up some space and\ntry again.") ); f.close(); QFile::remove( strNewFile ); return; } - + f.close(); // now rename the file... if ( rename( strNewFile, filename ) < 0 ) { - qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), + qWarning( "problem renaming the file %s to %s", strNewFile.latin1(), filename.latin1() ); QFile::remove( strNewFile ); - } + } } /*! Returns whether the Config is in a valid state. */ bool Config::isValid() const { return groups.end() != git; } /*! \internal */ void Config::read() { changed = FALSE; if ( !QFileInfo( filename ).exists() ) { git = groups.end(); return; } QFile f( filename ); if ( !f.open( IO_ReadOnly ) ) { git = groups.end(); return; } + + // hack to avoid problems if big files are passed to test + // if they are valid configs ( like passing a mp3 ... ) + // I just hope that there are no conf files > 100000 byte + // not the best solution, find something else later + if ( f.size() > 100000 ) { + return; + } + + QTextStream s( &f ); #if QT_VERSION <= 230 && defined(QT_NO_CODECS) // The below should work, but doesn't in Qt 2.3.0 s.setCodec( QTextCodec::codecForMib( 106 ) ); #else s.setEncoding( QTextStream::UnicodeUTF8 ); #endif QStringList list = QStringList::split('\n', s.read() ); f.close(); for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { if ( !parse( *it ) ) { git = groups.end(); return; } } } /*! \internal */ bool Config::parse( const QString &l ) { QString line = l.stripWhiteSpace(); - + if ( line [0] == QChar ( '#' )) return true; // ignore comments - + if ( line[ 0 ] == QChar( '[' ) ) { QString gname = line; gname = gname.remove( 0, 1 ); if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) ) gname = gname.remove( gname.length() - 1, 1 ); git = groups.insert( gname, ConfigGroup() ); } else if ( !line.isEmpty() ) { if ( git == groups.end() ) return FALSE; int eq = line.find( '=' ); if ( eq == -1 ) return FALSE; QString key = line.left(eq).stripWhiteSpace(); QString value = line.mid(eq+1).stripWhiteSpace(); ( *git ).insert( key, value ); } return TRUE; } diff --git a/library/datebookdb.cpp b/library/datebookdb.cpp index 2f33255..000ff71 100644 --- a/library/datebookdb.cpp +++ b/library/datebookdb.cpp @@ -1,1136 +1,1136 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qasciidict.h> #include <qfile.h> #include <qmessagebox.h> #include <qstring.h> #include <qtextcodec.h> #include <qtextstream.h> #include <qtl.h> #include <qpe/alarmserver.h> #include <qpe/global.h> #include "datebookdb.h" #include <qpe/stringutil.h> #include <qpe/timeconversion.h> #include <errno.h> #include <stdlib.h> class DateBookDBPrivate { public: bool clean; // indcate whether we need to write to disk... }; // Helper functions static QString dateBookJournalFile() { QString str = getenv("HOME"); return QString( str +"/.caljournal" ); } static QString dateBookFilename() { return Global::applicationFileName("datebook","datebook.xml"); } /* Calculating the next event of a recuring event is actually computationally inexpensive, esp. compared to checking each day individually. There are bad worse cases for say the 29th of february or the 31st of some other months. However these are still bounded */ bool nextOccurance(const Event &e, const QDate &from, QDateTime &next) { // easy checks, first are we too far in the future or too far in the past? QDate tmpDate; int freq = e.repeatPattern().frequency; int diff, diff2, a; int iday, imonth, iyear; int dayOfWeek = 0; int firstOfWeek = 0; int weekOfMonth; if (e.repeatPattern().hasEndDate && e.repeatPattern().endDate() < from) return FALSE; if (e.start() >= from) { next = e.start(); return TRUE; } switch ( e.repeatPattern().type ) { case Event::Weekly: /* weekly is just daily by 7 */ /* first convert the repeatPattern.Days() mask to the next day of week valid after from */ dayOfWeek = from.dayOfWeek(); dayOfWeek--; /* we want 0-6, doco for above specs 1-7 */ /* this is done in case freq > 1 and from in week not for this round */ // firstOfWeek = 0; this is already done at decl. while(!((1 << firstOfWeek) & e.repeatPattern().days)) firstOfWeek++; /* there is at least one 'day', or there would be no event */ while(!((1 << (dayOfWeek % 7)) & e.repeatPattern().days)) dayOfWeek++; dayOfWeek = dayOfWeek % 7; /* the actual day of week */ dayOfWeek -= e.start().date().dayOfWeek() -1; firstOfWeek = firstOfWeek % 7; /* the actual first of week */ firstOfWeek -= e.start().date().dayOfWeek() -1; // dayOfWeek may be negitive now // day of week is number of days to add to start day freq *= 7; // FALL-THROUGH !!!!! case Event::Daily: // the add is for the possible fall through from weekly */ if(e.start().date().addDays(dayOfWeek) > from) { /* first week exception */ next = QDateTime(e.start().date().addDays(dayOfWeek), e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; } /* if from is middle of a non-week */ diff = e.start().date().addDays(dayOfWeek).daysTo(from) % freq; diff2 = e.start().date().addDays(firstOfWeek).daysTo(from) % freq; if(diff != 0) diff = freq - diff; if(diff2 != 0) diff2 = freq - diff2; diff = QMIN(diff, diff2); next = QDateTime(from.addDays(diff), e.start().time()); if ( (next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate ) return FALSE; return TRUE; case Event::MonthlyDay: iday = from.day(); iyear = from.year(); imonth = from.month(); /* find equivelent day of month for this month */ dayOfWeek = e.start().date().dayOfWeek(); weekOfMonth = (e.start().date().day() - 1) / 7; /* work out when the next valid month is */ a = from.year() - e.start().date().year(); a *= 12; a = a + (imonth - e.start().date().month()); /* a is e.start()monthsFrom(from); */ if(a % freq) { a = freq - (a % freq); imonth = from.month() + a; if (imonth > 12) { imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; } } /* imonth is now the first month after or on from that matches the frequency given */ /* find for this month */ tmpDate = QDate( iyear, imonth, 1 ); iday = 1; iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; iday += 7 * weekOfMonth; while (iday > tmpDate.daysInMonth()) { imonth += freq; if (imonth > 12) { imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; } tmpDate = QDate( iyear, imonth, 1 ); /* these loops could go for a while, check end case now */ if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; iday = 1; iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; iday += 7 * weekOfMonth; } tmpDate = QDate(iyear, imonth, iday); if (tmpDate >= from) { next = QDateTime(tmpDate, e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; } /* need to find the next iteration */ do { imonth += freq; if (imonth > 12) { imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; } tmpDate = QDate( iyear, imonth, 1 ); /* these loops could go for a while, check end case now */ if ((tmpDate > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; iday = 1; iday += (7 + dayOfWeek - tmpDate.dayOfWeek()) % 7; iday += 7 * weekOfMonth; } while (iday > tmpDate.daysInMonth()); tmpDate = QDate(iyear, imonth, iday); next = QDateTime(tmpDate, e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; case Event::MonthlyDate: iday = e.start().date().day(); iyear = from.year(); imonth = from.month(); a = from.year() - e.start().date().year(); a *= 12; a = a + (imonth - e.start().date().month()); /* a is e.start()monthsFrom(from); */ if(a % freq) { a = freq - (a % freq); imonth = from.month() + a; if (imonth > 12) { imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; } } /* imonth is now the first month after or on from that matches the frequencey given */ /* this could go for a while, worse case, 4*12 iterations, probably */ while(!QDate::isValid(iyear, imonth, iday) ) { imonth += freq; if (imonth > 12) { imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; } /* these loops could go for a while, check end case now */ if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; } if(QDate(iyear, imonth, iday) >= from) { /* done */ next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; } /* ok, need to cycle */ imonth += freq; imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; while(!QDate::isValid(iyear, imonth, iday) ) { imonth += freq; imonth--; iyear += imonth / 12; imonth = imonth % 12; imonth++; if ((QDate(iyear, imonth, 1) > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; } next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; case Event::Yearly: iday = e.start().date().day(); imonth = e.start().date().month(); iyear = from.year(); // after all, we want to start in this year diff = 1; if(imonth == 2 && iday > 28) { /* leap year, and it counts, calculate actual frequency */ if(freq % 4) if (freq % 2) freq = freq * 4; else freq = freq * 2; /* else divides by 4 already, leave freq alone */ diff = 4; } a = from.year() - e.start().date().year(); if(a % freq) { a = freq - (a % freq); iyear = iyear + a; } /* under the assumption we won't hit one of the special not-leap years twice */ if(!QDate::isValid(iyear, imonth, iday)) { /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */ iyear += freq; } if(QDate(iyear, imonth, iday) >= from) { next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; } /* iyear == from.year(), need to advance again */ iyear += freq; /* under the assumption we won't hit one of the special not-leap years twice */ if(!QDate::isValid(iyear, imonth, iday)) { /* must have been skipping by leap years and hit one that wasn't, (e.g. 2100) */ iyear += freq; } next = QDateTime(QDate(iyear, imonth, iday), e.start().time()); if ((next.date() > e.repeatPattern().endDate()) && e.repeatPattern().hasEndDate) return FALSE; return TRUE; default: return FALSE; } } static bool nextAlarm( const Event &ev, QDateTime& when, int& warn) { QDateTime now = QDateTime::currentDateTime(); if ( ev.hasRepeat() ) { QDateTime ralarm; if (nextOccurance(ev, now.date(), ralarm)) { ralarm = ralarm.addSecs(-ev.alarmTime()*60); if ( ralarm > now ) { when = ralarm; warn = ev.alarmTime(); } else if ( nextOccurance(ev, now.date().addDays(1), ralarm) ) { ralarm = ralarm.addSecs( -ev.alarmTime()*60 ); if ( ralarm > now ) { when = ralarm; warn = ev.alarmTime(); } } } } else { warn = ev.alarmTime(); when = ev.start().addSecs( -ev.alarmTime()*60 ); } return when > now; } static void addEventAlarm( const Event &ev ) { QDateTime when; int warn; if ( nextAlarm(ev,when,warn) ) AlarmServer::addAlarm( when, "QPE/Application/datebook", "alarm(QDateTime,int)", warn ); } static void delEventAlarm( const Event &ev ) { QDateTime when; int warn; if ( nextAlarm(ev,when,warn) ) AlarmServer::deleteAlarm( when, "QPE/Application/datebook", "alarm(QDateTime,int)", warn ); } DateBookDB::DateBookDB() { init(); } DateBookDB::~DateBookDB() { save(); eventList.clear(); repeatEvents.clear(); } //#### Why is this code duplicated in getEffectiveEvents ????? //#### Addendum. Don't use this function, lets faze it out if we can. QValueList<Event> DateBookDB::getEvents( const QDate &from, const QDate &to ) { QValueList<Event> tmpList; tmpList = getNonRepeatingEvents( from, to ); // check for repeating events... for (QValueList<Event>::ConstIterator it = repeatEvents.begin(); it != repeatEvents.end(); ++it) { QDate itDate = from; QDateTime due; /* create a false end date, to short circuit on hard MonthlyDay recurences */ Event dummy_event = *it; Event::RepeatPattern r = dummy_event.repeatPattern(); if ( !r.hasEndDate || r.endDate() > to ) { r.setEndDate( to ); r.hasEndDate = TRUE; } dummy_event.setRepeat(TRUE, r); while (nextOccurance(dummy_event, itDate, due)) { if (due.date() > to) break; Event newEvent = *it; newEvent.setStart(due); newEvent.setEnd(due.addSecs((*it).start().secsTo((*it).end()))); tmpList.append(newEvent); itDate = due.date().addDays(1); /* the next event */ } } qHeapSort(tmpList); return tmpList; } QValueList<Event> DateBookDB::getEvents( const QDateTime &start ) { QValueList<Event> day = getEvents(start.date(),start.date()); QValueListConstIterator<Event> it; QDateTime dtTmp; QValueList<Event> tmpList; for (it = day.begin(); it != day.end(); ++it ) { dtTmp = (*it).start(TRUE); if ( dtTmp == start ) tmpList.append( *it ); } return tmpList; } //#### Why is this code duplicated in getEvents ????? QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from, const QDate &to ) { QValueList<EffectiveEvent> tmpList; QValueListIterator<Event> it; EffectiveEvent effEv; QDateTime dtTmp, dtEnd; for (it = eventList.begin(); it != eventList.end(); ++it ) { if (!(*it).isValidUid()) (*it).assignUid(); // FIXME: Hack to restore cleared uids dtTmp = (*it).start(TRUE); dtEnd = (*it).end(TRUE); if ( dtTmp.date() >= from && dtTmp.date() <= to ) { Event tmpEv = *it; effEv.setEvent(tmpEv); effEv.setDate( dtTmp.date() ); effEv.setStart( dtTmp.time() ); if ( dtTmp.date() != dtEnd.date() ) effEv.setEnd( QTime(23, 59, 0) ); else effEv.setEnd( dtEnd.time() ); tmpList.append( effEv ); } // we must also check for end date information... if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) { QDateTime dt = dtTmp.addDays( 1 ); dt.setTime( QTime(0, 0, 0) ); QDateTime dtStop; if ( dtEnd > to ) { dtStop = to; } else dtStop = dtEnd; while ( dt <= dtStop ) { Event tmpEv = *it; effEv.setEvent( tmpEv ); effEv.setDate( dt.date() ); if ( dt >= from ) { effEv.setStart( QTime(0, 0, 0) ); if ( dt.date() == dtEnd.date() ) effEv.setEnd( dtEnd.time() ); else effEv.setEnd( QTime(23, 59, 59) ); tmpList.append( effEv ); } dt = dt.addDays( 1 ); } } } // check for repeating events... QDateTime repeat; for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { if (!(*it).isValidUid()) (*it).assignUid(); // FIXME: Hack to restore cleared uids /* create a false end date, to short circuit on hard MonthlyDay recurences */ Event dummy_event = *it; int duration = (*it).start().date().daysTo( (*it).end().date() ); QDate itDate = from.addDays(-duration); Event::RepeatPattern r = dummy_event.repeatPattern(); if ( !r.hasEndDate || r.endDate() > to ) { r.setEndDate( to ); r.hasEndDate = TRUE; } dummy_event.setRepeat(TRUE, r); while (nextOccurance(dummy_event, itDate, repeat)) { if(repeat.date() > to) break; effEv.setDate( repeat.date() ); if ((*it).type() == Event::AllDay) { effEv.setStart( QTime(0,0,0) ); effEv.setEnd( QTime(23,59,59) ); } else { /* we only occur by days, not hours/minutes/seconds. Hence the actual end and start times will be the same for every repeated event. For multi day events this is fixed up later if on wronge day span */ effEv.setStart( (*it).start().time() ); effEv.setEnd( (*it).end().time() ); } if ( duration != 0 ) { // multi-day repeating events QDate sub_it = QMAX( repeat.date(), from ); QDate startDate = repeat.date(); QDate endDate = startDate.addDays( duration ); while ( sub_it <= endDate && sub_it <= to ) { EffectiveEvent tmpEffEv = effEv; Event tmpEv = *it; tmpEffEv.setEvent( tmpEv ); if ( sub_it != startDate ) tmpEffEv.setStart( QTime(0,0,0) ); if ( sub_it != endDate ) tmpEffEv.setEnd( QTime(23,59,59) ); tmpEffEv.setDate( sub_it ); tmpEffEv.setEffectiveDates( startDate, endDate ); tmpList.append( tmpEffEv ); sub_it = sub_it.addDays( 1 ); } itDate = endDate; } else { Event tmpEv = *it; effEv.setEvent( tmpEv ); tmpList.append( effEv ); itDate = repeat.date().addDays( 1 ); } } } qHeapSort( tmpList ); return tmpList; } QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt) { QValueList<EffectiveEvent> day = getEffectiveEvents(dt.date(), dt.date()); QValueListConstIterator<EffectiveEvent> it; QValueList<EffectiveEvent> tmpList; QDateTime dtTmp; for (it = day.begin(); it != day.end(); ++it ) { dtTmp = QDateTime( (*it).date(), (*it).start() ); // at the moment we don't have second granularity, be nice about that.. if ( QABS(dt.secsTo(dtTmp)) < 60 ) tmpList.append( *it ); } return tmpList; } void DateBookDB::addEvent( const Event &ev, bool doalarm ) { // write to the journal... saveJournalEntry( ev, ACTION_ADD, -1, false ); addJFEvent( ev, doalarm ); d->clean = false; } void DateBookDB::addJFEvent( const Event &ev, bool doalarm ) { if ( doalarm && ev.hasAlarm() ) addEventAlarm( ev ); if ( ev.hasRepeat() ) repeatEvents.append( ev ); else eventList.append( ev ); } void DateBookDB::editEvent( const Event &old, Event &editedEv ) { int oldIndex=0; bool oldHadRepeat = old.hasRepeat(); Event orig; // write to the journal... if ( oldHadRepeat ) { if ( origRepeat( old, orig ) ) // should work always... oldIndex = repeatEvents.findIndex( orig ); } else oldIndex = eventList.findIndex( old ); saveJournalEntry( editedEv, ACTION_REPLACE, oldIndex, oldHadRepeat ); // Delete old event if ( old.hasAlarm() ) delEventAlarm( old ); if ( oldHadRepeat ) { if ( editedEv.hasRepeat() ) { // This mean that origRepeat was run above and // orig is initialized // assumption, when someone edits a repeating event, they // want to change them all, maybe not perfect, but it works // for the moment... repeatEvents.remove( orig ); } else removeRepeat( old ); } else { QValueList<Event>::Iterator it = eventList.find( old ); if ( it != eventList.end() ) eventList.remove( it ); } // Add new event if ( editedEv.hasAlarm() ) addEventAlarm( editedEv ); if ( editedEv.hasRepeat() ) repeatEvents.append( editedEv ); else eventList.append( editedEv ); d->clean = false; } void DateBookDB::removeEvent( const Event &ev ) { // write to the journal... saveJournalEntry( ev, ACTION_REMOVE, -1, false ); removeJFEvent( ev ); d->clean = false; } void DateBookDB::removeJFEvent( const Event&ev ) { if ( ev.hasAlarm() ) delEventAlarm( ev ); if ( ev.hasRepeat() ) { removeRepeat( ev ); } else { QValueList<Event>::Iterator it = eventList.find( ev ); if ( it != eventList.end() ) eventList.remove( it ); } } // also handles journaling... void DateBookDB::loadFile( const QString &strFile ) { QFile f( strFile ); if ( !f.open( IO_ReadOnly ) ) return; enum Attribute { FDescription = 0, FLocation, FCategories, FUid, FType, FAlarm, FSound, FRType, FRWeekdays, FRPosition, FRFreq, FRHasEndDate, FREndDate, FRStart, FREnd, FNote, FCreated, FAction, FActionKey, FJournalOrigHadRepeat }; QAsciiDict<int> dict( 97 ); dict.setAutoDelete( TRUE ); dict.insert( "description", new int(FDescription) ); dict.insert( "location", new int(FLocation) ); dict.insert( "categories", new int(FCategories) ); dict.insert( "uid", new int(FUid) ); dict.insert( "type", new int(FType) ); dict.insert( "alarm", new int(FAlarm) ); dict.insert( "sound", new int(FSound) ); dict.insert( "rtype", new int(FRType) ); dict.insert( "rweekdays", new int(FRWeekdays) ); dict.insert( "rposition", new int(FRPosition) ); dict.insert( "rfreq", new int(FRFreq) ); dict.insert( "rhasenddate", new int(FRHasEndDate) ); dict.insert( "enddt", new int(FREndDate) ); dict.insert( "start", new int(FRStart) ); dict.insert( "end", new int(FREnd) ); dict.insert( "note", new int(FNote) ); dict.insert( "created", new int(FCreated) ); dict.insert( "action", new int(FAction) ); dict.insert( "actionkey", new int(FActionKey) ); dict.insert( "actionorig", new int (FJournalOrigHadRepeat) ); QByteArray ba = f.readAll(); char* dt = ba.data(); int len = ba.size(); int currentAction, journalKey, origHadRepeat; // should be bool, but we need tri-state(not being used) int i = 0; char *point; // hack to get rid of segfaults after reading </DATEBOOK> while ( (dt+i != 0) && (( point = strstr( dt+i, "<event " ) ) != 0 )) { i = point - dt; // if we are reading in events in the general case, // we are just adding them, so let the actions represent that... currentAction = ACTION_ADD; journalKey = -1; origHadRepeat = -1; // some temporary variables for dates and times ... //int startY = 0, startM = 0, startD = 0, starth = 0, startm = 0, starts = 0; //int endY = 0, endM = 0, endD = 0, endh = 0, endm = 0, ends = 0; //int enddtY = 0, enddtM = 0, enddtD = 0; // ... for the alarm settings ... int alarmTime = -1; Event::SoundTypeChoice alarmSound = Event::Silent; // ... and for the recurrence Event::RepeatPattern rp; Event e; i += 7; while( 1 ) { while ( i < len && (dt[i] == ' ' || dt[i] == '\n' || dt[i] == '\r') ) ++i; if ( i >= len-2 || (dt[i] == '/' && dt[i+1] == '>') ) break; // we have another attribute, read it. int j = i; while ( j < len && dt[j] != '=' ) ++j; char *attr = dt+i; dt[j] = '\0'; i = ++j; // skip = while ( i < len && dt[i] != '"' ) ++i; j = ++i; bool haveAmp = FALSE; bool haveUtf = FALSE; while ( j < len && dt[j] != '"' ) { if ( dt[j] == '&' ) haveAmp = TRUE; if ( ((unsigned char)dt[j]) > 0x7f ) haveUtf = TRUE; ++j; } if ( i == j ) { // leave out empty attributes i = j + 1; continue; } QString value = haveUtf ? QString::fromUtf8( dt+i, j-i ) : QString::fromLatin1( dt+i, j-i ); if ( haveAmp ) value = Qtopia::plainString( value ); i = j + 1; //qDebug("attr='%s' value='%s'", attr.data(), value.latin1() ); int * find = dict[ attr ]; #if 1 if ( !find ) { // custom field e.setCustomField(attr, value); continue; } switch( *find ) { case FDescription: e.setDescription( value ); break; case FLocation: e.setLocation( value ); break; case FCategories: e.setCategories( Qtopia::Record::idsFromString( value ) ); break; case FUid: e.setUid( value.toInt() ); break; case FType: if ( value == "AllDay" ) e.setType( Event::AllDay ); else e.setType( Event::Normal ); break; case FAlarm: alarmTime = value.toInt(); break; case FSound: alarmSound = value == "loud" ? Event::Loud : Event::Silent; break; // recurrence stuff case FRType: if ( value == "Daily" ) rp.type = Event::Daily; else if ( value == "Weekly" ) rp.type = Event::Weekly; else if ( value == "MonthlyDay" ) rp.type = Event::MonthlyDay; else if ( value == "MonthlyDate" ) rp.type = Event::MonthlyDate; else if ( value == "Yearly" ) rp.type = Event::Yearly; else rp.type = Event::NoRepeat; break; case FRWeekdays: // QtopiaDesktop 1.6 sometimes creates 'rweekdays="0"' // when it goes mad. This causes datebook to crash.. (se) - if ( value.toInt() != 0 ) + if ( value.toInt() != 0 ) rp.days = value.toInt(); else rp.days = 1; break; case FRPosition: rp.position = value.toInt(); break; case FRFreq: rp.frequency = value.toInt(); break; case FRHasEndDate: rp.hasEndDate = value.toInt(); break; case FREndDate: { rp.endDateUTC = (time_t) value.toLong(); break; } case FRStart: { e.setStart( (time_t) value.toLong() ); break; } case FREnd: { e.setEnd( (time_t) value.toLong() ); break; } case FNote: e.setNotes( value ); break; case FCreated: rp.createTime = value.toInt(); break; case FAction: currentAction = value.toInt(); break; case FActionKey: journalKey = value.toInt(); break; case FJournalOrigHadRepeat: origHadRepeat = value.toInt(); break; default: qDebug( "huh??? missing enum? -- attr.: %s", attr ); break; } #endif } // "post processing" (dates, times, alarm, recurrence) // start date/time e.setRepeat( rp.type != Event::NoRepeat, rp ); if ( alarmTime != -1 ) e.setAlarm( TRUE, alarmTime, alarmSound ); // now do our action based on the current action... switch ( currentAction ) { case ACTION_ADD: addJFEvent( e ); break; case ACTION_REMOVE: removeJFEvent( e ); break; case ACTION_REPLACE: // be a little bit careful, // in case of a messed up journal... if ( journalKey > -1 && origHadRepeat > -1 ) { // get the original from proper list... if ( origHadRepeat ) removeJFEvent( *(repeatEvents.at(journalKey)) ); else removeJFEvent( *(eventList.at(journalKey)) ); addJFEvent( e ); } break; default: break; } } f.close(); } void DateBookDB::init() { d = new DateBookDBPrivate; d->clean = false; QString str = dateBookFilename(); if ( str.isNull() ) { QMessageBox::warning( 0, QObject::tr("Out of Space"), QObject::tr("Unable to create start up files\n" "Please free up some space\n" "before entering data") ); } // continuing along, we call this datebook filename again, // because they may fix it before continuing, though it seems // pretty unlikely... loadFile( dateBookFilename() ); if ( QFile::exists( dateBookJournalFile() ) ) { // merge the journal loadFile( dateBookJournalFile() ); // save in our changes and remove the journal... save(); } d->clean = true; } bool DateBookDB::save() { if ( d->clean == true ) return true; QValueListIterator<Event> it; int total_written; QString strFileNew = dateBookFilename() + ".new"; QFile f( strFileNew ); if ( !f.open( IO_WriteOnly|IO_Raw ) ) return FALSE; QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n"; buf += "<events>\n"; QCString str = buf.utf8(); total_written = f.writeBlock( str.data(), str.length() ); if ( total_written != int(str.length()) ) { f.close(); QFile::remove( strFileNew ); return false; } for ( it = eventList.begin(); it != eventList.end(); ++it ) { buf = "<event"; (*it).save( buf ); buf += " />\n"; str = buf.utf8(); total_written = f.writeBlock( str.data(), str.length() ); if ( total_written != int(str.length()) ) { f.close(); QFile::remove( strFileNew ); return false; } } for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { buf = "<event"; (*it).save( buf ); buf += " />\n"; str = buf.utf8(); total_written = f.writeBlock( str.data(), str.length() ); if ( total_written != int(str.length()) ) { f.close(); QFile::remove( strFileNew ); return false; } } buf = "</events>\n</DATEBOOK>\n"; str = buf.utf8(); total_written = f.writeBlock( str.data(), str.length() ); if ( total_written != int(str.length()) ) { f.close(); QFile::remove( strFileNew ); return false; } f.close(); // now rename... I like to use the systemcall if ( ::rename( strFileNew, dateBookFilename() ) < 0 ) { qWarning( "problem renaming file %s to %s errno %d", strFileNew.latin1(), dateBookFilename().latin1(), errno ); // remove the file, otherwise it will just stick around... QFile::remove( strFileNew ); } // may as well remove the journal file... QFile::remove( dateBookJournalFile() ); d->clean = true; return true; } void DateBookDB::reload() { QValueList<Event>::Iterator it = eventList.begin(); for ( ; it != eventList.end(); ++it ) { if ( (*it).hasAlarm() ) delEventAlarm( *it ); if ( (*it).hasRepeat() ) removeRepeat( *it ); } eventList.clear(); repeatEvents.clear(); // should be a NOP init(); } bool DateBookDB::removeRepeat( const Event &ev ) { time_t removeMe = ev.repeatPattern().createTime; QValueListIterator<Event> it; for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { if ( removeMe == (*it).repeatPattern().createTime ) { - repeatEvents.remove( *it ); + (void)repeatEvents.remove( it ); // best break, or we are going into undefined territory! return TRUE; } } return FALSE; } bool DateBookDB::origRepeat( const Event &ev, Event &orig ) const { time_t removeMe = ev.repeatPattern().createTime; QValueListConstIterator<Event> it; for ( it = repeatEvents.begin(); it != repeatEvents.end(); ++it ) { if ( removeMe == (*it).repeatPattern().createTime ) { orig = (*it); return TRUE; } } return FALSE; } void DateBookDB::saveJournalEntry( const Event &ev, journal_action action ) { saveJournalEntry( ev, action, -1, false ); } bool DateBookDB::saveJournalEntry( const Event &evOld, journal_action action, int key, bool origHadRepeat ) { bool status = false; Event ev = evOld; // write our log based on the action QFile f( dateBookJournalFile() ); if ( !f.open( IO_WriteOnly|IO_Append ) ) return false; QString buf = "<event"; ev.save( buf ); buf += " action="; buf += "\"" + QString::number(action) + "\""; buf += " actionkey=\"" + QString::number(key) + "\""; buf += " actionorig=\"" + QString::number(origHadRepeat) +"\""; buf += " />\n"; QString str = buf.utf8(); status = ( f.writeBlock( str.data(), str.length() ) == int(str.length()) ); f.close(); return status; } QValueList<Event> DateBookDB::getRawRepeats() const { return repeatEvents; } QValueList<Event> DateBookDB::getNonRepeatingEvents( const QDate &from, const QDate &to ) const { QValueListConstIterator<Event> it; QDateTime dtTmp, dtEnd; QValueList<Event> tmpList; for (it = eventList.begin(); it != eventList.end(); ++it ) { dtTmp = (*it).start(TRUE); dtEnd = (*it).end(TRUE); if ( dtTmp.date() >= from && dtTmp.date() <= to ) { Event e = *it; if ( dtTmp.date() != dtEnd.date() ) e.setEnd( QDateTime(dtTmp.date(), QTime(23, 59, 0)) ); tmpList.append( e ); } // we must also check for end date information... if ( dtEnd.date() != dtTmp.date() && dtEnd.date() >= from ) { QDateTime dt = dtTmp.addDays( 1 ); dt.setTime( QTime(0, 0, 0) ); QDateTime dtStop; if ( dtEnd > to ) { dtStop = to; } else dtStop = dtEnd; while ( dt <= dtStop ) { Event ev = *it; if ( dt >= from ) { ev.setStart( QDateTime(dt.date(), QTime(0, 0, 0)) ); if ( dt.date() == dtEnd.date() ) ev.setEnd( QDateTime(dt.date(), dtEnd.time()) ); else ev.setEnd( QDateTime(dt.date(), QTime(23, 59, 0)) ); tmpList.append( ev ); } dt = dt.addDays( 1 ); } } } return tmpList; } diff --git a/library/datebookmonth.cpp b/library/datebookmonth.cpp index e8be313..728045f 100644 --- a/library/datebookmonth.cpp +++ b/library/datebookmonth.cpp @@ -1,762 +1,767 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "config.h" #include "datebookmonth.h" #include "datebookdb.h" #include <qtopia/private/event.h> #include "resource.h" #include <qpe/qpeapplication.h> #include "timestring.h" #include <qtoolbutton.h> #include <qspinbox.h> #include <qcombobox.h> #include <qdatetime.h> #include <qpainter.h> #include <qpopupmenu.h> #include <qvaluestack.h> #include <qwhatsthis.h> DateBookMonthHeader::DateBookMonthHeader( QWidget *parent, const char *name ) : QHBox( parent, name ) { setBackgroundMode( PaletteButton ); begin = new QToolButton( this ); begin->setFocusPolicy(NoFocus); begin->setPixmap( Resource::loadPixmap( "start" ) ); begin->setAutoRaise( TRUE ); begin->setFixedSize( begin->sizeHint() ); QWhatsThis::add( begin, tr("Show January in the selected year") ); back = new QToolButton( this ); back->setFocusPolicy(NoFocus); back->setPixmap( Resource::loadPixmap( "back" ) ); back->setAutoRaise( TRUE ); back->setFixedSize( back->sizeHint() ); QWhatsThis::add( back, tr("Show the previous month") ); month = new QComboBox( FALSE, this ); for ( int i = 0; i < 12; ++i ) month->insertItem( Calendar::nameOfMonth( i + 1 ) ); year = new QSpinBox( 1752, 8000, 1, this ); next = new QToolButton( this ); next->setFocusPolicy(NoFocus); next->setPixmap( Resource::loadPixmap( "forward" ) ); next->setAutoRaise( TRUE ); next->setFixedSize( next->sizeHint() ); QWhatsThis::add( next, tr("Show the next month") ); end = new QToolButton( this ); end->setFocusPolicy(NoFocus); end->setPixmap( Resource::loadPixmap( "finish" ) ); end->setAutoRaise( TRUE ); end->setFixedSize( end->sizeHint() ); QWhatsThis::add( end, tr("Show December in the selected year") ); connect( month, SIGNAL( activated( int ) ), this, SLOT( updateDate() ) ); connect( year, SIGNAL( valueChanged( int ) ), this, SLOT( updateDate() ) ); connect( begin, SIGNAL( clicked() ), this, SLOT( firstMonth() ) ); connect( end, SIGNAL( clicked() ), this, SLOT( lastMonth() ) ); connect( back, SIGNAL( clicked() ), this, SLOT( monthBack() ) ); connect( next, SIGNAL( clicked() ), this, SLOT( monthForward() ) ); back->setAutoRepeat( TRUE ); next->setAutoRepeat( TRUE ); } DateBookMonthHeader::~DateBookMonthHeader() { } void DateBookMonthHeader::updateDate() { emit dateChanged( year->value(), month->currentItem() + 1 ); } void DateBookMonthHeader::firstMonth() { emit dateChanged( year->value(), 1 ); month->setCurrentItem( 0 ); } void DateBookMonthHeader::lastMonth() { emit dateChanged( year->value(), 12 ); month->setCurrentItem( 11 ); } void DateBookMonthHeader::monthBack() { if ( month->currentItem() > 0 ) { emit dateChanged( year->value(), month->currentItem() ); month->setCurrentItem( month->currentItem() - 1 ); } else { emit dateChanged( year->value() - 1, 12 ); // we have a signal set to a changed value in year so we only need to change // year to get the result... month->setCurrentItem( 11 ); year->setValue( year->value() - 1 ); } } void DateBookMonthHeader::monthForward() { if ( month->currentItem() < 11 ) { emit dateChanged( year->value(), month->currentItem() + 2 ); month->setCurrentItem( month->currentItem() + 1 ); } else { // we have a signal set to a changed value in year so we only need to change // year to get the result... month->setCurrentItem( 0 ); year->setValue( year->value() + 1 ); } } void DateBookMonthHeader::setDate( int y, int m ) { year->setValue( y ); month->setCurrentItem( m - 1 ); } //--------------------------------------------------------------------------- class DateBookMonthTablePrivate { public: DateBookMonthTablePrivate() {}; ~DateBookMonthTablePrivate() { mMonthEvents.clear(); }; QValueList<EffectiveEvent> mMonthEvents; bool onMonday; }; DateBookMonthTable::DateBookMonthTable( QWidget *parent, const char *name, DateBookDB *newDb ) : QTable( 6, 7, parent, name ), db( newDb ) { d = new DateBookMonthTablePrivate(); selYear = -1; selMonth = -1; selDay = -1; + /* init these as well make valgrind happy and be consistent with Qtopia1.6 -zecke */ + year = -1; + month = -1; + day = -1; + Config cfg( "qpe" ); cfg.setGroup( "Time" ); d->onMonday = cfg.readBoolEntry( "MONDAY" ); horizontalHeader()->setResizeEnabled( FALSE ); // we have to do this here... or suffer the consequences later... for ( int i = 0; i < 7; i++ ){ horizontalHeader()->resizeSection( i, 30 ); setColumnStretchable( i, TRUE ); } setupLabels(); verticalHeader()->hide(); setLeftMargin( 0 ); for ( int i = 0; i < 6; ++i ) setRowStretchable( i, TRUE ); setSelectionMode( NoSelection ); connect( this, SIGNAL( clicked( int, int, int, const QPoint & ) ), this, SLOT( dayClicked( int, int ) ) ); connect( this, SIGNAL( currentChanged( int, int ) ), this, SLOT( dragDay( int, int ) ) ); setVScrollBarMode( AlwaysOff ); setHScrollBarMode( AlwaysOff ); } DateBookMonthTable::~DateBookMonthTable() { monthsEvents.clear(); delete d; } void DateBookMonthTable::setDate(int y, int m, int d) { if (month == m && year == y) { if ( selYear == -1 ) year = selYear; if ( selMonth == -1 ) month = selMonth; int r1, c1, r2, c2; findDay(selDay, r1, c1); selDay = day = d; findDay(selDay, r2, c2); setCurrentCell( r2, c2 ); //updateCell(r1,c1); //updateCell(r2,c2); } else { selYear = year = y; selMonth = month = m; selDay = day = d; setupTable(); } } void DateBookMonthTable::redraw() { setupLabels(); setupTable(); } void DateBookMonthTable::setWeekStart( bool onMonday ) { d->onMonday = onMonday; setupLabels(); setupTable(); } void DateBookMonthTable::setupTable() { QValueList<Calendar::Day> days = Calendar::daysOfMonth( year, month, d->onMonday ); QValueList<Calendar::Day>::Iterator it = days.begin(); int row = 0, col = 0; int crow = 0; int ccol = 0; for ( ; it != days.end(); ++it ) { DayItemMonth *i = (DayItemMonth *)item( row, col ); if ( !i ) { i = new DayItemMonth( this, QTableItem::Never, "" ); setItem( row, col, i ); } Calendar::Day calDay = *it; i->clearEffEvents(); i->setDay( calDay.date ); i->setType( calDay.type ); if ( i->day() == day && calDay.type == Calendar::Day::ThisMonth ) { crow = row; ccol = col; } updateCell( row, col ); if ( col == 6 ) { ++row; col = 0; } else { ++col; } } setCurrentCell( crow, ccol ); getEvents(); } void DateBookMonthTable::findDay( int day, int &row, int &col ) { QDate dtBegin( year, month, 1 ); int skips = dtBegin.dayOfWeek(); int effective_day = day + skips - 1; // row/columns begin at 0 // make an extra adjustment if we start on Mondays. if ( d->onMonday ) effective_day--; row = effective_day / 7; col = effective_day % 7; } void DateBookMonthTable::dayClicked( int row, int col ) { changeDaySelection( row, col ); emit dateClicked( selYear, selMonth, selDay ); } void DateBookMonthTable::dragDay( int row, int col ) { changeDaySelection( row, col ); } void DateBookMonthTable::changeDaySelection( int row, int col ) { DayItemMonth *i = (DayItemMonth*)item( row, col ); if ( !i ) return; switch ( i->type() ) { case Calendar::Day::ThisMonth: selMonth = month; break; case Calendar::Day::PrevMonth: selMonth = month-1; break; default: selMonth = month+1; } selYear = year; if ( selMonth <= 0 ) { selMonth = 12; selYear--; } else if ( selMonth > 12 ) { selMonth = 1; selYear++; } selDay = i->day(); } void DateBookMonthTable::viewportMouseReleaseEvent( QMouseEvent * ) { dayClicked( currentRow(), currentColumn() ); } void DateBookMonthTable::getEvents() { if ( !db ) return; QDate dtStart( year, month, 1 ); d->mMonthEvents = db->getEffectiveEvents( dtStart, QDate( year, month, dtStart.daysInMonth() ) ); QValueListIterator<EffectiveEvent> it = d->mMonthEvents.begin(); // now that the events are sorted, basically go through the list, make // a small list for every day and set it for each item... // clear all the items... while ( it != d->mMonthEvents.end() ) { QValueList<EffectiveEvent> dayEvent; EffectiveEvent e = *it; ++it; dayEvent.append( e ); while ( it != d->mMonthEvents.end() && e.date() == (*it).date() ) { dayEvent.append( *it ); ++it; } int row, col; findDay( e.date().day(), row, col ); DayItemMonth* w = static_cast<DayItemMonth*>( item( row, col ) ); w->setEvents( dayEvent ); updateCell( row, col ); dayEvent.clear(); } } void DateBookMonthTable::setupLabels() { for ( int i = 0; i < 7; ++i ) { // horizontalHeader()->resizeSection( i, 30 ); // setColumnStretchable( i, TRUE ); if ( d->onMonday ) horizontalHeader()->setLabel( i, Calendar::nameOfDay( i + 1 ) ); else { if ( i == 0 ) horizontalHeader()->setLabel( i, Calendar::nameOfDay( 7 ) ); else horizontalHeader()->setLabel( i, Calendar::nameOfDay( i ) ); } } } //--------------------------------------------------------------------------- DateBookMonth::DateBookMonth( QWidget *parent, const char *name, bool ac, DateBookDB *data ) : QVBox( parent, name ), autoClose( ac ) { setFocusPolicy(StrongFocus); year = QDate::currentDate().year(); month = QDate::currentDate().month(); day = QDate::currentDate().day(); header = new DateBookMonthHeader( this, "DateBookMonthHeader" ); table = new DateBookMonthTable( this, "DateBookMonthTable", data ); header->setDate( year, month ); table->setDate( year, month, QDate::currentDate().day() ); header->setFocusPolicy(NoFocus); table->setFocusPolicy(NoFocus); connect( header, SIGNAL( dateChanged( int, int ) ), this, SLOT( setDate( int, int ) ) ); connect( table, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( finalDate(int, int, int) ) ); connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChange(bool)) ); table->setFocus(); } DateBookMonth::~DateBookMonth() { } void DateBookMonth::setDate( int y, int m ) { /* only change the date if this is a different date, * other wise we may mistakenly overide the day */ if ( (y != year) || (m != month) ) { year = y; month = m; QDate nd( y, m, 1 ); if ( nd.daysInMonth() < day ) day = nd.daysInMonth(); table->setDate( year, month, day ); } } void DateBookMonth::setDate( int y, int m, int d ) { header->setDate( y, m); table->setDate( y, m, d); year = y; month = m; day = d; } /* called when we wish to close or pass back the date */ void DateBookMonth::finalDate(int y, int m, int d) { setDate( y, m, d ); emit dateClicked(y, m, d); // emit dateClicked(QDate(y, m, d).toString()); if ( autoClose && parentWidget() ) parentWidget()->close(); } void DateBookMonth::setDate( QDate d) { setDate(d.year(), d.month(), d.day()); } void DateBookMonth::redraw() { table->setDate( year, month, day ); table->redraw(); } QDate DateBookMonth::selectedDate() const { if ( !table ) return QDate::currentDate(); int y, m, d; table->getDate( y, m, d ); return QDate( y, m, d ); } void DateBookMonth::slotWeekChange( bool startOnMonday ) { table->setWeekStart( startOnMonday ); } void DateBookMonth::keyPressEvent( QKeyEvent *e ) { switch(e->key()) { case Key_Up: setDate(QDate(year, month, day).addDays(-7)); break; case Key_Down: setDate(QDate(year, month, day).addDays(7)); break; case Key_Left: setDate(QDate(year, month, day).addDays(-1)); break; case Key_Right: setDate(QDate(year, month, day).addDays(1)); break; case Key_Space: qWarning("space"); emit dateClicked(year, month, day); if ( autoClose && parentWidget() ) parentWidget()->close(); break; default: qWarning("ignore"); e->ignore(); break; } } //--------------------------------------------------------------------------- class DayItemMonthPrivate { public: DayItemMonthPrivate() {}; ~DayItemMonthPrivate() { mDayEvents.clear(); }; QValueList<EffectiveEvent> mDayEvents; }; DayItemMonth::DayItemMonth( QTable *table, EditType et, const QString &t ) : QTableItem( table, et, t ) { d = new DayItemMonthPrivate(); } DayItemMonth::~DayItemMonth() { daysEvents.clear(); delete d; } void DayItemMonth::setEvents( const QValueList<EffectiveEvent> &effEv ) { d->mDayEvents = effEv; } void DayItemMonth::clearEffEvents() { d->mDayEvents.clear(); } void DayItemMonth::paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ) { p->save(); QColorGroup g( cg ); g.setBrush( QColorGroup::Base, back ); g.setColor( QColorGroup::Text, forg ); if ( selected ) p->setPen( g.highlightedText() ); else p->setPen( g.text() ); QValueStack<int> normalLine; QValueStack<int> repeatLine; QValueStack<int> travelLine; bool normalAllDay = FALSE; bool repeatAllDay = FALSE; bool travelAllDay = FALSE; QValueListIterator<EffectiveEvent> itDays = d->mDayEvents.begin(); for ( ; itDays != d->mDayEvents.end(); ++itDays ) { int w = cr.width(); Event ev = (*itDays).event(); int f = (*itDays).start().hour(); // assume Effective event int t = (*itDays).end().hour(); // is truncated. if (ev.isAllDay()) { if (!ev.hasRepeat()) normalAllDay = TRUE; else repeatAllDay = TRUE; } else { int sLine, eLine; if (f == 0) sLine = 0; else if (f < 8 ) sLine = 1; else if (f >= 17) sLine = w - 4; else { sLine = (f - 8) * (w - 8); if (sLine) sLine /= 8; sLine += 4; } if (t == 23) eLine = w; else if (t < 8) eLine = 4; else if (t >= 17) eLine = w - 1; else { eLine = (t - 8) * (w - 8); if (eLine) eLine /= 8; eLine += 4; } if (!ev.hasRepeat()) { normalLine.push(sLine); normalLine.push(eLine); } else { repeatLine.push(sLine); repeatLine.push(eLine); } } } // draw the background if (normalAllDay || repeatAllDay || travelAllDay) { p->save(); if (normalAllDay) if (repeatAllDay) { p->fillRect( 0, 0, cr.width(), cr.height() / 2, colorNormalLight ); p->fillRect( 0, cr.height() / 2, cr.width(), cr.height() / 2, colorRepeatLight ); } else p->fillRect( 0, 0, cr.width(), cr.height(), colorNormalLight ); else if (repeatAllDay) p->fillRect( 0, 0, cr.width(), cr.height(), colorRepeatLight ); } else { p->fillRect( 0, 0, cr.width(), cr.height(), selected ? g.brush( QColorGroup::Highlight ) : g.brush( QColorGroup::Base ) ); } // The lines // now for the lines. int h = 5; int y = cr.height() / 2 - h; while(normalLine.count() >= 2) { int x2 = normalLine.pop(); int x1 = normalLine.pop(); if (x2 < x1 + 2) x2 = x1 + 2; p->fillRect(x1, y, x2 - x1, h, colorNormal); } y += h; while(repeatLine.count() >= 2) { int x2 = repeatLine.pop(); int x1 = repeatLine.pop(); if (x2 < x1 + 2) x2 = x1 + 2; p->fillRect(x1, y, x2 - x1, h, colorRepeat); } // Finally, draw the number. QFont f = p->font(); f.setPointSize( ( f.pointSize() / 3 ) * 2 ); p->setFont( f ); QFontMetrics fm( f ); p->drawText( 1, 1 + fm.ascent(), QString::number( day() ) ); p->restore(); } void DayItemMonth::setType( Calendar::Day::Type t ) { switch ( t ) { case Calendar::Day::PrevMonth: case Calendar::Day::NextMonth: back = QBrush( QColor( 224, 224, 224 ) ); forg = black; break; case Calendar::Day::ThisMonth: back = QBrush( white ); forg = black; break; } typ = t; } DateButton::DateButton( bool longDate, QWidget *parent, const char * name ) :QPushButton( parent, name ) { longFormat = longDate; df = DateFormat('/', DateFormat::MonthDayYear, DateFormat::MonthDayYear); setDate( QDate::currentDate() ); connect(this,SIGNAL(pressed()),this,SLOT(pickDate())); } void DateButton::pickDate() { static QPopupMenu *m1 = 0; static DateBookMonth *picker = 0; if ( !m1 ) { m1 = new QPopupMenu( this ); picker = new DateBookMonth( m1, 0, TRUE ); m1->insertItem( picker ); connect( picker, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( setDate( int, int, int ) ) ); connect( picker, SIGNAL( dateClicked( int, int, int ) ), this, SIGNAL( dateSelected( int, int, int ) ) ); connect( m1, SIGNAL( aboutToHide() ), this, SLOT( gotHide() ) ); } picker->slotWeekChange( weekStartsMonday ); picker->setDate( currDate.year(), currDate.month(), currDate.day() ); m1->popup(mapToGlobal(QPoint(0,height()))); picker->setFocus(); } void DateButton::gotHide() { // we have to redo the button... setDown( false ); } // void dateSelected( int year, int month, int day ); void DateButton::setWeekStartsMonday( int b ) { weekStartsMonday = b; } void DateButton::setDate( int y, int m, int d ) { setDate( QDate( y,m,d) ); } void DateButton::setDate( QDate d ) { currDate = d; setText( longFormat ? TimeString::longDateString( d, df ) : TimeString::shortDate( d, df ) ); } void DateButton::setDateFormat( DateFormat f ) { df = f; setDate( currDate ); } bool DateButton::customWhatsThis() const { return TRUE; } // this class is only here for Sharp ROM compatibility // I have reverse engineered this class and it seems to // work (only qtmail seems to use it) - sandman // DO NOT USE IT IN NEW CODE !! DateBookMonthPopup::DateBookMonthPopup ( QWidget *w ) : QPopupMenu ( w ) { m_dbm = new DateBookMonth( this, 0, TRUE ); insertItem( m_dbm ); } diff --git a/library/global.cpp b/library/global.cpp index ce39751..189b830 100644 --- a/library/global.cpp +++ b/library/global.cpp @@ -1,849 +1,857 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_LANGLIST #include <qpe/qpedebug.h> #include <qpe/global.h> #include <qpe/qdawg.h> #include <qpe/qpeapplication.h> #include <qpe/resource.h> #include <qpe/storage.h> #include <qpe/applnk.h> #include <qpe/qcopenvelope_qws.h> #include <qfile.h> #include <qlabel.h> #include <qtimer.h> #include <qmap.h> #include <qdict.h> #include <qdir.h> #include <qmessagebox.h> #include <qregexp.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <qwindowsystem_qws.h> // for qwsServer #include <qdatetime.h> #include <qfile.h> namespace { // checks if the storage should be searched bool checkStorage(const QString &path ){ // this is a small Config replacement cause config is too limited -zecke QFile file(path ); if(!file.open(IO_ReadOnly ) ) return true; QByteArray array = file.readAll(); QStringList list = QStringList::split('\n', QString( array ) ); for(QStringList::Iterator it = list.begin(); it != list.end(); ++it ){ if( (*it).startsWith("autocheck = 0" ) ){ return false; }else if( (*it).startsWith("autocheck = 1" ) ){ return true; } } return true; } } //#include "quickexec_p.h" class Emitter : public QObject { Q_OBJECT public: Emitter( QWidget* receiver, const QString& document ) { connect(this, SIGNAL(setDocument(const QString&)), receiver, SLOT(setDocument(const QString&))); emit setDocument(document); disconnect(this, SIGNAL(setDocument(const QString&)), receiver, SLOT(setDocument(const QString&))); } signals: void setDocument(const QString&); }; class StartingAppList : public QObject { Q_OBJECT public: static void add( const QString& name ); static bool isStarting( const QString name ); private slots: void handleNewChannel( const QString &); private: StartingAppList( QObject *parent=0, const char* name=0 ) ; QDict<QTime> dict; static StartingAppList *appl; }; StartingAppList* StartingAppList::appl = 0; StartingAppList::StartingAppList( QObject *parent, const char* name ) :QObject( parent, name ) { #if QT_VERSION >= 232 && defined(QWS) connect( qwsServer, SIGNAL( newChannel(const QString&)), this, SLOT( handleNewChannel(const QString&)) ); #endif dict.setAutoDelete( TRUE ); } void StartingAppList::add( const QString& name ) { #if QT_VERSION >= 232 && !defined(QT_NO_COP) if ( !appl ) appl = new StartingAppList; QTime *t = new QTime; t->start(); appl->dict.insert( "QPE/Application/" + name, t ); #endif } bool StartingAppList::isStarting( const QString name ) { #if QT_VERSION >= 232 && !defined(QT_NO_COP) if ( appl ) { QTime *t = appl->dict.find( "QPE/Application/" + name ); if ( !t ) return FALSE; if ( t->elapsed() > 10000 ) { // timeout in case of crash or something appl->dict.remove( "QPE/Application/" + name ); return FALSE; } return TRUE; } #endif return FALSE; } void StartingAppList::handleNewChannel( const QString & name ) { #if QT_VERSION >= 232 && !defined(QT_NO_COP) dict.remove( name ); #endif } static bool docDirCreated = FALSE; static QDawg* fixed_dawg = 0; static QDict<QDawg> *named_dawg = 0; static QString qpeDir() { QString dir = getenv("OPIEDIR"); if ( dir.isEmpty() ) dir = ".."; return dir; } static QString dictDir() { return qpeDir() + "/etc/dict"; } /*! \class Global global.h \brief The Global class provides application-wide global functions. The Global functions are grouped as follows: \tableofcontents \section1 User Interface The statusMessage() function provides short-duration messages to the user. The showInputMethod() function shows the current input method, and hideInputMethod() hides the input method. \section1 Document related The findDocuments() function creates a set of \link doclnk.html DocLnk\endlink objects in a particular folder. \section1 Filesystem related Global provides an applicationFileName() function that returns the full path of an application-specific file. The execute() function runs an application. \section1 Word list related A list of words relevant to the current locale is maintained by the system. The list is held in a \link qdawg.html DAWG\endlink (implemented by the QDawg class). This list is used, for example, by the pickboard input method. The global QDawg is returned by fixedDawg(); this cannot be updated. An updatable copy of the global QDawg is returned by addedDawg(). Applications may have their own word lists stored in \l{QDawg}s which are returned by dawg(). Use addWords() to add words to the updateable copy of the global QDawg or to named application \l{QDawg}s. \section1 Quoting The shellQuote() function quotes a string suitable for passing to a shell. The stringQuote() function backslash escapes '\' and '"' characters. \section1 Hardware The writeHWClock() function sets the hardware clock to the system clock's date and time. \ingroup qtopiaemb */ /*! \internal */ Global::Global() { } /*! Returns the unchangeable QDawg that contains general words for the current locale. \sa addedDawg() */ const QDawg& Global::fixedDawg() { if ( !fixed_dawg ) { if ( !docDirCreated ) createDocDir(); fixed_dawg = new QDawg; QString dawgfilename = dictDir() + "/dawg"; QString words_lang; QStringList langs = Global::languageList(); for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { QString lang = *it; words_lang = dictDir() + "/words." + lang; QString dawgfilename_lang = dawgfilename + "." + lang; if ( QFile::exists(dawgfilename_lang) || QFile::exists(words_lang) ) { dawgfilename = dawgfilename_lang; break; } } QFile dawgfile(dawgfilename); if ( !dawgfile.exists() ) { QString fn = dictDir() + "/words"; if ( QFile::exists(words_lang) ) fn = words_lang; QFile in(fn); if ( in.open(IO_ReadOnly) ) { fixed_dawg->createFromWords(&in); dawgfile.open(IO_WriteOnly); fixed_dawg->write(&dawgfile); dawgfile.close(); } } else { fixed_dawg->readFile(dawgfilename); } } return *fixed_dawg; } /*! Returns the changeable QDawg that contains general words for the current locale. \sa fixedDawg() */ const QDawg& Global::addedDawg() { return dawg("local"); } /*! Returns the QDawg with the given \a name. This is an application-specific word list. \a name should not contain "/". */ const QDawg& Global::dawg(const QString& name) { createDocDir(); if ( !named_dawg ) named_dawg = new QDict<QDawg>; QDawg* r = named_dawg->find(name); if ( !r ) { r = new QDawg; named_dawg->insert(name,r); QString dawgfilename = applicationFileName("Dictionary", name ) + ".dawg"; QFile dawgfile(dawgfilename); if ( dawgfile.open(IO_ReadOnly) ) r->readFile(dawgfilename); } return *r; } /*! \overload Adds \a wordlist to the addedDawg(). Note that the addition of words persists between program executions (they are saved in the dictionary files), so you should confirm the words with the user before adding them. */ void Global::addWords(const QStringList& wordlist) { addWords("local",wordlist); } /*! \overload Adds \a wordlist to the addedDawg(). Note that the addition of words persists between program executions (they are saved in the dictionary files), so you should confirm the words with the user before adding them. */ void Global::addWords(const QString& dictname, const QStringList& wordlist) { QDawg& d = (QDawg&)dawg(dictname); QStringList all = d.allWords() + wordlist; d.createFromWords(all); QString dawgfilename = applicationFileName("Dictionary", dictname) + ".dawg"; QFile dawgfile(dawgfilename); if ( dawgfile.open(IO_WriteOnly) ) { d.write(&dawgfile); dawgfile.close(); } // #### Re-read the dawg here if we use mmap(). // #### Signal other processes to re-read. } /*! Returns the full path for the application called \a appname, with the given \a filename. Returns QString::null if there was a problem creating the directory tree for \a appname. If \a filename contains "/", it is the caller's responsibility to ensure that those directories exist. */ QString Global::applicationFileName(const QString& appname, const QString& filename) { QDir d; QString r = getenv("HOME"); r += "/Applications/"; if ( !QFile::exists( r ) ) if ( d.mkdir(r) == false ) return QString::null; r += appname; if ( !QFile::exists( r ) ) if ( d.mkdir(r) == false ) return QString::null; r += "/"; r += filename; return r; } /*! \internal */ void Global::createDocDir() { if ( !docDirCreated ) { docDirCreated = TRUE; mkdir( QPEApplication::documentDir().latin1(), 0755 ); } } /*! Displays a status \a message to the user. This usually appears in the taskbar for a short amount of time, then disappears. */ void Global::statusMessage(const QString& message) { #if !defined(QT_NO_COP) QCopEnvelope e( "QPE/TaskBar", "message(QString)" ); e << message; #endif } /*! \internal */ void Global::applyStyle() { #if !defined(QT_NO_COP) QCopChannel::send( "QPE/System", "applyStyle()" ); #else ((QPEApplication *)qApp)->applyStyle(); // apply without needing QCop for floppy version #endif } /*! \internal */ QWidget *Global::shutdown( bool ) { #if !defined(QT_NO_COP) QCopChannel::send( "QPE/System", "shutdown()" ); #endif return 0; } /*! \internal */ QWidget *Global::restart( bool ) { #if !defined(QT_NO_COP) QCopChannel::send( "QPE/System", "restart()" ); #endif return 0; } /*! Explicitly show the current input method. Input methods are indicated in the taskbar by a small icon. If the input method is activated (shown) then it takes up some proportion of the bottom of the screen, to allow the user to interact (input characters) with it. \sa hideInputMethod() */ void Global::showInputMethod() { #if !defined(QT_NO_COP) QCopChannel::send( "QPE/TaskBar", "showInputMethod()" ); #endif } /*! Explicitly hide the current input method. The current input method is still indicated in the taskbar, but no longer takes up screen space, and can no longer be interacted with. \sa showInputMethod() */ void Global::hideInputMethod() { #if !defined(QT_NO_COP) QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" ); #endif } /*! \internal */ bool Global::isBuiltinCommand( const QString &name ) { if(!builtin) return FALSE; // yes, it can happen for (int i = 0; builtin[i].file; i++) { if ( builtin[i].file == name ) { return TRUE; } } return FALSE; } Global::Command* Global::builtin=0; QGuardedPtr<QWidget> *Global::running=0; /*! \class Global::Command \brief The Global::Command class is internal. \internal */ /*! \internal */ void Global::setBuiltinCommands( Command* list ) { if ( running ) delete [] running; builtin = list; int count = 0; if (!builtin) return; while ( builtin[count].file ) count++; running = new QGuardedPtr<QWidget> [ count ]; } /*! \internal */ void Global::setDocument( QWidget* receiver, const QString& document ) { Emitter emitter(receiver,document); } /*! \internal */ bool Global::terminateBuiltin( const QString& n ) { if (!builtin) return FALSE; for (int i = 0; builtin[i].file; i++) { if ( builtin[i].file == n ) { delete running[i]; return TRUE; } } return FALSE; } /*! \internal */ void Global::terminate( const AppLnk* app ) { //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this #ifndef QT_NO_COP QCString channel = "QPE/Application/" + app->exec().utf8(); if ( QCopChannel::isRegistered(channel) ) { QCopEnvelope e(channel, "quit()"); } #endif } /*! Low-level function to run command \a c. \warning Do not use this function. Use execute instead. \sa execute() */ void Global::invoke(const QString &c) { // Convert the command line in to a list of arguments QStringList list = QStringList::split(QRegExp(" *"),c); #if !defined(QT_NO_COP) QString ap=list[0]; // see if the application is already running // XXX should lock file /tmp/qcop-msg-ap if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { // If the channel is already register, the app is already running, so show it. { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } - QCopEnvelope e("QPE/System", "notBusy(QString)" ); - e << ap; + //QCopEnvelope e("QPE/System", "notBusy(QString)" ); + //e << ap; return; } // XXX should unlock file /tmp/qcop-msg-ap //see if it is being started if ( StartingAppList::isStarting( ap ) ) { - QCopEnvelope e("QPE/System", "notBusy(QString)" ); - e << ap; + // FIXME take it out for now, since it leads to a much to short showing of wait if + // some entry is clicked. + // Real cause is that ::execute is called twice for document tab. But it would need some larger changes + // to fix that, and with future syncs with qtopia 1.6 it will change anyway big time since somebody there + // had the idea that an apploader belongs to the launcher ... + //QCopEnvelope e("QPE/System", "notBusy(QString)" ); + //e << ap; return; } #endif #ifdef QT_NO_QWS_MULTIPROCESS QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 ); #else QStrList slist; unsigned int j; for ( j = 0; j < list.count(); j++ ) slist.append( list[j].utf8() ); const char **args = new (const char *)[slist.count() + 1]; for ( j = 0; j < slist.count(); j++ ) args[j] = slist.at(j); args[j] = NULL; #if !defined(QT_NO_COP) // an attempt to show a wait... // more logic should be used, but this will be fine for the moment... QCopEnvelope ( "QPE/System", "busy()" ); #endif #ifdef HAVE_QUICKEXEC QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; qDebug("libfile = %s", libexe.latin1() ); if ( QFile::exists( libexe ) ) { qDebug("calling quickexec %s", libexe.latin1() ); quickexecv( libexe.utf8().data(), (const char **)args ); } else #endif { bool success = false; int pfd [2]; if ( ::pipe ( pfd ) < 0 ) pfd [0] = pfd [1] = -1; pid_t pid = ::fork ( ); if ( pid == 0 ) { // child for ( int fd = 3; fd < 100; fd++ ) { if ( fd != pfd [1] ) ::close ( fd ); } ::setpgid ( ::getpid ( ), ::getppid ( )); // Closing of fd[1] indicates that the execvp succeeded! if ( pfd [1] >= 0 ) ::fcntl ( pfd [1], F_SETFD, FD_CLOEXEC ); // Try bindir first, so that foo/bar works too ::execv ( qpeDir ( ) + "/bin/" + args [0], (char * const *) args ); ::execvp ( args [0], (char * const *) args ); char resultByte = 1; if ( pfd [1] >= 0 ) ::write ( pfd [1], &resultByte, 1 ); ::_exit ( -1 ); } else if ( pid > 0 ) { success = true; if ( pfd [1] >= 0 ) ::close ( pfd [1] ); if ( pfd [0] >= 0 ) { while ( true ) { char resultByte; int n = ::read ( pfd [0], &resultByte, 1 ); if ( n == 1 ) { success = false; break; } if (( n == -1 ) && (( errno == ECHILD ) || ( errno == EINTR ))) continue; break; // success } ::close ( pfd [0] ); } } if ( success ) StartingAppList::add( list[0] ); else QMessageBox::warning( 0, "Error", "Could not start the application " + c, "Ok", 0, 0, 0, 1 ); } #endif //QT_NO_QWS_MULTIPROCESS } /*! Executes the application identfied by \a c, passing \a document if it isn't null. Note that a better approach might be to send a QCop message to the application's QPE/Application/\e{appname} channel. */ void Global::execute( const QString &c, const QString& document ) { if ( qApp->type() != QApplication::GuiServer ) { // ask the server to do the work #if !defined(QT_NO_COP) if ( document.isNull() ) { QCopEnvelope e( "QPE/System", "execute(QString)" ); e << c; } else { QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); e << c << document; } #endif return; } // Attempt to execute the app using a builtin class for the app first // else try and find it in the bin directory if (builtin) { for (int i = 0; builtin[i].file; i++) { if ( builtin[i].file == c ) { if ( running[i] ) { if ( !document.isNull() && builtin[i].documentary ) setDocument(running[i], document); running[i]->raise(); running[i]->show(); running[i]->setActiveWindow(); } else { running[i] = builtin[i].func( builtin[i].maximized ); } #ifndef QT_NO_COP QCopEnvelope e("QPE/System", "notBusy(QString)" ); e << c; // that was quick ;-) #endif return; } } } //Global::invoke(c, document); // Convert the command line in to a list of arguments QStringList list = QStringList::split(QRegExp(" *"),c); #if !defined(QT_NO_COP) QString ap=list[0]; qDebug("executing %s", ap.latin1() ); /* if need be, sending a qcop message will result in an invoke, see preceeding function */ invoke( ap ); //{ QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } if ( !document.isEmpty() ) { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "setDocument(QString)" ); env << document; } #endif } /*! Returns the string \a s with the characters '\', '"', and '$' quoted by a preceeding '\'. \sa stringQuote() */ QString Global::shellQuote(const QString& s) { QString r="\""; for (int i=0; i<(int)s.length(); i++) { char c = s[i].latin1(); switch (c) { case '\\': case '"': case '$': r+="\\"; } r += s[i]; } r += "\""; return r; } /*! Returns the string \a s with the characters '\' and '"' quoted by a preceeding '\'. \sa shellQuote() */ QString Global::stringQuote(const QString& s) { QString r="\""; for (int i=0; i<(int)s.length(); i++) { char c = s[i].latin1(); switch (c) { case '\\': case '"': r+="\\"; } r += s[i]; } r += "\""; return r; } /*! Finds all documents on the system's document directories which match the filter \a mimefilter, and appends the resulting DocLnk objects to \a folder. */ void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) { QString homedocs = QString(getenv("HOME")) + "/Documents"; DocLnkSet d(homedocs,mimefilter); folder->appendFrom(d); /** let's do intellegint way of searching these files * a) the user don't want to check mediums global * b) the user wants to check but use the global options for it * c) the user wants to check it but not this medium * d) the user wants to check and this medium as well * * In all cases we need to apply a different mimefilter to * the medium. * a) mimefilter.isEmpty() we need to apply the responding filter * either the global or the one on the medium * * b) mimefilter is set to an application we need to find out if the * mimetypes are included in the mime mask of the medium */ StorageInfo storage; const QList<FileSystem> &fs = storage.fileSystems(); QListIterator<FileSystem> it ( fs ); for ( ; it.current(); ++it ) { if ( (*it)->isRemovable() ) { // let's find out if we should search on it // this is a candidate look at the cf and see if we should search on it QString path = (*it)->path(); if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) continue; DocLnkSet ide( path, mimefilter ); folder->appendFrom(ide); } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { QString path = (*it)->path() + "/Documents"; DocLnkSet ide( path, mimefilter ); folder->appendFrom(ide); } } } QStringList Global::languageList() { QString lang = getenv("LANG"); QStringList langs; langs.append(lang); int i = lang.find("."); if ( i > 0 ) lang = lang.left( i ); i = lang.find( "_" ); if ( i > 0 ) langs.append(lang.left(i)); return langs; } QStringList Global::helpPath() { + QString qpeDir = QPEApplication::qpeDir(); QStringList path; QStringList langs = Global::languageList(); for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { QString lang = *it; if ( !lang.isEmpty() ) - path += QPEApplication::qpeDir() + "/help/" + lang + "/html"; + path += qpeDir + "/help/" + lang + "/html"; } - path += QPEApplication::qpeDir() + "/pics"; - path += QPEApplication::qpeDir() + "/help/html"; - path += QPEApplication::qpeDir() + "/docs"; + path += qpeDir + "/pics"; + path += qpeDir + "/help/html"; + /* we even put english into the en dir so try it as fallback as well for opie */ + path += qpeDir + "/help/en/html"; + path += qpeDir + "/docs"; return path; } #include "global.moc" diff --git a/library/inlinepics_p.h b/library/inlinepics_p.h index 8ac1a69..594a0ea 100644 --- a/library/inlinepics_p.h +++ b/library/inlinepics_p.h @@ -1,3048 +1,3039 @@ -/* Generated by qembed */ -#ifndef _667541281 -#define _667541281 +#ifndef _QEMBED_1804289383 +#define _QEMBED_1804289383 #include <qimage.h> -#include <stdlib.h> +#include <qdict.h> static const QRgb _to1_data[] = { 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 0x7d7e7e9a,0xf38881b1,0xf7a8acd4,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf6c1d9ed,0xf7b6a3c3,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 0xab7b7b98,0xbc435dbe,0xe6a45a8b,0xdf92cafe,0xf1b495b7,0xdaa4bae3,0xde9cc3f1,0xf9b36189,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 0xa3717190,0xbc4b65bc,0xcea43e71,0x9975b2fc,0xc0ab6592,0xa597a3d9,0x9d7cabf0,0xdba84172,0xe49cb3e1,0x56afafc2,0x0,0x0,0x0,0x0, 0x61636385,0xe97e5c87,0xbb9f699d,0x9ba5d2f9,0xacc9b2c4,0x9fc7dcec,0xa7b3b2d3,0xc0a46a9a,0xf2b5a7be,0x1aa3a3b8,0x0,0x0,0x0,0x0, 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 }; +/* Generated by qembed */ +static const QRgb accessories_data[] = { + 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0, + 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0, + 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0, + 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000, + 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000, + 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00, + 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00, + 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0, + 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0, + 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0, + 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0, + 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb appearance_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x6e5c528,0x95f2e089,0x51d3bf5a,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x68efd96a,0xfffefae1,0xeef3e9b4,0x20847319,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x10e6c626,0xe6f8ecaa,0xfffffcd8,0xfffffbd7,0x9ed6c56a,0x1090909,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1efdf8d,0x11e4c322,0xa6f3e078,0xfffff9c6,0xfffffbc5,0xfffffbc7,0xfaf9f0ae,0x59ceb843,0x5bea322,0x0,0x0,0x0, + 0x41ecd14b,0x93f3df73,0xc9f6e686,0xf1f9ed98,0xfffbf3b3,0xfffbf5d0,0xfffbf296,0xfffbf4bf,0xfffaf2be,0xfefcf4ab,0xe2f6e78e,0xb3f3e17e,0x7debd462,0x18c5aa23, + 0xdef3d84a,0xfffdeb57,0xfffef150,0xfffef345,0xfffbf4ba,0xffffffff,0xffffffff,0xffffffff,0xfffffefc,0xfffbee52,0xfffef24a,0xfffdef54,0xfffde657,0x93bba42f, + 0x57d7b91e,0xfaf9e136,0xfffef142,0xfffff442,0xfff2ebbd,0xff6f6f6f,0xffdedede,0xff858585,0xffbebebd,0xfffbef60,0xfffff343,0xfffded40,0xe6dbc128,0x35483d09, + 0x0,0x6ad5ba27,0xfdfbe84d,0xfffef45a,0xfff9ef7c,0xff8a866f,0xffede7bc,0xff9c987f,0xffd8d196,0xfffef459,0xfffef159,0xede3cc39,0x4654480c,0x0, + 0x0,0x14d420c,0xa4e9d141,0xfffef371,0xffefe58e,0xfff0e8ab,0xfff1eaad,0xfff0e8ab,0xffeee7a9,0xfff8ee71,0xfef9e962,0x69786814,0x1040404,0x0, + 0x0,0x0,0x6bebd142,0xfffef386,0xfff0e9ad,0xffe8e8e8,0xffe7e7e7,0xffe8e8e8,0xffedebe0,0xfffbf288,0xfaf3e26b,0x2b413807,0x0,0x0, + 0x0,0x0,0x82f0d854,0xfffef59f,0xfff9f29e,0xffeae4c3,0xffede7c9,0xffede8c9,0xfff0e8ad,0xfffff9a3,0xfcf7e983,0x376e5e0f,0x0,0x0, + 0x0,0x0,0xa1f4df6f,0xfffef7b5,0xfffef8b4,0xfffcf19c,0xf1e6d776,0xf8f1e383,0xfffef6ab,0xfffef8b7,0xfffdf1a2,0x53927e19,0x0,0x0, + 0x0,0x0,0x9befd761,0xfcf7e896,0xd2cdbc5d,0x6a7f6f1c,0x1c1b1703,0x215e500d,0x80c6b140,0xe5ebda7c,0xfdf9e78f,0x5986741a,0x0,0x0, + 0x0,0x0,0x16937e18,0x456a5b13,0xf050401,0x1b1b1b,0x0,0x0,0x222222,0x11574a0a,0x487b6a18,0xf100e02,0x0,0x0 +}; + static const QRgb AppsIcon_data[] = { 0xff83acde,0xff8bb5e6,0xff81b0e6,0xff74a9e6,0xff65a2e6,0xff5a9de6,0xff5198e6,0xff4f97e6,0xff4f97e6,0xff4f97e6,0xff4d96e5,0xaa3a8dda,0x0,0x0, 0xff91b8e5,0xffafd2fc,0xff9ac9fc,0xff7ebafc,0xff5fabfc,0xff48a0fc,0xff3597fc,0xff3094fc,0xff2f94fc,0xff2f94fc,0xff2d93fa,0xaa218aea,0x0,0x0, 0xffa0c0e5,0xffddebfb,0xffd7e9fb,0xffd0e5fb,0xffc7e1fb,0xffc1defb,0xffbadcfb,0xffb7dafb,0xffb4d9fb,0xffb2d8fb,0xffa8d2f8,0xaa74b3e5,0x0,0x0, 0xffa9c5e6,0xfff4faff,0xfff2f9ff,0xffeff8ff,0xffebf7ff,0xffe8f6ff,0xffe5f5ff,0xffe0f3ff,0xffddf2ff,0xffdaf1ff,0xffcce8fb,0xaa87bde4,0x0,0x0, 0xffa8c5e6,0xfff2faff,0xfff0f9ff,0xffecf7ff,0xffe2f1fd,0xffdaeefe,0xffd4ecff,0xffc6e5ff,0xffbde1ff,0xffb7deff,0xffabd6fc,0xaa72b2e8,0x0,0x0, 0xffa7c5e6,0xffeff9ff,0xffedf8ff,0xffe7f5fe,0xffc5ddf4,0xffb5d4f6,0xffadd4fc,0xff8cc4fc,0xff74b8fc,0xff68affc,0xff63acfb,0xd953a2f7,0x8e50a3f8,0x1f48a1f7, 0xffa6c5e6,0xffecf8ff,0xffe9f7ff,0xffe3f4fe,0xffbfd8f0,0xffcbddf3,0xffdcecfc,0xffd1e6fc,0xffc9e3fc,0xffc3e0fc,0xffbfdffc,0xffbcddfc,0xffa5d2f8,0x3991c9f5, 0xffa4c4e6,0xffe8f6ff,0xffe5f5ff,0xffdef1fe,0xffbfd9f1,0xffd9e7f6,0xfff2faff,0xffecf7ff,0xffe8f6ff,0xffe3f4ff,0xffdff2ff,0xffdbf1ff,0xffbde2fa,0x39a4d5f6, 0xffa3c3e6,0xffe5f5ff,0xffe1f4ff,0xffdbf0fe,0xffbdd8f1,0xffd6e6f6,0xffedf8ff,0xffe7f6ff,0xffe3f4ff,0xffdef2ff,0xffd9f1ff,0xffd6f0ff,0xffb9e1fa,0x39a1d4f6, 0xffa2c3e6,0xffe2f4ff,0xffdef3ff,0xffd7effe,0xffbad7f1,0xffd2e5f6,0xffe9f7ff,0xffe3f4ff,0xffdef2ff,0xffdaf0ff,0xffd4efff,0xffd1eeff,0xffb5dffa,0x399ed3f6, 0xff9abee4,0xffd3ebfb,0xffd0eafb,0xffcae7fa,0xffb3d2ef,0xffcfe4f6,0xffe4f5ff,0xffdef2ff,0xffd9f1ff,0xffd4efff,0xffd0edff,0xffcdecff,0xffb2defa,0x399bd2f6, 0xaa6da6d8,0xaa8bbee4,0xaa89bde4,0xaa87bce4,0xc696c0e5,0xffcce3f6,0xffe0f4ff,0xffdaf1ff,0xffd6f0ff,0xffd1eeff,0xffcdecff,0xffc9ecff,0xffafddfa,0x399ad0f6, 0x0,0x0,0x0,0x0,0x559bc4ea,0xffb2d7f3,0xffc2e4fa,0xffbce2fa,0xffb9e1fa,0xffb6dffa,0xffb2defa,0xffafddfa,0xff9ad2f8,0x3988c9f6, 0x0,0x0,0x0,0x0,0x138bbeea,0x399dccf1,0x39a9d6f6,0x39a4d5f6,0x39a2d4f6,0x399fd3f6,0x399bd1f6,0x399ad1f6,0x3988caf6,0xd79c3f6 }; +static const QRgb back_inactive_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x4f1f1f1,0x1f1f1f1,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x2f1f1f1,0x33a7bef1,0x9483a4f1,0x997d9ef1,0x947798f1,0x78668bf1,0xb3a6dbf,0x0,0x0, + 0x0,0x0,0x0,0x0,0x1f1f1f1,0x32a8bff1,0xca8caaec,0xffc5d4e8,0xffc7d5e8,0xffc1d1e8,0xe2738dcc,0x152b4b72,0x0,0x0, + 0x0,0x0,0x0,0x1f1f1f1,0x27a5bdf1,0xc384a4ec,0xfebccbdd,0xffd2d9db,0xffcfd7dd,0xeb8297c7,0x4a34557f,0x2000000,0x0,0x0, + 0x0,0x0,0xf1f1f1,0x18c6d4f1,0xa786a5e5,0xffa9bbd4,0xffc2cbd1,0xffc0cad1,0xf1889cc7,0x5a3a5781,0x5000000,0x0,0x0,0x0, + 0x0,0x0,0xff1f1f1,0x8e82a1e8,0xf99ab1cb,0xffb4c0c6,0xffb4c0c6,0xfb8ca0ca,0x8643669b,0xa172235,0x0,0x0,0x0,0x0, + 0x0,0x0,0x4c7191f1,0xf688a1c7,0xffa7b5bb,0xffa8b5bb,0xff93a7c0,0x983f619a,0xe172a4a,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1e7692f1,0xcb617fcb,0xff99a8b5,0xff9dacb4,0xff9baab4,0xd25b79c5,0x1e2657c6,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x2f1f1f1,0x234866c1,0xd16580bb,0xff91a2ad,0xff94a4ac,0xff8a9daf,0xb94f71c4,0xe2049a7,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x2aeb5dd,0x433a60ce,0xef667fb9,0xff8c9ca7,0xff8d9da7,0xfb7f92ab,0x8c4367bb,0x41d48ab,0x0,0x0,0x0, + 0x0,0x0,0x0,0xf1f1f1,0x3949cdb,0x59355ad1,0xf36c81b1,0xff8798a1,0xff8799a1,0xfd788ba9,0x83355cc2,0x1173372,0x0,0x0, + 0x0,0x0,0x0,0x0,0xf1f1f1,0x3f1f1f1,0x5e2654ca,0xe95f7bad,0xf0617da7,0xf0617ca7,0xe2486db1,0x1c1a3b8c,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xf1f1f1,0x787878,0x251a3f9d,0x32173b8e,0x32173a8d,0x2b173884,0x50e0e13,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb back_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x4fefefe,0x1fefefe,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x2fefefe,0x33c7e2fe,0x9488c2fe,0x997ab9fe,0x946daffe,0x784f97fe,0xb175be3,0x0,0x0, + 0x0,0x0,0x0,0x0,0x1fefefe,0x32c8e3fe,0xca99cafd,0xffe8f3fc,0xffeaf4fc,0xffe5f1fc,0xe2659cee,0x150c2863,0x0,0x0, + 0x0,0x0,0x0,0x1fefefe,0x27c4e1fe,0xc38ac2fd,0xfee0edf8,0xfff2f6f7,0xfff0f5f8,0xeb84adea,0x4a12347f,0x2000000,0x0,0x0, + 0x0,0x0,0xfefefe,0x18e9f3fe,0xa78ec4fb,0xffc9dff3,0xffe6edf1,0xffe4ecf1,0xf191b6ea,0x5a173782,0x5000000,0x0,0x0,0x0, + 0x0,0x0,0xffefefe,0x8e85befc,0xf9b3d3ed,0xffd7e4e9,0xffd7e4e9,0xfb9abcec,0x861f4eb4,0xa030713,0x0,0x0,0x0,0x0, + 0x0,0x0,0x4c62a2fe,0xf691beea,0xffc7d8df,0xffc8d8df,0xffa7c6e4,0x981b46b3,0xe030b27,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1e6ba4fe,0xcb467fed,0xffb0c8d8,0xffb8cdd7,0xffb4cbd7,0xd23d71e8,0x1e0937e9,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x2fefefe,0x23244ee5,0xd14c80df,0xffa2bfcf,0xffa8c2cd,0xff95b7d1,0xb92d62e7,0xe0626c7,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x2d0d8f8,0x431744ef,0xef4f7fdd,0xff99b6c7,0xff9bb7c6,0xfb7fa4cc,0x8c1f50df,0x40524cc,0x0,0x0,0x0, + 0x0,0x0,0x0,0xfefefe,0x3a8b5f7,0x59133bf1,0xf35883d3,0xff90afbe,0xff90b0be,0xfd6f97c9,0x83133ee6,0x1031164,0x0,0x0, + 0x0,0x0,0x0,0x0,0xfefefe,0x3fefefe,0x5e0933ec,0xe94375ce,0xf0467ac7,0xf04679c7,0xe2245ad4,0x1c041899,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xfefefe,0x707070,0x25041bb8,0x3203189d,0x3203179c,0x2b031589,0x5010102,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb beam_data[] = { + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xdcdcdc, + 0xffc3c3c3,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffc3c3c3, + 0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xffa0a0a0,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, + 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc +}; + +static const QRgb bell_data[] = { + 0xfffffa,0x0,0x1e2e2e1,0x40938117,0x4b8c7c1a,0xa090804,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x31bbb55b,0xdcc0ac29,0xe8bfa51d,0xa5a89226,0x4b807420,0x13000000,0x7000000,0x1000000,0x0,0x0,0x0,0x0, + 0x0,0x488893c,0xb5c0be2f,0xffecd50d,0xffebbf05,0xffbe9a04,0xde96820a,0x43302a10,0x1e000000,0x9000000,0x1000000,0x0,0x0,0x0, + 0x0,0x25a19738,0xead5cc1b,0xfff7e605,0xfff6cb07,0xffddad01,0xffaf8d03,0xba766819,0x430c0a04,0x1c000000,0x6000000,0x0,0x0,0x0, + 0x0,0x30a6943b,0xf0e1d016,0xfffaf007,0xfff4d802,0xfff5c502,0xffcda300,0xf9947e0d,0x89534517,0x3c020201,0x13000000,0x3000000,0x0,0x0, + 0x1000000,0x31b29d54,0xf0e7d61b,0xfffdf703,0xfff8de01,0xfffcca06,0xffecb900,0xffc39d03,0xf49c8222,0x7e4f471f,0x2c010100,0xd000000,0x2000000,0x0, + 0x1000000,0x31b6a257,0xf0e9d71c,0xfffdf801,0xfff9ed01,0xfff5d203,0xfffacc06,0xfff1c407,0xffe5c20a,0xf7cab927,0x717f782f,0x25000000,0xb000000,0x2000000, + 0x1000000,0x31b2a243,0xf0ecdd13,0xfffdf70a,0xfff6ef18,0xffe7d213,0xffcdac0d,0xffb28c07,0xffb28b0a,0xffc8a508,0xfad3b91f,0x72776521,0x23000000,0xa000000, + 0x1000000,0x5ed5c442,0xfaf1df19,0xffd9c508,0xffb49806,0xff9a7c00,0xffb0930f,0xff9b7804,0xff9c7303,0xffd4a508,0xfecca719,0xd08d7422,0x47000000,0x1a000000, + 0x8ac9d4f,0xb4d8bd2a,0xffd2a70a,0xffae8308,0xffa07c01,0xffb89209,0xffcab546,0xffedcf2f,0xffab8706,0xffb69017,0xe479631e,0x93110d05,0x5d000000,0x25000000, + 0x1394822c,0xd8c9a718,0xffe3af0a,0xffddbc07,0xfff2ed07,0xfff3e516,0xffbca716,0xfaab9819,0xd66d5c13,0xb340340d,0x91050401,0x79000000,0x4a000000,0x1c000000, + 0x7221d0b,0x749b8020,0xddaa8a26,0xe2a89523,0xe4a0a61f,0xe87f821a,0xc34d470e,0xa11f1c05,0x8e000000,0x7c000000,0x64000000,0x44000000,0x22000000,0xb000000, + 0x4000000,0x19010100,0x43070603,0x63040301,0x76020200,0x7f000000,0x7d000000,0x6c000000,0x57000000,0x3f000000,0x29000000,0x16000000,0x8000000,0x2000000, + 0x1000000,0xa000000,0x20000000,0x39000000,0x45000000,0x45000000,0x3e000000,0x2e000000,0x1e000000,0x11000000,0x8000000,0x3000000,0x1000000,0x0 +}; + +static const QRgb binary_data[] = { + 0x0,0x40d0d0df,0xffd2d2e0,0xffd6d6e3,0xffd6d6e3,0xffd5d5e3,0xffd5d5e3,0xffd3d3e1,0xffc7c7d8,0xaba2a2bb,0x109c9cb6,0x0,0x0,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xfffbfbfe,0xfff6f6fd,0xffeaeaf3,0xffe4e4ef,0xffc2c2d4,0x9fa7a7bf,0x189c9cb6,0x0,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xffe2e2ea,0xfff4f4fb,0xffededf5,0xffdfdfeb,0xffbdbdd0,0xffadadc3,0x9b9c9cb6,0x189c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe0e0e8,0xffa8a8bf,0xffededf5,0xffefeff7,0xffe1e1ec,0xffbebed1,0xffb6b6cb,0xffa4a4bd,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe8e8ee,0xffababc1,0xffefeff6,0xfff1f1f8,0xffe9e9f2,0xffdadae6,0xffcecedd,0xffaeaec4,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffd1d1dd,0xffa2a2bb,0xffb1b1c6,0xfff2f2f8,0xffe6e6f0,0xffd4d4e3,0xffd0d0df,0xffafafc5,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfff7f7f9,0xffeeeef5,0xffeaeaf3,0xffe8e8f1,0xffe0e0ec,0xffdbdbe8,0xffd8d8e6,0xffb2b2c8,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfffdfdff,0xffefeff7,0xffeeeef5,0xffe6e6f0,0xffe2e2ed,0xffdadae8,0xffddddea,0xffb4b4c9,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffededf3,0xffbdbdd0,0xffd4d4e1,0xffe8e8f1,0xffc7c7d7,0xffb6b6cb,0xffe1e1ed,0xffb6b6ca,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xfffdfdff,0xffc0c0d1,0xffdcdce8,0xffa7a7be,0xffe5e5ef,0xffb2b2c7,0xffb7b7cb,0xffe2e2ed,0xffb6b6ca,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xfffbfbfe,0xffdadae6,0xffc7c7d7,0xffc6c6d7,0xffe7e7f1,0xffb9b9cd,0xffaaaac1,0xffd1d1e0,0xffb6b6cb,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe2e2eb,0xfff9f9fd,0xfff3f3f9,0xffd9d9e5,0xffececf3,0xffe9e9f1,0xffccccdc,0xffcacada,0xffd5d5e3,0xffb6b6cb,0x409c9cb6,0x0, + 0x0,0x40d0d0df,0xffe1e1eb,0xfff8f8fc,0xfff3f3f9,0xfff1f1f8,0xffefeff6,0xffebebf4,0xffe9e9f2,0xffe6e6f0,0xffe3e3ee,0xffb6b6cb,0x409c9cb6,0x0, + 0x0,0x40a3a3bb,0xffa5a5bd,0xffa7a7bf,0xffa7a7be,0xffa7a7be,0xffa6a6be,0xffa6a6be,0xffa6a6be,0xffa5a5bd,0xffa5a5bd,0xff9f9fb9,0x409c9cb6,0x0 +}; + +static const QRgb bold_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x30000000,0x60000000,0x60000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x40000000,0xcf000000,0xff000000,0x8f000000,0x8f000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0xc000000,0x87000000,0xdb000000,0x50000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x40000000,0xff000000,0x7f000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x1c000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xe3000000,0xdf000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x30000000,0xd7000000,0x9f000000,0x18000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x0,0x60000000,0xff000000,0x60000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x20000000,0xaf000000,0xbf000000,0x30000000,0x0,0x0, + 0x0,0x0,0x0,0x50000000,0xdb000000,0xff000000,0xab000000,0x9f000000,0xb7000000,0xc3000000,0x30000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x20000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb calculator_data[] = { + 0x2000000,0xfff8f8f8,0xfff1f1f1,0xffe1e1e1,0xffd4d4d4,0xffdfdfdf,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0xffeaeaea,0x13000000,0xe000000, + 0x7000000,0xff649c64,0xff549254,0xff3c763c,0xffffffff,0xff3c763c,0xff468946,0xff468946,0xff468946,0xff468946,0xff468946,0xff2e792e,0xff005800,0x2b000000, + 0xe000000,0xff508b50,0xff2c6b2c,0xff134a13,0xffffffff,0xff134a13,0xff185e18,0xff1b691b,0xff1c6e1c,0xff1c6e1c,0xff1c6e1c,0xff005b00,0xff004300,0x55000000, + 0x13000000,0xff3f7c3f,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff005300,0xff005c00,0xff005c00,0xff005c00,0xff005100,0xff003a00,0x71000000, + 0x15000000,0xff438343,0xff185e18,0xff003e00,0xffffffff,0xff003900,0xff004200,0xff004600,0xff004b00,0xff004b00,0xff004f00,0xff004d00,0xff003a00,0x7f000000, + 0x15000000,0xff468946,0xff1c6e1c,0xff004f00,0xffffffff,0xff004600,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff004900,0xff003a00,0x7f000000, + 0x15000000,0xff438343,0xff196419,0xff005300,0xff005300,0xff004f00,0xff004600,0xff004600,0xff004600,0xff004200,0xff004b00,0xff004d00,0xff003a00,0x7f000000, + 0x15000000,0xff3f7c3f,0xffffffff,0xff7fa57f,0xff005300,0xff7fa57f,0xffffffff,0xff005300,0xff7fa97f,0xffffffff,0xff7fa97f,0xff005100,0xff003a00,0x7f000000, + 0x15000000,0xff438343,0xff8bac8b,0xffffffff,0xff7fa07f,0xffffffff,0xff7fa27f,0xff004b00,0xff004600,0xff004200,0xff004600,0xff004600,0xff003700,0x7f000000, + 0x15000000,0xff468946,0xff196419,0xff7fa07f,0xffffffff,0xff7fa07f,0xff004b00,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff003500,0x7f000000, + 0x15000000,0xff438343,0xff8bac8b,0xffffffff,0xff7fa07f,0xffffffff,0xff7fa27f,0xff004b00,0xff004600,0xff004200,0xff004600,0xff004600,0xff003700,0x7f000000, + 0x15000000,0xff2a6e2a,0xffffffff,0xff7fa07f,0xff004900,0xff7fa07f,0xffffffff,0xff004900,0xff7fa47f,0xffffffff,0xff7fa47f,0xff004800,0xff003600,0x7f000000, + 0x13000000,0xff005400,0xff003d00,0xff003700,0xff003a00,0xff003700,0xff003500,0xff003700,0xff003700,0xff003500,0xff003700,0xff003600,0xff003000,0x71000000, + 0xe000000,0x2b000000,0x55000000,0x71000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x71000000,0x55000000 +}; + static const QRgb Calibrate_data[] = { 0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x5ffffff,0x8dfdfdf,0xdc4c4c4,0x13aeaeae,0x1ba1a1a1,0x258a8a8a,0x2f828282,0x39797979,0x41727272,0x486e6e6e, 0x4d6a6a6a,0x51686868,0x51656565,0x4f646464,0x4b636363,0x45646464,0x3d646464,0x32666666,0x286c6c6c,0x1e6f6f6f,0x15797979,0xd898989,0x104f4f4f,0x4bfbfbf, 0x1ffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xacccccc,0x11b4b4b4,0x1aa7a7a7,0x26949494,0x33878787,0x417e7e7e, 0x9c84939a,0xda74889d,0xf461749c,0xfd52659b,0xff48589b,0xff46599e,0xff4c5e9a,0xfd586c99,0xf5657b97,0xdd728791,0xa6758484,0x575e5e5e,0x495e5e5e,0x39626262, 0x2a676767,0x4e1f1f1f,0xaa040404,0xffb0b0b0,0x5999999,0x2808080,0xffffff,0xffffff,0x1ffffff,0x3ffffff,0x6d5d5d5,0xbd1d1d1,0x14b3b3b3,0x209f9f9f, 0x2e909090,0x3f868686,0xb681939e,0xf365799d,0xff596fa4,0xff6d89ab,0xff84a7af,0xff97c0b4,0xffa2d0b5,0xffa8d7b7,0xffa2d0b4,0xff97c1af,0xff87aeaa,0xff7696a3, 0xff658199,0xf4657d8d,0xc3728384,0x5d5a5a5a,0x702e2e2e,0xf0020202,0xffc2c2c2,0xffa7a7a7,0xff636363,0x5999999,0x2808080,0xffffff,0x3ffffff,0x6d5d5d5, 0xbd1d1d1,0x16aeaeae,0x229e9e9e,0x348e8e8e,0x8089999b,0xe97186a1,0xff647da7,0xff81a4b0,0xffa4d2ba,0xffb5e8bc,0xffbcf0bf,0xffbef4be,0xffbff6be,0xffbff6bc, 0xffbef4bc,0xffb7edb7,0xffb3e7b5,0xffaadcae,0xff98c5a5,0xff7ca197,0xff638086,0xf249595e,0xf7040405,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2e2e2e,0xff0f0f0f, 0x5999999,0x2808080,0x5ffffff,0xacccccc,0x14b3b3b3,0x229e9e9e,0x358c8c8c,0xa48697a0,0xf7687ca2,0xff7c9db0,0xffa4d2b9,0xffbbefc0,0xffc2f9c1,0xffc4fbc1, 0xffc3fac0,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa3d4a1,0xff90bc92,0xff050707,0xff060808,0xff8b89b4,0xff9b9ba6, 0xff6b6b6b,0xff2f2e2e,0xff0b0b0b,0x8c070707,0xb747474,0x4808080,0x8dfdfdf,0x10afafaf,0x1f9c9c9c,0x338c8c8c,0xa38396a0,0xfa6379a2,0xff87aab2,0xffb3e5be, 0xffc3fac2,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbbf1b8,0xffb6ebb3,0xffaee2ab,0xffa4d5a1,0xff96c294,0xff919291, 0xff080b08,0xffb8b8c0,0xff8d8ca3,0xff4d4d64,0xff2b2a2d,0xff0b0b0b,0xf1020202,0x541a1a1a,0x14595959,0x8606060,0xcbfbfbf,0x19a3a3a3,0x2c8b8b8b,0x7e88989a, 0xf7667ca1,0xff87aab2,0xffb6e9be,0xffc6fdc3,0xffc5fcc2,0xffc5fcc2,0xffc4fbc1,0xffc3fac0,0xffc1f8be,0xffc0f7bd,0xffbdf4ba,0xffbaf0b7,0xffb5eab2,0xffaee2ab, 0xffa3d4a0,0xff95c092,0xff0f1210,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff67676a,0xff27272d,0xff08080a,0xf8040404,0x7f252525,0x374a4a4a,0x1e4d4d4d,0xf555555, 0x11a5a5a5,0x238a8a8a,0x3c7b7b7b,0xe97184a0,0xff7c9db0,0xffb3e5be,0xffc6fdc3,0xffc6fdc3,0xffc5fcc2,0xffc4fbc1,0xffc2f9bf,0xffc1f8be,0xffbff6bc,0xffbcf3b9, 0xffb9efb6,0xffb4e9b1,0xfface0a9,0xffa1d29e,0xff95c192,0xff878b85,0xff080b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2f2f,0xff0b0b0b,0xff020303,0xf72e3a39, 0x72414141,0x4c404040,0x2c404040,0x17434343,0x18959595,0x307a7a7a,0xb57f919c,0xff637ca6,0xffa4d1b8,0xffc2f9c1,0xffbdf4ba,0xff96cd93,0xff71a86e,0xff50874d, 0xff356c32,0xff235a20,0xff2b6228,0xff3f763c,0xff5a9058,0xff7baf78,0xff98c996,0xff93be91,0xff202520,0xff090b08,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2e, 0xff0b0b0b,0xff030403,0xff212d21,0xff33463c,0xd34c5c55,0x643b3b3b,0x3e3a3a3a,0x223c3c3c,0x217c7c7c,0x3c6f6f6f,0xf263779a,0xff80a2af,0xffb9edbe,0xff8ec58b, 0xff5a9157,0xff5f965c,0xff80b77d,0xff9ad197,0xffb0e7ad,0xffb9f0b6,0xffa9dfa6,0xff8ac087,0xff679b64,0xff3c6d39,0xff366134,0xff787f78,0xff080a08,0xffa8a9a8, 0xffa8a8a8,0xff6b6b6c,0xff2e2f2e,0xff0b0b0b,0xff030403,0xff243123,0xff3b523b,0xff425c48,0xf7475d56,0x7b363636,0x51323232,0x2f363636,0x29707070,0x977b8c93, 0xff576da2,0xff94c1a6,0xff6ea56c,0xff659c62,0xff9ad197,0xffc1f8be,0xffc0f7bd,0xffbef5bb,0xffbbf2b8,0xffb9efb6,0xffb3e8b0,0xfface0a9,0xffa1d29e,0xff94bf91, 0xff212720,0xff050704,0xffbdbdbd,0xff000000,0xff606160,0xff2e2e2e,0xff0b0b0b,0xff030403,0xff233022,0xff3c543b,0xff4c6b4b,0xff557857,0xff50715d,0xbe48554c, 0x622f2f2f,0x3c2f2f2f,0x32616161,0xd8738598,0xff627e98,0xff5b8e5d,0xff7fb67c,0xffc0f7bd,0xffc1f8be,0xffa7dea4,0xff76ad73,0xff487f45,0xff235a20,0xff0b4108, 0xff1b5018,0xff366834,0xff588456,0xff778178,0xff080b08,0xffc2c2c2,0xffa9a9a9,0xff686868,0xff000000,0xff111111,0xff030402,0xff222f21,0xff3b533a,0xff4c6a4a, 0xff5a7f58,0xff618b60,0xff5c8663,0xe64e6458,0x722b2b2b,0x47282828,0x39555555,0xf35f7397,0xff466b5c,0xff77ab77,0xffc0f7bd,0xffbff6bc,0xff80b77d,0xff3d743a, 0xff60975d,0xff84bb81,0xffa0d69d,0xffaee4ab,0xff93c690,0xff6b9a69,0xff192219,0xff030603,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b,0xff2f2e2f,0xff0c0c0c,0xff020302, 0xff202e1f,0xff395038,0xff486747,0xff587d56,0xff638e60,0xff689766,0xff629167,0xf74d6a5b,0x7f262626,0x53252525,0x3e4e4e4e,0xfd3b4e79,0xff456f51,0xffb9efb9, 0xffbff6bc,0xff73aa70,0xff60975d,0xff9dd49a,0xffb9f0b6,0xffb5ebb2,0xffb1e7af,0xffabdfa8,0xff9ecf9c,0xff87b185,0xff1d261d,0xffc2c2c2,0xffaaaaaa,0xff6b6b6b, 0xff2f2f2f,0xff0b0b0b,0xff010201,0xff152214,0xff364d35,0xff456343,0xff537851,0xff608b5d,0xff679765,0xff6a9b67,0xff649665,0xfd51745d,0x8a232323,0x5b222222, 0x43484848,0xff1d2f45,0xff7aa888,0xffbbf1b9,0xff7eb57b,0xff60975d,0xffb9f0b6,0xffb9f0b6,0xff8ec58b,0xff548a51,0xff245921,0xff063904,0xff1b4a19,0xff152515, 0xffbfbfbf,0xffaaaaaa,0xff6b6b6b,0xff2e2f2e,0xff0b0b0b,0xff020302,0xff162315,0xff112810,0xff3e5c3c,0xff4f744d,0xff5a8558,0xff639260,0xff679a64,0xff689d65, 0xff629761,0xff537f5b,0x92212121,0x61202020,0x45434343,0xff1c2f3e,0xffa3d3b2,0xffa2d99f,0xff3e753b,0xff9cd399,0xffb8efb5,0xff7bb278,0xff356c32,0xff659b62, 0xff89be86,0xff97c894,0xff486547,0xff0c140c,0xffb6b6b6,0xff6b6b6b,0xff2e2e2e,0xff0b0b0b,0xff010200,0xff192718,0xff324a31,0xff173616,0xff355a33,0xff558052, 0xff5d8c5a,0xff62955f,0xff659a62,0xff649b61,0xff5e945d,0xff548459,0x961f1f1f,0x651c1c1c,0x443c3c3c,0xff2f4264,0xff9eccaf,0xff73aa71,0xff639a60,0xffb7eeb4, 0xff91c88e,0xff397036,0xff96cc93,0xffabe1a8,0xffa2d69f,0xff93c391,0xff040504,0xffbfbfbf,0xff6b6b6b,0xff232423,0xff0b0b0b,0xff0a0e0a,0xff0f1d0e,0xff1c351b, 0xff3d5b3b,0xff2b5029,0xff2a5527,0xff588755,0xff5d8f5a,0xff60955d,0xff60975e,0xff5d945a,0xff5a8f59,0xff4e7b53,0x971b1b1b,0x65191919,0x42363636,0xfd465a7f, 0xff92bcaa,0xff497e47,0xff86bd83,0xffb5ecb2,0xff5c9359,0xff6ba268,0xffade3aa,0xff85bb82,0xff3c703a,0xff0a3908,0xff000000,0xff636363,0xff191919,0xff0a120a, 0xff040704,0xff273927,0xff253f24,0xff143312,0xff456b43,0xff3c673a,0xff1e4d1b,0xff588b55,0xff5b9058,0xff5d935a,0xff5b9258,0xff598e56,0xff548952,0xfd446a4a, 0x94181818,0x64171717,0x3e313131,0xf45a708a,0xff83a9a4,0xff295e27,0xffa0d79d,0xffb2e9af,0xff336a30,0xff91c88e,0xfface2a9,0xff437940,0xff063903,0xff033201, 0xff000000,0xff000000,0xff040504,0xff192719,0xff0b2409,0xff3c593a,0xff395b37,0xff0b3209,0xff4a7648,0xff497946,0xff144711,0xff558a52,0xff578d54,0xff568d53, 0xff568c53,0xff538950,0xff4d824b,0xf73d5c43,0x8f151515,0x5e161616,0x372e2e2e,0xd9677d87,0xff72939f,0xff154913,0xffafe6ac,0xffb0e7ad,0xff195016,0xffa8dfa5, 0xffa9dfa6,0xff144911,0xff073a04,0xff043502,0xff022e00,0xff072d05,0xff537551,0xff476845,0xff022300,0xff476c45,0xff487146,0xff043102,0xff4d7d4a,0xff4e824c, 0xff0e440c,0xff52884f,0xff50874d,0xff51874e,0xff50874d,0xff4c834a,0xff497f48,0xea344d3b,0x86131313,0x57121212,0x302b2b2b,0x9f607273,0xff638096,0xff1f4f1f, 0xff9ad198,0xffade4aa,0xff2f662c,0xff8ec58b,0xffa6dca3,0xff437940,0xff093d06,0xff053803,0xff043302,0xff295427,0xff5d855a,0xff456d43,0xff113a0e,0xff507b4d, 0xff457442,0xff0e400c,0xff4e824b,0xff487d45,0xff154b12,0xff4d844a,0xff4d834a,0xff4c8349,0xff4a8147,0xff477e45,0xff427342,0xc929382c,0x79111111,0x4e101010, 0x26282828,0x46212121,0xf2617888,0xff2f5938,0xff77ac77,0xffabe2a8,0xff548b51,0xff659c62,0xffa2d99f,0xff7cb279,0xff3e733b,0xff0f430c,0xff31642f,0xff598956, 0xff659463,0xff356433,0xff295927,0xff558652,0xff3a6d38,0xff1e521b,0xff4d824a,0xff3c7339,0xff1d531a,0xff4a8047,0xff498046,0xff498046,0xff457c42,0xff427840, 0xf7335338,0x970f0f0f,0x6b0e0e0e,0x410c0c0c,0x1d232323,0x391f1f1f,0xb8607473,0xff42645d,0xff497a4d,0xffa7dea5,0xff82b97f,0xff31682e,0xff86bd83,0xff96cd93, 0xff8fc68c,0xff87bc84,0xff7bb079,0xff73a770,0xff598c56,0xff1b4e18,0xff477b44,0xff588c55,0xff2a5f27,0xff2f652c,0xff4b8148,0xff2f662c,0xff285f25,0xff477e44, 0xff457c42,0xff437a40,0xff42783f,0xff3d6f3d,0xd9283b2d,0x840e0e0e,0x590b0b0b,0x350a0a0a,0x15242424,0x29191919,0x49151515,0xeb5b727b,0xff1e4922,0xff80b483, 0xffa1d89e,0xff689f65,0xff2d642a,0xff568c53,0xff73a970,0xff7eb57c,0xff659b62,0xff42783f,0xff1e541b,0xff41773e,0xff5c9159,0xff477d44,0xff164c13,0xff40773e, 0xff497f46,0xff1f561c,0xff31682e,0xff437a40,0xff41783e,0xff40773d,0xff3d743b,0xf32e4b32,0x970c0c0c,0x6e090909,0x470b0b0b,0x27070707,0xd272727,0x1e1a1a1a, 0x36131313,0x88495852,0xf948626d,0xff39663f,0xff93c894,0xff94cb91,0xff6fa66c,0xff42793f,0xff1f561c,0xff0b4208,0xff1c5219,0xff356b32,0xff4f864c,0xff5f965c, 0xff578e54,0xff275e24,0xff31682e,0xff487f45,0xff356c32,0xff195016,0xff3e753b,0xff3f763c,0xff3e753b,0xff3c733a,0xfb335435,0xbd1c241e,0x7d080808,0x57090909, 0x350a0a0a,0x1c090909,0x7242424,0x120e0e0e,0x250e0e0e,0x400c0c0c,0xac52625f,0xfb3e5a5f,0xff35633a,0xff70a571,0xff89c087,0xff84bb81,0xff7eb57b,0xff77ae74, 0xff71a86e,0xff6aa067,0xff62985f,0xff4b8148,0xff265d23,0xff2b6228,0xff4b8248,0xff447b41,0xff1d541a,0xff2c6329,0xff3d743a,0xff3c7339,0xff3b7239,0xfb305531, 0xd0213024,0x86060606,0x61050505,0x3f040404,0x24070707,0x11000000,0x3000000,0xb171717,0x170b0b0b,0x2c0c0c0c,0x47070707,0xae4b5b56,0xf9425d5f,0xff174518, 0xff386b38,0xff568c55,0xff6aa067,0xff70a76d,0xff5e955b,0xff467d43,0xff2d642a,0xff144b11,0xff32692f,0xff4c8349,0xff487f45,0xff285f25,0xff1d541a,0xff3d743a, 0xff3b7138,0xff397037,0xfa2e5131,0xd0202d24,0x89040404,0x67050505,0x47040404,0x2b060606,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1b090909, 0x2f050505,0x49030303,0x9236423d,0xed4b6461,0xff3a6346,0xff215122,0xff0f430d,0xff033900,0xff0e440b,0xff1e551b,0xff32692f,0xff467d43,0xff4d844a,0xff487f45, 0xff275e24,0xff194f16,0xff356c33,0xff3a7038,0xff376835,0xf22a462d,0xbc18221a,0x85020202,0x67020202,0x49030303,0x2e000000,0x1a000000,0xd000000,0x5000000, 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x47040404,0x61030303,0xc3415249,0xf349675a,0xff578063,0xff5a8a61,0xff598b5c,0xff568a57, 0xff538851,0xff4e844d,0xff366c34,0xff194f17,0xff1c511a,0xff376d36,0xff3a6a39,0xf72b4b2f,0xd8223426,0x94020202,0x7c020202,0x60000000,0x46000000,0x2e000000, 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000, 0xb6314039,0xe23e5648,0xf63d5a4b,0xfd355a44,0xff295432,0xff174817,0xff15421e,0xfd284f34,0xf7315236,0xe82b422e,0xc71d2c20,0x93000000,0x81000000,0x6c000000, 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000, 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000, 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000, 0xffffff,0xffffff }; +static const QRgb center_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, + 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, + 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0, + 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0, + 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, + 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0, + 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0, + 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, + 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, + 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0, + 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb citytime_icon_data[] = { + 0x0,0x0,0x0,0x1b9ebfb,0x2ca9e0fc,0x7688c4f8,0x8f75b7f8,0x856cb1f7,0x4b68b0f5,0x75c9ed8,0x0,0x0,0x0,0x0, + 0x0,0x0,0xed3fcfd,0xa2b8e6fc,0xfbb6e0f9,0xffc5eafe,0xffd1eefe,0xffb9e4fe,0xff89c7fc,0xd46db2f7,0x38509ae6,0x0,0x0,0x0, + 0x0,0xaecfcfd,0xc2bde5fd,0xffade3ff,0xffccf7ff,0xffebfeff,0xffdffdff,0xffb8ecff,0xff97d7ff,0xff76c1ff,0xf14e9ff8,0x3d408ada,0x0,0x0, + 0x0,0x84aed3f9,0xff8dccfe,0xffc8edff,0xffe9f9ff,0xfff2fbff,0xffddfcff,0xffbbedff,0xff9cd8ff,0xff74bfff,0xff55aaff,0xdd3b89ec,0xe295582,0x0, + 0xfd8fdfd,0xed77b7f7,0xffb7e2ff,0xffddf5ff,0xffe4f7ff,0xffd3f3ff,0xffbbedff,0xfface2ff,0xff95d2ff,0xff6ab9ff,0xff53a9ff,0xff2e76e9,0x653b82d1,0x0, + 0x45b4e5fa,0xff4f96f0,0xffc2eafe,0xffd6f3ff,0xffdaf4ff,0xffa4ddff,0xff99d8ff,0xff8aceff,0xff74bfff,0xff5eb0ff,0xff55aaff,0xff1a56da,0xae2b70d5,0x1000000, + 0x6399d1f8,0xff4088eb,0xff57adf7,0xffabe3ff,0xffd3f2ff,0xffc6ebff,0xffafdfff,0xff6cbaff,0xff5bafff,0xff53a9ff,0xff529af5,0xff1f59db,0xcb2d70d7,0x5000000, + 0x5b90caf7,0xff2c6de0,0xff3b83e9,0xff56a6f4,0xffbce6fe,0xffcaeeff,0xffcbefff,0xff62b2ff,0xff4ca1fb,0xff5299f3,0xff5991ec,0xff3a76e4,0xc54287dc,0x5000000, + 0x2d91cdf5,0xfd265fda,0xff2763dd,0xff7baff2,0xffb7e1fc,0xffc8ecfe,0xffccefff,0xff619bed,0xff2663dd,0xff80b2f1,0xff5386e6,0xff0e43d2,0x9c4081cd,0x1000000, + 0x376add3,0xcc4983e4,0xff5383e4,0xffb2dcfc,0xffcceeff,0xffdcf4ff,0xffe1f6ff,0xffb9d7f8,0xffa5ccf6,0xff9ac6f6,0xff71a3ee,0xfd407ce5,0x49306294,0x0, + 0x0,0x456eb0ec,0xfb669aec,0xffbbe3fd,0xffd5f3ff,0xffe9f9ff,0xfff4fcff,0xffe6f8ff,0xffd2f1ff,0xffb6dffc,0xff95c7f9,0xb15592d3,0x903070b,0x0, + 0x0,0x12f516f,0x6d6eafea,0xfaaad9fc,0xffceedfe,0xffe6f7ff,0xfff0fbff,0xffe4f7ff,0xffd1f1ff,0xffb0dcfc,0xc668a4df,0x1e18334d,0x0,0x0, + 0x0,0x0,0x10b151f,0x435094d5,0xc34c8ae0,0xf73c74e0,0xff4a7be2,0xfc5286e5,0xe37db3ea,0x88528bc2,0x150e1e2d,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x4000000,0x202a5885,0x35306498,0x302a5886,0x130b1824,0x2000000,0x0,0x0,0x0,0x0 +}; + static const QRgb Clock_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20b4b4c3,0x70b2b2c1,0xbfb0b0c0,0xefaeaebe,0xffababbd, 0xffa9a9bb,0xffa6a6b9,0xffa4a4b7,0xefa2a2b5,0xbf9f9fb3,0x709d9db1,0x209b9bb0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30b6b6c5,0xafb5b5c4,0xffb3b3c2, 0xffbabac8,0xffd1d1db,0xffe4e4ea,0xffe8e8ed,0xfffcfcfd,0xfffbfbfc,0xffe4e4e9,0xffdddde4,0xffc4c4d0,0xffa7a7b9,0xff9999ae,0xc19595aa,0x309595ab,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 0x8fb8b8c6,0xffb6b6c5,0xffc7c7d2,0xffececf0,0xfffefeff,0xfffefefe,0xffefeff2,0xffe8e8ed,0xffd8d8e0,0xffd1d1da,0xffe3e3e9,0xffe7e7ec,0xfff5f5f7,0xfff3f3f5, 0xffdadae2,0xffababbd,0xff9393a9,0x938c8ca2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, 0x0,0x0,0x10babac8,0xcfb8b8c7,0xffbbbbc9,0xffe8e8ed,0xffffffff,0xfff5f5f8,0xffd0d0d9,0xffb6b6c5,0xffafb4ca,0xffa6b5d6,0xff9aafd7,0xff97add6, 0xffa4b2cf,0xffa1a8c0,0xffa2a2b5,0xffbbbbc9,0xffe4e4e9,0xffececf0,0xffceced8,0xff9494aa,0xd48989a0,0x108a8aa2,0x0,0x0,0x0,0x0, 0x0,0xffffff,0x0,0x0,0x0,0x10babac8,0xcfb9b9c7,0xffc5c5d1,0xfff6f6f8,0xfffbfbfc,0xffd7d7df,0xffb8b9c7,0xffb8c8e2,0xffdfedfa, 0xfff6fcff,0xfffafeff,0xffbabee7,0xffb5bce7,0xffebf9ff,0xffe5f7ff,0xffc2dff7,0xffadbed5,0xff999bb0,0xffb9b9c7,0xffe2e2e8,0xffd9d9e1,0xff9b9baf,0xd783839a, 0x13717186,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0xcfb9b9c8,0xffc5c5d1,0xfffafafb,0xfff2f2f5,0xffc1c1ce, 0xffafc0dc,0xffdff2fb,0xffe7f8ff,0xffedfaff,0xfff1fbff,0xfff4fcff,0xff797dcf,0xff777dcf,0xffe9f9ff,0xffe3f7ff,0xffddf5ff,0xffd7f3ff,0xffc1e3f8,0xff89a1c9, 0xff9898ad,0xffd1d1db,0xffd9d9e1,0xff9696ac,0xd77f7f97,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x8fbabac8,0xffbcbcca, 0xfff6f6f8,0xfff2f2f5,0xffbdbdcb,0xff9bbae4,0xffd9f4ff,0xffdef5ff,0xffe4f7ff,0xffe8f8ff,0xffecf9ff,0xffedfaff,0xffcedaf3,0xffccd9f3,0xffe5f7ff,0xffe0f6ff, 0xffdaf4ff,0xffd4f2ff,0xffcef1ff,0xffc6ebfe,0xff83a5d6,0xff8e8ea5,0xffccccd6,0xffceced8,0xff8787a0,0xa1717188,0x0,0x0,0x0,0xffffff, 0x0,0x30babac8,0xffb8b8c7,0xffe9e9ed,0xfffbfbfc,0xffc2c2ce,0xff98b9e4,0xffd0f1ff,0xffd5f3ff,0xffdaf4ff,0xffdff6ff,0xffe3f7ff,0xffe5f7ff,0xffe6f8ff, 0xffe6f8ff,0xffe4f7ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f2ff,0xffcbefff,0xffc2e9fe,0xffb9e2fd,0xff7ca0d4,0xff8e8ea5,0xffd0d0da,0xffb8b8c7,0xff7e7e98, 0x48535365,0x0,0x0,0xffffff,0x0,0xbfb9b9c7,0xffc9c9d4,0xffffffff,0xffd8d8e0,0xff92add9,0xffc4eafe,0xffccefff,0xffd1f1ff,0xffd6f3ff, 0xffdaf4ff,0xffddf5ff,0xffdff6ff,0xffe0f6ff,0xffe0f6ff,0xffdef5ff,0xffdbf4ff,0xffd7f3ff,0xffd2f2ff,0xff81969f,0xff0c0f10,0xff9abace,0xffb5dffc,0xffacd8fb, 0xff6f8bc0,0xffa3a3b6,0xffceced8,0xff9090a7,0xbf707089,0xa000000,0x0,0xffffff,0x20b8b8c7,0xffb7b7c6,0xffededf1,0xfff6f6f8,0xffafb3c9,0xff9ac8f5, 0xffbee5fd,0xffc5ebfe,0xffccf0ff,0xffd1f1ff,0xffd4f2ff,0xffd7f3ff,0xffd9f4ff,0xffd9f4ff,0xffd9f4ff,0xffd7f3ff,0xffd5f3ff,0xffd2f2ff,0xff81969f,0xff000000, 0xff000000,0xff455560,0xffabd5f4,0xffa8d4fa,0xff85b7f0,0xff767b9c,0xffc1c1cd,0xffb4b4c3,0xff787894,0x3f3d3d4b,0x0,0xffffff,0x70b7b7c6,0xffbfbfcc, 0xffffffff,0xffd2d2dc,0xff7ea3dd,0xffb0dbfc,0xffb7e0fc,0xffbee6fd,0xffc5eafe,0xffcaefff,0xffcef1ff,0xffd1f1ff,0xffd2f2ff,0xffd3f2ff,0xffd2f2ff,0xffd1f2ff, 0xffcff1ff,0xff80969f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa6d1f4,0xffa2d1fa,0xff9acaf9,0xff5d84c7,0xff9595ab,0xffc3c3cf,0xff7f7f9a,0x8d5c5c73, 0x6000000,0xffffff,0xbfb6b6c5,0xffd5d5dd,0xffffffff,0xffbbbbc9,0xff79aff1,0xffa9d6fb,0xffb0dbfc,0xffb7e0fc,0xffbde5fd,0xffc2e8fe,0xffc6ecfe,0xffc9eeff, 0xffcbefff,0xffccefff,0xffcbefff,0xffcaeeff,0xff7d959f,0xff000000,0xff000000,0xff3a4750,0xff99bed8,0xffa7d1f4,0xffa4d2fa,0xff9dccf9,0xff95c6f8,0xff619beb, 0xff7a7a95,0xffbfbfcc,0xff9393a9,0xcc6c6c86,0x16000000,0xffffff,0xefb4b4c3,0xffe7e7ec,0xfff1f1f4,0xff9dabcb,0xff83b9f6,0xffa2d1fa,0xffa9d6fb,0xffafdafb, 0xffb4defc,0xffb9e2fd,0xffbde5fd,0xffc0e7fe,0xffc2e8fe,0xffc2e9fe,0xffc2e8fe,0xff79919f,0xff000000,0xff000000,0xff394750,0xff98bdd8,0xffa6d1f4,0xffa4d2fa, 0xff9dcdf9,0xff96c7f8,0xff85bbf6,0xff458aee,0xff6674a0,0xffadadbe,0xffa2a2b5,0xf26f6f8c,0x26000000,0xffffff,0xffb2b2c2,0xffebebef,0xffebebef,0xff88a2d2, 0xff94c6f8,0xff9bcbf9,0xffa1d0fa,0xffa7d4fa,0xffacd8fb,0xffb0dbfc,0xffb4defc,0xffb6dffc,0xff96b7cd,0xff3b474f,0xff2f393f,0xff000000,0xff000000,0xff384650, 0xff95bad8,0xffa3cff4,0xffa3d1fa,0xff9dccf9,0xff90c3f7,0xff6ea9f3,0xff498def,0xff3f86ed,0xff5877b7,0xffa5a5b8,0xffa3a3b6,0xff6f6f8c,0x30000000,0xffffff, 0xffb1b1c0,0xfffefefe,0xffd8d8e0,0xff7d9fd7,0xff6990e1,0xff4962cb,0xff86b0ed,0xff9ecef9,0xffa3d1fa,0xffa2d0fa,0xff9acaf9,0xff93c5f8,0xff13191f,0xff505050, 0xff707070,0xff000000,0xff1b2228,0xff6c88a0,0xff7798b5,0xff799cbb,0xff7daad8,0xff7cb3f5,0xff65a3f2,0xff5189e7,0xff294ac7,0xff3669db,0xff577abc,0xff9494aa, 0xffafafc0,0xff6d6d8b,0x33000000,0xffffff,0xffafafbf,0xfffdfdfe,0xffd6d6de,0xff81a2d7,0xff638ce0,0xff455fcb,0xff7fabed,0xff90c2f8,0xff88bcf6,0xff86bbf6, 0xff8cc0f7,0xff91c4f8,0xff000000,0xffafafaf,0xffefefef,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff3a5471,0xff76aef0,0xff70abf3,0xff5a90e8, 0xff2e4ec8,0xff3d6fdb,0xff5b7dbc,0xff8c8ca4,0xffababbc,0xff6b6b8a,0x33000000,0xffffff,0xffadadbe,0xffe8e8ed,0xffe8e8ed,0xff89a5d4,0xff77b0f4,0xff80b6f5, 0xff7eb5f5,0xff82b8f6,0xff8abff7,0xff92c4f8,0xff99caf9,0xff9ecef9,0xff485c6d,0xff000000,0xff202020,0xff1b2228,0xff475a6b,0xff45596a,0xff43576a,0xff40556a, 0xff5a7b9e,0xff7fb3ed,0xff7ab2f5,0xff70abf4,0xff66a3f2,0xff5b9bf1,0xff6179af,0xff9a9aaf,0xff9898ad,0xff696988,0x33000000,0xffffff,0xefababbc,0xffe2e2e8, 0xffececf0,0xff9ca8c5,0xff6ea9f3,0xff77b0f4,0xff82b8f6,0xff8cc0f7,0xff95c7f8,0xff9ecdf9,0xffa5d3fa,0xffabd7fb,0xffb0dbfc,0xff7e9aaf,0xff748fa1,0xff8fb1c9, 0xffa5cdeb,0xffa6d0f2,0xffa1ccf1,0xff9ac7f0,0xff92c1ef,0xff8dbff5,0xff84baf6,0xff7ab2f5,0xff6faaf3,0xff64a1f2,0xff65719a,0xff9b9bb0,0xff9191a8,0xf2676784, 0x33000000,0xffffff,0xbfa9a9ba,0xffccccd6,0xfffafafb,0xffacacbd,0xff77adf0,0xff80b7f5,0xff8bbff7,0xff96c7f8,0xffa0cff9,0xffa9d6fb,0xffb1dcfc,0xffb8e1fd, 0xffbde5fd,0xffc1e8fe,0xffc2e9fe,0xffc1e8fe,0xffbee6fd,0xffb9e2fd,0xffb3ddfc,0xffabd7fb,0xffa2d0fa,0xff98c9f8,0xff8dc1f7,0xff82b8f6,0xff77b0f4,0xff6ba3ec, 0xff696988,0xffa3a3b6,0xff80809a,0xcc60607d,0x30000000,0xffffff,0x70a7a7b9,0xffb0b0c0,0xfff8f8fa,0xffc3c3d0,0xff8eadd9,0xff87bcf6,0xff93c5f8,0xff9fcef9, 0xffaad6fb,0xffb4ddfc,0xffbce4fd,0xffc4eafe,0xffcaeeff,0xffcdf0ff,0xffcff1ff,0xffcef0ff,0xffcbefff,0xffc6ebfe,0xffbee6fd,0xffb6dffc,0xffacd8fb,0xffa1d0fa, 0xff96c7f8,0xff8abef7,0xff7eb5f5,0xff6c89bc,0xff7b7b96,0xff9f9fb3,0xff6d6d8b,0x8d505069,0x26000000,0xffffff,0x20a5a5b8,0xffa3a3b6,0xffe2e2e8,0xffebebef, 0xff9ea1b7,0xff8fbff3,0xff9acbf9,0xffa6d4fa,0xffb2dcfc,0xffbde5fd,0xffc7ecfe,0xffcff1ff,0xffd4f2ff,0xffd6f3ff,0xffd8f3ff,0xffd7f3ff,0xffd4f2ff,0xffd0f1ff, 0xffc9edff,0xffbfe6fd,0xffb4defc,0xffa9d6fb,0xff9dccf9,0xff90c3f8,0xff82b4ef,0xff65698b,0xff9898ad,0xff8e8ea5,0xff646484,0x4d292936,0x16000000,0xffffff, 0x0,0xb19f9fb2,0xffb5b5c4,0xfff4f4f6,0xffc2c2cf,0xff99aecf,0xffa0cffa,0xffadd9fb,0xffb9e2fd,0xffc5ebfe,0xffcff1ff,0xffd6f3ff,0xffdbf5ff,0xffdff6ff, 0xffe1f6ff,0xffe0f6ff,0xffdcf5ff,0xffd7f3ff,0xffd1f1ff,0xffc8edff,0xffbce4fd,0xffb0dbfc,0xffa3d1fa,0xff96c7f8,0xff758cb6,0xff7d7d98,0xff9b9bb0,0xff71718f, 0xbf5b5b78,0x33000000,0x6000000,0xffffff,0x0,0x309f9fb3,0xff9d9db1,0xffd7d7df,0xffebebef,0xffa3a3b6,0xffa0bcdd,0xffb2dcfc,0xffbfe7fd,0xffccefff, 0xffd4f2ff,0xffdcf5ff,0xffe2f7ff,0xffe8f8ff,0xffeaf9ff,0xffe8f8ff,0xffe4f7ff,0xffddf5ff,0xffd6f3ff,0xffcdf0ff,0xffc2e8fe,0xffb5dffc,0xffa8d5fa,0xff87a5cd, 0xff6a6a89,0xff9898ae,0xff8888a0,0xff636383,0x59353546,0x23000000,0x0,0xffffff,0x0,0x0,0x939797ab,0xff9e9eb2,0xffe3e3e9,0xffdbdbe3, 0xff9999ae,0xffa9c2dc,0xffc3e9fe,0xffcff1ff,0xffd8f3ff,0xffe0f6ff,0xffe8f8ff,0xffeffaff,0xfff3fbff,0xfff0fbff,0xffeaf9ff,0xffe2f7ff,0xffdaf4ff,0xffd1f1ff, 0xffc6ecfe,0xffb8e1fd,0xff92adcf,0xff676786,0xff9292a8,0xff9292a8,0xff676786,0xa5555571,0x33000000,0xa000000,0x0,0xffffff,0x0,0x0, 0x0,0xd49393a9,0xffa5a5b8,0xffe4e4e9,0xffd6d6df,0xff9999ae,0xffa5b6cb,0xffccebf9,0xffdaf4ff,0xffe3f7ff,0xffecf9ff,0xfff4fcff,0xff7d7fcf,0xff7b7ecf, 0xffedfaff,0xffe4f7ff,0xffdcf5ff,0xffd2f2ff,0xffc2e5f7,0xff8b9db9,0xff6b6b8a,0xff9393a9,0xff9696ac,0xff6d6d8b,0xd95d5d7c,0x33000000,0x1d000000,0x0, 0x0,0xffffff,0x0,0x0,0x0,0x109595ab,0xd78e8ea3,0xffa1a1b4,0xffdadae1,0xffdcdce3,0xffaeaebf,0xff8b8da5,0xffafbcce,0xffdceff9, 0xffebf9ff,0xfff3fcff,0xff9b9edb,0xff989ddb,0xffecfaff,0xffe4f7ff,0xffd4ecf8,0xff9eaec3,0xff6d708e,0xff80809a,0xff9b9bb0,0xff9494aa,0xff6e6e8c,0xd95e5e7d, 0x40181821,0x29000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x137a7a8e,0xd78a8aa0,0xff9292a8,0xffc4c4d0, 0xffdbdbe3,0xffcdcdd8,0xffa0a0b4,0xff83839d,0xff9093aa,0xffa5a9bc,0xffb4b8c8,0xffb1b7c7,0xff9ea3b8,0xff8387a1,0xff6f6f8d,0xff81819b,0xff9e9eb2,0xffa0a0b4, 0xff8b8ba3,0xff686887,0xd95e5e7d,0x40191921,0x29000000,0x3000000,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, 0x0,0x3000000,0xa17b7b90,0xff8888a1,0xff9b9baf,0xffc0c0cd,0xffd1d1da,0xffcdcdd7,0xffbabac8,0xffb1b1c1,0xff9e9eb2,0xff9a9aaf,0xffa4a4b7,0xffa4a4b7, 0xffacacbd,0xffa7a7b9,0xff9494aa,0xff757592,0xff666685,0xa5575772,0x33000000,0x29000000,0x3000000,0x0,0x0,0x0,0x0,0xffffff, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x485a5a6a,0xbf7a7a91,0xff82829c,0xff8a8aa2,0xff9f9fb2,0xffaeaebf,0xffafafbf, 0xffbcbcca,0xffb7b7c6,0xffa2a2b5,0xff9a9aaf,0xff8787a0,0xff72728f,0xff696987,0xbf5f5f7b,0x59373748,0x33000000,0x1d000000,0x0,0x0,0x0, 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa000000,0x3f42424f, 0x8d64647a,0xcc74748e,0xf2787893,0xff777793,0xff757591,0xff72728f,0xff70708d,0xf26d6d8a,0xcc656581,0x8d54546c,0x4d2b2b38,0x33000000,0x23000000,0xa000000, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x6000000,0x16000000,0x26000000,0x30000000,0x33000000,0x33000000,0x33000000,0x33000000,0x30000000,0x26000000, 0x16000000,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff }; static const QRgb CloseButton_data[] = { 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dedede,0xfadcdcdc,0xd8d1d1d1,0x9ec8c8c8,0x509d9d9d,0xc000000,0x3000000,0xffffff,0xffffff, - 0xffffff,0xffffff,0x60dcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcdcdcd,0xffd7d7d7,0xe6c5c5c5,0x838d8d8d,0x18000000,0x4000000,0xffffff, - 0xffffff,0x3edddcdc,0xdbdadada,0xffcbcbcb,0xff353535,0xff888888,0xffc2c1c2,0xff878687,0xff343434,0xffb1b2b1,0xec9e9d9e,0x75595959,0x18000000,0x3000000, - 0xffffff,0x94d5d6d5,0xffd1d0d0,0xff8c8c8c,0xff000000,0xff000000,0xff5a5a5a,0xff000000,0xff000000,0xff868786,0xffabaaaa,0xc8616161,0x3d000000,0xc000000, - 0xffffff,0xd5cbcbcb,0xffbbbbbb,0xffadadad,0xff7a7a7a,0xff000000,0xff000000,0xff000000,0xff777777,0xffb1b1b1,0xffb1b1b1,0xef616161,0x61000000,0x1a000000, - 0xffffff,0xfabfbfbf,0xffababab,0xffa4a4a4,0xff7a7a7a,0xff000000,0xff000000,0xff000000,0xff747474,0xffaeaeae,0xffa2a2a2,0xfd5d5d5d,0x7c000000,0x25000000, - 0xffffff,0xd9b0b0b0,0xffa0a0a0,0xff7d7d7d,0xff000000,0xff000000,0xff4a4a4a,0xff000000,0xff000000,0xff7a7a7a,0xff8c8c8c,0xf2484848,0x85000000,0x2b000000, - 0xffffff,0xa0949494,0xff9b9b9a,0xff959696,0xff383838,0xff6a6a6a,0xffa1a1a0,0xff6e6e6e,0xff353535,0xff969796,0xff6a696a,0xdf363636,0x7c000000,0x25000000, - 0xffffff,0x516f6f6f,0xe7818181,0xff8d8d8d,0xff949494,0xff999a9a,0xff9b9b9b,0xff9e9e9e,0xff8f8f8f,0xff737273,0xf5414141,0xbb1a1a1a,0x61000000,0x1a000000, - 0xffffff,0xc000000,0x84505050,0xed626262,0xff6f6e6e,0xff7b7b7a,0xff7d7d7d,0xff767576,0xff636263,0xf5414140,0xcd1f1f1f,0x83000000,0x3d000000,0xc000000, - 0xffffff,0x3000000,0x18000000,0x762f2f2f,0xc93b3b3b,0xf0404040,0xfd464646,0xf3393939,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000, + 0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d8d8d8,0xfad5d5d5,0xd8c8c8c8,0x9ebebebe,0x508e8e8e,0xc000000,0x3000000,0xffffff,0xffffff, + 0xffffff,0xffffff,0x60d5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc4c4c4,0xffd0d0d0,0xe6bbbbbb,0x837d7d7d,0x18000000,0x4000000,0xffffff, + 0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffc1c1c1,0xff262626,0xff777777,0xffb7b6b7,0xff767576,0xff252525,0xffa4a5a4,0xec8f8e8f,0x75474747,0x18000000,0x3000000, + 0xffffff,0x94cdcecd,0xffc8c7c7,0xff7b7b7b,0xff000000,0xff000000,0xff484848,0xff000000,0xff000000,0xff757675,0xff9d9c9c,0xc84f4f4f,0x3d000000,0xc000000, + 0xffffff,0xd5c2c2c2,0xffafafaf,0xffa0a0a0,0xff686868,0xff000000,0xff000000,0xff000000,0xff656565,0xffa4a4a4,0xffa4a4a4,0xef4f4f4f,0x61000000,0x1a000000, + 0xffffff,0xfab4b4b4,0xff9d9d9d,0xff959595,0xff696969,0xff000000,0xff000000,0xff000000,0xff626262,0xffa1a1a1,0xff939393,0xfd4b4b4b,0x7c000000,0x25000000, + 0xffffff,0xd9a3a3a3,0xff919191,0xff6c6c6c,0xff000000,0xff000000,0xff393939,0xff000000,0xff000000,0xff696969,0xff7b7b7b,0xf2373737,0x85000000,0x2b000000, + 0xffffff,0xa0848484,0xff8c8c8b,0xff858686,0xff292929,0xff585858,0xff929291,0xff5c5c5c,0xff262626,0xff868786,0xff585758,0xdf272727,0x7c000000,0x25000000, + 0xffffff,0x515d5d5d,0xe7707070,0xff7c7c7c,0xff848484,0xff898a8a,0xff8c8c8c,0xff8f8f8f,0xff7f7f7f,0xff616061,0xf5313131,0xbb101010,0x61000000,0x1a000000, + 0xffffff,0xc000000,0x843f3f3f,0xed505050,0xff5d5c5c,0xff6a6a69,0xff6c6c6c,0xff646364,0xff515051,0xf5313130,0xcd141414,0x83000000,0x3d000000,0xc000000, + 0xffffff,0x3000000,0x18000000,0x76212121,0xc92b2b2b,0xf0303030,0xfd353535,0xf32a2a2a,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000, 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff }; +static const QRgb close_data[] = { + 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0, + 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0, + 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0, + 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000, + 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000, + 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000, + 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000, + 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000, + 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000, + 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000, + 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000, + 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0, + 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0, + 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0 +}; + +static const QRgb copy_inactive_data[] = { + 0x2bbc6d1,0x7b9c4cf,0xebfc8d3,0x1fc2cbd6,0x31c0c9d4,0x209fadbf,0x98494ac,0x17e8fa9,0x0,0x0,0x0,0x0,0x0,0x0, + 0x21bfc9d4,0x48c8d1da,0x5cced5dd,0x73d0d8df,0x7eced6de,0x6da6b3c3,0x498b9bb1,0x168090a9,0x0,0x0,0x0,0x0,0x0,0x0, + 0x42c4cdd7,0x7ee0e5ea,0x7ee3e7ec,0x7ed7dee4,0x7ed7dde4,0x7eadbac8,0x7d9eadbd,0x538394ab,0x47d8da8,0x0,0x0,0x0,0x0,0x0, + 0x2dc4cdd7,0x7be2e6eb,0x7ee6eaed,0x7ed7dee4,0x7edde3e8,0x7ec9d2da,0x7eb9c4cf,0x7394a3b5,0x44a0a2b0,0x3ec0bbc6,0x35cac4d2,0x13a39cab,0x22b2b2b,0x2b2b2b, + 0x17c2cbd5,0x6bd8dee4,0x7eeaeef0,0x7edbe1e6,0x7ed5dce2,0x7ec9d1da,0x7ec0c9d4,0x7eafbac7,0x7e9ea1af,0x7ebebac2,0x76d2cdd9,0x50b2aaba,0x1877707f,0x336343a, + 0xbbec8d3,0x57d0d7df,0x7ee8ecef,0x7edae1e6,0x7eced5dd,0x7ec3ccd6,0x7ec1c9d4,0x7ec0cad3,0x7e99a1af,0x7eb9b6bd,0x7ec4bdcb,0x79b2a7bb,0x599c92a5,0x145f5a63, + 0x6b7c1ce,0x42cdd4dd,0x7ce7ecef,0x7edce2e7,0x7ecbd2db,0x7ec9d1da,0x7ec6cfd9,0x7ec7d0d8,0x7e9fa8b7,0x7eb2b0b9,0x7ecbc5cf,0x7ecfc7d6,0x7bb5abbe,0x2b59555c, + 0x2b7c2ce,0x25ccd3dc,0x73dee3e8,0x7edee3e8,0x7ecdd5dd,0x7ecad2db,0x7ec7cfd9,0x7ed2d8e0,0x7eafb8c5,0x7ea6a7b1,0x7ebeb9c4,0x7ed7d1de,0x7dbbb2c4,0x36514e54, + 0x0,0x16c4cdd7,0x67d8dee4,0x7ee6eaed,0x7edbe1e7,0x7edae0e6,0x7ed2d9e0,0x7ec5ccd7,0x7ea1abbb,0x7e9d9fad,0x7eb4afba,0x7ed5d0dc,0x7dbdb4c5,0x39504d52, + 0x0,0xebbc4d1,0x53cbd3dc,0x7ad5dbe2,0x6fc6ced8,0x79b3bbc8,0x7ea5adba,0x7e9ea5b4,0x7ea9abb9,0x7eb5b2be,0x7ec0bbc6,0x7ed9d4df,0x7ebeb5c6,0x39504d53, + 0x0,0x59baabc,0x2b9facbf,0x469ca9bc,0x2e8999b0,0x67b0b2c0,0x7ec9c9d0,0x7ec9c5ce,0x7ed1ccd6,0x7ed5d0db,0x7ed8d2de,0x7ee0dbe6,0x7ebeb6c6,0x39504d52, + 0x0,0x17d8ea8,0x67d8ca8,0x97d8ba8,0x27d8aa8,0x5ddbd6e1,0x7ef2f1f4,0x7fe9e6ed,0x7ee9e5ed,0x7ee8e3ec,0x7ee5e1ea,0x7fe8e4ed,0x7fc0b8c8,0x3a504d53, + 0x0,0x0,0x0,0x0,0x0,0x5dbdb5c6,0x7ec6bfcc,0x7fc3bbca,0x7fc2bac9,0x7fc2b9c9,0x80c1b8c8,0x81c0b8c8,0x81b0a6b9,0x3b4e4b51, + 0x0,0x0,0x0,0x0,0x0,0x137e7783,0x2c5c595f,0x39514e53,0x3a504d52,0x3a504d53,0x3b504d52,0x3c4f4c51,0x3e4c494f,0x2f303031 +}; + +static const QRgb copy_data[] = { + 0x5bbc5d1,0xdb9c4cf,0x1cbfc8d3,0x40c2cbd6,0x64c0c9d4,0x419fadbf,0x128494ac,0x27e8fa9,0x0,0x0,0x0,0x0,0x0,0x0, + 0x41bfc9d4,0x90c9d1da,0xbaced5dd,0xe9d0d8df,0xffced6de,0xdca6b3c3,0x958b9bb1,0x2d8090a9,0x0,0x0,0x0,0x0,0x0,0x0, + 0x84c4cdd7,0xffe0e5ea,0xffe3e7ec,0xffd7dee4,0xffd7dde4,0xffadbac8,0xfd9eadbd,0xa88394ab,0x97d8da8,0x0,0x0,0x0,0x0,0x0, + 0x5bc4cdd7,0xf8e2e6eb,0xffe6eaed,0xffd7dee4,0xffdde3e8,0xffc9d2da,0xffb9c4cf,0xe894a3b5,0x8aa0a2b0,0x7fc0bbc6,0x6bcac4d2,0x26a39cab,0x42b2b2b,0x2b2b2b, + 0x2fc2cbd5,0xd9d8dee4,0xffeaeef0,0xffdbe1e6,0xffd5dce2,0xffc9d1da,0xffc0c9d4,0xffafbac7,0xfe9ea1af,0xfebebac2,0xf0d2cdd9,0xa1b2aaba,0x3178717f,0x637343a, + 0x15bec8d3,0xb0d0d7df,0xffe8ecef,0xffdbe1e6,0xffced6dd,0xffc3ccd6,0xffc1c9d4,0xffc0cad3,0xff99a1af,0xffb9b6bd,0xffc5becb,0xf4b2a7bb,0xb59c92a5,0x2a5e5a63, + 0xcb7c1ce,0x86cdd4dd,0xfce7ecef,0xffdce2e7,0xffcbd3db,0xffc9d1da,0xffc6cfd9,0xffc7d0d8,0xff9fa8b7,0xffb2b0b9,0xffcbc5cf,0xffcfc7d6,0xf9b5abbe,0x5659555d, + 0x3b7c2ce,0x4cccd3dc,0xeadee3e8,0xffdee3e8,0xffcdd5dd,0xffcad2db,0xffc7cfd9,0xffd2d8e0,0xffafb8c5,0xffa6a7b1,0xffbeb9c4,0xffd7d1de,0xfebbb2c4,0x6f514e54, + 0x0,0x2dc4cdd7,0xd0d8dee4,0xffe6eaed,0xffdbe1e7,0xffdae0e6,0xffd2d9e0,0xffc5ccd7,0xffa1abbb,0xff9c9fad,0xffb4afba,0xffd5d0dc,0xfebdb4c5,0x73504d52, + 0x0,0x1dbbc4d1,0xa7cbd3dc,0xf7d5dbe2,0xe1c6ced8,0xf5b3bbc8,0xffa5adba,0xff9ea5b4,0xffa9abb9,0xffb5b2be,0xffc0bbc6,0xffd9d4df,0xfebeb6c6,0x73504d53, + 0x0,0xb9baabc,0x56a0acbf,0x8e9ca9bc,0x5e8999b0,0xd0b0b2c0,0xffc9c9d0,0xffc9c5ce,0xffd1ccd6,0xffd5d0db,0xffd8d2de,0xffe0dbe6,0xfebfb6c7,0x73504d53, + 0x0,0x17d8ea8,0xc7d8ca8,0x137d8ba8,0x57d8aa8,0xbcdbd6e0,0xfef2f1f4,0xffe9e6ed,0xffe9e5ed,0xffe8e3ec,0xffe5e1ea,0xffe8e4ed,0xfec0b8c8,0x73504d53, + 0x0,0x0,0x0,0x0,0x0,0xbbbdb5c6,0xfcc6bfcc,0xfdc3bbca,0xfdc2bac9,0xfdc2bac9,0xfdc1b8c8,0xfdc0b8c8,0xfcb0a6b9,0x724e4b51, + 0x0,0x0,0x0,0x0,0x0,0x267c7682,0x585c595f,0x72504e53,0x73504d53,0x73504d53,0x73504d53,0x73504d52,0x724e4b51,0x4e313132 +}; + +static const QRgb c_src_data[] = { + 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0, + 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0, + 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0, + 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0, + 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0, + 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0, + 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0, + 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0, + 0x0,0x0,0x7db5b5ca,0xffe2d9e9,0xffccbcd8,0xffbba5cb,0xffad93c0,0xffa588ba,0xff8b67a6,0xff7f579d,0xff9779b1,0x938282a1,0x0,0x0, + 0x0,0x0,0x7db2b2c9,0xffddd3e5,0xffc2aed0,0xffad93c0,0xffbca7cc,0xffa082b6,0xff754894,0xff663589,0xff8560a2,0x937f7f9f,0x0,0x0, + 0x0,0x0,0x7daeaec6,0xffddd3e5,0xffc2aed0,0xffb69ec6,0xffb59dc6,0xffad92bf,0xff764a95,0xff663589,0xff8661a3,0x937d7d9e,0x0,0x0, + 0x0,0x0,0x7ca5a5c1,0xffddd8e7,0xffd0c7dd,0xffc5b9d5,0xffbaabcc,0xffaf9dc5,0xffa591bd,0xff9d86b7,0xffaa99c2,0x92747499,0x0,0x0, + 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0 +}; + +static const QRgb cut_inactive_data[] = { + 0x0,0x0,0x0,0x1b9b9b9,0x13c3c3c3,0x6bcbcbcb,0x97d3d3d3,0x568d8d8d,0xb0b0b0b,0x2000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x8b9b9b9,0x5acdcdcd,0x93c8c8c8,0x8eb1b1b1,0x8c9f9f9f,0x271b1b1b,0xb333333,0x7a5a5a5,0x2808080,0x0,0x0, + 0x0,0x0,0x0,0xeb6b6b6,0x6bd4d4d4,0x909e9e9e,0x68707070,0x8e9d9d9d,0x331e1e1e,0x30a0a0a0,0x46bebebe,0x21878787,0x6212121,0x1000000, + 0x0,0x0,0x0,0xdb0b0b0,0x69cccccc,0x94afafaf,0x7b8f8f8f,0x8e9d9d9d,0x4e6d6d6d,0x76b7b7b7,0x8facacac,0x6a909090,0x21515151,0x5000000, + 0x0,0x0,0x0,0x59a9a9a,0x3bb0b0b0,0x86bababa,0x96c7c7c7,0x96a2a2a2,0x82acacac,0x75979797,0x6c8d8d8d,0x8d9b9b9b,0x40545454,0xe000000, + 0x0,0x0,0x0,0x1000000,0xc5c5c5c,0x679d9d9d,0x97b7b7b7,0x9a9a9a9a,0x95b0b0b0,0x7ea4a4a4,0x80c1c1c1,0x93a5a5a5,0x4a474747,0x15000000, + 0x0,0x0,0x0,0x8d8d8d,0x39b0b0b0,0x889d9d9d,0x9acccccc,0x968d8d8d,0x8d888888,0x98b1b1b1,0x94a8a8a8,0x6c6e6e6e,0x38181818,0x13000000, + 0x0,0xa1a1a1,0x5aeaeae,0x3bb9b9b9,0x88dddddd,0x9ab3b3b3,0x9ad3d3d3,0x8f888888,0x52252525,0x55434343,0x4f3a3a3a,0x38161616,0x1e000000,0x8000000, + 0x0,0x7afafaf,0x3ebebebe,0x88d8d8d8,0x96c7c7c7,0x96919191,0x9ad4d4d4,0x8e898989,0x3c0d0d0d,0x1f000000,0x19000000,0x14000000,0x9000000,0x1000000, + 0x0,0x1eb7b7b7,0x86cacaca,0x96c7c7c7,0x77737373,0x806b6b6b,0x98d4d4d4,0x8e8a8a8a,0x370e0e0e,0x10000000,0x4000000,0x3000000,0x1000000,0x0, + 0x0,0x26b2b2b2,0x93ababab,0x78787878,0x48212121,0x6f6e6e6e,0x97d5d5d5,0x8e8a8a8a,0x370e0e0e,0xe000000,0x1000000,0x0,0x0,0x0, + 0x0,0x20818181,0x6e6f6f6f,0x43272727,0x27010101,0x65797979,0x96d4d4d4,0x8b909090,0x37101010,0xe000000,0x1000000,0x0,0x0,0x0, + 0x0,0x94c4c4c,0x23323232,0x1e030303,0xf000000,0x60858585,0x94989898,0x5e4c4c4c,0x2d050505,0xc000000,0x0,0x0,0x0,0x0, + 0x0,0x1000000,0x6000000,0x8000000,0x3000000,0x57696969,0x564a4a4a,0x35070707,0x1a000000,0x6000000,0x0,0x0,0x0,0x0 +}; + +static const QRgb cut_data[] = { + 0x0,0x0,0x0,0x1f2bf00,0x20f9cd00,0xb1fdd900,0xfbfbe601,0x8edd8000,0x13170800,0x4000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xdf3bf00,0x96fddc00,0xf3eddb02,0xebcfc305,0xe8ee9600,0x41361200,0x12403600,0xbdab102,0x4a77e05,0x0,0x0, + 0x0,0x0,0x0,0x17f0bb00,0xb1fee600,0xeec9a607,0xad897905,0xebec9300,0x54331b00,0x51c0ad00,0x74e8cc03,0x37b28906,0x93e1a02,0x1000000, + 0x0,0x0,0x0,0x16e7b600,0xaefcda00,0xf5dab905,0xccac9a06,0xebec9300,0x81917000,0xc3dfc503,0xecd5b606,0xb0cf8b04,0x37884600,0x7000000, + 0x0,0x0,0x0,0x9c49b00,0x62e2b800,0xdff1c201,0xf9eada03,0xf8f39900,0xd8dcb502,0xc2bba105,0xb2ad9705,0xe9e49301,0x6a8a4800,0x17000000, + 0x0,0x0,0x0,0x1000000,0x15775f00,0xabd9961e,0xfafbb509,0xffed8b0a,0xf7ddbb05,0xd1c3b204,0xd4e3d400,0xf4f09e00,0x7b763d00,0x23000000, + 0x0,0x0,0x0,0x1739ed6,0x5f92b5e6,0xe17ea5ce,0xfec5cfdb,0xf97393b6,0xead07c09,0xfbf7af00,0xf6f2a300,0xb4b16200,0x5e2c1300,0x1f000000, + 0x0,0x7fa9da,0x995b4dc,0x63a0bfe1,0xe1c7e5f5,0xff89c0e7,0xffbcd8fa,0xed4798e4,0x8935201a,0x8d862f00,0x82702a00,0x5d2a1000,0x31000000,0xd000000, + 0x0,0xc95b6de,0x67a7c5e4,0xe1c1e0f3,0xf8a0d3f6,0xf85ca0dd,0xfebed8fa,0xec4899e6,0x64021020,0x33000000,0x29000000,0x21000000,0xf000000,0x2000000, + 0x0,0x329abee2,0xddafd3ed,0xf8a1d3f6,0xc63e80bf,0xd43578b9,0xfbbfd8f8,0xeb4e99e1,0x5c001226,0x1b000000,0x7000000,0x5000000,0x2000000,0x0, + 0x0,0x3f8fbbe4,0xf481b6e7,0xc74385c4,0x77072749,0xb74479a8,0xfac1d9f8,0xeb4f99e1,0x5b001225,0x18000000,0x2000000,0x0,0x0,0x0, + 0x0,0x354590dc,0xb5367dc6,0x6f0a2f55,0x40000204,0xa74b86bb,0xf9bed9f9,0xe65e9cd6,0x5a041321,0x18000000,0x1000000,0x0,0x0,0x0, + 0x0,0xf0e59a4,0x3a093c6f,0x31000407,0x19000000,0x9f5592c8,0xf560a6ee,0x9b2f5475,0x4a020609,0x14000000,0x1000000,0x0,0x0,0x0, + 0x0,0x2000000,0xa000000,0xc000000,0x4000000,0x8f1d7dd3,0x8e11579e,0x5603080c,0x29000000,0x9000000,0x1000000,0x0,0x0,0x0 +}; + +static const QRgb datebook_icon_data[] = { + 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b, + 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65, + 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858, + 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455, + 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453, + 0xe96ab4e3,0xffe8ebed,0xfff1f1f1,0xffe3e2e2,0xfff5f5f5,0xffe0e0df,0xfff6f6f5,0xffe4e4e5,0xffeff0f1,0xffe7e8e8,0xffeaeaea,0xfff1efee,0xf080b3d3,0x79013454, + 0xe966b0df,0xffd5d8d9,0xffdbdbdb,0xffd3d2d2,0xffe0e0e0,0xffd0d0d0,0xffe0e0e0,0xffd3d4d6,0xffdbdcdd,0xffd4d5d6,0xffd9d6d5,0xffdddbda,0xf07fb0cf,0x79013554, + 0xe966b2e2,0xffeceff1,0xfff5f5f5,0xffe8e8e8,0xfffdfdfd,0xffe5e5e5,0xfffdfdfd,0xffeaebeb,0xfff8f8f8,0xffececec,0xfff2efec,0xfff6f5f4,0xf086b6d5,0x79013454, + 0xe962aedf,0xffd8dbdd,0xffdfdede,0xffd6d5d5,0xffe4e4e4,0xffd3d3d3,0xffe4e4e4,0xffd6d7d9,0xffe0e0e1,0xffd8d9d9,0xffdddad8,0xffe1dfde,0xf084b3d0,0x79013554, + 0xe962b0e1,0xffe6eaec,0xffefefef,0xffe2e2e2,0xfff4f4f4,0xffdfdfdf,0xfff5f5f4,0xffe2e3e4,0xffeef0f0,0xffe6e6e7,0xffeaeaea,0xfff1efee,0xf089b7d4,0x79023554, + 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554, + 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36, + 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306, + 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000 +}; + +static const QRgb day_data[] = { + 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b, + 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65, + 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858, + 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455, + 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453, + 0xe96ab4e3,0xffe8ebed,0xfff1f1f1,0xffe3e2e2,0xfff5f5f5,0xffe0e0df,0xfff6f6f5,0xffe5e4e3,0xfff2f0ee,0xffeae7e6,0xffeaeae9,0xfff1efee,0xf080b3d3,0x79013454, + 0xe966b0df,0xffd5d8d9,0xffdbdbdb,0xffd3d2d2,0xffe0e0e0,0xffd0d0d0,0xffe0e0e0,0xffe4d1ab,0xfff6d477,0xfff1c87d,0xffddd5cc,0xffdddbda,0xf07fb0cf,0x79013554, + 0xe966b2e2,0xffeceff1,0xfff5f5f5,0xffe8e8e8,0xfffdfdfd,0xffe5e5e5,0xfffdfdfd,0xfffee192,0xffffcf1c,0xfffdb436,0xfff9eada,0xfff6f5f4,0xf086b6d5,0x79013454, + 0xe962aedf,0xffd8dbdd,0xffdfdede,0xffd6d5d5,0xffe4e4e4,0xffd3d3d3,0xffe4e4e4,0xffeccd9d,0xfffbb954,0xfff7ab61,0xffe3d7cb,0xffe1dfde,0xf084b3d0,0x79013554, + 0xe962b0e1,0xffe6eaec,0xffefefef,0xffe2e2e2,0xfff4f4f4,0xffdfdfdf,0xfff5f5f4,0xffe5e3e2,0xfff3f0eb,0xffebe7e2,0xffeaeae9,0xfff1efee,0xf089b7d4,0x79023554, + 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554, + 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36, + 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306, + 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000 +}; + static const QRgb DocsIcon_data[] = { 0x0,0x0,0x16d3d3d5,0x3dceced1,0x3dc8c8cf,0x3dc4c4cc,0x3dbfbfc9,0x3dbabac7,0x29b0b0be,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x60d6d6d9,0xfff6f6f7,0xfff7f7f8,0xfff7f7f8,0xfff2f2f5,0xffebebf1,0xf6c7c7d5,0x489e9eaf,0x0,0x0,0x0,0x0, 0x0,0x0,0x60d1d1d7,0xfffdfdfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffdcdce6,0xf3d5d5e1,0x469595ab,0x0,0x0,0x0, 0x0,0x0,0x60ccccd4,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd9d9e4,0xfff6f6f9,0xf1cbcbda,0x3c8686a0,0x0,0x0, 0x0,0x0,0x60c7c7d2,0xfffcfcfd,0xffffffff,0xffffffff,0xfffbfbfc,0xfff4f4f8,0xffd8d8e4,0xffcbcbdb,0xffc6c6d7,0xb79e9eb5,0x2000000,0x0, 0x0,0x0,0x60c2c2cf,0xfffcfcfc,0xffffffff,0xffffffff,0xfffafafc,0xfff4f4f8,0xffececf3,0xffe2e2ee,0xffd3d5e2,0xbaa3a3b9,0x2000000,0x0, 0x0,0x0,0x60bcbccc,0xfffbfbfc,0xffffffff,0xffffffff,0xfff9f9fc,0xfff0f0f6,0xffe7e7f1,0xffe4e4ef,0xffd8dae7,0xbaa0a0b7,0x2000000,0x0, 0x0,0x0,0x60b7b7ca,0xfffbfbfc,0xfffbfbfd,0xfff3f3f8,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffe6e6f0,0xffd7d9e6,0xba9f9fb7,0x2000000,0x0, 0x0,0x0,0x60b1b1c7,0xfff7f7fa,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffe9e9f2,0xffd6d8e6,0xba9d9db6,0x2000000,0x0, 0x0,0x0,0x60acacc4,0xfff7f7f9,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffebebf3,0xffdbdde9,0xba9b9bb5,0x2000000,0x0, 0x0,0x0,0x60a7a7c1,0xfff9f9fb,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffeeeef5,0xffd4d7e5,0xba9a9ab5,0x2000000,0x0, 0x0,0x0,0x60a1a1bf,0xfffafafc,0xfffdfdfe,0xfffbfbfc,0xfff8f8fb,0xfff6f6f9,0xfff3f3f8,0xfff1f1f6,0xffdbdeea,0xba9898b4,0x2000000,0x0, 0x0,0x0,0x609b9bbc,0xfff2f2f6,0xfff6f6f9,0xfff4f4f8,0xfff2f2f7,0xffefeff5,0xffececf3,0xffeaeaf2,0xffd4d6e6,0xba9292b0,0x2000000,0x0, 0x0,0x0,0x1d7c7c9c,0x6072728d,0x616f6f8b,0x616b6b89,0x61686887,0x61646485,0x61606083,0x615d5d82,0x61595980,0x47444468,0x1000000,0x0 }; static const QRgb DocumentTypeExcel_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6, 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc, 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9, 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0, 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0, 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1, 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc, 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb, 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5, 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0, 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff, 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff, 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece, 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff, 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3, 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff, 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc, 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc, 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff, 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1, 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff, 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff, 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9, 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff, 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812, 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625, 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce, 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802, 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de, 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff, 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9, 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788, 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453, 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1, 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f, 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b, 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000, 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc, 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1, 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff }; static const QRgb DocumentTypeNone_data[] = { 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffbffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xfffbffff,0xfff5faff,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, 0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff8fcff,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafeff,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xfffcffff,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff7fbff,0xfff0f6ff,0xffe8effc,0xffc8d4e7,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5,0xff98a9c5, 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff8fcff,0xfff1f6ff,0xffebf1fe,0xffe5edfa,0xffe1e9f7, 0xffd7e0f1,0xffc1cee4,0xffb6c4dd,0xffb4c3dc,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff, 0xfff3f9ff,0xffecf3fe,0xffe5edfa,0xffdfe7f6,0xffccd6ea,0xffbecae2,0xffbbc9e0,0xffb9c6df,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xfffaffff,0xfff3f9ff,0xffeff5ff,0xffe7eefb,0xffd5dfef,0xffc7d3e8,0xffc5d1e6,0xffc2cfe5,0xffc1cde4,0xffbdcbe5,0xff8495b1, 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffe9f0fc,0xffdae2f2,0xffd0daed,0xffccd7ea,0xffc9d4e9, 0xffc7d2e7,0xffc6d2e6,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff5faff,0xffeaf0fd,0xffdce5f5, 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffcbd7ea,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff, 0xfff3f8ff,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffd0dbed,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xfff4f9ff,0xffe9f0fc,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffd4ddef, 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff0f6ff,0xffebf1fd,0xffe8effc,0xffe6edfa,0xffe5edfa,0xffe2eaf8,0xffe1e9f7,0xffdee6f5, 0xffdde5f4,0xffdbe4f3,0xffd8e1f2,0xffd8e1f1,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff2f7ff,0xfff0f6ff,0xffedf4ff,0xffecf2fe,0xffeaf1fc, 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffdae4f3,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff6fbff,0xfff4f9ff, 0xfff1f7ff,0xffeef4ff,0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffdde6f4,0xffdbe5f7,0xff8495b1, 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff, 0xffffffff,0xfff9feff,0xfff8fdff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xffeff5ff,0xffedf3fe,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, 0xffe0e7f6,0xffdfe7f6,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff9fdff,0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff2f7ff,0xfff0f6ff,0xffeef4ff,0xffebf3fe,0xffeaf0fc, 0xffe8effb,0xffe6edfb,0xffe4ecf9,0xffe2e9f7,0xffe0e8f7,0xffe0e8f6,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff,0xfff9feff,0xfff6fbff,0xfff4f9ff,0xfff2f8ff, 0xfff1f7ff,0xfff0f6ff,0xffeef4ff,0xffebf1fd,0xffe9effc,0xffe6edfa,0xffe4ecf9,0xffe3ebf9,0xffe0e8f7,0xffdfe7f7,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff9feff, 0xfff8fdff,0xfff6fbff,0xfff4f9ff,0xfff3f8ff,0xfff2f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8,0xffe2eaf8,0xffe1e9f8, 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff, 0xffffffff,0xffffffff,0xfffbffff,0xfff9feff,0xfff7fdff,0xfff7fcff,0xfff4f9ff,0xfff3f8ff,0xfff2f8ff,0xfff0f6ff,0xffeff5ff,0xffecf2fe,0xffe9f0fc,0xffe8effc, 0xffe6edfa,0xffe4ecf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff6fbff,0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff, 0xffeef4ff,0xffecf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3eaf9,0xffe1e9f7,0xffe2eaf8,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffeffff,0xfffafeff,0xfff9feff,0xfff8fdff,0xfff5faff, 0xfff5faff,0xfff3f8ff,0xfff1f7ff,0xfff0f6ff,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffe2eaf8,0xffdfe9fa,0xff8495b1, 0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfffcffff, 0xfffafeff,0xfff8fdff,0xfff7fcff,0xfff5faff,0xfff4f9ff,0xfff2f7ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, 0xffe2eaf8,0xffe1e9f7,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5, 0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff,0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff, 0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffc4d0e5,0xff8495b1,0xff8495b1, 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff }; static const QRgb DocumentTypePowerPoint_data[] = { 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000500,0x2000500,0x5000500,0x9000500,0x10000500,0x18000500,0x22000500, - 0x2c000500,0x36000500,0x3f000500,0x45000500,0x4a000500,0x4d000500,0x4e000500,0x4e000500,0x4e000500,0x4c000500,0x49000500,0x45000500,0x3f000500,0x37000500, - 0x2e000500,0x25000500,0x1c000500,0x13000500,0xd000500,0x8000500,0x4000500,0x2000500,0xffffff,0xffffff,0xffffff,0x1000500,0x3000500,0x7000500, - 0xd000500,0x16000500,0x22000500,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, - 0xff000000,0xff000000,0xfd373737,0x72545754,0x44000500,0x37000500,0x2b000500,0x1f000500,0x15000500,0xd000500,0x8000500,0x4000500,0xffffff,0xffffff, - 0xffffff,0x1000500,0x4000500,0x9000500,0x11000500,0x1d000500,0x2c000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe, - 0xfffefefe,0xfffdfdfd,0xfffafafa,0xfff5f5f5,0xffededed,0xffe3e3e3,0xffd1d1d1,0xfd363636,0x76404240,0x4e000500,0x3d000500,0x2e000500,0x21000500,0x16000500, - 0xe000500,0x8000500,0xffffff,0xffffff,0xffffff,0x2000500,0x5000500,0xb000500,0x15000500,0x24000500,0x36000500,0xff000000,0xffffffff,0xffffffff, - 0xffffffff,0xffffffff,0xfffefefe,0xfffefefe,0xfffdfdfd,0xfffdfdfd,0xfff8f8f8,0xfff0f0f0,0xffe3e3e3,0xffd4d4d4,0xfffefefe,0xffbebebe,0xfd383838,0x803e403e, - 0x53000500,0x40000500,0x2f000500,0x21000500,0x16000500,0xd000500,0xffffff,0xffffff,0xffffff,0x2000500,0x6000500,0xd000500,0x18000500,0x29000500, - 0x3f000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe,0xfffdfdfd,0xfffdfdfd,0xfffbfbfb,0xfff6f6f6,0xffededed,0xffdbdbdb,0xffc6c6c6, - 0xffffffff,0xfffdfdfd,0xffaeaeae,0xfd3b3b3b,0x7e353735,0x55000500,0x41000500,0x2f000500,0x20000500,0x15000500,0xffffff,0xffffff,0x1000500,0x2000500, - 0x6000500,0xe000500,0x1b000500,0x2d000500,0x45000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffdfdfd,0xfffcfcfc,0xfffafafa, - 0xfff4f4f4,0xffe8e8e8,0xffd5d5d5,0xffbababa,0xffffffff,0xffffffff,0xfffdfdfd,0xffa3a3a3,0xfd3e3e3e,0x7a2a2d2a,0x55000500,0x40000500,0x2d000500,0x1e000500, - 0xffffff,0xffffff,0x1000500,0x2000500,0x7000500,0xf000500,0x1d000500,0x30000500,0x4a000500,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff, - 0xfffdfdfd,0xfffdfdfd,0xfffcfcfc,0xfff8f8f8,0xfff3f3f3,0xffe7e7e7,0xffd1d1d1,0xffb4b4b4,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff9d9d9d,0xfd454545, - 0x782b2b2b,0x52000500,0x3c000500,0x29000500,0xffffff,0xffffff,0x1000500,0x3000500,0x7000500,0x10000500,0x1e000500,0x32000500,0x4d000500,0xff000000, - 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffcfcfc,0xfffbfbfb,0xfff8f8f8,0xfff3f3f3,0xffe6e6e6,0xffd1d1d1,0xffb3b3b3,0xffffffff,0xffffffff, - 0xffffffff,0xffffffff,0xfff9f9f9,0xff9e9e9e,0xfc4c4c4c,0x701f231f,0x4c000500,0x36000500,0x1000000,0x2000000,0x5000000,0x9000000,0xf000000,0x18000000, - 0x27000000,0x3b000000,0x55000600,0xff000000,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7,0xfff8f8f8,0xfff6f6f6,0xfff7f7f7,0xfff7f7f7,0xfff6f6f6,0xfff2f2f2,0xffe8e8e8, - 0xffd4d4d4,0xffb9b9b9,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffbfbfb,0xffa1a1a1,0xfb545454,0x5c000500,0x42000500,0x4000000,0x7000000, - 0xd000000,0x15000000,0x1d000000,0x29000000,0x38000000,0x4c000000,0x64000000,0xff000000,0xffe5e5e5,0xffe5e5e5,0xffe7e7e7,0xffe8e8e8,0xffe8e8e8,0xffececec, - 0xffefefef,0xfff3f3f3,0xfff0f0f0,0xffeaeaea,0xffdddddd,0xffc9c9c9,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffbfbfb,0xff3e3e3e, - 0x6a000500,0x4e000500,0x7000000,0xf000000,0x19000000,0x28000000,0x34000000,0x43000000,0x52000000,0x64000000,0x79000500,0xff000000,0xffcbcbcb,0xffcbcbcb, - 0xffcdcdcd,0xffd1d1d1,0xffd6d6d6,0xffdddddd,0xffe7e7e7,0xffececec,0xffefefef,0xffefefef,0xffe7e7e7,0xffc5c5c5,0xff9f9f9f,0xff7f7f7f,0xff6f6f6f,0xff6b6b6b, - 0xff717171,0xff8c8c8c,0xffb5b5b5,0xff000000,0x76000500,0x58000500,0xc000000,0x19000000,0xff78cf7b,0xff75cd78,0xff71cb75,0xff6ec872,0xff69c56d,0xff67c56b, - 0xff62c466,0xff5ec463,0xff58c15d,0xff51bf57,0xff4dbd50,0xff45bc4a,0xff42b948,0xffc6c6c6,0xffd7d7d7,0xffe5e5e5,0xffeeeeee,0xfff2f2f2,0xffcfcfcf,0xffa0a0a0, - 0xff8d8d8d,0xff828282,0xff828282,0xff7d7d7d,0xff717171,0xff707070,0xff747474,0xff000000,0x80000500,0x60000500,0x12000000,0x27000000,0xff74cb77,0xff6fc673, - 0xff6ac16d,0xff64bc68,0xff61ba65,0xff5db860,0xff59b95d,0xff53b757,0xff4db552,0xff48b24c,0xff41b047,0xff3ead43,0xff3ead42,0xffa7a7a7,0xffc4c4c4,0xffdbdbdb, - 0xffececec,0xffd9d9d9,0xffababab,0xff9a9a9a,0xffa4a4a4,0xffc0c0c0,0xffcecece,0xffcfcfcf,0xffc4c4c4,0xff919191,0xff6e6e6e,0xff000000,0x87000500,0x66000500, - 0x17000000,0x31000000,0xff6fc673,0xffffffff,0xffffffff,0xffffffff,0xfff4f9f5,0xffa5d1a7,0xff4ca74f,0xffffffff,0xffffffff,0xffffffff,0xfff3f9f3,0xff9acb9c, - 0xff399e3d,0xff8d8d8d,0xffb1b1b1,0xffd3d3d3,0xffdddddd,0xffbdbdbd,0xffa8a8a8,0xffb5b5b5,0xffe6e6e6,0xfff3f3f3,0xfff7f7f7,0xfff3f3f3,0xffd1d1d1,0xffe7e7e7, - 0xff9f9f9f,0xff000000,0x8b000500,0x6a000500,0x1b000000,0x3c000000,0xff69bf6c,0xffffffff,0xffe0eee1,0xff7fb582,0xffc6ddc7,0xffffffff,0xff78b07a,0xffffffff, - 0xffdceadd,0xff6fa972,0xffc0d9c1,0xffffffff,0xff70ad73,0xff767676,0xffa2a2a2,0xffc8c8c8,0xffcacaca,0xffb3b3b3,0xffb1b1b1,0xffe3e3e3,0xfffafafa,0xfff8f8f8, - 0xfff7f7f7,0xffafafaf,0xff7a7a7a,0xffb6b6b6,0xffe1e1e1,0xff000000,0x8e000500,0x6d000500,0x1d000000,0x43000000,0xff62ba66,0xffffffff,0xffd1e3d2,0xff418943, - 0xff77a778,0xffffffff,0xff99bd9a,0xffffffff,0xffcbddcc,0xff2a772e,0xff6b9f6d,0xffffffff,0xff96bc98,0xff666666,0xff979797,0xffbfbfbf,0xffbfbfbf,0xffb2b2b2, - 0xffc5c5c5,0xfff5f5f5,0xfffbfbfb,0xfffafafa,0xffb6b6b6,0xff7c7c7c,0xff777777,0xff9b9b9b,0xffefefef,0xff000000,0x8f000500,0x6e000500,0x1f000000,0x45000000, - 0xff5eb661,0xffffffff,0xffd1e2d1,0xff3b803d,0xff9abc9a,0xffffffff,0xff88af8a,0xffffffff,0xffcbdacb,0xff276c29,0xff93b495,0xffffffff,0xff88b089,0xff606060, - 0xff919191,0xffbcbcbc,0xffb8b8b8,0xffb2b2b2,0xffcecece,0xfffdfdfd,0xfffcfcfc,0xffbababa,0xff828282,0xff7a7a7a,0xff808080,0xffe4e4e4,0xffffffff,0xff000000, - 0x90000500,0x6e000500,0x1f000000,0x46000000,0xff58b35d,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdbe7dc,0xff397e3d,0xffffffff,0xffffffff,0xffffffff, - 0xffffffff,0xffdae5db,0xff3b803e,0xff616161,0xff929292,0xffbdbdbd,0xffbbbbbb,0xffaeaeae,0xffc6c6c6,0xfff9f9f9,0xffbcbcbc,0xff868686,0xff7e7e7e,0xff777777, - 0xff747474,0xffa4a4a4,0xfff4f4f4,0xff000000,0x90000500,0x6f000500,0x1f000000,0x46000000,0xff53b257,0xffffffff,0xffdde9dd,0xff70a473,0xff5d9a5f,0xff2d7d30, - 0xff2b7a2f,0xffffffff,0xffdae4da,0xff68936a,0xff578c5a,0xff29722b,0xff2b7a2f,0xff656565,0xff969696,0xffc2c2c2,0xffc5c5c5,0xffa8a8a8,0xffadadad,0xffeaeaea, - 0xffb9b9b9,0xff7e7e7e,0xff9b9b9b,0xff9a9a9a,0xff696969,0xff676767,0xff939393,0xff000000,0x90000500,0x6f000500,0x1f000000,0x46000000,0xff4eaf51,0xffffffff, - 0xffcee1ce,0xff2f8334,0xff308734,0xff2f8634,0xff2f8433,0xffffffff,0xffcbdbcb,0xff286f2a,0xff29732b,0xff2b7a2f,0xff2f8233,0xff6b6b6b,0xff9b9b9b,0xffc5c5c5, - 0xffd3d3d3,0xffa8a8a8,0xff949494,0xffb5b5b5,0xfff0f0f0,0xffc5c5c5,0xffebebeb,0xfffcfcfc,0xff9e9e9e,0xff686868,0xff686868,0xff000000,0x90000500,0x6f000500, - 0x1d000000,0x43000000,0xff49b04e,0xffffffff,0xffcde2ce,0xff318834,0xff338d37,0xff348e37,0xff318c36,0xffffffff,0xffcbdccc,0xff29752d,0xff2b7a2f,0xff2e7f31, - 0xff318834,0xff757575,0xffa4a4a4,0xffc7c7c7,0xffe3e3e3,0xffc5c5c5,0xff8d8d8d,0xff818181,0xffa5a5a5,0xffdddddd,0xffe8e8e8,0xffeaeaea,0xffcbcbcb,0xff707070, - 0xff696969,0xff000000,0x90000500,0x6f000500,0x1b000000,0x3e000000,0xff45b148,0xffffffff,0xffcde3ce,0xff348f37,0xff359439,0xff359539,0xff349138,0xffffffff, - 0xffcbddcc,0xff2d7b30,0xff2e8031,0xff308734,0xff338d37,0xff858585,0xffadadad,0xffcbcbcb,0xffe4e4e4,0xffeeeeee,0xffb7b7b7,0xff7d7d7d,0xff767676,0xff797979, - 0xff868686,0xff868686,0xff7c7c7c,0xff6d6d6d,0xff6d6d6d,0xff000000,0x90000500,0x6f000500,0x17000000,0x34000000,0xff3fb245,0xff3ba43f,0xff36993b,0xff369639, - 0xff369a3c,0xff36993b,0xff359539,0xff338e37,0xff2f8433,0xff2f8331,0xff308634,0xff318a35,0xff338e37,0xff979797,0xffb8b8b8,0xffd2d2d2,0xffe3e3e3,0xfff3f3f3, - 0xfff5f5f5,0xffc7c7c7,0xff969696,0xff727272,0xff727272,0xff727272,0xff727272,0xff939393,0xffbebebe,0xff000000,0x90000500,0x6e000500,0x12000000,0x28000000, - 0x47000000,0x6b000000,0x87000000,0x9a000000,0xa7000000,0xb2000000,0xbc000000,0xff000000,0xff6d6d6d,0xff6e6e6e,0xff767676,0xff848484,0xff969696,0xffadadad, - 0xffc6c6c6,0xffd9d9d9,0xffe8e8e8,0xffefefef,0xfff7f7f7,0xfff9f9f9,0xffebebeb,0xffd7d7d7,0xffc9c9c9,0xffc9c9c9,0xffd6d6d6,0xffeaeaea,0xfffafafa,0xff000000, - 0x8e000500,0x6d000500,0xc000000,0x1a000000,0x2f000000,0x47000000,0x5b000000,0x6c000000,0x79000000,0x87000000,0x97000000,0xff000000,0xffa0a0a0,0xffa0a0a0, - 0xffa5a5a5,0xffafafaf,0xffbababa,0xffc7c7c7,0xffd7d7d7,0xffe4e4e4,0xffededed,0xfff2f2f2,0xfff4f4f4,0xfff5f5f5,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8, - 0xfff8f8f8,0xfff7f7f7,0xfff4f4f4,0xff000000,0x8c000500,0x6b000500,0x7000000,0x10000000,0x1b000000,0x2a000000,0x37000000,0x45000000,0x53000000,0x63000000, - 0x76000000,0xff000000,0xffc9c9c9,0xffc9c9c9,0xffcbcbcb,0xffd1d1d1,0xffd5d5d5,0xffdcdcdc,0xffe6e6e6,0xffececec,0xfff2f2f2,0xfff5f5f5,0xfff6f6f6,0xfff6f6f6, - 0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xff000000,0x87000500,0x68000500,0x4000000,0x7000000,0xd000000,0x14000000, - 0x1c000000,0x28000000,0x35000000,0x47000000,0x5c000600,0xff000000,0xffe5e5e5,0xffe5e5e5,0xffe7e7e7,0xffe8e8e8,0xffe8e8e8,0xffececec,0xfff1f1f1,0xfff3f3f3, - 0xfff5f5f5,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xfff8f8f8,0xff000000,0x7f000500,0x61000500, - 0x1000000,0x2000000,0x4000000,0x8000000,0xe000000,0x16000000,0x21000000,0x31000000,0x47000000,0xff000000,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7,0xfff8f8f8, - 0xfff8f8f8,0xfffafafa,0xfffcfcfc,0xfffdfdfd,0xfffefefe,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, - 0xffffffff,0xff000000,0x73000500,0x58000500,0xffffff,0xffffff,0xffffff,0x2000500,0x5000500,0xb000500,0x15000500,0x24000500,0x36000500,0xff000000, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000200,0x2000200,0x5000200,0x9000200,0x10000200,0x18000200,0x22000200, + 0x2c000200,0x36000200,0x3f000200,0x45000200,0x4a000200,0x4d000200,0x4e000200,0x4e000200,0x4e000200,0x4c000200,0x49000200,0x45000200,0x3f000200,0x37000200, + 0x2e000200,0x25000200,0x1c000200,0x13000200,0xd000200,0x8000200,0x4000200,0x2000200,0xffffff,0xffffff,0xffffff,0x1000200,0x3000200,0x7000200, + 0xd000200,0x16000200,0x22000200,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, + 0xff000000,0xff000000,0xfd282828,0x72434543,0x44000200,0x37000200,0x2b000200,0x1f000200,0x15000200,0xd000200,0x8000200,0x4000200,0xffffff,0xffffff, + 0xffffff,0x1000200,0x4000200,0x9000200,0x11000200,0x1d000200,0x2c000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe, + 0xfffefefe,0xfffcfcfc,0xfff9f9f9,0xfff3f3f3,0xffe9e9e9,0xffdedede,0xffc8c8c8,0xfd272727,0x76303230,0x4e000200,0x3d000200,0x2e000200,0x21000200,0x16000200, + 0xe000200,0x8000200,0xffffff,0xffffff,0xffffff,0x2000200,0x5000200,0xb000200,0x15000200,0x24000200,0x36000200,0xff000000,0xffffffff,0xffffffff, + 0xffffffff,0xffffffff,0xfffefefe,0xfffefefe,0xfffdfdfd,0xfffcfcfc,0xfff6f6f6,0xffededed,0xffdedede,0xffcccccc,0xfffefefe,0xffb3b3b3,0xfd292929,0x802e302e, + 0x53000200,0x40000200,0x2f000200,0x21000200,0x16000200,0xd000200,0xffffff,0xffffff,0xffffff,0x2000200,0x6000200,0xd000200,0x18000200,0x29000200, + 0x3f000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefefe,0xfffdfdfd,0xfffcfcfc,0xfffafafa,0xfff4f4f4,0xffe9e9e9,0xffd4d4d4,0xffbcbcbc, + 0xffffffff,0xfffcfcfc,0xffa1a1a1,0xfd2b2b2b,0x7e262826,0x55000200,0x41000200,0x2f000200,0x20000200,0x15000200,0xffffff,0xffffff,0x1000200,0x2000200, + 0x6000200,0xe000200,0x1b000200,0x2d000200,0x45000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfd,0xfffdfdfd,0xfffbfbfb,0xfff9f9f9, + 0xfff2f2f2,0xffe4e4e4,0xffcdcdcd,0xffaeaeae,0xffffffff,0xffffffff,0xfffcfcfc,0xff949494,0xfd2e2e2e,0x7a1d1f1d,0x55000200,0x40000200,0x2d000200,0x1e000200, + 0xffffff,0xffffff,0x1000200,0x2000200,0x7000200,0xf000200,0x1d000200,0x30000200,0x4a000200,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff, + 0xfffdfdfd,0xfffcfcfc,0xfffbfbfb,0xfff7f7f7,0xfff0f0f0,0xffe2e2e2,0xffc8c8c8,0xffa7a7a7,0xffffffff,0xffffffff,0xffffffff,0xfff9f9f9,0xff8e8e8e,0xfd343434, + 0x781e1e1e,0x52000200,0x3c000200,0x29000200,0xffffff,0xffffff,0x1000200,0x3000200,0x7000200,0x10000200,0x1e000200,0x32000200,0x4d000200,0xff000000, + 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcfcfc,0xfffbfbfb,0xfffafafa,0xfff7f7f7,0xfff0f0f0,0xffe1e1e1,0xffc8c8c8,0xffa6a6a6,0xffffffff,0xffffffff, + 0xffffffff,0xffffffff,0xfff8f8f8,0xff8f8f8f,0xfc3b3b3b,0x70141714,0x4c000200,0x36000200,0x1000000,0x2000000,0x5000000,0x9000000,0xf000000,0x18000000, + 0x27000000,0x3b000000,0x55000300,0xff000000,0xfff5f5f5,0xfff5f5f5,0xfff5f5f5,0xfff6f6f6,0xfff4f4f4,0xfff5f5f5,0xfff5f5f5,0xfff4f4f4,0xffefefef,0xffe4e4e4, + 0xffcccccc,0xffadadad,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff929292,0xfb434343,0x5c000200,0x42000200,0x4000000,0x7000000, + 0xd000000,0x15000000,0x1d000000,0x29000000,0x38000000,0x4c000000,0x64000000,0xff000000,0xffe0e0e0,0xffe0e0e0,0xffe2e2e2,0xffe4e4e4,0xffe4e4e4,0xffe8e8e8, + 0xffececec,0xfff0f0f0,0xffededed,0xffe6e6e6,0xffd7d7d7,0xffbfbfbf,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffafafa,0xff2e2e2e, + 0x6a000200,0x4e000200,0x7000000,0xf000000,0x19000000,0x28000000,0x34000000,0x43000000,0x52000000,0x64000000,0x79000200,0xff000000,0xffc2c2c2,0xffc2c2c2, + 0xffc4c4c4,0xffc9c9c9,0xffcecece,0xffd6d6d6,0xffe2e2e2,0xffe8e8e8,0xffececec,0xffececec,0xffe2e2e2,0xffbbbbbb,0xff909090,0xff6e6e6e,0xff5d5d5d,0xff595959, + 0xff5f5f5f,0xff7b7b7b,0xffa8a8a8,0xff000000,0x76000200,0x58000200,0xc000000,0x19000000,0xff66c66a,0xff63c466,0xff5fc163,0xff5cbe60,0xff57bb5b,0xff55bb59, + 0xff50ba54,0xff4cba51,0xff46b64b,0xff40b445,0xff3cb13f,0xff34b039,0xff32ad37,0xffbcbcbc,0xffd0d0d0,0xffe0e0e0,0xffebebeb,0xffefefef,0xffc6c6c6,0xff919191, + 0xff7c7c7c,0xff717171,0xff717171,0xff6c6c6c,0xff5f5f5f,0xff5e5e5e,0xff626262,0xff000000,0x80000200,0x60000200,0x12000000,0x27000000,0xff62c265,0xff5dbc61, + 0xff58b65b,0xff52b056,0xff4fae53,0xff4bac4e,0xff47ad4b,0xff42ab45,0xff3ca841,0xff37a53b,0xff31a336,0xff2ea033,0xff2e9f32,0xff999999,0xffb9b9b9,0xffd4d4d4, + 0xffe8e8e8,0xffd2d2d2,0xff9d9d9d,0xff8b8b8b,0xff959595,0xffb5b5b5,0xffc5c5c5,0xffc6c6c6,0xffbababa,0xff818181,0xff5c5c5c,0xff000000,0x87000200,0x66000200, + 0x17000000,0x31000000,0xff5dbc61,0xffffffff,0xffffffff,0xffffffff,0xfff2f8f3,0xff97c899,0xff3b993e,0xffffffff,0xffffffff,0xffffffff,0xfff1f8f1,0xff8bc28d, + 0xff2a8f2d,0xff7c7c7c,0xffa4a4a4,0xffcbcbcb,0xffd7d7d7,0xffb1b1b1,0xff9a9a9a,0xffa8a8a8,0xffe1e1e1,0xfff1f1f1,0xfff5f5f5,0xfff0f0f0,0xffc9c9c9,0xffe2e2e2, + 0xff909090,0xff000000,0x8b000200,0x6a000200,0x1b000000,0x3c000000,0xff57b45a,0xffffffff,0xffdaeadb,0xff6ea871,0xffbcd6bd,0xffffffff,0xff66a369,0xffffffff, + 0xffd5e6d6,0xff5d9b60,0xffb5d2b6,0xffffffff,0xff5e9f61,0xff646464,0xff939393,0xffbebebe,0xffc0c0c0,0xffa6a6a6,0xffa4a4a4,0xffdedede,0xfff9f9f9,0xfff6f6f6, + 0xfff5f5f5,0xffa2a2a2,0xff686868,0xffa9a9a9,0xffdbdbdb,0xff000000,0x8e000200,0x6d000200,0x1d000000,0x43000000,0xff50ae54,0xffffffff,0xffc9deca,0xff317833, + 0xff659966,0xffffffff,0xff89b18a,0xffffffff,0xffc2d6c3,0xff1d6520,0xff59905b,0xffffffff,0xff86b088,0xff545454,0xff878787,0xffb4b4b4,0xffb4b4b4,0xffa5a5a5, + 0xffbbbbbb,0xfff3f3f3,0xfffafafa,0xfff9f9f9,0xffaaaaaa,0xff6b6b6b,0xff656565,0xff8c8c8c,0xffececec,0xff000000,0x8f000200,0x6e000200,0x1f000000,0x45000000, + 0xff4caa4f,0xffffffff,0xffc8dcc9,0xff2b6f2d,0xff8ab08b,0xffffffff,0xff77a279,0xffffffff,0xffc1d3c2,0xff1a5a1c,0xff83a785,0xffffffff,0xff77a378,0xff4e4e4e, + 0xff818181,0xffb0b0b0,0xffacacac,0xffa5a5a5,0xffc5c5c5,0xfffcfcfc,0xfffbfbfb,0xffaeaeae,0xff717171,0xff696969,0xff6f6f6f,0xffdfdfdf,0xffffffff,0xff000000, + 0x90000200,0x6e000200,0x1f000000,0x46000000,0xff46a64b,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffd4e2d5,0xff2a6d2d,0xffffffff,0xffffffff,0xffffffff, + 0xffffffff,0xffd3e0d4,0xff2b6f2e,0xff4f4f4f,0xff828282,0xffb2b2b2,0xffafafaf,0xffa1a1a1,0xffbcbcbc,0xfff8f8f8,0xffb0b0b0,0xff757575,0xff6d6d6d,0xff656565, + 0xff626262,0xff959595,0xfff2f2f2,0xff000000,0x90000200,0x6f000200,0x1f000000,0x46000000,0xff42a545,0xffffffff,0xffd6e5d7,0xff5e9561,0xff4b8a4d,0xff1f6c22, + 0xff1e6921,0xffffffff,0xffd3dfd3,0xff568358,0xff457b48,0xff1c601e,0xff1e6921,0xff535353,0xff868686,0xffb7b7b7,0xffbbbbbb,0xff9a9a9a,0xff9f9f9f,0xffe6e6e6, + 0xffadadad,0xff6d6d6d,0xff8c8c8c,0xff8b8b8b,0xff575757,0xff555555,0xff838383,0xff000000,0x90000200,0x6f000200,0x1f000000,0x46000000,0xff3da240,0xffffffff, + 0xffc5dbc5,0xff217225,0xff227625,0xff217525,0xff217324,0xffffffff,0xffc1d4c2,0xff1b5d1d,0xff1c611e,0xff1e6821,0xff217124,0xff595959,0xff8c8c8c,0xffbbbbbb, + 0xffcbcbcb,0xff9a9a9a,0xff848484,0xffa8a8a8,0xffededed,0xffbbbbbb,0xffe7e7e7,0xfffbfbfb,0xff8f8f8f,0xff565656,0xff565656,0xff000000,0x90000200,0x6f000200, + 0x1d000000,0x43000000,0xff38a33d,0xffffffff,0xffc4dcc5,0xff237725,0xff247d28,0xff257e28,0xff237b27,0xffffffff,0xffc2d5c3,0xff1c631f,0xff1e6921,0xff206e23, + 0xff237725,0xff636363,0xff959595,0xffbdbdbd,0xffdddddd,0xffbbbbbb,0xff7c7c7c,0xff707070,0xff979797,0xffd6d6d6,0xffe3e3e3,0xffe6e6e6,0xffc2c2c2,0xff5e5e5e, + 0xff575757,0xff000000,0x90000200,0x6f000200,0x1b000000,0x3e000000,0xff34a437,0xffffffff,0xffc4ddc5,0xff257f28,0xff26842a,0xff26852a,0xff258129,0xffffffff, + 0xffc2d7c3,0xff1f6a22,0xff206f23,0xff227625,0xff247c28,0xff747474,0xff9f9f9f,0xffc1c1c1,0xffdfdfdf,0xffebebeb,0xffababab,0xff6c6c6c,0xff646464,0xff676767, + 0xff757575,0xff757575,0xff6b6b6b,0xff5b5b5b,0xff5b5b5b,0xff000000,0x90000200,0x6f000200,0x17000000,0x34000000,0xff2fa534,0xff2b952f,0xff27892b,0xff27862a, + 0xff278a2c,0xff27892b,0xff26852a,0xff247e28,0xff217324,0xff217223,0xff227525,0xff237926,0xff247e28,0xff878787,0xffacacac,0xffcacaca,0xffdedede,0xfff0f0f0, + 0xfff3f3f3,0xffbdbdbd,0xff868686,0xff606060,0xff606060,0xff606060,0xff606060,0xff838383,0xffb3b3b3,0xff000000,0x90000200,0x6e000200,0x12000000,0x28000000, + 0x47000000,0x6b000000,0x87000000,0x9a000000,0xa7000000,0xb2000000,0xbc000000,0xff000000,0xff5b5b5b,0xff5c5c5c,0xff646464,0xff737373,0xff868686,0xff9f9f9f, + 0xffbcbcbc,0xffd2d2d2,0xffe4e4e4,0xffececec,0xfff5f5f5,0xfff8f8f8,0xffe7e7e7,0xffcfcfcf,0xffbfbfbf,0xffbfbfbf,0xffcecece,0xffe6e6e6,0xfff9f9f9,0xff000000, + 0x8e000200,0x6d000200,0xc000000,0x1a000000,0x2f000000,0x47000000,0x5b000000,0x6c000000,0x79000000,0x87000000,0x97000000,0xff000000,0xff919191,0xff919191, + 0xff979797,0xffa2a2a2,0xffaeaeae,0xffbdbdbd,0xffd0d0d0,0xffdfdfdf,0xffe9e9e9,0xffefefef,0xfff2f2f2,0xfff3f3f3,0xfff6f6f6,0xfff7f7f7,0xfff7f7f7,0xfff7f7f7, + 0xfff7f7f7,0xfff5f5f5,0xfff2f2f2,0xff000000,0x8c000200,0x6b000200,0x7000000,0x10000000,0x1b000000,0x2a000000,0x37000000,0x45000000,0x53000000,0x63000000, + 0x76000000,0xff000000,0xffbfbfbf,0xffbfbfbf,0xffc2c2c2,0xffc8c8c8,0xffcdcdcd,0xffd5d5d5,0xffe1e1e1,0xffe8e8e8,0xffefefef,0xfff3f3f3,0xfff4f4f4,0xfff4f4f4, + 0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xfff4f4f4,0xff000000,0x87000200,0x68000200,0x4000000,0x7000000,0xd000000,0x14000000, + 0x1c000000,0x28000000,0x35000000,0x47000000,0x5c000300,0xff000000,0xffe0e0e0,0xffe0e0e0,0xffe2e2e2,0xffe4e4e4,0xffe4e4e4,0xffe8e8e8,0xffeeeeee,0xfff1f1f1, + 0xfff3f3f3,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xfff6f6f6,0xff000000,0x7f000200,0x61000200, + 0x1000000,0x2000000,0x4000000,0x8000000,0xe000000,0x16000000,0x21000000,0x31000000,0x47000000,0xff000000,0xfff5f5f5,0xfff5f5f5,0xfff5f5f5,0xfff6f6f6, + 0xfff7f7f7,0xfff9f9f9,0xfffbfbfb,0xfffdfdfd,0xfffefefe,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, + 0xffffffff,0xff000000,0x73000200,0x58000200,0xffffff,0xffffff,0xffffff,0x2000200,0x5000200,0xb000200,0x15000200,0x24000200,0x36000200,0xff000000, 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, - 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0x63000500,0x4c000500,0xffffff,0xffffff,0xffffff,0x1000500,0x4000500,0x9000500, - 0x11000500,0x1d000500,0x2c000500,0x3e000500,0x51000500,0x63000500,0x73000500,0x7f000500,0x87000500,0x8c000500,0x8e000500,0x90000500,0x90000500,0x90000500, - 0x90000500,0x90000500,0x90000500,0x90000500,0x8e000500,0x8c000500,0x87000500,0x7f000500,0x73000500,0x63000500,0x51000500,0x3e000500,0xffffff,0xffffff, - 0xffffff,0x1000500,0x3000500,0x7000500,0xd000500,0x16000500,0x22000500,0x30000500,0x3e000500,0x4c000500,0x58000500,0x61000500,0x68000500,0x6b000500, - 0x6d000500,0x6e000500,0x6f000500,0x6f000500,0x6f000500,0x6f000500,0x6f000500,0x6e000500,0x6d000500,0x6b000500,0x68000500,0x61000500,0x58000500,0x4c000500, - 0x3e000500,0x30000500 + 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0x63000200,0x4c000200,0xffffff,0xffffff,0xffffff,0x1000200,0x4000200,0x9000200, + 0x11000200,0x1d000200,0x2c000200,0x3e000200,0x51000200,0x63000200,0x73000200,0x7f000200,0x87000200,0x8c000200,0x8e000200,0x90000200,0x90000200,0x90000200, + 0x90000200,0x90000200,0x90000200,0x90000200,0x8e000200,0x8c000200,0x87000200,0x7f000200,0x73000200,0x63000200,0x51000200,0x3e000200,0xffffff,0xffffff, + 0xffffff,0x1000200,0x3000200,0x7000200,0xd000200,0x16000200,0x22000200,0x30000200,0x3e000200,0x4c000200,0x58000200,0x61000200,0x68000200,0x6b000200, + 0x6d000200,0x6e000200,0x6f000200,0x6f000200,0x6f000200,0x6f000200,0x6f000200,0x6e000200,0x6d000200,0x6b000200,0x68000200,0x61000200,0x58000200,0x4c000200, + 0x3e000200,0x30000200 }; static const QRgb DocumentTypeWord_data[] = { - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db, - 0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xffb9c5db,0xde929fb6,0x1d17191a,0xc0b0a,0x111111,0x111111,0x111111, - 0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff1f6ff,0xffffffff, - 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff4f7fe,0xffebf0f9,0xffe3e9f4,0xffdae1ef,0xffced7e8,0xffb7c5df,0xdaa1acbf, - 0x1d141518,0xa0a09,0x121212,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff5f9ff,0xffeef3fc,0xffe8edf7,0xffe0e7f3, - 0xffd7dfed,0xffcbd5e6,0xffb4c1d9,0xffe1eaf9,0xe19ba7bb,0x2418191b,0xb0a09,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffbfc3c4, - 0xffbabec4,0xfff1f5fe,0xffebf0f9,0xffe3eaf4,0xffdce3f0,0xffcfd8e8,0xffb7c3db,0xffe6ecf7,0xffd2ddef,0xdd9ba7bd,0x2017181b,0xa0908,0x111212,0x111111, - 0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, - 0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff8fbff,0xfff4f8fe,0xffeef2fb,0xffe7edf7,0xffdfe5f2,0xffd2dbea,0xffb9c5dc,0xfff5f8ff,0xffdee4f1,0xffd1dbef, - 0xe39ca8be,0x2318181b,0xb0a09,0x121212,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db, + 0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xffbac6db,0xde93a0b7,0x1d181a1b,0xc0b0a,0x111111,0x111111,0x111111, + 0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff1f6ff,0xffffffff, + 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff4f7fe,0xffebf0f9,0xffe3e9f4,0xffdae1ef,0xffced7e8,0xffb8c6df,0xdaa2adc0, + 0x1d151619,0xa0a09,0x121212,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff9fdff,0xfff5f9ff,0xffeef3fc,0xffe8edf7,0xffe0e7f3, + 0xffd7dfed,0xffcbd5e6,0xffb5c2d9,0xffe1eaf9,0xe19ca8bc,0x24191a1c,0xb0a09,0x111111,0x111111,0x111111,0x111111,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffc0c4c5, + 0xffbbbfc5,0xfff1f5fe,0xffebf0f9,0xffe3eaf4,0xffdce3f0,0xffcfd8e8,0xffb8c4db,0xffe6ecf7,0xffd2ddef,0xdd9ca8be,0x2018191c,0xa0908,0x111212,0x111111, + 0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, + 0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfff8fbff,0xfff4f8fe,0xffeef2fb,0xffe7edf7,0xffdfe5f2,0xffd2dbea,0xffbac6dc,0xfff5f8ff,0xffdee4f1,0xffd1dbef, + 0xe39da9bf,0x2319191c,0xb0a09,0x121212,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db, 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfff9fcff,0xfff5f8ff,0xfff0f4fd,0xffe9eff8,0xffe1e7f3,0xffd5ddec, - 0xffbbc7db,0xffffffff,0xfff3f7fe,0xffe2e8f3,0xffd4dff1,0xdd9eaabf,0x231b1d1f,0xa0908,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4,0xffbec2c4,0xffbcbec4, - 0xffb5b9c2,0xffadb2bd,0xffe3e9f4,0xffd9e1ef,0xffb3c0d7,0xffe9ebf1,0xffe2e8ef,0xffdae1ed,0xffced7e6,0xffc5d2e7,0xe496a3ba,0x29202124,0xf0f0e,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, - 0xffffffff,0xfffeffff,0xfffcffff,0xfff7fbff,0xfff2f6fd,0xffedf1fb,0xffe6ecf6,0xffdee5f2,0xffbdcadd,0xff8d9eba,0xff8d9eba,0xff8d9eba,0xff8d9eba,0xff8d9eba, - 0xff8d9eba,0xff8d9eba,0x90805,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, - 0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffbfc3c4,0xffbdbfc4,0xffb6bbc4,0xffb1b5bf,0xffe7ecf7,0xffe1e7f4,0xffdbe3f0,0xffd7dfed, - 0xffcdd6e7,0xffb6c3da,0xffabb9d3,0xffa9b8d2,0xffa3b3d1,0xff798aa6,0x150b0a08,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfffafdff,0xfff5f8fe,0xffeef3fc, - 0xffe9eff8,0xffe2e9f4,0xffdbe3f0,0xffd5ddec,0xffc1cce0,0xffb3bfd8,0xffb0bed6,0xffaebbd5,0xffaabad6,0xff798aa6,0x210b0a07,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4, - 0xffc2c4c4,0xffbdc2c4,0xfff5f8ff,0xfff0f5fd,0xffe9eff9,0xffe5ebf6,0xffdde4f1,0xffcbd5e5,0xffbcc9de,0xffbac7dc,0xffb7c4db,0xffb6c2da,0xffb2c0db,0xff798aa6, - 0x230b0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, - 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafdff,0xfff7faff,0xfff3f7fe,0xffebf0fa,0xffdfe6f2,0xffd0d8e8,0xffc5d0e3,0xffc1cde0,0xffbecadf, - 0xffbcc8dd,0xffbbc8dc,0xffb8c5de,0xff798aa6,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, - 0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4,0xffbdc2c4,0xffb6bbc3,0xffadb3bd,0xffa3aab8,0xff949eb2, - 0xff8f9cb0,0xff909eb2,0xff8c9cb1,0xff8c9bb0,0xff8f9fb3,0xffc0cde0,0xffbdcbe2,0xff798aa6,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafcff,0xfff6faff,0xfff2f6fe, - 0xffe9eef8,0xffdfe5f2,0xffd5deec,0xffd1dae9,0xffd0d9e9,0xffcdd6e7,0xffcbd5e6,0xffc8d2e5,0xffc5d1e3,0xffc5d1e3,0xffc3d0e6,0xff798aa6,0x230a0906,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc2c4c4, - 0xffbfc3c4,0xffbdc2c4,0xffb9bdc4,0xffacb2bc,0xffa2aab7,0xff9ca7b5,0xff9aa5b7,0xff9aa4b7,0xff99a4b6,0xff98a4b6,0xff9aa8ba,0xff98a7b9,0xff97a5b8,0xffcad3e5, - 0xffc8d4e8,0xff798aa6,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, + 0xffbcc7db,0xffffffff,0xfff3f7fe,0xffe2e8f3,0xffd4dff1,0xdd9fabc0,0x231c1e20,0xa0908,0x111111,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5,0xffbfc3c5,0xffbdbfc5, + 0xffb6bac3,0xffaeb3be,0xffe3e9f4,0xffd9e1ef,0xffb4c1d7,0xffe9ebf1,0xffe2e8ef,0xffdae1ed,0xffced7e6,0xffc6d2e7,0xe497a4bb,0x29212225,0xf0f0e,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, + 0xffffffff,0xfffeffff,0xfffcffff,0xfff7fbff,0xfff2f6fd,0xffedf1fb,0xffe6ecf6,0xffdee5f2,0xffbecadd,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb,0xff8e9fbb, + 0xff8e9fbb,0xff8e9fbb,0x90805,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff, + 0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffc0c4c5,0xffbec0c5,0xffb7bcc5,0xffb2b6c0,0xffe7ecf7,0xffe1e7f4,0xffdbe3f0,0xffd7dfed, + 0xffcdd6e7,0xffb7c4da,0xffacbad3,0xffaab9d2,0xffa4b4d1,0xff7a8ba7,0x150b0a08,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffcffff,0xfffafdff,0xfff5f8fe,0xffeef3fc, + 0xffe9eff8,0xffe2e9f4,0xffdbe3f0,0xffd5ddec,0xffc2cce0,0xffb4c0d8,0xffb1bfd6,0xffafbcd5,0xffabbbd6,0xff7a8ba7,0x210b0a07,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5, + 0xffc3c5c5,0xffbec3c5,0xfff5f8ff,0xfff0f5fd,0xffe9eff9,0xffe5ebf6,0xffdde4f1,0xffcbd5e5,0xffbdc9de,0xffbbc7dc,0xffb8c5db,0xffb7c3da,0xffb3c1db,0xff7a8ba7, + 0x230b0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff, + 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafdff,0xfff7faff,0xfff3f7fe,0xffebf0fa,0xffdfe6f2,0xffd0d8e8,0xffc6d0e3,0xffc2cde0,0xffbfcadf, + 0xffbdc8dd,0xffbcc8dc,0xffb9c6de,0xff7a8ba7,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db, + 0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5,0xffbec3c5,0xffb7bcc4,0xffaeb4be,0xffa4abb9,0xff959fb3, + 0xff909db1,0xff919fb3,0xff8d9db2,0xff8d9cb1,0xff90a0b4,0xffc1cde0,0xffbecbe2,0xff7a8ba7,0x230a0907,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffdffff,0xfffafcff,0xfff6faff,0xfff2f6fe, + 0xffe9eef8,0xffdfe5f2,0xffd5deec,0xffd1dae9,0xffd0d9e9,0xffcdd6e7,0xffcbd5e6,0xffc8d2e5,0xffc6d1e3,0xffc6d1e3,0xffc4d0e6,0xff7a8ba7,0x230a0906,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc3c5c5, + 0xffc0c4c5,0xffbec3c5,0xffbabec5,0xffadb3bd,0xffa3abb8,0xff9da8b6,0xff9ba6b8,0xff9ba5b8,0xff9aa5b7,0xff99a5b7,0xff9ba9bb,0xff99a8ba,0xff98a6b9,0xffcad3e5, + 0xffc8d4e8,0xff7a8ba7,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff, 0xffffffff,0xffffffff,0xfffeffff,0xfffdffff,0xfffcffff,0xfff3f7fd,0xffe6ecf6,0xffe1e7f3,0xffdee5f2,0xffdce3f0,0xffdbe3f0,0xffd8e0ee,0xffd7dfed,0xffd4dceb, - 0xffd3dbea,0xffd1dae9,0xffced7e8,0xffced7e7,0xffcbd6ea,0xff798aa6,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4,0xffc4c4c4,0xffc3c4c4,0xffb5b9c2,0xffabb0bd,0xffaab1bd,0xffa7b0bc,0xffa6b0bc,0xffa5afbc, - 0xffa3acbe,0xffa1adbd,0xff9fabbd,0xff9faabe,0xff9cabbf,0xffa1afc0,0xffa0aec0,0xffd0dae9,0xffcfd9ec,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffecf1fa,0xffeaeff9, - 0xffe7edf7,0xffe4eaf5,0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f1,0xffdae1ef,0xffdae1ee,0xffd8e0ee,0xffd5dded,0xffd4dceb,0xffd3dcea,0xffd1dbed,0xff798aa6, - 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c4c4, - 0xffbfc2c4,0xffb4b9c2,0xffb2b9c2,0xffb0b6c3,0xffadb4c2,0xffacb5c2,0xffabb3c3,0xffa9b4c1,0xffa8b3c2,0xffa6b2c1,0xffa5b2c4,0xffa4b0c3,0xffa3b2c4,0xffa2b2c5, - 0xffa5b3c8,0xffd5ddec,0xffd2dcee,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, + 0xffd3dbea,0xffd1dae9,0xffced7e8,0xffced7e7,0xffcbd6ea,0xff7a8ba7,0x230a0806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5,0xffc5c5c5,0xffc4c5c5,0xffb6bac3,0xffacb1be,0xffabb2be,0xffa8b1bd,0xffa7b1bd,0xffa6b0bd, + 0xffa4adbf,0xffa2aebe,0xffa0acbe,0xffa0abbf,0xff9dacc0,0xffa2b0c1,0xffa1afc1,0xffd0dae9,0xffcfd9ec,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffecf1fa,0xffeaeff9, + 0xffe7edf7,0xffe4eaf5,0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f1,0xffdae1ef,0xffdae1ee,0xffd8e0ee,0xffd5dded,0xffd4dceb,0xffd3dcea,0xffd1dbed,0xff7a8ba7, + 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc5c5c5, + 0xffc0c3c5,0xffb5bac3,0xffb3bac3,0xffb1b7c4,0xffaeb5c3,0xffadb6c3,0xffacb4c4,0xffaab5c2,0xffa9b4c3,0xffa7b3c2,0xffa6b3c5,0xffa5b1c4,0xffa4b3c5,0xffa3b3c6, + 0xffa6b4c8,0xffd5ddec,0xffd2dcee,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db, 0xfff2f7ff,0xffffffff,0xffffffff,0xffffffff,0xfff5f9fe,0xffeff3fc,0xffeef3fb,0xffecf1f9,0xffeaeff9,0xffe8edf7,0xffe6ecf7,0xffe4eaf5,0xffe1e9f4,0xffe0e6f2, - 0xffdee5f1,0xffdce3f1,0xffdae2ef,0xffd8dfed,0xffd6deed,0xffd6deec,0xffd4def0,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc3c4c5,0xffb6bcc4,0xffb4bbc5,0xffb4bcc7,0xffb2b9c5,0xffb1b8c5,0xffb0b8c5, - 0xffaeb8c5,0xffafb8c5,0xffacb6c5,0xffaab7c8,0xffaab6c8,0xffa8b5c8,0xffa6b4c9,0xffa6b6cb,0xffa4b4ca,0xffd5dded,0xffd5dff0,0xff798aa6,0x23090806,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xfffafdff,0xfff2f6fd,0xffeff4fc, + 0xffdee5f1,0xffdce3f1,0xffdae2ef,0xffd8dfed,0xffd6deed,0xffd6deec,0xffd4def0,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffc4c5c6,0xffb7bdc5,0xffb5bcc6,0xffb5bdc7,0xffb3bac6,0xffb2b9c6,0xffb1b9c6, + 0xffafb9c6,0xffb0b9c6,0xffadb7c6,0xffabb8c8,0xffabb7c8,0xffa9b6c8,0xffa7b5c9,0xffa7b7cb,0xffa5b5ca,0xffd5dded,0xffd5dff0,0xff7a8ba7,0x23090806,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xfffafdff,0xfff2f6fd,0xffeff4fc, 0xffeef3fb,0xffecf1fa,0xffeaeff9,0xffe9eef8,0xffe8edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee,0xffd8e0ee,0xffd7dfee, - 0xffd5dff0,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff, - 0xffffffff,0xffbcbfc8,0xffb6bcc7,0xffb4bcc8,0xffb3bcc7,0xffb4bbc8,0xffb2b9c8,0xffb1b9c8,0xffb1bcc8,0xffafbbca,0xffaebacb,0xffadb9cb,0xffaab8cb,0xffa9b8cc, - 0xffa8b9cd,0xffaab8cd,0xffa7b8cd,0xffd8e0ee,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xfff4f8fe,0xfff0f4fc,0xffeff4fc,0xffeef3fb,0xffecf1fa,0xffebf0f9,0xffe9eef8,0xffe7edf7,0xffe6ecf6, - 0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e0ef,0xffd7dfed,0xffd8e0ee,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xffffffff,0xffbbbfca,0xffb7bcc8,0xffb6bdca,0xffb6bdc9,0xffb2bbc9, - 0xffb3beca,0xffb2bdca,0xffb0bccc,0xffb0bccd,0xffafbccd,0xffacbccd,0xffaebcce,0xffacbace,0xffabb9cf,0xffa9bbd0,0xffa8bbd1,0xffd8e0ee,0xffd5dff0,0xff798aa6, - 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xfffcfeff,0xfff2f6fd, + 0xffd5dff0,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff, + 0xffffffff,0xffbdc0c8,0xffb7bdc7,0xffb5bdc8,0xffb4bdc7,0xffb5bcc8,0xffb3bac8,0xffb2bac8,0xffb2bdc8,0xffb0bcca,0xffafbbcb,0xffaebacb,0xffabb9cb,0xffaab9cc, + 0xffa9bacd,0xffabb9cd,0xffa8b9cd,0xffd8e0ee,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xfff4f8fe,0xfff0f4fc,0xffeff4fc,0xffeef3fb,0xffecf1fa,0xffebf0f9,0xffe9eef8,0xffe7edf7,0xffe6ecf6, + 0xffe4eaf5,0xffe2e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e0ef,0xffd7dfed,0xffd8e0ee,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xffffffff,0xffbcc0ca,0xffb8bdc8,0xffb7beca,0xffb7bec9,0xffb3bcc9, + 0xffb4bfca,0xffb3beca,0xffb1bdcc,0xffb1bdcd,0xffb0bdcd,0xffadbdcd,0xffafbdce,0xffadbbce,0xffacbacf,0xffaabcd0,0xffa9bcd1,0xffd8e0ee,0xffd5dff0,0xff7a8ba7, + 0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xfffcfeff,0xfff2f6fd, 0xfff0f4fc,0xffeef3fb,0xffedf2fb,0xffebf0f9,0xffeaeff9,0xffe8edf7,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe1e8f3,0xffdfe6f2,0xffdde4f0,0xffdce3f0,0xffd9e1ee, - 0xffd8e0ee,0xffd7dfed,0xffd6dff1,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db, + 0xffd8e0ee,0xffd7dfed,0xffd6dff1,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db, 0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3, - 0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff798aa6,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffb9c5db,0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8, - 0xffb3becf,0xffb3c0d0,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff798aa6,0x23090806,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xffeaf3ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb, + 0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff7a8ba7,0x23090806,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffbac6db,0xfff2f7ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb,0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8, + 0xffb4bfcf,0xffb4c1d0,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed,0xffd6e0f2,0xff7a8ba7,0x23090806,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xffeaf3ff,0xffffffff,0xfff8fafe,0xffeff4fc,0xffeff4fc,0xffeef3fb, 0xffedf2fb,0xffeaeff9,0xffeaeff9,0xffe8eef8,0xffe7edf7,0xffe6ecf6,0xffe3e9f4,0xffe0e7f3,0xffdfe6f2,0xffdce3f0,0xffdae2ef,0xffd8e0ee,0xffd8e0ee,0xffd7deed, - 0xffd6e0f2,0xff798aa6,0x23080705,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffb9c5db,0xff798aa6,0xff798aa6, - 0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6, - 0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0xff798aa6,0x280f0f0e,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffd6e0f2,0xff7a8ba7,0x23080705,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffbac6db,0xff7a8ba7,0xff7a8ba7, + 0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7, + 0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0xff7a8ba7,0x280f0f0e,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0x60f0f0e,0x1b090808,0x340c0b0a,0x3b0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a, 0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x3a0c0c0a,0x310e0e0d,0x1b111112,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x2111111,0xa111111,0x10111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111, 0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0x11111111,0xe111111, 0x7111111,0xffffff }; -static const QRgb Games_data[] = { - 0x0,0x0,0x0,0x186b7bdd,0xd77387d0,0x25101320,0x0,0x65060a2,0x3e4e5d9f,0x4d495794,0x3273052,0x0,0x0,0x0, - 0x0,0x0,0x0,0x2e6778cf,0xdc7386c8,0x4c434f89,0x635a6ab2,0xd37989c5,0xfdaabbe0,0xfdacbbdc,0x93505c93,0x51d2348,0x0,0x0, - 0x0,0x0,0x0,0x286472d0,0xfa7184d4,0xff7a8cce,0xffaec4ee,0xff96a5ff,0xffc0d4fd,0xffb7dfd9,0xffbac6de,0x80424c80,0x1050509,0x0, - 0x0,0x6674d6,0x306472ce,0xc47485d6,0xffa6bdef,0xffcbe5ff,0xffcdd7ed,0xffb2b6f0,0xffb5dade,0xff79c382,0xfff0fbfd,0xfba3acc9,0x452e3668,0x0, - 0x56876dd,0x7c6b7adc,0xf58399e1,0xff9ab1d2,0xffb9d3f2,0xffcbe5ff,0xffed9172,0xffe0c3b3,0xfff1cf6b,0xffebf6f9,0xfff4fcff,0xfff7fbfd,0xd1656d97,0x90f1228, - 0x9a6e80e5,0xff8ca7df,0xff9a9ea4,0xff979797,0xff75797f,0xffcde5fd,0xffd6ebff,0xffddeefa,0xffe0eceb,0xffd9edff,0xfff5fdff,0xfffcffff,0xffc5c9db,0x5c2d3667, - 0xbf738deb,0xff899fbc,0xff959595,0xff717171,0xff7d8083,0xffd0e7fe,0xffd2e8ff,0xffbcdbff,0xffa0c0f3,0xf66f84ba,0xfeacbadb,0xfff6fbff,0xffedf6ff,0xc0515e8f, - 0xa86c7fe0,0xff9fc1ed,0xff959ea9,0xff98a1ab,0xffbdd5ef,0xffabd0ff,0xff96bef9,0xfa738fcc,0xb0404d80,0x3d191e3a,0x81384378,0xfa7f93c3,0xff9db5e1,0xb93e497a, - 0x7c6574d3,0xff9ec4fe,0xffbcdbff,0xffc4dfff,0xff92baf8,0xf96c88cf,0xbb475690,0x50242b4c,0xb000000,0x0,0x1000000,0x45272e5c,0x76272e5c,0x280f1225, - 0x4a616fc8,0xff8eaff4,0xffbddcff,0xffc6e0ff,0xf77992d4,0x5122294a,0xd020205,0x1000000,0x0,0x0,0x0,0x0,0x1000000,0x0, - 0x125767b0,0xfb7997e6,0xffbfdcff,0xffc5e0ff,0xf06e89cb,0x1705060c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x14d5d9b,0xc56980d3,0xffb4d5ff,0xffb3d5ff,0xe05f77bc,0xf000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x675969b7,0xff7ca1ed,0xff7ba4ee,0xba4c5c99,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x6303c6d,0x72495694,0x813e4a7f,0x2715192e,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb Go_black_highlight_data[] = { - 0x28999b9c,0x2d949697,0x32959798,0x43868788,0x776f6f70,0x9a626263,0x93606060,0x60646565,0x31818384,0x22969899,0x1e939596,0x1b919394,0x2e9a9b9c,0x369c9d9f, - 0x6b7c7d7e,0xbc737474,0xe2696a6a,0xed656565,0xed616162,0xe35a5a5a,0xb24b4c4c,0x51555555,0x25818384,0x1c919394,0x34949697,0x6a848586,0xce7d7e7e,0xf97b7c7d, - 0xff767777,0xff767777,0xff727373,0xff5e5e5f,0xfa494a4a,0xcd393939,0x5b414243,0x237d7e7f,0x409c9e9f,0xb97f8080,0xf9838484,0xffaaabac,0xffa6a7a8,0xff9b9c9c, - 0xff717272,0xff5e5e5e,0xff505151,0xfc3f3f3f,0xb62e2f2f,0x46464748,0x68848585,0xde828283,0xffa0a1a2,0xffe5e6e6,0xffffffff,0xffa6a8a8,0xff7b7c7c,0xff666666, - 0xff545555,0xff434343,0xeb2d2d2e,0x7a2d2d2e,0x82777878,0xea757676,0xff919292,0xffbdbebe,0xffe6e6e7,0xffa2a3a4,0xff7f8080,0xff646565,0xff515152,0xff404040, - 0xfa2d2d2d,0xa3232324,0x766f7071,0xea6e6f6f,0xff787a7a,0xff7e8080,0xff949595,0xff757676,0xff646464,0xff575858,0xff4d4d4e,0xff404040,0xfc2d2d2d,0xb2202020, - 0x4a7c7e7e,0xda59595a,0xfe565757,0xff6c6d6d,0xff787878,0xff626262,0xff525354,0xff484849,0xff3c3c3c,0xff373838,0xfa242424,0xa91e1e1e,0x2e8d8f90,0x9b464747, - 0xf7484949,0xff5a5a5b,0xff636364,0xff515152,0xff454545,0xff3c3c3c,0xff373838,0xff2a2a2a,0xee191919,0x871e1f1f,0x26909293,0x4b585859,0xc0393939,0xfa414141, - 0xff4e4e4f,0xff434343,0xff3b3c3c,0xff333334,0xff2a2b2b,0xf81b1b1c,0xc0171717,0x572b2b2c,0x218e9091,0x28818384,0x5d444445,0xb52d2d2d,0xeb2e2f2f,0xfa2d2d2d, - 0xfd272728,0xfb1f2020,0xf1181818,0xc4171717,0x6f232424,0x2e4b4c4d,0x1e8e9091,0x1f929495,0x28787a7b,0x4b434445,0x842c2c2c,0xaf232323,0xc01c1d1d,0xb71a1a1b, - 0x931c1c1c,0x5c282929,0x2f4a4b4c,0x1b7c7e7e -}; - -static const QRgb Go_black_data[] = { - 0x0,0x0,0x0,0x184a4a4a,0x664a4a4a,0x89454545,0x763c3c3c,0x302d2d2d,0x2000000,0x0,0x0,0x0,0x0,0x0, - 0x6d505050,0xf5535353,0xff525252,0xff4d4d4d,0xff454545,0xfd393939,0xb3272727,0x18080808,0x1000000,0x0,0x0,0x64505050,0xfe575757,0xff595959, - 0xff585858,0xff4d4d4d,0xff464646,0xff3d3d3d,0xff313131,0xce1a1a1a,0x1d000000,0x1000000,0xb474747,0xec525252,0xff575757,0xff989898,0xffa2a2a2,0xff4f4f4f, - 0xff434343,0xff3b3b3b,0xff313131,0xff212121,0x98090909,0x12000000,0x48474747,0xff515151,0xff545454,0xff888888,0xff787878,0xff474747,0xff3f3f3f,0xff373737, - 0xff2d2d2d,0xff212121,0xe80f0f0f,0x3f000000,0x64424242,0xff4b4b4b,0xff4c4c4c,0xff4c4c4c,0xff474747,0xff404040,0xff3a3a3a,0xff323232,0xff282828,0xff1e1e1e, - 0xf8111111,0x6e000000,0x4b363636,0xff434343,0xff444444,0xff424242,0xff3f3f3f,0xff3a3a3a,0xff333333,0xff2b2b2b,0xff222222,0xff1b1b1b,0xfa0e0e0e,0x82000000, - 0x101b1b1b,0xf1343434,0xff3b3b3b,0xff3a3a3a,0xff363636,0xff313131,0xff2b2b2b,0xff232323,0xff1c1c1c,0xff1a1a1a,0xf3050505,0x75000000,0x2000000,0x861d1d1d, - 0xff2d2d2d,0xff2f2f2f,0xff2c2c2c,0xff282828,0xff212121,0xff1c1c1c,0xff1b1b1b,0xfe0f0f0f,0xd8000000,0x4a000000,0x0,0x15000000,0xb4101010,0xfe1e1e1e, - 0xff1f1f1f,0xff1d1d1d,0xff1b1b1b,0xff1a1a1a,0xfe0e0e0e,0xed000000,0x8f000000,0x18000000,0x0,0x2000000,0x28000000,0x97020202,0xe90a0a0a,0xf90d0d0d, - 0xfb0a0a0a,0xf6030303,0xdf000000,0x95000000,0x2c000000,0x3000000,0x0,0x0,0x2000000,0x1b000000,0x55000000,0x89000000,0x9c000000,0x8b000000, - 0x58000000,0x1d000000,0x3000000,0x0 -}; - -static const QRgb Go_white_data[] = { - 0x0,0x0,0x0,0x0,0x10d0d0d,0x730302c,0xb282825,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0, - 0x1000000,0x50bdbdac,0xc7cecebb,0xf5d3d3c0,0xf8c3c3b1,0xde99998b,0x875b5b52,0x17030303,0x2000000,0x0,0x0,0x0,0x86cdcdba,0xfef7f7e2, - 0xfffdfde8,0xfff8f8e1,0xffe7e7d2,0xffcdcdba,0xffa6a697,0xd355554d,0x2a020202,0x2000000,0x0,0x4dc5c5b2,0xfef7f7e2,0xfffffff0,0xfffffff1,0xfffdfde9, - 0xffeeeed8,0xffd7d7c3,0xffb7b7a6,0xff87877a,0xbf2b2b27,0x1a000000,0x1000000,0xc4d1d1be,0xfffdfde8,0xfffffff1,0xfffffffd,0xfffffff7,0xffececd6,0xffd5d5c1, - 0xffb7b7a6,0xff8e8e81,0xfa474740,0x51000000,0x53e3e38,0xf4d4d4c0,0xfff8f8e1,0xfffdfde9,0xfffffff7,0xfffafaec,0xffe2e2cd,0xffcbcbb8,0xffafaf9e,0xff88887b, - 0xff4c4c45,0x8b070706,0x8383833,0xf7c3c3b2,0xffe7e7d2,0xffeeeed8,0xffececd6,0xffe2e2cd,0xffd1d1be,0xffbcbcaa,0xff9f9f90,0xff79796d,0xff40403a,0x9d070706, - 0x3000000,0xd89d9d8f,0xffcdcdba,0xffd7d7c3,0xffd5d5c1,0xffcbcbb8,0xffbcbcaa,0xffa6a697,0xff89897c,0xff616158,0xfe2c2c28,0x87010101,0x1000000,0x7a65655b, - 0xffa6a697,0xffb7b7a6,0xffb7b7a6,0xffafaf9e,0xff9f9f90,0xff89897c,0xff6a6a60,0xff3f3f39,0xf2161613,0x5b000000,0x0,0xe060605,0xca585851,0xff87877a, - 0xff8e8e81,0xff88887b,0xff79796d,0xff616158,0xff3f3f39,0xfc1e1e1b,0xa7010101,0x23000000,0x0,0x1000000,0x1f030303,0xb62d2d29,0xfa474740,0xff4c4c45, - 0xff40403a,0xfe2c2c28,0xf2161613,0xa7010101,0x39000000,0x5000000,0x0,0x0,0x1000000,0x14000000,0x44010100,0x7e080807,0x8e080807,0x7a010101, - 0x55000000,0x22000000,0x5000000,0x0 -}; - -static const QRgb HelpButton_data[] = { - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dedede,0xfadcdcdc,0xd8d1d1d1,0x9ec8c8c8,0x509d9d9d,0xc000000,0x3000000,0xffffff,0xffffff, - 0xffffff,0xffffff,0x60dcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcdcdcd,0xffd7d7d7,0xe6c5c5c5,0x838d8d8d,0x18000000,0x4000000,0xffffff, - 0xffffff,0x3edddcdc,0xdbdadada,0xffd8d8d8,0xffaaa9a9,0xff434343,0xff424142,0xff686768,0xffc4c4c4,0xffbdbdbd,0xec9e9d9e,0x75595959,0x18000000,0x3000000, - 0xffffff,0x94d5d6d5,0xffd1d0d0,0xffbdbdbd,0xff000000,0xff737373,0xffbdbdbd,0xff000000,0xff717171,0xffb6b7b6,0xffabaaaa,0xc8616161,0x3d000000,0xc000000, - 0xffffff,0xd5cbcbcb,0xffbbbbbb,0xffadadad,0xff6d6d6d,0xff868686,0xffb5b5b5,0xff000000,0xff6a6a6a,0xffb1b1b1,0xffb1b1b1,0xef616161,0x61000000,0x1a000000, - 0xffffff,0xfabfbfbf,0xffababab,0xffa4a4a4,0xffb2b2b2,0xffa6a6a6,0xff545454,0xff2a2a2a,0xff979797,0xffaeaeae,0xffa2a2a2,0xfd5d5d5d,0x7c000000,0x25000000, - 0xffffff,0xd9b0b0b0,0xffa0a0a0,0xffa6a6a6,0xff9f9f9f,0xff606060,0xff000000,0xffa0a0a0,0xffa6a6a6,0xffa3a3a3,0xff8c8c8c,0xf2484848,0x85000000,0x2b000000, - 0xffffff,0xa0949494,0xff9b9b9a,0xff9a9a9a,0xffa5a5a5,0xff9d9d9d,0xffa1a1a0,0xffa4a4a4,0xff9b9b9b,0xff9a9b9a,0xff6a696a,0xdf363636,0x7c000000,0x25000000, - 0xffffff,0x516f6f6f,0xe7818181,0xff8d8d8d,0xff949494,0xff545454,0xff353535,0xff9e9e9e,0xff8f8f8f,0xff737273,0xf5414141,0xbb1a1a1a,0x61000000,0x1a000000, - 0xffffff,0xc000000,0x84505050,0xed626262,0xff6f6e6e,0xff656565,0xff353535,0xff767576,0xff636263,0xf5414140,0xcd1f1f1f,0x83000000,0x3d000000,0xc000000, - 0xffffff,0x3000000,0x18000000,0x762f2f2f,0xc93b3b3b,0xf0404040,0xfd464646,0xf3393939,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000, - 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, - 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff -}; - -static const QRgb Language_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x411d62c2,0x431b5ebb,0x441859b7, - 0x441858b5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x31216bc7,0x822069c7,0xc12068c6,0xf01f67c6, - 0xff1d65c6,0xff1c63c4,0xff1b60c2,0xff195ec1,0xff185cc0,0xff175abe,0xf01658bc,0xc31453b7,0x87124eb0,0x370f46a1,0x4000000,0x1000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x61246fcb,0xe0236ecb, - 0xff216cca,0xff387fda,0xff609de7,0xff85b7f1,0xffaad3ff,0xffacd4ff,0xffc4e2ff,0xffc3e2ff,0xffaad3ff,0xffa7d2ff,0xff80b2ee,0xff5993e1,0xff2e6ecf,0xff114fb7, - 0xe20f4cb4,0x6b0d42a2,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x512571cc,0xe02471cc,0xff2c77d2,0xff68a6eb,0xff7c9ebc,0xff737b7f,0xff505052,0xff2c2c2c,0xffb6bec2,0xffe6eef3,0xffe6edf3,0xffe4ecf2,0xffa9b1b7,0xff4f5355, - 0xff6e7a7f,0xffd7f3ff,0xffc9edff,0xff9fd0fa,0xff5d98e3,0xff1855bc,0xe30c45ae,0x5c093b99,0x7000000,0x2000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x902572cd,0xff2471cd,0xff579be6,0xffacddff,0xff161616,0xffa8a8a8,0xffffffff,0xffc8b8b9,0xffef0030,0xff503020,0xff484849, - 0xff606060,0xff808080,0xffb0b0b0,0xff989899,0xff4d5254,0xffd9f4ff,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffa5dbff,0xff4883d8,0xff0942af,0x9d073a9d,0xd000000, - 0x2000000,0x0,0x0,0x0,0x0,0x0,0xa02672cd,0xff2976d1,0xff72b2f6,0xffb4e7ff,0xffc0edff,0xff404040,0xffc8c8c9,0xffffffff, - 0xffe06090,0xffff0000,0xff923822,0xffff0000,0xffef3060,0xffef97da,0xffffffff,0xffc8c8c9,0xff404040,0xffc8dbe5,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffb9ebff, - 0xffb1e8ff,0xff70adf0,0xff0d45b1,0xae05379b,0x10000000,0x3000000,0x0,0x0,0x0,0x812673cd,0xff2a76d1,0xff6aacf6,0xffabe4ff,0xffb7eaff, - 0xffbfecff,0xff363636,0xffa0a0a0,0xffffffff,0xffff6060,0xffff0000,0xffef0000,0xffbc220c,0xffff0000,0xffff0000,0xffffcad5,0xffe0e0e0,0xff8c8c8c,0xff59626a, - 0xffcbecfa,0xffc8efff,0xffc0edff,0xffb8eaff,0xffb0e8ff,0xffa5e2ff,0xff5f9eef,0xff0b41ae,0x87022f8c,0xf000000,0x2000000,0x0,0x21256fc9,0xff2572ce, - 0xff5fa3f3,0xff8bcaff,0xffade7ff,0xffb5eaff,0xffbdecff,0xff222222,0xffa0a0a0,0xffffffff,0xffff8a76,0xffff0000,0xffd51616,0xff661616,0xff961616,0xffff0000, - 0xffff0000,0xffffffff,0xffa0a0a2,0xff3d4147,0xff56636d,0xffc5eeff,0xffbdecff,0xffb6eaff,0xffaee8ff,0xffa7e4ff,0xff89c8ff,0xff5290e9,0xff0236a6,0x3f011b54, - 0xa000000,0x1000000,0x912470cb,0xff3882da,0xff76b7ff,0xff90cfff,0xffabe6ff,0xffb2e9ff,0xffbaebff,0xff0c1c0c,0xff989899,0xffffffff,0xff806070,0xff384848, - 0xff585858,0xff262616,0xff000000,0xff6c3c3c,0xff800000,0xffb0b0b0,0xff646455,0xff223232,0xff101000,0xff60767f,0xffbbebff,0xffb3e9ff,0xfface7ff,0xffa6e3ff, - 0xff8bcaff,0xff70b1ff,0xff1c53bc,0xa8002b8c,0x18000000,0x4000000,0xe02470cc,0xff5da1ef,0xff7bbbff,0xff8dccff,0xffa8e5ff,0xffafe8ff,0xffb6eaff,0xff000000, - 0xff7e7e7f,0xffe0e0e0,0xff000000,0xff324222,0xff585858,0xff3c3c2c,0xff000000,0xff202010,0xff324232,0xff585858,0xff4e4e4e,0xff102010,0xff000000,0xff000000, - 0xffb6eaff,0xffb0e8ff,0xffa9e5ff,0xffa4e1ff,0xff8ac9ff,0xff74b5ff,0xff4d8ae3,0xe800309e,0x28000000,0xa000000,0xff236fcc,0xff70b2f9,0xff7fbfff,0xff84c3ff, - 0xffa0deff,0xffabe6ff,0xffb1e8ff,0xff000000,0xff747475,0xffe0e0e0,0xff000000,0xff201010,0xff8c2c2c,0xffd00000,0xff900000,0xff3c1c0c,0xff183828,0xff525242, - 0xff585858,0xff262616,0xff000000,0xff100000,0xffb2e9ff,0xffabe7ff,0xffa6e3ff,0xff9cdaff,0xff7fbfff,0xff78b9ff,0xff65a4f4,0xff0032a4,0x33000000,0x10000000, - 0xff226dcb,0xff7ebeff,0xff83c3ff,0xff88c7ff,0xff8ecdff,0xffa3e1ff,0xfface7ff,0xff000000,0xff586859,0xffc8c8c9,0xff100000,0xff900000,0xffef0000,0xffff0000, - 0xffb00000,0xff700000,0xff501000,0xff7c2c2c,0xff7c422c,0xff961616,0xffa00000,0xff800000,0xff56737f,0xffa7e4ff,0xff9fddff,0xff87c7ff,0xff81c1ff,0xff7cbcff, - 0xff77b7ff,0xff0032a4,0x38000000,0x12000000,0xf0216bc8,0xff6aacf1,0xff87c6ff,0xff8ccbff,0xff91cfff,0xff95d4ff,0xffa0ddff,0xff000000,0xff2c2c2c,0xff9aa6b2, - 0xff400000,0xffa00000,0xffe00000,0xffff0000,0xffe02000,0xffa02000,0xff5c0c0c,0xffd00000,0xffff0000,0xffff0000,0xffc00000,0xff800000,0xff53717f,0xff9cdaff, - 0xff8fceff,0xff8ac9ff,0xff85c4ff,0xff7fbfff,0xff5c99e8,0xf40031a1,0x39000000,0x13000000,0xb41f66c3,0xff4c91df,0xff8acaff,0xff90ceff,0xff95d3ff,0xff9ad8ff, - 0xff9edcff,0xff000000,0xffa9e5ff,0xffb7d1e6,0xff200000,0xff900000,0xffd04600,0xffffdf00,0xffffff00,0xffefb000,0xff763c16,0xffd02c00,0xffff0000,0xffff0000, - 0xffd03600,0xffb02c00,0xff4d6c7f,0xff97d6ff,0xff92d1ff,0xff8dccff,0xff88c7ff,0xff83c2ff,0xff3770cc,0xc7002c90,0x35000000,0x11000000,0x491b5aaf,0xff246bc9, - 0xff87c6fb,0xff93d2ff,0xff98d7ff,0xff9ddbff,0xffa2e0ff,0xff53717f,0xffade7ff,0xffb8d0e6,0xff000000,0xffdf6000,0xffffa000,0xffffff00,0xffffff00,0xffffc000, - 0xff9c4c0c,0xffd0b020,0xffffc000,0xffffc000,0xffffc000,0xffff8000,0xff4f6e7f,0xff9bd9ff,0xff96d4ff,0xff91cfff,0xff8bcaff,0xff7dbcf9,0xff083baa,0x74001c5b, - 0x2c000000,0xc000000,0x5000000,0xc61b60bd,0xff397dd2,0xff96d5ff,0xff9cdaff,0xffa1dfff,0xffa6e3ff,0xfface7ff,0xffb3e9ff,0xffb9d0e6,0xff000000,0xffff8000, - 0xffefb000,0xffa08600,0xff707020,0xffa6602c,0xff7c480c,0xffb09020,0xffffff00,0xffffff00,0xffffdf00,0xffef7600,0xff51707f,0xff9fdcff,0xff99d7ff,0xff94d2ff, - 0xff8ecdff,0xff2258bb,0xd2002d95,0x3d000000,0x1d000000,0x5000000,0x1000000,0x1d0f366c,0xf21a5ebf,0xff498bd8,0xff9fdcff,0xffa4e2ff,0xffaae6ff,0xffb2e9ff, - 0xffbaebff,0xffbbd0e5,0xff000000,0xffdf8000,0xff705030,0xffa4a7ac,0xffadb2b9,0xff705600,0xff564626,0xffefb000,0xffb09000,0xff808000,0xff806000,0xff4b5a40, - 0xffa7e4ff,0xffa2dfff,0xff9cdaff,0xff96d5ff,0xff366dc6,0xe900309d,0x51000a20,0x2c000000,0xe000000,0x1000000,0x0,0x4000000,0x4311438a,0xe61658b9, - 0xff3072c9,0xff95d2f7,0xffafe8ff,0xffb7eaff,0xffbfedff,0xffbad0e4,0xff000000,0xff505356,0xffbfc9d9,0xffbdc7d8,0xffbbc6d7,0xffa9afba,0xff7d838e,0xff565c66, - 0xff838c9b,0xffb1bdd2,0xff8fabc1,0xffb3e9ff,0xffabe6ff,0xffa4e2ff,0xff8bc7f4,0xff1d51b5,0xdd002f9a,0x6900174b,0x33000000,0x16000000,0x4000000,0x0, - 0x0,0x0,0x7000000,0x2809244c,0xbf1350ad,0xff1d5dbf,0xff629ddc,0xffb1e2fb,0xffc4eeff,0xffc8ebfa,0xff000000,0xffb9ced8,0xffbed0d8,0xffc1d0d8, - 0xffc2d0d8,0xffbfd0d8,0xffbbcfd8,0xffb6cdd8,0xffb0ccd8,0xffaac9d8,0xffacd4e4,0xffb7eaff,0xffa3dcf9,0xff538bd2,0xff0a3daa,0xc7002c90,0x50000a21,0x32000000, - 0x19000000,0x6000000,0x0,0x0,0x0,0x0,0x1000000,0x6000000,0x16000000,0x600d377c,0xce104aaa,0xff104eb6,0xff5489d1,0xffa0c7ec, - 0xffd9f4ff,0xffe1f6ff,0xffe9f9ff,0xffeefaff,0xfff0fbff,0xffecfaff,0xffe6f8ff,0xffdef5ff,0xffd5f3ff,0xffc0e4f9,0xff86b3e3,0xff4677c6,0xff0032a4,0xd2002d95, - 0x75001b59,0x3d000000,0x2b000000,0x15000000,0x6000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xe000000, - 0x1e000000,0x56082a65,0xda0d46aa,0xff3f72c5,0xffdcf5ff,0xffe5f8ff,0xffeefaff,0xffe7f0fa,0xff8ea8da,0xff7b9ad4,0xff7698d3,0xff3965bc,0xff2957b6,0xff0032a4, - 0xe900309d,0xbb002b8c,0x6800174c,0x3c000000,0x2f000000,0x1e000000,0xe000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x1000000,0x6000000,0xf000000,0xe30c47af,0xff89b2e2,0xffddf5ff,0xffe6f8ff,0xffa6bfe5,0xff1548b0,0xdd05379f,0xa4032c83, - 0xa2022b84,0xa1012983,0x71001c5d,0x5700123c,0x3b000000,0x34000000,0x29000000,0x1b000000,0xf000000,0x6000000,0x1000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x410c46af,0xff1751b6,0xffc6e7fa,0xffc0def5,0xff3e6dc1, - 0xf4063ca8,0x99042b7d,0x41000000,0x33000000,0x29000000,0x26000000,0x24000000,0x1e000000,0x17000000,0x11000000,0xb000000,0x5000000,0x1000000,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa10b45af, - 0xff5284ce,0xff6c99d6,0xff083fad,0xc7063697,0x5c02153c,0x38000000,0x24000000,0x13000000,0xb000000,0xa000000,0x8000000,0x5000000,0x2000000,0x1000000, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x100b45b0,0xff0a44b0,0xff154db3,0xe8083da6,0x8104266b,0x3e000000,0x2c000000,0x19000000,0xa000000,0x2000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x720a43ad,0xff0942af,0x9b073690,0x4d020d24,0x34000000,0x20000000,0xf000000,0x4000000, - 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15083385,0x35052869,0x2c000000,0x27000000, - 0x15000000,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x3000000,0xb000000,0x11000000,0xb000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x1000000,0x2000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0 -}; - -static const QRgb MPEGPlayer_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2a4a6dc, - 0xfa4a6dc,0x18a4a6dc,0x18a4a6dc,0x26a4a6dc,0x27a4a6dc,0x14a4a6dc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x2a0a1b6,0x1fa3a4bb,0x579d9fba,0x979a9bbc,0xb6989ac1,0xc29698c3,0xc29698c4,0xd09698c8,0xd0989acb,0xb18f91bc,0x708486a5,0x2885869e,0x8727496,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x6a5a6b6,0x419e9fbd,0x95a9aac6,0xefb8b9d1,0xfecbcce0,0xffe4e5f1,0xffefeff9,0xfff4f5ff,0xfff3f3ff,0xffefeffe,0xffe5e6f7,0xffd2d3ec, - 0xffb9bbdf,0xf59c9ec7,0xb98688b3,0x5174779f,0x156b6d91,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0xcc917107,0xcd876b09, - 0xf4a5a293,0xffb1b1b1,0xffcbcbcb,0xf4a4a4a4,0x339e9e9e,0x11a7a7b5,0x70a3a3bc,0xe0bebfd4,0xfce0e0eb,0xfff6f6fa,0xfffcfcfe,0xfff9f9ff,0xfff6f7ff,0xfff3f4ff, - 0xfff1f1ff,0xffedeeff,0xffebecff,0xffe8e9ff,0xffe6e7fe,0xffd9dbf6,0xffc3c5e7,0xea989ac4,0xa27c7fac,0x1f66678b,0x320212f,0x0,0x0,0x0, - 0x0,0x0,0xcc6b5803,0xcc5f5103,0xd25c541a,0xf497968b,0xffa4a4a4,0xffcacaca,0xe39a9a9a,0xc9ababb7,0xfcd5d6e3,0xfffcfcff,0xfffefeff,0xffffffff, - 0xfffdfdff,0xfff9faff,0xfff7f7ff,0xfff4f4ff,0xfff1f1ff,0xffedeeff,0xffebecff,0xffe7e9ff,0xffe5e6ff,0xffe2e3ff,0xffdfe1ff,0xffd7d9fa,0xffaaaddf,0xd77e7fb3, - 0x576b6c99,0x6222332,0x1000000,0x0,0x0,0x0,0xcc413f01,0xcc474201,0xcc514903,0xcd74600b,0xf4a19a84,0xff9a9a9a,0xffa5a5a5,0xff9e9e9e, - 0xffe0e1e5,0xfffbfbff,0xfffdfdff,0xffffffff,0xfffefeff,0xfffbfbff,0xfff8f8ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,0xffeaebff,0xffe6e8ff,0xffe4e5ff,0xffe1e2ff, - 0xffdee0ff,0xffd3d5ff,0xffbbbef6,0xfe9396cf,0xe07274aa,0x425c5d88,0x71b1b27,0x0,0x0,0x0,0xcc756006,0xcc8d720a,0xcca5850f,0xccb59415, - 0xd5bda42f,0xfca09b81,0xff9d9d9d,0xff949494,0xff979798,0xffe3e3e7,0xfffbfbff,0xfffefeff,0xfffefeff,0xfffcfcff,0xfff9f9ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff, - 0xffeaebff,0xffe5e6ff,0xffe3e4ff,0xffdfe1ff,0xffd8daff,0xffbec1f7,0xffa7aae4,0xff8f92cc,0xff787bb4,0xdb5f6197,0x4c53547e,0x5000000,0x0,0x0, - 0xccbe9f19,0xcccaac1f,0xccd2b726,0xcdd6be2b,0xe1d6c23a,0xfed8c955,0xff9e9a80,0xff8c8c8c,0xffababab,0xff838384,0xffdddde1,0xfffdfdff,0xfffefeff,0xfffdfdff, - 0xfffafaff,0xfff4f5ff,0xfff2f2ff,0xffecedff,0xffe9eaff,0xffe4e5ff,0xffe1e3ff,0xffdcdeff,0xffc9cbfc,0xffa9ace6,0xff9598d2,0xff7e81bb,0xff6f72ac,0xfd6567a0, - 0xbd5b5d8f,0x17242534,0x3000000,0x0,0xccd8c12d,0xccdbc630,0xccdfcb35,0xd8dbc738,0xf8d5c247,0xffdbc556,0xffcbb757,0xff8e8976,0xff7b7b7b,0xffb2b2b2, - 0xff808081,0xffdedfe2,0xfffdfdff,0xfffefeff,0xfffbfbff,0xfff5f5ff,0xfff0f1ff,0xffebecff,0xffe7e8ff,0xffe2e4ff,0xffdee0ff,0xffcbcdfd,0xffadb0ea,0xff8f92cc, - 0xff7b7eb8,0xff6d70aa,0xff7174ae,0xff777ab4,0xfe686aa3,0x764f517a,0x12181924,0x1000000,0xccddc834,0xccdac130,0xccd3b728,0xe8c8ad30,0xfec5ad41,0xffc7af47, - 0xffb7a34d,0xff878370,0xff85826c,0xff707070,0xff878787,0xff7e7e7f,0xffd9d9dc,0xfffefeff,0xfffcfcff,0xfff8f8ff,0xfff3f4ff,0xffeeeeff,0xffe7e8ff,0xffe0e2ff, - 0xffd7daff,0xffb1b4ed,0xff9497d1,0xff787bb5,0xff6e71ab,0xff7477b1,0xff7d80ba,0xff8588c2,0xff7c7fb9,0xc7575a8d,0x3434364f,0x4000000,0xccc9ac23,0xccc3a51e, - 0xd1bb9e1a,0xfbbda433,0xffc6ae45,0xffc2ac4d,0xff898571,0xffb2a863,0xffc7be5e,0xff89866a,0xff777777,0xff6b6b6b,0xff757576,0xffd9d9de,0xffeeefff,0xffd6d8fe, - 0xffcccefb,0xffc9ccf7,0xffd4d6fa,0xffd9dbff,0xffbbbef3,0xff8e91cb,0xff7679b3,0xff6f72ac,0xff7a7db7,0xff8588c2,0xff8c8fc9,0xff9396d0,0xff9295cf,0xf56a6da4, - 0x7945476e,0xd000000,0xccbd9c17,0xccc2a31a,0xdbc7aa24,0xffceb843,0xffc8b85b,0xff8c8874,0xffc3bb6c,0xffe8dc65,0xffe5e16e,0xffece26f,0xff848165,0xff686868, - 0xff878787,0xff5d5d60,0xffb6b8d8,0xffc7c9fe,0xffbabdf7,0xffabaee8,0xffaeb1eb,0xffb2b5ec,0xff9497d1,0xff7376b0,0xff7275af,0xff8083bd,0xff8a8dc7,0xff9396d0, - 0xff989bd5,0xff9da0da,0xff9fa2dc,0xff7a7db6,0xae4d4f7e,0x18000000,0xd0cbb130,0xccd9c22e,0xe7dac83d,0xffd6cb5e,0xff8e8b76,0xffc2bd74,0xfff2e971,0xffede46e, - 0xffe6e06f,0xfff2e46c,0xffdbcd65,0xff767257,0xff515151,0xff9a9a9a,0xff59595b,0xffb5b8d9,0xffbbbef5,0xffacafe9,0xffb5b8f2,0xffb7baf4,0xff8c8fc9,0xff7a7db7, - 0xff8b8ec8,0xff9699d3,0xff9c9fd9,0xffa1a4de,0xffa5a8e2,0xffa9ace6,0xffabaee8,0xff9294ce,0xe1525588,0x27000000,0xf699967e,0xd3ded251,0xeed6cc58,0xff8f8d77, - 0xffc7bf72,0xffeee26e,0xffe9db69,0xffe1d262,0xffd3c65c,0xffd8c556,0xffceb94e,0xffbca848,0xff645f48,0xff474747,0xff6d6d6d,0xff55555a,0xff72749f,0xff9294ca, - 0xffb8bbf4,0xffc5c8fe,0xffbbbef5,0xff9295cf,0xff9ea1db,0xffa5a8e2,0xffa9ace6,0xffaeb1eb,0xffb1b4ee,0xffb3b6f0,0xffb5b8f2,0xffa1a4dd,0xf551538a,0x30000000, - 0xff909090,0xf88e8d7b,0xfc8c8a72,0xffbaaf6c,0xffe0d061,0xffdac85b,0xffd0bc53,0xffc4b04a,0xffb5a546,0xffbca441,0xffb1993d,0xffa8903a,0xff94803a,0xff534f3f, - 0xff505050,0xff424242,0xf63e3e40,0xbf3f3f51,0xf29798c2,0xffd3d5ff,0xffd4d6ff,0xffb0b3ed,0xffb5b8f2,0xffb9bcf6,0xffbbbef7,0xffbec1f9,0xffc0c3fb,0xffc1c4fc, - 0xffc2c5fd,0xffafb2e9,0xff4e518a,0x39000000,0xffababab,0xff7b7b7b,0xfc86826b,0xffbdab55,0xffbea848,0xffb69f43,0xffac953e,0xffa28a39,0xff988639,0xff9d8737, - 0xff917f36,0xff867836,0xff7b7135,0xff6b6635,0xff3f4036,0xff454545,0xff606060,0xec262627,0xd76a6a82,0xffe1e2ff,0xffe0e1ff,0xffc2c5fc,0xffcbcdfe,0xffcccfff, - 0xffcdd0ff,0xffcdd0ff,0xffcdd0ff,0xffced1ff,0xffced1ff,0xffb7baea,0xff4d5088,0x3e000000,0xe47b7b7b,0xffb2b2b2,0xff707070,0xff767263,0xff978039,0xff927a31, - 0xff86722f,0xff7a6a2b,0xff766f35,0xff797035,0xff6e6934,0xff686534,0xff626234,0xff6b6734,0xff4d4a32,0xff3c392f,0xff272727,0xff828282,0xfc2a2a2c,0xffc1c3ce, - 0xffebecfe,0xffced0ff,0xffdee0ff,0xffdddfff,0xffdddeff,0xffdcddff,0xffdbddff,0xffdadcff,0xffd9dbff,0xffc0c2ea,0xfe4f5187,0x3f000000,0x2b757575,0xd6707070, - 0xff878787,0xff7d7d7d,0xff666256,0xff695d2f,0xff5d5526,0xff504c24,0xff565a34,0xff6b6734,0xff736c35,0xff887a37,0xff9d8a3b,0xff695e35,0xff555035,0xffac9a44, - 0xff4b472d,0xff1d1d1d,0xff585858,0xff383839,0xffb6b8c7,0xffd3d5fe,0xffe4e5ff,0xffe2e3ff,0xffe1e3ff,0xffdfe1ff,0xffdfe1ff,0xffdee0ff,0xffdee0ff,0xffbbbee6, - 0xf64e5186,0x3f000000,0x0,0x1f6d6d6d,0xef706f6f,0xff6a6a6a,0xff6e6e6e,0xff54544e,0xff4a4928,0xff655b26,0xff867a39,0xffa6903c,0xffb59d40,0xffbda644, - 0xff7a6e3b,0xff5d5938,0xffc9ba52,0xffd6c858,0xffc8bc56,0xff444127,0xff272727,0xff1b1b1b,0xff2d2e30,0xffb7bacb,0xffe8eafe,0xffe7e8ff,0xffe5e6ff,0xffe4e5ff, - 0xffe3e4ff,0xffe1e3ff,0xffe1e3ff,0xffaaacd7,0xe24a4c7c,0x3b000000,0x0,0x0,0x6371625c,0xff636166,0xff878787,0xff515151,0xff575245,0xff978137, - 0xffbaa747,0xffcfb84c,0xffd6c251,0xff867b41,0xff5a573a,0xffcec359,0xffd9cc5c,0xffd7c95b,0xffd2c157,0xffb9a94c,0xff38331c,0xff232323,0xff363636,0xff1b1c1e, - 0xffb5b7c6,0xffeaebfe,0xffe9eaff,0xffe6e8ff,0xffe6e7ff,0xffe4e5ff,0xffe2e3fe,0xff9193c1,0xc33d3f67,0x35000000,0x0,0x0,0xf735b4c,0xda796d76, - 0xff57575d,0xff9a9a9a,0xff464646,0xff555242,0xffc0b453,0xffdccc59,0xff877f45,0xff5e5939,0xffcfbf56,0xffd3c155,0xffccb951,0xffc5b24c,0xffbfac48,0xffbba746, - 0xffb09e42,0xff302c14,0xff000000,0xff6f6f6f,0xff121213,0xffbcbecc,0xffebecfe,0xffeaebff,0xffe8eaff,0xffe7e9ff,0xffd1d2ef,0xf46b6da1,0x9123243f,0x2a000000, - 0x0,0x0,0x24f3f2f,0x83816f6e,0xfc7f7a96,0xff52525b,0xff6c6c6c,0xff575757,0xff59573f,0xff787243,0xff555035,0xffc1ac4b,0xffc7b14a,0xffc1ac48, - 0xffbfaa46,0xffc0aa46,0xffc4b049,0xffc9b54d,0xffcebd53,0xffbeb350,0xff343217,0xff000000,0xff525252,0xff262628,0xffb6b8c7,0xffecedfe,0xffebecff,0xffe7e8fd, - 0xffb2b4dc,0xd8444674,0x6510111d,0x1e000000,0x0,0x0,0x0,0x2b796651,0xc68c7e80,0xff9192be,0xff53535b,0xff414141,0xff4c4c4c,0xff38362e, - 0xffa69440,0xffc6ae46,0xffc5af48,0xffc9b34b,0xffcdbb50,0xffd2c456,0xffd7cc5c,0xffddd362,0xffe2da67,0xffe6df6c,0xffdad569,0xff35341a,0xff111111,0xff121212, - 0xff262628,0xffbbbdcc,0xffecedfe,0xffd0d2ed,0xfa777bad,0x951b1d35,0x3e030304,0x10000000,0x0,0x0,0x0,0x73f3427,0x6082715e,0xfc9793ae, - 0xff9497c4,0xff4b4c54,0xff5f5f5f,0xff272727,0xff433e29,0xffbeac4b,0xffd6c657,0xffdbce5c,0xffe0d663,0xffe4dc69,0xffe9e36e,0xffebe470,0xffebe571,0xffeae370, - 0xffe5dd6e,0xffa8a14f,0xff000000,0xff1e1e1e,0xff2b2b2b,0xff1c1d1f,0xffafb3c3,0xfe989cc7,0xd740446e,0x5a07070c,0x28000000,0x7000000,0x0,0x0, - 0x0,0x1000000,0x91a170d,0x9a8b8073,0xf6a3a1bc,0xffa6a9da,0xff3c3d45,0xff828282,0xff1d1d1d,0xff383623,0xffcbc55e,0xffebe46e,0xffeee772,0xffece571, - 0xffe9e16d,0xffe5db6b,0xffdfd365,0xffd6c95e,0xffb4a74d,0xff262310,0xff73682c,0xff26220e,0xff000000,0xff6f6f6f,0xff0a0a0d,0xe743476a,0x8116182b,0x31000000, - 0x12000000,0x2000000,0x0,0x0,0x0,0x0,0x2000000,0x285e5542,0xa88d8579,0xfeafaed2,0xffa2a9d5,0xff35353b,0xff575757,0xff2f2f2f, - 0xff3a3821,0xffd3cb64,0xffe6db6a,0xffe0d364,0xffd7ca5e,0xffcebf56,0xffc4b44e,0xffa3943f,0xff221f0e,0xff675a26,0xff9f8b3b,0xff837333,0xff1f1c0c,0xff000000, - 0xff606060,0xf308090c,0x7c0c1422,0x1b000000,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x171f1c12,0x9f837e71, - 0xefa3a3b6,0xffb7b8d3,0xff37373c,0xff191919,0xff2b2b2b,0xff252312,0xffb1a248,0xffc1af4b,0xffb7a545,0xffae9a40,0xff8f7e34,0xff1e1b0b,0xff5a4f24,0xff857736, - 0xff7c7136,0xff706a35,0xff5f5e32,0xff11120b,0xff0b0b0b,0xff171717,0xf6181819,0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0, - 0x0,0x1000000,0x5000000,0x25373426,0x7a6a685e,0xe89999a2,0xfe999ab0,0xff2e2f32,0xff353535,0xff000000,0xff231f0d,0xff958236,0xff9c873a,0xff827231, - 0xff1b170a,0xff4a4522,0xff716b35,0xff656334,0xff5a5c34,0xff525833,0xff5f6034,0xff645f30,0xff201c0d,0xff1f1f1f,0xff222222,0x1000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5000000,0x11000000,0x3f2b2b24,0x8d5e5e5b,0xdc717282,0xfd16171a,0xff6f6f6f, - 0xff000000,0xff151309,0xff595126,0xff15140a,0xff3b3d22,0xff5b5d33,0xff5c5d34,0xff656335,0xff7d7337,0xff91823b,0xffa18f3e,0xffb09c43,0xffb5a446,0xff2c2912, - 0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0xe010101, - 0x21090909,0x5031312f,0x922f2f35,0xf4050607,0xff515151,0xff1a1a1a,0xff000000,0xff3d3d21,0xff6c6835,0xff7f7437,0xff93833a,0xffa5923f,0xffb39f43,0xffbdaa48, - 0xffc4b44d,0xffcabc52,0xffcec257,0xffb9b051,0xff7c7b3b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x1000000,0x4000000,0xd000000,0x18000000,0x40000000,0xde020202,0xf3000000,0xe1000000,0xff181509,0xff8f7e36,0xffb2a044, - 0xffbbab49,0xffc1b44f,0xffc5bb53,0xffc9c058,0xffcbc359,0xffcac25b,0xffcac05a,0xffc4b855,0xffb4a94e,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x4000000,0x21000000,0x50000000,0x6e000000, - 0x57000000,0x7f000000,0x7f3f3a19,0x7d777131,0x7c7c7735,0x7983803a,0x7688863e,0x748c8b42,0x748c8a41,0x738a853e,0x7388803c,0x73827a37,0x668c843b,0x0, - 0x0,0x0 -}; - -static const QRgb OKButton_data[] = { - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0x3edcdcdc,0x93dbdbdb,0xd5dfdfdf,0xfededede,0xf8d9d9d9,0xeedcdcdc,0xe1d8d8d8,0xdcdadada,0xe1dadada,0xe6dbdbdb, - 0xecdddddd,0xf1dcdcdc,0xf6dcdcdc,0xfbdddddd,0xfedddddd,0xffdedede,0xffdddddd,0xd9d2d2d2,0xa1c8c8c8,0x519e9e9e,0xc000000,0x3000000,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0x5fdcdcdc,0xdbe3e3e3,0xffe2e2e2,0xffd3d3d3,0xffcecece,0xffcccccc,0xffd5d5d5,0xffd0d0d0,0xffcdcdcd,0xffcecece,0xffcecece, - 0xffcdcdcd,0xffcccccc,0xffcdcdcd,0xffcecece,0xffd1d1d1,0xffd2d2d2,0xffd3d3d3,0xffd4d4d4,0xffdcdcdc,0xe7c7c7c7,0x848e8e8e,0x18000000,0x4000000,0xffffff, - 0xffffff,0xffffff,0x3edddcdc,0xdbdadada,0xffd8d8d8,0xffcac9c9,0xffc6c6c6,0xffc2c1c2,0xffc4c3c4,0xffa6a6a6,0xff414141,0xff424242,0xff676767,0xffc4c4c4, - 0xffa4a4a4,0xff424242,0xffa6a5a6,0xffcbcacb,0xff8a898a,0xffb3b2b3,0xffd6d5d6,0xffd6d5d6,0xffd3d3d3,0xffc5c6c5,0xeda2a1a2,0x765a5a5a,0x18000000,0x3000000, - 0xffffff,0xffffff,0x93d4d5d4,0xffd1d0d0,0xffbcbcbc,0xffbab9b9,0xffbdbdbd,0xffbcbcbc,0xffbbbaba,0xff000000,0xff6d6e6d,0xffbdbdbd,0xff000000,0xff727272, - 0xff929292,0xff000000,0xff979797,0xff7b7b7b,0xff272727,0xffb1b1b1,0xffd1d1d1,0xffd1d1d1,0xffd0d0d0,0xffc7c8c7,0xffb3b2b2,0xc9626262,0x3d000000,0xc000000, - 0xffffff,0xffffff,0xd5cbcbcb,0xffb8b8b8,0xffa7a7a7,0xffaeaeae,0xffa9a8a8,0xffb1b1b1,0xffa6a6a6,0xff000000,0xff686868,0xffb6b6b6,0xff000000,0xff686868, - 0xff868686,0xff000000,0xff595959,0xff252525,0xff9d9d9d,0xffc4c4c4,0xffc0c0c0,0xffbcbcbc,0xffc6c6c6,0xffc5c5c5,0xffbbbbbb,0xf0666666,0x61000000,0x1a000000, - 0xffffff,0xffffff,0xfabebebe,0xffa4a4a4,0xff979797,0xffa8a8a8,0xffa0a0a0,0xff9b9b9b,0xffa1a1a1,0xff000000,0xff636363,0xffa4a4a4,0xff000000,0xff5f5f5f, - 0xff7a7a7a,0xff000000,0xff000000,0xff9f9f9f,0xffbbbbbb,0xffadadad,0xffa7a7a7,0xffb2b2b2,0xffbcbcbc,0xffc2c2c2,0xffadadad,0xfd626262,0x7c000000,0x25000000, - 0xffffff,0xffffff,0xd8adadad,0xff989898,0xff959595,0xff8b8b8b,0xff939393,0xff9a9a9a,0xff939393,0xff000000,0xff585858,0xff979797,0xff000000,0xff5b5b5b, - 0xff757575,0xff000000,0xff2b2b2b,0xff2f2f2f,0xffa9a9a9,0xffb3b3b3,0xffadadad,0xffadadad,0xffb8b8b8,0xffb4b4b4,0xff959595,0xf24a4a4a,0x85000000,0x2b000000, - 0xffffff,0xffffff,0x9e919191,0xff949493,0xff868787,0xff8c8c8c,0xff818181,0xff888887,0xff8a8a8a,0xff000000,0xff545654,0xff848384,0xff000000,0xff4f4f4f, - 0xff676766,0xff000000,0xff737372,0xff4e4e4d,0xff3c3c3c,0xff9e9e9e,0xffaeaeae,0xffb2b2b2,0xffacacac,0xffa5a6a5,0xff706f70,0xdf373737,0x7c000000,0x25000000, - 0xffffff,0xffffff,0x506d6d6d,0xe67b7b7b,0xff7d7d7d,0xff7a7a7a,0xff777878,0xff777777,0xff7d7e7d,0xff484848,0xff161616,0xff292929,0xff1e1f1f,0xff6a6b6b, - 0xff5c5c5c,0xff000000,0xff616161,0xff838383,0xff484848,0xff7e7e7e,0xffa5a5a5,0xffa6a7a6,0xff979797,0xff787778,0xf5434343,0xbb1a1a1a,0x61000000,0x1a000000, - 0xffffff,0xffffff,0xc000000,0x834d4d4d,0xec595959,0xff5e5d5d,0xff656564,0xff696969,0xff696869,0xff6b6a6b,0xff6a6a69,0xff666665,0xff646463,0xff656564, - 0xff666666,0xff686868,0xff6c6c6c,0xff727272,0xff7a7a7a,0xff828282,0xff818181,0xff787778,0xff656465,0xf5424241,0xce222222,0x83000000,0x3d000000,0xc000000, - 0xffffff,0xffffff,0x3000000,0x18000000,0x752d2d2d,0xc8353535,0xef363636,0xff3e3e3e,0xfd373737,0xfa353535,0xf5333333,0xf3313131,0xf5353535,0xf7353535, - 0xf9373737,0xfa383838,0xfc3c3c3c,0xfe3d3d3d,0xff424242,0xff454545,0xff454545,0xf3383838,0xdf2a2a2a,0xbb161616,0x83000000,0x4b000000,0x18000000,0x3000000, - 0xffffff,0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x8a000000,0x8b000000,0x87000000,0x82000000,0x81000000,0x82000000, - 0x84000000,0x87000000,0x89000000,0x8b000000,0x8e000000,0x8e000000,0x8f000000,0x8b000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x26000000,0x2d000000,0x2e000000,0x2b000000,0x29000000,0x28000000,0x29000000, - 0x2a000000,0x2b000000,0x2d000000,0x2e000000,0x2e000000,0x2f000000,0x30000000,0x2e000000,0x26000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff -}; - -static const QRgb Rotation_data[] = { - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000, - 0x35000000,0x38000000,0x3b040404,0x4d535353,0x5a828282,0x3d3f3f3f,0x2d060606,0x24070707,0x1b090909,0x140d0d0d,0xc151515,0x7242424,0x3000000,0x1000000, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000, - 0x6e647e80,0xab7da6a7,0xd387b7b9,0xeb8bc0c2,0xf98dc6c8,0xfe8ac8ca,0xf97ec0c2,0xed6fb6b7,0xd8629ea2,0xcc90aeb0,0xa1849698,0x460b0b0b,0x390d0d0d,0x2b0c0c0c, - 0x1f101010,0x130d0d0d,0xb171717,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, - 0x16000000,0x23000000,0x84759496,0xd091b9bb,0xfaabcecf,0xffa9d0d2,0xffa1ccce,0xff9acacc,0xff90c6c8,0xff89c4c6,0xff7fc1c3,0xff74bfc1,0xff69bcbe,0xff60b9bc, - 0xfd88c1c4,0xe78bb4b7,0xa0395f62,0x4f101010,0x3a121212,0x28131313,0x19141414,0xe121212,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000, - 0x2000000,0x7000000,0xe000000,0x1a000000,0x545f7474,0xc08eb5b6,0xfaafcfd1,0xffafcfd0,0xffadcccd,0xffa3c8ca,0xff9ac4c6,0xff93c0c2,0xff8abfbf,0xff80bbbd, - 0xff79babc,0xff6fb8bb,0xff65b8ba,0xff5cb6b9,0xff50b2b5,0xff69a2a7,0xfe76b0b5,0xd2377579,0x7f293d3d,0x47121212,0x2f101010,0x1d121212,0xf111111,0x7000000, - 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x73728f8f,0xda9fc1c3,0xffb6d1d3,0xffb0cdce,0xffaac6c8,0xffa2bfc1,0xff96b8b9, - 0xff8db3b5,0xff84adaf,0xff7cabac,0xff76aaac,0xff6fadae,0xff6ab1b3,0xff63b4b5,0xff58b4b6,0xff4eadb3,0xff61a1a6,0xff4f8a8f,0xff5f9ea3,0xe82d777c,0x9d2a4a4c, - 0x50131313,0x33141414,0x1e111111,0xf111111,0x7242424,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x736f8f8f,0xe2a1c3c5,0xffb5cfd1,0xffaec9cb, - 0xffa2bec0,0xff98b4b5,0xff8ba6a8,0xff7e9a9d,0xff739395,0xff6b8c8e,0xff658c8d,0xff639092,0xff70a1a4,0xff88b3b6,0xff5aadaf,0xff53adb3,0xff4ba9b2,0xff40a0a8, - 0xff5c9398,0xff4a8488,0xff418d95,0xef2b7378,0xa2294449,0x53161616,0x33141414,0x1e1a1a1a,0xe121212,0x62b2b2b,0x3000000,0xa000000,0x16000000,0x545c7174, - 0xda9abec2,0xffb2cfd2,0xffacc8cb,0xffa2bdc0,0xff91abae,0xff80989b,0xff788e90,0xff9dadae,0xffa9babb,0xffb6c9ca,0xffc0d5d7,0xffb9d2d4,0xffb3cdce,0xff8fb4b7, - 0xff52a4a7,0xff4da8b1,0xff45a6ad,0xff3b9da6,0xff6fa2a7,0xff5b9095,0xff498086,0xff297e86,0xec2a676e,0x91243537,0x4e141414,0x2f161616,0x18151515,0xb171717, - 0x6000000,0x11000000,0x23000000,0xbf88b0b4,0xffafced2,0xffaac9cd,0xffa2bfc3,0xff92adb0,0xffb0c7c9,0xffc0d5d6,0xffcadcde,0xffd1e1e1,0xffd4e3e4,0xffd2e3e4, - 0xffcedfe1,0xffc7dcdd,0xffbfd6d7,0xff4c8b8f,0xff4c9ca2,0xff47a2ab,0xff40a0ab,0xff399aa4,0xff6aa2a9,0xff6b9da1,0xff598c91,0xff427d83,0xff28767e,0xdd2a585d, - 0x6c151515,0x45161616,0x27141414,0x120e0e0e,0xb000000,0x1b000000,0x846f8e93,0xfaa3c7cd,0xffa5c9cd,0xff9fc2c6,0xff92b2b6,0xff7f9a9e,0xff667e80,0xffd0dfe0, - 0xffd9e6e6,0xffe0eaea,0xffe2eced,0xffe0eced,0xffdbe8e9,0xffd3e3e3,0xffa4bcbe,0xff43868c,0xff44969f,0xff429da8,0xff3a9ea8,0xff3796a1,0xff45949c,0xff77a6a9, - 0xff65979b,0xff5c888b,0xff296c73,0xfc276b74,0xbb284146,0x5f151515,0x39161616,0x1d121212,0x12000000,0x26000000,0xd085afb6,0xff9dc7cd,0xff9dc3c9,0xff94b8be, - 0xff84a4aa,0xff6d898d,0xff687b7e,0xffd9e6e8,0xffe4eded,0xffecf2f3,0xffeef3f4,0xffebf3f3,0xffe4eef0,0xffdbe8ea,0xff628a8e,0xff3f848c,0xff3c919d,0xff3796a2, - 0xff3396a2,0xff36929d,0xff45919a,0xff7eabaf,0xff6e9ea2,0xff5c8e92,0xff2b646c,0xff28676e,0xe9285659,0x79171717,0x4b141414,0x2a121212,0x19000000,0x6e59747b, - 0xfa93c0c7,0xff98c2ca,0xff92bbc3,0xff87acb3,0xff73959b,0xff5c767b,0xffd2e2e2,0xffdfeaeb,0xffebf2f3,0xfff4f7f8,0xfff8fafb,0xfff4f8f8,0xffebf2f3,0xffe1ebec, - 0xff356f76,0xff37848e,0xff348e99,0xff2c909d,0xff308f9c,0xff328c98,0xff72a3a9,0xff83aeb2,0xff75a4a8,0xff639598,0xff2e5e65,0xff295f66,0xfc266069,0xb0233437, - 0x5e161616,0x37131313,0x21000000,0xab6b969e,0xff8ebec7,0xff8bbbc3,0xff84b1ba,0xff779fa7,0xff62858c,0xffaabcbe,0xffd5e4e5,0xffe3eded,0xffedf4f4,0xfff7fafa, - 0xffffffff,0xfff8fafa,0xffedf4f4,0xff8fa8ab,0xff30727c,0xff2e808e,0xff288795,0xff278795,0xff2b8795,0xff2f8491,0xff88aeb2,0xff85b0b3,0xff7aa7ab,0xff69999e, - 0xff305960,0xff2b5a61,0xff265e66,0xd6264448,0x71171717,0x45121212,0x29000000,0xd370a1ac,0xff83b9c4,0xff80b4be,0xff78a8b2,0xff68939c,0xff54767d,0xffc4d8da, - 0xffd3e2e3,0xffe0ecec,0xffebf2f2,0xfff3f8f8,0xfff7fafb,0xfff4f8f8,0xffebf2f3,0xff2b656f,0xff2a7481,0xff257d8e,0xff1f808e,0xff23818e,0xff277e8d,0xff2c7c87, - 0xff8fb6ba,0xff86b1b4,0xff7aa8ab,0xff6c9b9f,0xff32545a,0xff2e545b,0xff285961,0xed264d51,0x80181818,0x4f131313,0x2f000000,0xeb70a7b3,0xff79b3bf,0xff75aeb9, - 0xff6c9fa9,0xff5b858f,0xff81989c,0xffc1d7d8,0xffd0e1e1,0xffdbe8e9,0xffe5eeef,0xffebf2f3,0xff98a8ab,0xffd7e1e3,0xffe4edee,0xff276c7a,0xff237585,0xff1b7787, - 0xff1e7888,0xff1e7585,0xff227382,0xff5c8f98,0xff8db6b8,0xff84b0b3,0xff7aa8ac,0xff6d9da2,0xff345056,0xff2f5056,0xff2a555c,0xf7264f57,0x8d191919,0x5a141414, - 0x34000000,0xf96da9b8,0xff6dacba,0xff69a5b3,0xff5f95a1,0xff507b85,0xffa7c1c3,0xffbcd3d6,0xffc9dbdd,0xffd2e3e4,0xffdbe8e9,0xffb3c2c5,0xff28525c,0xff29606c, - 0xff64929d,0xff206f7f,0xff187283,0xff1a7183,0xff1a6f81,0xff1a6b7c,0xff1f6978,0xff92b9bb,0xff8ab3b7,0xff82afb2,0xff79a8ab,0xff6e9ea2,0xff364c51,0xff324d53, - 0xff2b5157,0xfc265259,0x961a1a1a,0x61181818,0x37000000,0xfe65a7b7,0xff64a6b6,0xff5f9ead,0xff558d9b,0xff47737e,0xffa7c5c7,0xffb4ced0,0xffc0d6d9,0xffc9dbdd, - 0xffcfe1e2,0xff26535e,0xff28616e,0xff266a7a,0xff1f6e7f,0xff166e80,0xff166e80,0xff548d9a,0xff186677,0xff196071,0xff87abae,0xff8db6b9,0xff87b2b4,0xff7facb0, - 0xff77a6a9,0xff749c9f,0xff36494d,0xff324b50,0xff2c4e56,0xfe25515b,0x9a1a1a1a,0x66171717,0x39040404,0xf9599daf,0xff5a9fb1,0xff5596a8,0xff4c8795,0xff3e6d78, - 0xffa0c0c3,0xffabc8ca,0xffb6cfd2,0xffbdd5d7,0xff5c7b82,0xff265d6b,0xff25687a,0xff206d81,0xff176e81,0xff166c7f,0xff166a7d,0xffa9c7c9,0xff9ab9be,0xff769aa1, - 0xff8fb7ba,0xff88b3b6,0xff83afb2,0xff7babae,0xff74a5a8,0xff6d7e80,0xff37484c,0xff334a4f,0xff2c4c52,0xfc244a53,0x9c1a1a1a,0x66171717,0x38050505,0xed4d8fa2, - 0xff5099ac,0xff4c91a4,0xff448091,0xff396a77,0xff97bbbd,0xffa3c2c5,0xffabc8cb,0xffb1cccf,0xff235362,0xff216172,0xff1e687e,0xff176a80,0xff166a7e,0xff15667b, - 0xff156175,0xff9fc1c4,0xff97bcbf,0xff90b8bb,0xff8ab4b7,0xff83afb3,0xff7eacb0,0xff79a9ab,0xff71a3a7,0xff394649,0xff39484c,0xff32494e,0xff2c4c53,0xf924444b, - 0x98191919,0x64141414,0x35050505,0xd7447d90,0xff4691a7,0xff428a9f,0xff3d7b8e,0xff336675,0xff8fb4b8,0xff99bec1,0xffa0c1c3,0xff8ca6ab,0xff215667,0xff1c6274, - 0xff19667b,0xff19677d,0xff16637b,0xff166074,0xff7097a1,0xff96bbbe,0xff8fb7ba,0xff88b4b7,0xff84b1b3,0xff7eadaf,0xff7aa9ac,0xff75a6a9,0xff7a9799,0xff3b4649, - 0xff38474c,0xff32494f,0xff294851,0xf1233d44,0x931a1a1a,0x5f151515,0x30050505,0xb5366775,0xff3d88a2,0xff39829a,0xff36778c,0xff2e6376,0xff85aeb1,0xff8fb7b9, - 0xff96bcbe,0xff6a878f,0xff1e5769,0xff1c6073,0xff1b6478,0xff196378,0xff185f74,0xff175a6e,0xff92b9bb,0xff8db6b8,0xff87b3b6,0xff82afb2,0xff7eadb0,0xff7aa9ad, - 0xff77a6aa,0xff71a2a6,0xff3c4346,0xff3c4649,0xff37474c,0xff30474e,0xff274650,0xe121353b,0x89181818,0x59141414,0x2a060606,0x81294953,0xfb357e99,0xff337c97, - 0xff30738b,0xff2c6377,0xff79a6aa,0xff85afb3,0xff8cb6b8,0xff315966,0xff225869,0xff215e72,0xff206177,0xff1c5f74,0xff1b5c72,0xff467483,0xff89b4b7,0xff85b1b4, - 0xff81afb2,0xff7eacaf,0xff7aaaad,0xff76a7a9,0xff73a4a7,0xff545a5b,0xff3e4447,0xff3b464a,0xff36474d,0xff2d464f,0xfd25434c,0xc51f2a2d,0x7d181818,0x4f131313, - 0x22080808,0x420c0c0c,0xd92c647a,0xff2d7593,0xff2a6d88,0xff276177,0xff6f9399,0xff78a6aa,0xff82adb2,0xff365b69,0xff265769,0xff265d72,0xff256074,0xff245e73, - 0xff225a6f,0xff7e9fa5,0xff82afb2,0xff7fadb0,0xff7cabaf,0xff79a8ac,0xff75a6aa,0xff72a3a7,0xff6ea0a4,0xff3f4446,0xff3e4649,0xff3a474b,0xff33464c,0xff2a444c, - 0xf2223940,0x9d1a1a1a,0x6d151515,0x420f0f0f,0x1a0a0a0a,0x350e0e0e,0x9d244b57,0xfb256b88,0xff246985,0xff236078,0xff456d7c,0xff6c9b9f,0xff76a5a8,0xff69858d, - 0xff2b5769,0xff2a5d70,0xff295e73,0xff295d72,0xff295a6e,0xff7eacb0,0xff7cabaf,0xff78a9ad,0xff76a6a9,0xff74a5a9,0xff71a2a6,0xff6ca0a4,0xff689b9e,0xff6b9395, - 0xff3b4549,0xff36454c,0xff2d434c,0xfd254049,0xd31f2c30,0x89181818,0x5c131313,0x350e0e0e,0x130d0d0d,0x280d0d0d,0x490e0e0e,0xd1215669,0xff1e6581,0xff1e5e7a, - 0xff21576d,0xff5c8e93,0xff68999e,0xff74949a,0xff2e5768,0xff2f5c6d,0xff305e72,0xff2f5d71,0xff77959d,0xff76a7ab,0xff75a6a9,0xff73a5a8,0xff7a9fa3,0xff7b969a, - 0xff788a8d,0xff4e5558,0xff3f474a,0xff3d474b,0xff36454b,0xff30434b,0xff28404b,0xec20343a,0x9e1b1b1b,0x73161616,0x49111111,0x280d0d0d,0xc151515,0x1d121212, - 0x36131313,0x7b193339,0xe71a556a,0xff1c5b77,0xff20576f,0xff486b7a,0xff588a8f,0xff619497,0xff2e5465,0xff30596a,0xff325c6e,0xff335d6f,0xff718d95,0xff516d7b, - 0xff375663,0xff39515c,0xff3b4e56,0xff3d4b52,0xff3e4b50,0xff3e4a4e,0xff3b484d,0xff38464e,0xff32434c,0xff29404b,0xf522383f,0xbe1e2528,0x83171717,0x5b141414, - 0x350e0e0e,0x1c090909,0x7242424,0x120e0e0e,0x26141414,0x43131313,0x97173a46,0xee1a5167,0xff1c5670,0xff21526a,0xff507981,0xff508389,0xff638089,0xff315567, - 0xff335a6b,0xff355b6c,0xff385b6c,0xff395a69,0xff3b5765,0xff3c555f,0xff3d515b,0xff3d4e56,0xff3c4c53,0xff394951,0xff364850,0xff2f434c,0xff29404b,0xf8233841, - 0xcc1e282c,0x8e191919,0x66141414,0x42131313,0x250e0e0e,0x120e0e0e,0x3000000,0xb171717,0x18151515,0x2d111111,0x4b141414,0x9e193642,0xea1a4a5f,0xff1c4f6a, - 0xff1f4e64,0xff3c6e75,0xff46787e,0xff2d5164,0xff315365,0xff345668,0xff365868,0xff375666,0xff395563,0xff3a5360,0xff3a505d,0xff384d57,0xff354a55,0xff324750, - 0xff2d444f,0xff273f4b,0xf521363f,0xcc1e282c,0x921a1a1a,0x6c151515,0x4b111111,0x2d111111,0x170b0b0b,0xa000000,0x1000000,0x5000000,0xe121212,0x1c121212, - 0x31151515,0x4e171717,0x8b182c33,0xdb194251,0xfc1c4b64,0xff1f4a62,0xff39666d,0xff386a70,0xff2b4e60,0xff2d4f61,0xff305062,0xff325161,0xff33505e,0xff324d5c, - 0xff324b59,0xff2f4855,0xff2c4653,0xff28414e,0xfd243d49,0xeb1f323a,0xbc1e2526,0x8e191919,0x6c151515,0x4d111111,0x30101010,0x1b090909,0xd000000,0x5000000, - 0xffffff,0x2000000,0x6000000,0xf111111,0x1d121212,0x31151515,0x4b141414,0x68161616,0xb719333e,0xe81c404f,0xfc1c465b,0xff5b7984,0xff50727b,0xff25485c, - 0xff27495a,0xff29495a,0xff294658,0xff294757,0xff274252,0xff264251,0xfd223f4c,0xf1213640,0xd11e2b30,0x9d1c1c1c,0x82181818,0x66141414,0x4a111111,0x30101010, - 0x1c090909,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0x10202020,0x1d1a1a1a,0x2d171717,0x44171717,0x5c161616,0x75181818, - 0xad192b32,0xd41a3841,0xed39555f,0xfa6f858f,0xfd466371,0xfe214253,0xfc20404f,0xf81f3c4a,0xef1f3842,0xde1e3139,0xc31c282e,0x9b1a1a1a,0x87191919,0x73161616, - 0x5a141414,0x42131313,0x2d111111,0x1b090909,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x7242424,0xe121212, - 0x18151515,0x26141414,0x38171717,0x4a151515,0x5d161616,0x6f171717,0x7e181818,0x8b1a1a1a,0x9c3a3a3a,0xa9575757,0xa74c4c4c,0x9f3a3a3a,0x98353535,0x8a252525, - 0x7d181818,0x6c151515,0x5b141414,0x49111111,0x350e0e0e,0x250e0e0e,0x170b0b0b,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, - 0xffffff,0x1000000,0x2000000,0x62b2b2b,0xb171717,0x120e0e0e,0x1d121212,0x29131313,0x37131313,0x44131313,0x4f131313,0x59141414,0x60181818,0x65171717, - 0x66171717,0x64141414,0x5f151515,0x58141414,0x4e141414,0x420f0f0f,0x350e0e0e,0x280d0d0d,0x1c090909,0x120e0e0e,0xa000000,0x5000000,0x2000000,0x1000000, - 0xffffff,0xffffff -}; - -static const QRgb SettingsIcon_data[] = { - 0x0,0x0,0x67bbbbc8,0xc6e3e3e9,0xbddfdfe6,0x61bdbdc8,0x36f6f78,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1b91919e,0xd2d0d0d8,0xfffefefe,0xfef6f6f7,0x85b2b2be,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x429494a9,0x661616f,0x0,0x1d858594,0xedd1d1da,0xfffefeff,0xf9d8d8e0,0x1a474750,0x0,0x0,0x0,0x0,0x0,0x0, - 0xc5c1c1ce,0xa1a6a6b6,0x8626274,0x92a9a9bb,0xffe9e9ee,0xfff5f5f7,0xffdfdfe6,0x405c5c6b,0x0,0x0,0x0,0x0,0x0,0x0, - 0xbab5b5c4,0xffe0e0e7,0xd8a8a8b9,0xffdddde4,0xffe9e9ee,0xffe9e9ee,0xffc5c5d1,0x303d3d4a,0x0,0x0,0x0,0x0,0x0,0x0, - 0x5c818198,0xfecacad5,0xffdddde4,0xffdedee5,0xffdddde5,0xffd4d4dd,0xffc1c1cd,0xb7a39388,0x8fd79c2d,0x7895d1c,0x0,0x0,0x0,0x0, - 0x33f3f51,0x7f74748c,0xf7a0a0b3,0xffb4b4c3,0xffafafbf,0xffcacad5,0xffcfc4bc,0xffe0ab39,0xffeeb524,0xa7d09b2c,0x67a521a,0x0,0x0,0x0, - 0x0,0x1000000,0x192a2a39,0x403b3b50,0x3d39394d,0xd59a8c8b,0xffdea939,0xfff6a014,0xfffd9f12,0xfff1b523,0xa8c8922a,0x87e541b,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x87ba8128,0xfff1b423,0xffffb71f,0xffffb71f,0xfffdb51f,0xfff2b824,0xa7c08827,0x76f4919,0x0, - 0x0,0x0,0x0,0x0,0x0,0x5644217,0x9bb57e26,0xfff3bb27,0xffffcd2d,0xffffcb2b,0xfffebe24,0xfff5b622,0xa5b87d25,0x5533614, - 0x0,0x0,0x0,0x0,0x0,0x0,0x4563814,0x9dae7524,0xfff1be2b,0xffffc528,0xffffa515,0xffff9c0f,0xfeeca21d,0x50825420, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x55b3a17,0x9ca56b22,0xfff3a018,0xffffad1a,0xffff9a0e,0xfff49b14,0x69794d1e, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54e3115,0x9ba1631e,0xfee68912,0xfff28f0e,0xe2b06b1a,0x2637230f, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5472c15,0x4f6c421f,0x696b411d,0x2634200f,0x1000000 -}; - -static const QRgb Shutdown_data[] = { - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000, - 0x34000000,0x37000000,0x38000000,0x37000000,0x34000000,0x2f000000,0x29000000,0x21000000,0x19000000,0x12000000,0xb000000,0x6000000,0x3000000,0x1000000, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000, - 0x5d9a5254,0x93c36569,0xbed86d71,0xdee47175,0xf3ec7075,0xfef16f73,0xf3eb6669,0xe0e25d5f,0xc4d04f53,0x9fb44042,0x70832a2e,0x3f000000,0x33000000,0x26000000, - 0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, - 0x16000000,0x23000000,0x6fb26366,0xbad9787b,0xf5f18388,0xfff38386,0xfff27e82,0xffee797b,0xffed7276,0xffec6d70,0xffec656a,0xffed6065,0xffef5a5e,0xfff05258, - 0xf7ec4a4f,0xc6cb393e,0x88942529,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000, - 0x2000000,0x7000000,0xe000000,0x1a000000,0x478a4e4f,0xa7d4787a,0xf5f38a8d,0xfff6898d,0xfff5888c,0xfff28285,0xffed7b7f,0xffe87578,0xffe36d71,0xffe1666a, - 0xffe36165,0xffe75b60,0xffeb545a,0xffee4e53,0xfff1484d,0xfff24047,0xf8eb373e,0xbcbc272b,0x6c5f1013,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000, - 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x5fa96163,0xc6e18183,0xfff78d90,0xfff78c8e,0xfff68b8d,0xfff3868a,0xffee7f82, - 0xffe7797b,0xffde7073,0xffd76669,0xffd46063,0xffd75a5d,0xffdd5659,0xffe34f54,0xffeb4a4e,0xffee4248,0xfff03b41,0xfff13338,0xfff02a31,0xd7cb1f25,0x85791216, - 0x46000000,0x2e000000,0x1b000000,0xe000000,0x6000000,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x5fa96163,0xd0e58387,0xfff78d91,0xfff68d8f, - 0xfff68c8e,0xfff48a8d,0xffef8488,0xffe87c7f,0xffdc7175,0xffd1686b,0xffffffff,0xffffffff,0xffffffff,0xffcf4d51,0xffd9484c,0xffe34248,0xffec3d41,0xffee3539, - 0xffef2b33,0xffee242b,0xffe9232a,0xe0c71e24,0x8a701214,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,0x3000000,0xa000000,0x16000000,0x478a4e4f, - 0xc6e18183,0xfff78d91,0xfff68d90,0xfff58d8f,0xfff38a8d,0xfff0878a,0xffe87e82,0xffdd7779,0xffd06a6d,0xffc46063,0xffffffff,0xffffffff,0xffffffff,0xffc24549, - 0xffcd4045,0xffda3b41,0xffe3343b,0xffeb2d34,0xffec252b,0xffe8232a,0xffe32329,0xffdf2228,0xdbb61b22,0x7b4c0c0d,0x46000000,0x2a000000,0x16000000,0xa000000, - 0x6000000,0x11000000,0x23000000,0xa7d4787a,0xfff78d90,0xfff68d8f,0xfff48d8e,0xfff18b8d,0xffed8588,0xffe78084,0xffdd787b,0xffd16e71,0xffc16164,0xffb5575a, - 0xffffffff,0xffffffff,0xffffffff,0xffb33d40,0xffbe373c,0xffcd3337,0xffd92d33,0xffe1252d,0xffe02229,0xffdf2228,0xffdd2228,0xffd92028,0xffd52027,0xc89a171b, - 0x60000000,0x3e000000,0x23000000,0x11000000,0xb000000,0x1b000000,0x6fb26366,0xf5f38a8d,0xfff68c8e,0xfff58b8d,0xfff1898c,0xffec8487,0xffe27d81,0xffda777a, - 0xffcf6f72,0xffcb7f82,0xffd5a7a8,0xffa74e51,0xffffffff,0xffffffff,0xffffffff,0xffa63437,0xffd39496,0xffc85156,0xffca2429,0xffd22027,0xffd32025,0xffd52027, - 0xffd31f25,0xffd22027,0xffcd1f25,0xf9c41d23,0xa2691013,0x55000000,0x33000000,0x1b000000,0x12000000,0x26000000,0xbad9787b,0xfff6898d,0xfff68b8d,0xfff3898c, - 0xffed8588,0xffe27d81,0xffd67578,0xffcb6e70,0xffd9a7a8,0xfff0e2e2,0xffffffff,0xff9b4749,0xffffffff,0xffffffff,0xffffffff,0xff9a2e31,0xffffffff,0xfff0d9da, - 0xffd68486,0xffbf1d23,0xffc21e24,0xffc81e24,0xffcb1f25,0xffcb1f25,0xffc71e24,0xffc31e23,0xd796161b,0x6c000000,0x45000000,0x26000000,0x19000000,0x5d9a5254, - 0xf5f28488,0xfff5888c,0xfff3868a,0xffee8387,0xffe47c80,0xffd87579,0xffc86c6e,0xffddb3b5,0xfffefefe,0xffffffff,0xffffffff,0xff974245,0xffffffff,0xffffffff, - 0xffffffff,0xff95282b,0xffffffff,0xffffffff,0xfffefdfd,0xffd69597,0xffb21a20,0xffba1d22,0xffbd1d23,0xffc11d23,0xffbf1e23,0xffbd1d22,0xfab31b20,0x9b4c0c0f, - 0x56000000,0x33000000,0x21000000,0x93c4676a,0xfff68487,0xfff58487,0xfff18184,0xffe97d80,0xffdd7679,0xffcc6c6f,0xffd7a5a7,0xfffefefe,0xffffffff,0xffffffff, - 0xffefe4e4,0xff963e41,0xffffffff,0xffffffff,0xffffffff,0xff942327,0xffefe0e0,0xffffffff,0xffffffff,0xfffefdfd,0xffc88284,0xffa91a1f,0xffb11b20,0xffb61b22, - 0xffb71d20,0xffb51b20,0xffb21b20,0xc2711214,0x67000000,0x3f000000,0x29000000,0xbeda6f73,0xfff68084,0xfff47f83,0xffee7c80,0xffe47679,0xffd56d70,0xffcb7c7e, - 0xfff0e1e2,0xffffffff,0xffffffff,0xffd8b9ba,0xffae6b6c,0xff9b3c3e,0xffffffff,0xffffffff,0xffffffff,0xff9a1e23,0xffaa4d50,0xffd4aaac,0xffffffff,0xffffffff, - 0xffebd7d8,0xffab4548,0xffa4191e,0xffab1a1f,0xffad1a1f,0xffad1a1f,0xffac1a1f,0xde841419,0x75000000,0x4a000000,0x2f000000,0xdee77376,0xfff57b7e,0xfff27a7c, - 0xffeb7779,0xffdd6e72,0xffcb6468,0xffd8a7a8,0xffffffff,0xffffffff,0xfff1e4e5,0xffb56c6e,0xffa43f42,0xffa6393d,0xffffffff,0xffffffff,0xffffffff,0xffa3191e, - 0xff9a171b,0xffa64d4f,0xffeedfdf,0xffffffff,0xffffffff,0xffc28a8c,0xff97171b,0xffa0191e,0xffa4191e,0xffa4191e,0xffa4191e,0xef91161a,0x81000000,0x53000000, - 0x34000000,0xf3ef7377,0xfff5767a,0xfff27478,0xffe86e72,0xffda666a,0xffc65b5e,0xffe7cccd,0xffffffff,0xffffffff,0xffd7b0b1,0xffac4045,0xffb03d40,0xffb4373b, - 0xffffffff,0xffffffff,0xffffffff,0xffa91a1e,0xff9e171d,0xff93161a,0xffcba1a3,0xffffffff,0xffffffff,0xffdabebf,0xff8c1419,0xff95171a,0xff9c171d,0xff9e191d, - 0xff9d171d,0xf997161b,0x89000000,0x59000000,0x37000000,0xfef47175,0xfff57175,0xfff06d71,0xffe6686b,0xffd65e62,0xffc25357,0xfff5ebeb,0xffffffff,0xffffffff, - 0xffc47f81,0xffb43c3f,0xffbc383c,0xffc13136,0xffffffff,0xffffffff,0xffffffff,0xffae1a20,0xffa2191d,0xff93161b,0xffac696b,0xffffffff,0xffffffff,0xfff0e6e7, - 0xff831317,0xff8c1619,0xff93161b,0xff97171d,0xff98171b,0xfe97171b,0x8e000000,0x5e000000,0x38000000,0xf3ee676b,0xfff4696e,0xfff0676b,0xffe56063,0xffd3565b, - 0xffc04b4f,0xfffefdfd,0xffffffff,0xffffffff,0xffb65256,0xffb93538,0xffc53135,0xffcd2a30,0xffce1f25,0xffc71e23,0xffbe1d23,0xffb31a20,0xffa3191e,0xff91161a, - 0xff91383b,0xffffffff,0xffffffff,0xfffdfdfd,0xff7b1216,0xff851419,0xff8d161a,0xff90161b,0xff92161a,0xfa8c1419,0x90000000,0x5f000000,0x37000000,0xe0e45e61, - 0xfff36368,0xffef5e63,0xffe5595c,0xffd54f53,0xffc14348,0xfff5e9ea,0xffffffff,0xffffffff,0xffc57679,0xffb92b30,0xffc7272d,0xffd12027,0xffcd1f25,0xffc61e24, - 0xffbd1d22,0xffaf1a20,0xff9d171d,0xff8a1419,0xffa5686a,0xffffffff,0xffffffff,0xffeee6e6,0xff771316,0xff801317,0xff871419,0xff8c161a,0xff8d161a,0xf27b1317, - 0x8e000000,0x5e000000,0x34000000,0xc4d15054,0xfff35b60,0xfff0575c,0xffe65054,0xffd7484c,0xffc43e41,0xffe7c5c6,0xffffffff,0xffffffff,0xffd7a6a7,0xffb21f24, - 0xffbd1d22,0xffc41d23,0xffc41d24,0xffbd1d22,0xffb21b20,0xffa4191d,0xff90161a,0xff7e1317,0xffc2a0a1,0xffffffff,0xffffffff,0xffd3bebe,0xff741214,0xff7d1317, - 0xff831317,0xff871419,0xff881419,0xe56a1013,0x89000000,0x59000000,0x2f000000,0x9fb64045,0xfff35359,0xffef4e53,0xffe8494e,0xffdb4045,0xffc9363c,0xffd79395, - 0xffffffff,0xffffffff,0xfff1dfe0,0xffb74e51,0xffad1a1f,0xffb11a1f,0xffb21b20,0xffad1a1f,0xffa2191d,0xff93161a,0xff821417,0xff8f4a4c,0xffe8dedf,0xffffffff, - 0xffffffff,0xffb08889,0xff721214,0xff7a1316,0xff7f1317,0xff811417,0xff851419,0xd1510c0f,0x81000000,0x53000000,0x29000000,0x70832a2e,0xf7ed4a4f,0xfff0484d, - 0xffeb4147,0xffe0393f,0xffd13036,0xffc84f53,0xffefd9d9,0xffffffff,0xffffffff,0xffd6abac,0xffae4d51,0xff9d171d,0xff9d171d,0xff97171b,0xff8e161a,0xff821317, - 0xff904a4d,0xffc4a9a9,0xffffffff,0xffffffff,0xffe3d7d7,0xff844041,0xff731216,0xff791216,0xff7d1317,0xff801317,0xfc7d1216,0xb5300808,0x75000000,0x4a000000, - 0x21000000,0x3f000000,0xc6cb393e,0xfff14047,0xffec3940,0xffe43337,0xffd8292f,0xffc82227,0xffd28385,0xfffefdfd,0xffffffff,0xffffffff,0xffeedfdf,0xffcca1a3, - 0xffae696b,0xff92383c,0xffa5686a,0xffc2a0a1,0xffe8dedf,0xffffffff,0xffffffff,0xfffefdfd,0xffa87e80,0xff6d1213,0xff741214,0xff7a1216,0xff7b1317,0xff7e1317, - 0xe6600f12,0x93000000,0x67000000,0x3f000000,0x19000000,0x33000000,0x88942529,0xf8ea373e,0xffee3137,0xffe82a31,0xffdf2329,0xffce1f25,0xffbc1d22,0xffd39597, - 0xfffefdfd,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefdfd,0xffb49193,0xff6b1013,0xff721014, - 0xff761216,0xff7a1316,0xff7b1317,0xfc7a1216,0xc33b080a,0x81000000,0x56000000,0x33000000,0x12000000,0x26000000,0x45000000,0xbcbc272b,0xffef2a31,0xffeb242a, - 0xffe02229,0xffd12025,0xffc21e24,0xffb21a20,0xffc88284,0xffebd7d8,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffe3d7d7, - 0xffa87e80,0xff6b1013,0xff701014,0xff741216,0xff781216,0xff7a1316,0xff7b1316,0xdf540d10,0x94000000,0x6c000000,0x45000000,0x26000000,0xb000000,0x1b000000, - 0x33000000,0x6c5f1013,0xd7ca1f25,0xffe8232a,0xffdf2228,0xffd52027,0xffc71e23,0xffba1d22,0xffaa1a1f,0xffac4548,0xffc38a8c,0xffdabebf,0xfff0e6e7,0xfffdfdfd, - 0xffeee6e6,0xffd4bebe,0xffb18889,0xff854041,0xff6f1214,0xff721014,0xff741216,0xff781216,0xff791316,0xff7a1316,0xed620f12,0xae220506,0x7b000000,0x55000000, - 0x33000000,0x1b000000,0x6000000,0x11000000,0x23000000,0x3e000000,0x85791216,0xe0c61e24,0xffdd2228,0xffd51f27,0xffcb1f25,0xffbf1d23,0xffb31b20,0xffa5191e, - 0xff9a171d,0xff8f161a,0xff851417,0xff7e1316,0xff7a1317,0xff771216,0xff761216,0xff741216,0xff751214,0xff771216,0xff781216,0xff791316,0xff7a1316,0xf0660f12, - 0xbc300608,0x85000000,0x60000000,0x3e000000,0x23000000,0x11000000,0x3000000,0xa000000,0x16000000,0x2a000000,0x46000000,0x8a701214,0xdbb61b22,0xffd22027, - 0xffcb1f25,0xffc21d23,0xffb81d22,0xffad1a1f,0xffa2191e,0xff99171b,0xff90161a,0xff881419,0xff831417,0xff7f1317,0xff7d1316,0xff7b1317,0xff7a1216,0xff7a1316, - 0xff7b1317,0xff7a1316,0xed620f12,0xbc300608,0x88000000,0x66000000,0x46000000,0x2a000000,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1a000000, - 0x2e000000,0x48000000,0x7b4c0c0d,0xc89a171b,0xf9c31d23,0xffc01e23,0xffba1d20,0xffb01a1f,0xffa7191e,0xff9d171d,0xff97171b,0xff90161b,0xff8b141a,0xff861419, - 0xff831317,0xff7f1417,0xff7e1317,0xff7c1317,0xfc7a1216,0xdf540d10,0xae220506,0x85000000,0x66000000,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000, - 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x46000000,0x60000000,0xa2691013,0xd795161b,0xfab21b20,0xffb11b20,0xffaa1a1f,0xffa3191e, - 0xff9a171d,0xff95171b,0xff8f161a,0xff8c161a,0xff861419,0xff841419,0xfc7d1216,0xe6600f12,0xc33b080a,0x94000000,0x7b000000,0x60000000,0x46000000,0x2e000000, - 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000, - 0x9b4c0c0f,0xc2711214,0xde841419,0xef91161a,0xf997161b,0xfe97171b,0xfa8c1419,0xf27b1317,0xe56a1013,0xd1510c0f,0xb5300808,0x93000000,0x81000000,0x6c000000, - 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, - 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000, - 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, - 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000, - 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000, - 0xffffff,0xffffff -}; - -static const QRgb Sound_data[] = { - 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00c600,0xaf00cc00,0xe600d400,0xf600dc00,0xff00e400, - 0xff00ec00,0xff00f400,0xff00fc00,0xff00f800,0xff00ee00,0xfe00e300,0xef00d800,0xc000ce00,0x5700c400,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x9c00b500,0xef00bd00,0xff00c400, - 0xff00cc00,0xff00d400,0xff00dc00,0xff00d400,0xff00d900,0xff00d700,0xff00db00,0xff00dd00,0xff00d300,0xff00d600,0xff00d800,0xff00ce00,0xff00c300,0xfc00b701, - 0xc200ac01,0x23009106,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x5700a600, - 0xf600ad00,0xff00b400,0xff00bc00,0xff00bd00,0xf100b303,0xcd009c06,0x9d007808,0x6000350d,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x8d006400, - 0xb4007302,0xe2009b00,0xfc00a900,0xff00b300,0xff00ae00,0xfe00a200,0xa9008904,0x4000030,0x0,0x0,0x0,0x0,0xffffff,0xffffff, - 0x0,0x0,0x9c009e00,0xff00a400,0xff00aa00,0xfd00a401,0xc3008108,0x67003110,0x3b000008,0x2f000000,0x26000000,0x1a000000,0xb000000,0x4000000, - 0x4000000,0x4000000,0x4000000,0x4000000,0x16000000,0x20000000,0x2c000000,0x8c005400,0xeb008900,0xff009b00,0xff009800,0xe7008303,0xf00002d,0x0, - 0x0,0x0,0xffffff,0xffffff,0x0,0x9c009600,0xff009c00,0xfe009c00,0xc3007108,0x51000016,0x35000004,0x24000000,0xd000000,0x2000000, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16000000,0x8a005d00, - 0xf8008500,0xff008e00,0xea007704,0x1700002a,0x0,0x0,0xffffff,0xffffff,0x3c008e00,0xff009400,0xf9008d02,0x85003511,0x3e00000b,0x24000000, - 0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x16000000,0xe2007600,0xff008300,0xce006307,0x8000018,0x0,0xffffff,0xffffff,0xdb008d00,0xf8008402, - 0x73001c16,0x35000004,0x15000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1007000,0xfd007601,0x4e00001c,0x1000000, - 0xffffff,0xffffff,0xff008900,0x97003c0f,0x3a000008,0x10000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x1f006000,0xfc007400,0xa900460c,0x9000000,0xffffff,0xffffff,0xe2007803,0x51000016,0x1a000000,0x2000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x5700d500,0x9c00de00,0xc000e800,0xc000f200,0xc000fc00,0xc000f700,0xc000e900,0x7000dc00,0x1f00d400,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x9e006f00,0xa900460c,0x1e000000,0xffffff,0xffffff,0x93006505,0x35000009,0x7000000,0x0, - 0x0,0x0,0x0,0x7000b800,0xdb00c100,0xfe00ca00,0xff00d400,0xff00de00,0xff00e800,0xff00f200,0xff00fc00,0xff00f700,0xff00e900,0xff00dc00, - 0xff00cf00,0xf600c200,0xaf00b500,0x23009606,0x0,0x0,0x0,0x0,0x0,0x1f006700,0x90005407,0x1e000000,0xffffff,0xffffff, - 0x4000030,0x1d000000,0x2000000,0x0,0x0,0x3c00a500,0xef00ad00,0xff00b600,0xff00bf00,0xf900bd02,0xe300ac05,0xbd009605,0x9a007307,0x97006f05, - 0x97006905,0x97006205,0x97005d05,0xcd00a000,0xed00a801,0xfe00a900,0xff00b500,0xfe00a600,0xb8009103,0xa000030,0x0,0x0,0x0,0x0, - 0xa000013,0x1a000000,0xffffff,0xffffff,0x0,0x1000000,0x0,0x0,0x87009a00,0xfe00a200,0xff00a800,0xea009a04,0x8300490f,0x45000010, - 0x32000000,0x2c000000,0x23000000,0x1a000000,0x19000000,0x19000000,0x19000000,0x19000000,0x26000000,0x2e000000,0xb0007200,0xfc009300,0xff009a00,0xe7008303, - 0x32005011,0x0,0x0,0x0,0x0,0x1000000,0xffffff,0xffffff,0x0,0x0,0x0,0x57009100,0xff009800,0xf9009102, - 0x85003b11,0x4300000e,0x2e000000,0x14000000,0x5000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x1f000000,0xbf006e00,0xff008700,0xea007504,0x1d000021,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0, - 0x0,0xf6008f00,0xe7007e04,0x58000019,0x35000004,0x15000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6e005600,0xfe007d00,0xa6004c0b,0x8000018,0x0,0x0,0x0, - 0xffffff,0xffffff,0x0,0x0,0x57008b00,0xf8008202,0x72001a16,0x2e000000,0x9000000,0x1000000,0x0,0x0,0x0,0x70bababa, - 0x70bcbcbc,0x70bebebe,0x70c0c0c0,0x70c3c3c3,0x70c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb4006d00,0xea006904, - 0x35000018,0x1000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x70008b00,0xa6005b09,0x3a000008,0x10000000,0x1fb4b4b4,0x9cababab, - 0xe69f9f9f,0xfb959595,0xff8f8f8f,0xff959595,0xff9b9b9b,0xffa2a2a2,0xffa7a7a7,0xffacacac,0xffafafaf,0xffb1b1b1,0xfbb8b8b8,0xe6c0c0c0,0x9cc9c9c9,0x23b4b4ba, - 0x0,0x0,0x0,0xe3006c01,0x4c000017,0x5000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x57007400,0x2b00001a, - 0x547d7d7d,0xdb999999,0xff7d7d7d,0xff7f7f7f,0xff767676,0xff6e6e6e,0xff686868,0xff626262,0xff626262,0xff636363,0xff6a6a6a,0xff737373,0xff7b7b7b,0xff8a8a8a, - 0xff9c9c9c,0xffababab,0xffb8b8b8,0xffbcbcbc,0xe0c1c1c3,0x45b5b5bb,0x0,0x70006e00,0x40000011,0x7000000,0x0,0x0,0xffffff,0xffffff, - 0x0,0x0,0x0,0xc4969696,0xff747474,0xff797979,0xff6b6b6b,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff686868, - 0xff707070,0xff797979,0xff818181,0xff8a8a8a,0xff929292,0xff9a9a9a,0xffa3a3a3,0xffb0b0b0,0xffbababa,0xffc0c0c0,0xcbbcbcbf,0xa000030,0x16000000,0x5000000, - 0x0,0x0,0xffffff,0xffffff,0x0,0x0,0xdb8f8f8f,0xff737373,0xff6c6c6c,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262, - 0xff626262,0xff626262,0xff666666,0xff6e6e6e,0xff777777,0xff7f7f7f,0xff888888,0xff909090,0xff989898,0xffa1a1a1,0xffa9a9a9,0xffb1b1b1,0xffb9b9b9,0xffbfbfbf, - 0xffc1c1c1,0xe7bcbcbf,0x1000002a,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x9c9c9c9c,0xff6f6f6f,0xff696969,0xff626262,0xff626262, - 0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff646464,0xff6c6c6c,0xff757575,0xff7d7d7d,0xff868686,0xff8e8e8e,0xff969696,0xff9f9f9f,0xffa7a7a7, - 0xffb0b0b0,0xffb7b7b7,0xffbfbfbf,0xffc8c8c8,0xffcbcbcb,0xffc3c3c3,0xc1a0a0a7,0x700001b,0x0,0x0,0xffffff,0xffffff,0x0,0xf67b7b7b, - 0xff717171,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff909090,0xffc0c0c0,0xffd7d7d7,0xffe7e7e7,0xffeeeeee,0xffdcdcdc, - 0xffc7c7c7,0xffb4b4b4,0xffa5a5a5,0xffaeaeae,0xffb5b5b5,0xffbdbdbd,0xffc6c6c6,0xffcecece,0xffd6d6d6,0xffcacaca,0xf9c6c6c8,0x40000019,0x1000000,0x0, - 0xffffff,0xffffff,0x0,0xff646464,0xff747474,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff737373,0xffaaaaaa,0xffc1c1c1,0xffc6c6c6, - 0xffbdbdbd,0xffb4b4b4,0xffaaaaaa,0xffb9b9b9,0xffd7d7d7,0xffcfcfcf,0xffbababa,0xffb5b5b5,0xffbbbbbb,0xffc4c4c4,0xffcccccc,0xffd4d4d4,0xffdcdcdc,0xffcccccc, - 0xffcecece,0x5e00001c,0x7000000,0x0,0xffffff,0xffffff,0x0,0xff5f5f5f,0xff727272,0xff626262,0xff626262,0xff626262,0xff626262,0xff656565, - 0xff929292,0xff787878,0xff868686,0xff919191,0xff8b8b8b,0xff808080,0xff787878,0xff787878,0xff7b7b7b,0xff9c9c9c,0xffa1a1a1,0xff989898,0xffbfbfbf,0xffcacaca, - 0xffd2d2d2,0xffdadada,0xffe3e3e3,0xffd0d0d0,0xffc2c2c2,0x5f00001c,0xb000000,0x0,0xffffff,0xffffff,0x0,0xfe4d4d4d,0xff747474,0xff646464, - 0xff626262,0xff626262,0xff626262,0xff686868,0xff656565,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff5d5d5d, - 0xff6a6a6a,0xff656565,0xffb5b5b5,0xffd0d0d0,0xffd8d8d8,0xffe1e1e1,0xffe6e6e6,0xffcccccc,0xf9acacad,0x5a00001a,0xb000000,0x0,0xffffff,0xffffff, - 0x0,0xdb3c3c3c,0xff686868,0xff757575,0xff626262,0xff626262,0xff626262,0xff616161,0xff505050,0xff373737,0xff353535,0xff353535,0xff353535,0xff353535, - 0xff353535,0xff373737,0xff3e3e3e,0xff474747,0xff3d3d3d,0xff505050,0xffc0c0c0,0xffd6d6d6,0xffdfdfdf,0xffe5e5e5,0xffd4d4d4,0xffc2c2c2,0xd1606068,0x48000012, - 0xa000000,0x0,0xffffff,0xffffff,0x0,0x1f424242,0xfc2a2a2a,0xff696969,0xff7a7a7a,0xff6b6b6b,0xff626262,0xff686868,0xff5c5c5c,0xff494949, - 0xff3d3d3d,0xff353535,0xff353535,0xff353535,0xff353535,0xff3a3a3a,0xff393939,0xff3d3d3d,0xff4a4a4a,0xff9e9e9e,0xffd4d4d4,0xffdddddd,0xffe1e1e1,0xffd9d9d9, - 0xffc5c5c5,0xf9767678,0x6100001d,0x27000000,0x5000000,0x0,0xffffff,0xffffff,0x0,0x0,0x5b3b3b3b,0xf8252525,0xff4c4c4c,0xff838383, - 0xff7f7f7f,0xff787878,0xff7b7b7b,0xff737373,0xff606060,0xff4c4c4c,0xff474747,0xff474747,0xff474747,0xff474747,0xff4c4c4c,0xff727272,0xffacacac,0xffd6d6d6, - 0xffe1e1e1,0xffe0e0e0,0xffd5d5d5,0xffa3a3a3,0xf66f6f72,0x731b1b31,0x35000004,0xc000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0, - 0x0,0x2e2f2f2f,0xcc343434,0xff242424,0xff535353,0xff818181,0xff959595,0xff999999,0xff9f9f9f,0xffa2a2a2,0xff989898,0xffa0a0a0,0xffa7a7a7,0xffaeaeae, - 0xffc9c9c9,0xffdadada,0xffdcdcdc,0xffdcdcdc,0xffc1c1c1,0xff9a9a9a,0xfe727273,0xd158585f,0x53000017,0x34000004,0x10000000,0x1000000,0x0,0x0, - 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x6000000,0x40252525,0xbf3c3c3c,0xf9313131,0xff373737,0xff515151,0xff6b6b6b,0xff7f7f7f, - 0xff939393,0xff989898,0xff9e9e9e,0xffa4a4a4,0xff949494,0xff929292,0xff828282,0xff6a6a6a,0xf6646466,0xc352525a,0x6a1f1f31,0x3b000008,0x27000000,0x8000000, - 0x1000000,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x57262626, - 0xff393939,0xff505050,0xff444444,0xff3e3e3e,0xff404040,0xff454545,0xff4d4d4d,0xff565656,0xff696969,0xff7e7e7e,0xff737373,0xf95f5f60,0x5f00001c,0x31000000, - 0x24000000,0xe000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0xa13d3d3d,0xfe444444,0xff4b4b4b,0xff464646,0xff434343,0xff444444,0xff535353,0xff646464,0xff737373,0xff6e6e6e, - 0xf9646466,0x99373745,0x3a000008,0xb000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3a272727,0xbf474747,0xeb515151,0xf6535356,0xff5e5e5e, - 0xfe626262,0xf6616163,0xea5f5f63,0xb04f4f56,0x4d000015,0x35000004,0x19000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0 -}; - -static const QRgb SoundPlayer_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x318091d7,0x537c8dd0,0x847c8ace, - 0x867987c9,0x867784c5,0x586e7cb9,0x27626ea4,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x218597de,0xa18598df, - 0xf08496de,0xff95a4e2,0xffa5b0e7,0xffafb7ea,0xffacb5e9,0xffaab2e7,0xff9ca6df,0xff838fcf,0xe37381c1,0x8b6b77b2,0x2a566091,0x5000000,0x1000000,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x108da0eb,0xa1899de6,0xff90a1e7,0xffb8c2f1,0xffdde1fb,0xffe9edff,0xffe8edff,0xffe8eeff,0xffe6edff,0xffc7d6ff,0xffc7d4ff,0xffc9d4ff,0xffc1cbf8,0xff9ba3dc, - 0xff7783c1,0x90636da6,0x1d3c4365,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x318ca0e9,0xf08ca0eb,0xffb6c2f3,0xffe9ecfe,0xfff0f3ff,0xffeef3ff,0xffedf1ff,0xffebf0ff,0xffe9efff,0xffe8eeff,0xffc9d8ff, - 0xffc7d6ff,0xffc3d4ff,0xffcfdbff,0xffd4deff,0xffc9d0fb,0xff8b94d0,0xd96873ae,0x454b527d,0x8000000,0x1000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x318ea2ec,0xf095a8f0,0xffd4dbf9,0xfff5f7ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff, - 0xffedf1ff,0xffebf0ff,0xffe4ebff,0xffccdaff,0xffc9d8ff,0xffc8d7ff,0xffd6e1ff,0xffd6e0ff,0xffd4e0ff,0xffe6eaff,0xffa8ade4,0xf36974b1,0x4c434970,0xa000000, - 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3190a5f0,0xf097abf2,0xffe3e7fc,0xfff9fbff,0xfff9fbff, - 0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffedf1ff,0xffe4ebff,0xffcfdcff,0xffccdaff,0xffd0dcff,0xffd9e3ff,0xffd7e2ff,0xffe7edff,0xfff6f9ff, - 0xfff0f3ff,0xffabb1e3,0xf46771ae,0x40343957,0xa000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x1095aaf8,0xe092a8f5, - 0xffd1d9fb,0xfff9fbff,0xfffdfeff,0xfffafcff,0xfff9fbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffe7edff,0xffd3dfff,0xffcfdcff,0xffd8e3ff, - 0xffdbe4ff,0xffdfe7ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffedefff,0xff9ea4dd,0xdc616aa3,0x21000000,0x6000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x9193a8f5,0xffb9c8fa,0xffeff4ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffbfcff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff, - 0xffe4ebff,0xffd7e1ff,0xffd5e0ff,0xffdee7ff,0xffdce6ff,0xfff2f5ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffe5e8ff,0xff7d85c1,0x934d5481,0x17000000, - 0x3000000,0x0,0x0,0x0,0x0,0x2192a8f3,0xff9cb0fa,0xffeaefff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff, - 0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xffe7eeff,0xffdbe4ff,0xffdee6ff,0xffe1e9ff,0xffedf2ff,0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff, - 0xfff6f9ff,0xffc4c9f5,0xf4636ca7,0x3d1a1c2b,0xc000000,0x0,0x0,0x0,0x0,0x8295abf8,0xffc2cffc,0xffe0eaff,0xffe3ecff,0xffe8efff, - 0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xffebf0ff,0xffdfe8ff,0xffe5ecff,0xffe9efff,0xfff9fbff,0xfff9faff, - 0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff5f7ff,0xffecefff,0xff868cca,0x8c444a73,0x1b000000,0x3000000,0x0,0x0,0x0,0xe196adfa, - 0xffe1e9fe,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffdfeff,0xfffdfdff,0xfffafbff,0xfff3f5fe,0xffe8edfd,0xffe2e9fd, - 0xffeaf0ff,0xfff7faff,0xfff9fbff,0xffaae0ae,0xff7bdb7e,0xff7be37e,0xff7adb7e,0xffc5eccf,0xfff3f6ff,0xfff3f6ff,0xffabafe4,0xca565d91,0x2c000000,0x9000000, - 0x0,0x0,0x2194aaf7,0xffaabdfd,0xffdfe9ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffafcff, - 0xffeef1fc,0xffe8ecfa,0xffdfe5f9,0xffdce2f7,0xffe5e9f7,0xffe8f3ed,0xff3eba3f,0xff5dc55f,0xff7adf7e,0xff5cd55f,0xff1ed01f,0xff00e300,0xff1ee01f,0xff97ea9e, - 0xffdbdeff,0xff6971ac,0x3e000000,0x12000000,0x0,0x0,0x5394aaf6,0xffbecdfe,0xffd0dfff,0xffd1e0ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff, - 0xffe8efff,0xffedf3ff,0xfff1f6ff,0xffeaeffe,0xffeef1fc,0xffe7ebfa,0xffd3d9f2,0xffdde1f3,0xffe9ebf6,0xffbbd2c7,0xffe8efee,0xfff8faff,0xfff7f9ff,0xfff6f9ff, - 0xffecf1ff,0xffa8dcbe,0xff35db3f,0xff00ee00,0xff30e43f,0xff6a8ca4,0x77343858,0x1b000000,0x2000000,0x0,0x8494aaf7,0xffcbd7fe,0xffc9daff,0xffcdddff, - 0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffe6edff,0xffe5ebfe,0xffd5dffc,0xf7889be3,0xc96875ab,0xf57783bc,0xffd1d4e8,0xffe3e6f4, - 0xffe9ecf9,0xffe9efff,0xffe1e9ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xff89d5ae,0xff0cea10,0xff09ef0d,0x9b206e36,0x24000000,0x5000000,0x0, - 0x8692a8f4,0xffbfcffe,0xffc4d8ff,0xffc9daff,0xffcdddff,0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffdfe8ff,0xffe6ecfe,0xffaebffc,0x914b5475, - 0x51000000,0x8c4a527d,0xff9199c5,0xffdce1f4,0xffdde3f7,0xffe4ebff,0xffdfe8ff,0xffdbe5ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xffa3d3cf,0xff1ad527, - 0xfa03f605,0x52009000,0x8000000,0x0,0x8692a8f4,0xffbfcffe,0xffc1d6ff,0xffc4d8ff,0xffc9daff,0xffcdddff,0xffd6e3ff,0xffe2ebff,0xffebf1ff,0xfff2f6ff, - 0xffeff3ff,0xffeff2fe,0xffafc1fc,0x84485275,0x35000000,0x75596296,0xff6e9f93,0xff37c03c,0xff00ba00,0xff1cd11f,0xff47dd4f,0xff8add9e,0xffdbe5ff,0xffd7e2ff, - 0xffd3dfff,0xffd0dcff,0xffccdaff,0xff7c94b8,0xfa03df05,0xe500ec00,0x1a008900,0x0,0x8692a8f4,0xffcbd7fe,0xffccdcff,0xffdbe6ff,0xffe8efff,0xfff2f6ff, - 0xfff5f8ff,0xfff6f9ff,0xfff7f9ff,0xfff8fbff,0xfff2f5ff,0xffecf0fe,0xffd8e0fc,0xf5889be4,0xcc7685c5,0xff6b7da9,0xff86ca92,0xffd6dee5,0xffeceffa,0xffc0e4cf, - 0xff65db6f,0xff0ee810,0xff29e82f,0xffb1e4cf,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xff898fcd,0xa01f5635,0xff00e100,0xa300dc00,0x0,0x588ba0e8,0xffbecdfe, - 0xfff2f6ff,0xfff2f6ff,0xfff3f7ff,0xfff3f7ff,0xfff4f8ff,0xfff7f9ff,0xfff8fbff,0xfff9fbff,0xfff8fbff,0xffecf0fe,0xffe0e3f3,0xffa2a3b0,0xff8b8a93,0xff949298, - 0xffa7a6ad,0xffcfd0d7,0xfff8fafe,0xfff4f7ff,0xffeef3ff,0xffdaecef,0xff47e44f,0xff00f400,0xff88eb9e,0xffd7e2ff,0xffcdd7ff,0xff7980bc,0x842f334f,0x95009500, - 0xff00de00,0x2000cb00,0x277d90d1,0xffa4b8fd,0xfff5f8ff,0xfff2f6ff,0xfff2f6ff,0xfff5f8ff,0xfff7f9ff,0xfff8faff,0xfff8faff,0xfff9fbff,0xfff9fbff,0xfff5f9ff, - 0xff7b7880,0xff736e73,0xff6a656a,0xff686368,0xff706c70,0xff787378,0xffa29ea3,0xffdedee2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff71e77e,0xff00fc00,0xff95ecae, - 0xffcbd3ff,0xff636ca7,0x59010101,0x33002300,0xef00c200,0x9f00c200,0x4000000,0xe395abf8,0xffecf0fe,0xfff3f7ff,0xfff5f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff, - 0xfff8faff,0xfff8faff,0xfff9fbff,0xff9397a0,0xff746f74,0xff686368,0xff686368,0xff686368,0xff686368,0xff686368,0xff6c676c,0xff837e83,0xffc8c5ca,0xfff4f7ff, - 0xffeef3ff,0xffe9efff,0xff63df6f,0xff0ef110,0xff91b3c7,0xd6525989,0x4b000000,0x1c000000,0x8100a600,0xdf00be00,0x1000000,0x8b8ba0e8,0xffc2cffc,0xfff6f8ff, - 0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,0xfff8faff,0xffeef3ff,0xff818591,0xff777377,0xff686368,0xff686368,0xff686368,0xff686368,0xff686368, - 0xff686368,0xff686368,0xff827e82,0xffc0bfc2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff36d43f,0xff27c03d,0xa33b4062,0x3e000000,0x13000000,0x30006300,0xff00bb00, - 0x0,0x1b596694,0xf29aaff7,0xfff1f4ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff3f6ff,0xffdce7ff,0xff757b87,0xff7b777b,0xff686368, - 0xff696469,0xff7b777b,0xff8d898d,0xff7e7a7e,0xff696469,0xff696469,0xff6b666b,0xff837f83,0xffc7c5c9,0xfff4f7ff,0xffeff3ff,0xff95b6c2,0xff00cf00,0x73013501, - 0x2e000000,0xa000000,0x0,0xff00a400,0x0,0x4000000,0x8e869ae1,0xffb3c2f9,0xfff6f8ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xffdee9ff, - 0xffd7e4ff,0xff8c95a7,0xff656265,0xff6c676c,0xff635e63,0xff595359,0xff7e7a7e,0xffb9b6b9,0xffafacaf,0xff7e7a7e,0xff787478,0xff7a767a,0xffa09ca0,0xffdedee1, - 0xffe4e7ff,0xff7d85c1,0xe90ba512,0x98008700,0x1c000000,0x3000000,0x0,0xff009b00,0x0,0x0,0x1c55618d,0xd88da2eb,0xffd1d9fb,0xfff5f8ff, - 0xfff5f8ff,0xfff5f9ff,0xffe6eeff,0xffd3e1ff,0xffd5e3ff,0xffbecef1,0xff59575d,0xff837f83,0xff635f63,0xff423c42,0xff575257,0xff8f8a8f,0xffbebbbe,0xffc5c3c5, - 0xff878387,0xff898589,0xff8b878b,0xffb7b4b8,0xff9aa0d6,0xde5a6397,0xa2017201,0x98009b00,0xc000000,0x0,0x20008800,0xbf00a000,0x0,0x0, - 0x4000000,0x456674a9,0xf38fa3ee,0xffdbe1fb,0xfff5f8ff,0xffeef3ff,0xffd0dfff,0xffd2e0ff,0xffd1e0ff,0xffc1d5ff,0xff5d5c6a,0xff868286,0xff797479,0xff464046, - 0xff423c42,0xff585258,0xff817c81,0xffb5b3b5,0xffb2afb2,0xff999599,0xff9b979b,0xffa6a3a6,0xfb9195b4,0x7113141c,0x6f006800,0x8b00a100,0x3000000,0x0, - 0x7000ab00,0x30009400,0x0,0x0,0x0,0x8000000,0x4c5b6897,0xf48ca1ea,0xffcdd5f8,0xffdbe6ff,0xffceddff,0xffd0dfff,0xffc5d8ff,0xffbed3ff, - 0xff6c6c79,0xff534e53,0xffa09da0,0xff5a555a,0xff423c42,0xff423c42,0xff554f55,0xff858085,0xffb5b3b5,0xffa8a5a8,0xffaaa7aa,0xffaca9ac,0xf7b8b7b9,0x48000000, - 0x75008400,0x64009900,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0xa000000,0x4e586492,0xe8879be3,0xffaab8f0, - 0xffdae2fe,0xffd2dfff,0xffbbd2ff,0xffbbd1ff,0xff7f8294,0xff4f4a4f,0xff6e6a6e,0xffa3a0a3,0xff575257,0xff443e44,0xff464046,0xff5d585d,0xff908d90,0xffb7b4b7, - 0xffb9b7b9,0xffbbb8bb,0xffbfbdbf,0x4f767476,0xa3009900,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x1000000,0xa000000,0x322d334b,0xac7384c1,0xff90a1e7,0xffb2bcef,0xffccd6fb,0xffcad8ff,0xffc1cdea,0xff615d63,0xff4d474d,0xff7a757a,0xffb7b4b7,0xff716d71, - 0xff4d474d,0xff4e494e,0xff827e82,0xffc7c4c7,0xffc9c7c9,0xffcbc9cb,0xffc7c4c7,0x48b0aeb0,0x1000000,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x1000000,0x8000000,0x1b000000,0x4e38405d,0xa66877ae,0xea7f90d5,0xff8f9fe0,0xff9fabe5,0xff9294b6, - 0xff625c62,0xff625d62,0xff7e7a7e,0xffcdcbcd,0xffc7c4c7,0xffb4b1b4,0xffd4d2d4,0xffd6d5d6,0xffd8d7d8,0xffdbd9db,0xffcdcbcd,0x31c4c2c4,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xf000000,0x20000000, - 0x33000000,0x5b2e344c,0x7a434c71,0x9f596595,0xbb61688f,0xf36d6972,0xff767176,0xff706b70,0xffb1aeb1,0xffe1e0e1,0xffe0dfe0,0xffe3e2e3,0xffe2e1e2,0xffd8d6d8, - 0xcfcdcbcd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1000000,0x5000000,0xc000000,0x16000000,0x1f000000,0x27000000,0x2e000000,0x32000000,0x634b474b,0x5d504d50,0x735c585c,0xd37e7b7e, - 0xffa09da0,0xffb8b6b8,0xffbbb8bb,0xbfb0adb0,0x10d1cfd1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x7000000,0xa000000,0xc000000, - 0xa000000,0x7000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0 -}; - -static const QRgb Spreadsheet_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, - 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff, - 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, - 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, - 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, - 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff, - 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, - 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, - 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, - 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, - 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, - 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6, - 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc, - 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9, - 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0, - 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0, - 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1, - 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc, - 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb, - 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, - 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5, - 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0, - 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff, - 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, - 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff, - 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece, - 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff, - 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3, - 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff, - 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc, - 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc, - 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff, - 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1, - 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff, - 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, - 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff, - 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9, - 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff, - 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812, - 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, - 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625, - 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce, - 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802, - 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de, - 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff, - 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9, - 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788, - 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453, - 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1, - 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f, - 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, - 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b, - 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, - 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000, - 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc, - 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, - 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, - 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, - 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1, - 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, - 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, - 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, - 0xffffff,0xffffff -}; - -static const QRgb Tux_data[] = { - 0x4000000,0x7000000,0xc000000,0x12000000,0x17000000,0x1b000000,0x1d000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000, - 0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1d000000,0x1b000000, - 0x17000000,0x12000000,0xc000000,0x7000000,0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000, - 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000, - 0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000,0xc000000,0x18000000,0xff090684,0xff090682,0xff090680,0xff090680, - 0xff090681,0xff090681,0xff090682,0xff090683,0xff060456,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454, - 0xff060454,0xff060454,0xff060454,0xff060457,0xff070465,0xff070467,0xff060456,0xff06034d,0xff04033a,0x3d000000,0x29000000,0x18000000,0x12000000,0x25000000, - 0xff090682,0xffe4f8f0,0xffd2f3e7,0xffccf1e2,0xffcdf1e2,0xffd2f3e4,0xffd9f4e7,0xffafafae,0xff9b9b9b,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c, - 0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9d9d9d,0xffb1b1b1,0xffb4b4b5,0xffa1a1a1,0xff8f8f8f,0xff04033a,0x5c000000, - 0x3d000000,0x25000000,0x17000000,0x2e000000,0xff08067f,0xffcff2e5,0xff97e3c7,0xff7ddcb8,0xff7fdcb7,0xff8ee0bc,0xffa1e5c3,0xff565656,0xff4f4f4f,0xff4f4f4f, - 0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff505050,0xff595858,0xff525253, - 0xff4e4e4e,0xff494949,0xff02011d,0x74000000,0x4e000000,0x2e000000,0x1b000000,0x36000000,0xff08067e,0xffc4efdf,0xff76d9b5,0xff50cfa0,0xff53d09f,0xff69d6a7, - 0xff605f5c,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616, - 0xff161616,0xff161616,0xff161616,0xff161616,0xff151515,0xff131313,0xff010008,0x87000000,0x5a000000,0x36000000,0x1d000000,0x3b000000,0xff08067e,0xffc0eede, - 0xff6ad6af,0xff43cc99,0xff46cd98,0xff5fd3a0,0xff3a3937,0xff030303,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404, - 0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff030303,0xff040404,0xff030303,0xff030303,0xff000001,0x93000000,0x62000000,0x3b000000, - 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff61d4a1,0xff2a2928,0xff000000,0xff020202,0xff020202,0xff020202,0xff020202, - 0xff010101,0xff000201,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff010101,0xff050505,0xff0f0e0e,0xff060606,0xff010101,0xff010101, - 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff47cc97,0xff63d4a1,0xff242523,0xff000000, - 0xff020202,0xff010101,0xff020202,0xff131111,0xff171515,0xff020202,0xff000201,0xff020202,0xff020202,0xff020202,0xff010101,0xff030303,0xff060606,0xff060606, - 0xff161615,0xff383535,0xff050505,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98, - 0xff48cd98,0xff64d5a1,0xff20201f,0xff000000,0xff010101,0xff090909,0xff1b1918,0xff0e0e0d,0xff141414,0xff100f0f,0xff020202,0xff020202,0xff020202,0xff010101, - 0xff252220,0xff716d6c,0xff73706f,0xff565352,0xff1b1b1b,0xff090908,0xff0c0c0c,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, - 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff20201f,0xff000000,0xff090909,0xff7f7c7b,0xff888888,0xff797979,0xff2f2d2b,0xff020202, - 0xff020202,0xff020202,0xff010101,0xff181717,0xffb2b2b2,0xffa9a9a9,0xffa4a4a4,0xff9a9a9a,0xff9e9e9e,0xff383534,0xff010101,0xff010101,0xff000001,0x99000000, - 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff252423,0xff000000,0xff2e2c2a,0xffdddddd, - 0xffefefef,0xfff3f3f3,0xffe1e1e1,0xff1e1c1b,0xff000101,0xff020202,0xff010101,0xff6f6866,0xfff3f3f3,0xffeaeaea,0xff7d7d7d,0xff8a8a8a,0xffdcdcdc,0xffbcbcbe, - 0xff0d0c0c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2, - 0xff252624,0xff000000,0xff5f5856,0xfff3f3f3,0xff868686,0xff8b8b8b,0xfffefefe,0xff6a6663,0xff010101,0xff010101,0xff030303,0xffb9b3b0,0xffffffff,0xff595959, - 0xff000000,0xff050505,0xff949494,0xffebebee,0xff2f2c2d,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd, - 0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff282826,0xff000000,0xff837c78,0xff6d6d6d,0xff050505,0xff202020,0xff868686,0xff908c88,0xff020202,0xff060606, - 0xff0b0a09,0xffbfbab8,0xffd4d4d4,0xff070707,0xff030303,0xff282828,0xff3f3f3f,0xffebebee,0xff504c4e,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000, - 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff2b2c2a,0xff000000,0xff837c7a,0xff484848,0xff020202,0xff1b1b1b, - 0xff525252,0xff757072,0xff020202,0xff050505,0xff070707,0xff837d7f,0xffc7c7c7,0xff090909,0xff080808,0xff0b0b0b,0xff1c1c1c,0xffeaeaed,0xff575255,0xff000000, - 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff31302f,0xff000000, - 0xff6d6765,0xff636363,0xff020202,0xff000000,0xff524f47,0xff9f8948,0xff7e6717,0xff8b741b,0xff5f4f20,0xff968343,0xffddd3a1,0xff101010,0xff050505,0xff020202, - 0xff383838,0xffebebee,0xff443f42,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98, - 0xff48cd98,0xff64d5a2,0xff363634,0xff000000,0xff44403e,0xffa1a1a1,0xff020202,0xff39362b,0xffb89421,0xffc7a21f,0xfff2c711,0xfff0c915,0xffd1b333,0xffc2a228, - 0xffe8bf12,0xff97833d,0xff353229,0xff0e0e0e,0xffa8a8a8,0xffebebee,0xff1d1b1c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, - 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff3a3937,0xff000000,0xff0b0b0b,0xffc6c7cd,0xffa28f5a,0xffd3a200,0xffe4b200,0xffe7bb10, - 0xffe9c51f,0xffeac827,0xffedcc2c,0xffefcd2e,0xffedcc2c,0xffe9bf0c,0xffe2b70b,0xffcda833,0xffeccd91,0xff938577,0xff030304,0xff000000,0xff000001,0x99000000, - 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a1,0xff42413e,0xff000101,0xff000000,0xff564a2d, - 0xffd6a200,0xffdca900,0xffe4b600,0xffe6be14,0xffe9c521,0xffedcc2d,0xffeed436,0xfff2d949,0xfff5e164,0xfff3dc51,0xffeecc27,0xffe6b700,0xffd5a200,0xff9d6d05, - 0xff241c0f,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff47cc98,0xff64d5a1, - 0xff474642,0xff000000,0xff14110d,0xffa07300,0xffcd9800,0xffddaa00,0xffe6b300,0xffe7bb10,0xffe9c51f,0xffecca28,0xffedce2e,0xfff4db58,0xfffae97f,0xfff0d547, - 0xffeec310,0xffae8a0e,0xff564214,0xffa37605,0xff3c2f11,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd, - 0xff69d6ae,0xff41cb98,0xff47cc97,0xff62d4a1,0xff4b4a47,0xff000000,0xff3c2e17,0xffbe8600,0xffc79400,0xffd9a700,0xffe3b200,0xffe6b90d,0xffe9c018,0xffe9c51f, - 0xffefd135,0xfff5e462,0xfff3d644,0xffeec30c,0xffb08c14,0xff624e17,0xffa2780b,0xffb68400,0xff2e2411,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000, - 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff62d4a1,0xff504f4c,0xff010101,0xff2d2414,0xff815c0e,0xffb68700,0xffd5a100, - 0xffe2b100,0xffe7b700,0xffe9bc0f,0xffecc214,0xfff8d625,0xfff2cf26,0xffb6941c,0xff6e561b,0xff785d18,0xffd3a100,0xffcb9700,0xffaf7b00,0xff1f1a0e,0xff000000, - 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc98,0xff61d4a1,0xff595854,0xff020202, - 0xff070706,0xff523f20,0xff755414,0xff7f6213,0xffac8408,0xffbf9500,0xffc09809,0xffba9413,0xff886d1b,0xff5c4b1a,0xff5f4918,0xff9d7610,0xffe2ae00,0xffce9d00, - 0xffc6992b,0xffbfa262,0xff242120,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffc0eedd,0xff6ad7ae,0xff44cc99, - 0xff48cd98,0xff64d5a1,0xff82ddad,0xff030303,0xff020202,0xff96928d,0xffbe9643,0xff926407,0xff795d15,0xff7b6820,0xff7c661f,0xff7e681f,0xff957819,0xffbc920e, - 0xffe3af00,0xffe0ac00,0xffcf9d00,0xffd0b262,0xffcecbc3,0xffc3c3c6,0xff716f77,0xff020203,0xff000000,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, - 0xff08067e,0xffc0eddd,0xff6cd5af,0xff49cb99,0xff4ecd9a,0xff69d4a3,0xff494845,0xff010101,0xff090908,0xffcbcbce,0xffdad2c5,0xffba8d2a,0xffb77f00,0xffd8a90b, - 0xffecc110,0xffeaba00,0xffdcad00,0xffd3a100,0xffcc9800,0xffcb9b15,0xffd4bf87,0xffd2d2d2,0xffd3d3d3,0xffc9c9cc,0xff9696a0,0xff08080a,0xff000000,0x99000000, - 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067c,0xffbee8da,0xff6dcdaa,0xff4bc094,0xff53c293,0xff6cc89d,0xff0f0f0f,0xff000000,0xff060606,0xffbab6b8, - 0xffd0d0d3,0xffcbc3ba,0xffaf8735,0xffa07100,0xffaa7a00,0xffad7e00,0xffb08000,0xffb88d22,0xffcaaf71,0xffcfc8be,0xffcbcbcd,0xffcdcdcf,0xffdedee1,0xffd8d8de, - 0xffa0a0ac,0xff1d1c21,0xff000000,0x99000000,0x66000000,0x3d000000,0x1d000000,0x3b000000,0xff080577,0xffb7d6cd,0xff69af98,0xff45987c,0xff489579,0xff1a1a1b, - 0xff000000,0xff010101,0xff080707,0xffa0a0a9,0xffababb5,0xff9e9ea7,0xffa0a0a9,0xff95866e,0xff907b52,0xff927d55,0xff9a8c75,0xff9e9da2,0xff9e9ea7,0xff9e9ea7, - 0xffa2a2ac,0xffacacb7,0xffafafba,0xffa3a3b0,0xff7c7c8f,0xff3e3d4f,0xff000002,0x93000000,0x62000000,0x3b000000,0x1b000000,0x36000000,0xff070568,0xff98b4ae, - 0xff59736d,0xff314e48,0xff202025,0xff010101,0xff000000,0xff000000,0xff232227,0xff65657a,0xff65657a,0xff616174,0xff5f5f72,0xff5e5e71,0xff5e5e71,0xff5e5e71, - 0xff5e5e71,0xff5f5f72,0xff5f5f72,0xff616174,0xff646478,0xff656579,0xff646479,0xff5e5e74,0xff4d4d65,0xff40405a,0xff01000c,0x87000000,0x5a000000,0x36000000, - 0x17000000,0x2e000000,0xff050451,0xff050343,0xff030226,0xff020117,0xff000005,0xff000000,0xff000000,0xff000002,0xff030238,0xff040242,0xff040241,0xff040241, - 0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040240,0xff040242, - 0xff03022c,0x74000000,0x4e000000,0x2e000000,0x12000000,0x25000000,0x3d000000,0x5c000000,0x74000000,0x87000000,0x93000000,0x99000000,0x99000000,0x99000000, - 0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000, - 0x99000000,0x99000000,0x93000000,0x87000000,0x74000000,0x5c000000,0x3d000000,0x25000000,0xc000000,0x18000000,0x29000000,0x3d000000,0x4d000000,0x5a000000, - 0x62000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000, - 0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x62000000,0x5a000000,0x4d000000,0x3d000000,0x29000000,0x18000000,0x7000000,0xf000000, - 0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000, - 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000, - 0x18000000,0xf000000 -}; - -static const QRgb UtilsIcon_data[] = { - 0x0,0xf0f0f0,0x42f7eb5,0x1c3889c3,0x4c3988ca,0x7a3a8cd4,0xa43995e3,0x9d1e93ed,0x721290f2,0x430888f5,0x120162d6,0x20a162b,0xa0a0a,0xa0a0a, - 0xf0f0f0,0x82e85c2,0x453994d2,0xa53fa8e9,0xea63c1fc,0xff8bd2ff,0xff96d4ff,0xff75c3ff,0xf94eb0ff,0xd6228ef6,0x700558bd,0x21031d43,0x7050b17,0x10a0a0a, - 0x43b79af,0x444594d0,0xcc61b5f0,0xff91d7ff,0xffb8e7ff,0xffbde7ff,0xffabdfff,0xff8cceff,0xff6eb9ff,0xff3f9aff,0xdc0d65d4,0x7c002e77,0x24011235,0x607090d, - 0x1c4587bb,0xa050a4e5,0xff9fd8ff,0xffd4f0ff,0xffdcf3ff,0xffc2eaff,0xffc9ebfe,0xffb2ddfe,0xff52a9ff,0xff3691ff,0xfa0c6bef,0xcd0041ad,0x62001e59,0x19070c18, - 0x4c418cc4,0xe36bc1fa,0xffc2e9ff,0xffe4f5ff,0xffe9f7ff,0xffceeeff,0xfff6fbfd,0xffe5f1fd,0xff3397ff,0xfe177bfd,0xfe035eec,0xef0043bb,0xa7002570,0x3b070f22, - 0x9f1e96ea,0xfd87d1ff,0xffc6ecff,0xffd0efff,0xffd9f2ff,0xffc9eaff,0xffb5e0ff,0xff85c2ff,0xff338dfe,0xfe0e6bf6,0xfe0050e0,0xfc003fb6,0xd600287e,0x69081022, - 0xf317a4fe,0xff88d1ff,0xffb0e3ff,0xff9bdeff,0xffaae1ff,0xffe3f4fe,0xfff1f8fd,0xffd4e7fd,0xff2c82fc,0xfe0c5eed,0xfe0047d7,0xfe003bb4,0xf1002986,0x85081023, - 0xda0d96e0,0xff6ec3ff,0xff8dd3ff,0xff61c4ff,0xff6dc3ff,0xff6ebcff,0xffebf5fd,0xffe0ebfc,0xff186af8,0xfe014fe9,0xfe003dc8,0xff0034ac,0xf4002683,0x87080f23, - 0x860b81c1,0xfe3ba8fc,0xff60bcff,0xff3cacff,0xff3ba4ff,0xff3b9afe,0xffe4effc,0xffdee8fb,0xff0857ec,0xfe0045d3,0xfe0037b7,0xff002e9c,0xd0001e6b,0x6e080d1b, - 0x330c70ae,0xda0e87e1,0xfd2b9ffc,0xff1a93ff,0xff2e91f4,0xff64a8f7,0xffebf2fc,0xffe8effa,0xff4c7fe4,0xfe0d43be,0xfe0030a3,0xf0002588,0x9a021547,0x4b080b11, - 0x904507e,0x700265a5,0xec037ad9,0xff0474ec,0xff2675db,0xff6e9ae1,0xff7ea2e2,0xff7e9ddd,0xff6586ce,0xfe113fab,0xf2002788,0xbd00175b,0x6a060c21,0x2b0a0a0a, - 0x2121a20,0x23073d63,0x81014c8f,0xd100479f,0xf40046a9,0xfe0045b4,0xff003eb6,0xff0039ae,0xff00329b,0xf500298a,0xbe001b63,0x79030d2d,0x42080a12,0x120a0a0a, - 0xa0a0a,0x60a0a0a,0x2006172c,0x64011f4b,0xa9002663,0xd5002c7a,0xfa002f8a,0xe700297e,0xc9001f66,0xa7001851,0x71000d31,0x3f050712,0x1b0a0a0a,0x30a0a0a, - 0xa0a0a,0x10a0a0a,0x60a0a0a,0x19070c17,0x39070f1f,0x67081021,0x87081225,0x89080f1f,0x78070b19,0x4f02061a,0x24070911,0xb07070d,0x40a0a0a,0xa0a0a -}; - -static const QRgb accessories_data[] = { - 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0, - 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0, - 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0, - 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000, - 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000, - 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00, - 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00, - 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0, - 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0, - 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0, - 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0, - 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb appearance_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x6e5c528,0x95f2e089,0x51d3bf5a,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x68efd96a,0xfffefae1,0xeef3e9b4,0x20847319,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x10e6c626,0xe6f8ecaa,0xfffffcd8,0xfffffbd7,0x9ed6c56a,0x1090909,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1efdf8d,0x11e4c322,0xa6f3e078,0xfffff9c6,0xfffffbc5,0xfffffbc7,0xfaf9f0ae,0x59ceb843,0x5bea322,0x0,0x0,0x0, - 0x41ecd14b,0x93f3df73,0xc9f6e686,0xf1f9ed98,0xfffbf3b3,0xfffbf5d0,0xfffbf296,0xfffbf4bf,0xfffaf2be,0xfefcf4ab,0xe2f6e78e,0xb3f3e17e,0x7debd462,0x18c5aa23, - 0xdef3d84a,0xfffdeb57,0xfffef150,0xfffef345,0xfffbf4ba,0xffffffff,0xffffffff,0xffffffff,0xfffffefc,0xfffbee52,0xfffef24a,0xfffdef54,0xfffde657,0x93bba42f, - 0x57d7b91e,0xfaf9e136,0xfffef142,0xfffff442,0xfff2ebbd,0xff6f6f6f,0xffdedede,0xff858585,0xffbebebd,0xfffbef60,0xfffff343,0xfffded40,0xe6dbc128,0x35483d09, - 0x0,0x6ad5ba27,0xfdfbe84d,0xfffef45a,0xfff9ef7c,0xff8a866f,0xffede7bc,0xff9c987f,0xffd8d196,0xfffef459,0xfffef159,0xede3cc39,0x4654480c,0x0, - 0x0,0x14d420c,0xa4e9d141,0xfffef371,0xffefe58e,0xfff0e8ab,0xfff1eaad,0xfff0e8ab,0xffeee7a9,0xfff8ee71,0xfef9e962,0x69786814,0x1040404,0x0, - 0x0,0x0,0x6bebd142,0xfffef386,0xfff0e9ad,0xffe8e8e8,0xffe7e7e7,0xffe8e8e8,0xffedebe0,0xfffbf288,0xfaf3e26b,0x2b413807,0x0,0x0, - 0x0,0x0,0x82f0d854,0xfffef59f,0xfff9f29e,0xffeae4c3,0xffede7c9,0xffede8c9,0xfff0e8ad,0xfffff9a3,0xfcf7e983,0x376e5e0f,0x0,0x0, - 0x0,0x0,0xa1f4df6f,0xfffef7b5,0xfffef8b4,0xfffcf19c,0xf1e6d776,0xf8f1e383,0xfffef6ab,0xfffef8b7,0xfffdf1a2,0x53927e19,0x0,0x0, - 0x0,0x0,0x9befd761,0xfcf7e896,0xd2cdbc5d,0x6a7f6f1c,0x1c1b1703,0x215e500d,0x80c6b140,0xe5ebda7c,0xfdf9e78f,0x5986741a,0x0,0x0, - 0x0,0x0,0x16937e18,0x456a5b13,0xf050401,0x1b1b1b,0x0,0x0,0x222222,0x11574a0a,0x487b6a18,0xf100e02,0x0,0x0 -}; - -static const QRgb back_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x4fefefe,0x1fefefe,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x2fefefe,0x33c7e2fe,0x9488c2fe,0x997ab9fe,0x946daffe,0x784f97fe,0xb175be3,0x0,0x0, - 0x0,0x0,0x0,0x0,0x1fefefe,0x32c8e3fe,0xca99cafd,0xffe8f3fc,0xffeaf4fc,0xffe5f1fc,0xe2659cee,0x150c2863,0x0,0x0, - 0x0,0x0,0x0,0x1fefefe,0x27c4e1fe,0xc38ac2fd,0xfee0edf8,0xfff2f6f7,0xfff0f5f8,0xeb84adea,0x4a12347f,0x2000000,0x0,0x0, - 0x0,0x0,0xfefefe,0x18e9f3fe,0xa78ec4fb,0xffc9dff3,0xffe6edf1,0xffe4ecf1,0xf191b6ea,0x5a173782,0x5000000,0x0,0x0,0x0, - 0x0,0x0,0xffefefe,0x8e85befc,0xf9b3d3ed,0xffd7e4e9,0xffd7e4e9,0xfb9abcec,0x861f4eb4,0xa030713,0x0,0x0,0x0,0x0, - 0x0,0x0,0x4c62a2fe,0xf691beea,0xffc7d8df,0xffc8d8df,0xffa7c6e4,0x981b46b3,0xe030b27,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1e6ba4fe,0xcb467fed,0xffb0c8d8,0xffb8cdd7,0xffb4cbd7,0xd23d71e8,0x1e0937e9,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x2fefefe,0x23244ee5,0xd14c80df,0xffa2bfcf,0xffa8c2cd,0xff95b7d1,0xb92d62e7,0xe0626c7,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x2d0d8f8,0x431744ef,0xef4f7fdd,0xff99b6c7,0xff9bb7c6,0xfb7fa4cc,0x8c1f50df,0x40524cc,0x0,0x0,0x0, - 0x0,0x0,0x0,0xfefefe,0x3a8b5f7,0x59133bf1,0xf35883d3,0xff90afbe,0xff90b0be,0xfd6f97c9,0x83133ee6,0x1031164,0x0,0x0, - 0x0,0x0,0x0,0x0,0xfefefe,0x3fefefe,0x5e0933ec,0xe94375ce,0xf0467ac7,0xf04679c7,0xe2245ad4,0x1c041899,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xfefefe,0x707070,0x25041bb8,0x3203189d,0x3203179c,0x2b031589,0x5010102,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb back_inactive_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x4f1f1f1,0x1f1f1f1,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x2f1f1f1,0x33a7bef1,0x9483a4f1,0x997d9ef1,0x947798f1,0x78668bf1,0xb3a6dbf,0x0,0x0, - 0x0,0x0,0x0,0x0,0x1f1f1f1,0x32a8bff1,0xca8caaec,0xffc5d4e8,0xffc7d5e8,0xffc1d1e8,0xe2738dcc,0x152b4b72,0x0,0x0, - 0x0,0x0,0x0,0x1f1f1f1,0x27a5bdf1,0xc384a4ec,0xfebccbdd,0xffd2d9db,0xffcfd7dd,0xeb8297c7,0x4a34557f,0x2000000,0x0,0x0, - 0x0,0x0,0xf1f1f1,0x18c6d4f1,0xa786a5e5,0xffa9bbd4,0xffc2cbd1,0xffc0cad1,0xf1889cc7,0x5a3a5781,0x5000000,0x0,0x0,0x0, - 0x0,0x0,0xff1f1f1,0x8e82a1e8,0xf99ab1cb,0xffb4c0c6,0xffb4c0c6,0xfb8ca0ca,0x8643669b,0xa172235,0x0,0x0,0x0,0x0, - 0x0,0x0,0x4c7191f1,0xf688a1c7,0xffa7b5bb,0xffa8b5bb,0xff93a7c0,0x983f619a,0xe172a4a,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1e7692f1,0xcb617fcb,0xff99a8b5,0xff9dacb4,0xff9baab4,0xd25b79c5,0x1e2657c6,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x2f1f1f1,0x234866c1,0xd16580bb,0xff91a2ad,0xff94a4ac,0xff8a9daf,0xb94f71c4,0xe2049a7,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x2aeb5dd,0x433a60ce,0xef667fb9,0xff8c9ca7,0xff8d9da7,0xfb7f92ab,0x8c4367bb,0x41d48ab,0x0,0x0,0x0, - 0x0,0x0,0x0,0xf1f1f1,0x3949cdb,0x59355ad1,0xf36c81b1,0xff8798a1,0xff8799a1,0xfd788ba9,0x83355cc2,0x1173372,0x0,0x0, - 0x0,0x0,0x0,0x0,0xf1f1f1,0x3f1f1f1,0x5e2654ca,0xe95f7bad,0xf0617da7,0xf0617ca7,0xe2486db1,0x1c1a3b8c,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xf1f1f1,0x787878,0x251a3f9d,0x32173b8e,0x32173a8d,0x2b173884,0x50e0e13,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb beam_data[] = { - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xffc3c3c3,0xdcdcdc, - 0xffc3c3c3,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffc3c3c3, - 0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xffa0a0a0,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xffa0a0a0,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xffa0a0a0,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff808080,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff585858,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xff303030,0xff303030,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc, - 0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc,0xdcdcdc -}; - -static const QRgb bell_data[] = { - 0xfffffa,0x0,0x1e2e2e1,0x40938117,0x4b8c7c1a,0xa090804,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x31bbb55b,0xdcc0ac29,0xe8bfa51d,0xa5a89226,0x4b807420,0x13000000,0x7000000,0x1000000,0x0,0x0,0x0,0x0, - 0x0,0x488893c,0xb5c0be2f,0xffecd50d,0xffebbf05,0xffbe9a04,0xde96820a,0x43302a10,0x1e000000,0x9000000,0x1000000,0x0,0x0,0x0, - 0x0,0x25a19738,0xead5cc1b,0xfff7e605,0xfff6cb07,0xffddad01,0xffaf8d03,0xba766819,0x430c0a04,0x1c000000,0x6000000,0x0,0x0,0x0, - 0x0,0x30a6943b,0xf0e1d016,0xfffaf007,0xfff4d802,0xfff5c502,0xffcda300,0xf9947e0d,0x89534517,0x3c020201,0x13000000,0x3000000,0x0,0x0, - 0x1000000,0x31b29d54,0xf0e7d61b,0xfffdf703,0xfff8de01,0xfffcca06,0xffecb900,0xffc39d03,0xf49c8222,0x7e4f471f,0x2c010100,0xd000000,0x2000000,0x0, - 0x1000000,0x31b6a257,0xf0e9d71c,0xfffdf801,0xfff9ed01,0xfff5d203,0xfffacc06,0xfff1c407,0xffe5c20a,0xf7cab927,0x717f782f,0x25000000,0xb000000,0x2000000, - 0x1000000,0x31b2a243,0xf0ecdd13,0xfffdf70a,0xfff6ef18,0xffe7d213,0xffcdac0d,0xffb28c07,0xffb28b0a,0xffc8a508,0xfad3b91f,0x72776521,0x23000000,0xa000000, - 0x1000000,0x5ed5c442,0xfaf1df19,0xffd9c508,0xffb49806,0xff9a7c00,0xffb0930f,0xff9b7804,0xff9c7303,0xffd4a508,0xfecca719,0xd08d7422,0x47000000,0x1a000000, - 0x8ac9d4f,0xb4d8bd2a,0xffd2a70a,0xffae8308,0xffa07c01,0xffb89209,0xffcab546,0xffedcf2f,0xffab8706,0xffb69017,0xe479631e,0x93110d05,0x5d000000,0x25000000, - 0x1394822c,0xd8c9a718,0xffe3af0a,0xffddbc07,0xfff2ed07,0xfff3e516,0xffbca716,0xfaab9819,0xd66d5c13,0xb340340d,0x91050401,0x79000000,0x4a000000,0x1c000000, - 0x7221d0b,0x749b8020,0xddaa8a26,0xe2a89523,0xe4a0a61f,0xe87f821a,0xc34d470e,0xa11f1c05,0x8e000000,0x7c000000,0x64000000,0x44000000,0x22000000,0xb000000, - 0x4000000,0x19010100,0x43070603,0x63040301,0x76020200,0x7f000000,0x7d000000,0x6c000000,0x57000000,0x3f000000,0x29000000,0x16000000,0x8000000,0x2000000, - 0x1000000,0xa000000,0x20000000,0x39000000,0x45000000,0x45000000,0x3e000000,0x2e000000,0x1e000000,0x11000000,0x8000000,0x3000000,0x1000000,0x0 -}; - -static const QRgb binary_data[] = { - 0x0,0x40d0d0df,0xffd2d2e0,0xffd6d6e3,0xffd6d6e3,0xffd5d5e3,0xffd5d5e3,0xffd3d3e1,0xffc7c7d8,0xaba2a2bb,0x109c9cb6,0x0,0x0,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xfffbfbfe,0xfff6f6fd,0xffeaeaf3,0xffe4e4ef,0xffc2c2d4,0x9fa7a7bf,0x189c9cb6,0x0,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffffffff,0xffe2e2ea,0xfff4f4fb,0xffededf5,0xffdfdfeb,0xffbdbdd0,0xffadadc3,0x9b9c9cb6,0x189c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe0e0e8,0xffa8a8bf,0xffededf5,0xffefeff7,0xffe1e1ec,0xffbebed1,0xffb6b6cb,0xffa4a4bd,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffe8e8ee,0xffababc1,0xffefeff6,0xfff1f1f8,0xffe9e9f2,0xffdadae6,0xffcecedd,0xffaeaec4,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffd1d1dd,0xffa2a2bb,0xffb1b1c6,0xfff2f2f8,0xffe6e6f0,0xffd4d4e3,0xffd0d0df,0xffafafc5,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfff7f7f9,0xffeeeef5,0xffeaeaf3,0xffe8e8f1,0xffe0e0ec,0xffdbdbe8,0xffd8d8e6,0xffb2b2c8,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xfffdfdff,0xffefeff7,0xffeeeef5,0xffe6e6f0,0xffe2e2ed,0xffdadae8,0xffddddea,0xffb4b4c9,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xffffffff,0xffededf3,0xffbdbdd0,0xffd4d4e1,0xffe8e8f1,0xffc7c7d7,0xffb6b6cb,0xffe1e1ed,0xffb6b6ca,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xfffdfdff,0xffc0c0d1,0xffdcdce8,0xffa7a7be,0xffe5e5ef,0xffb2b2c7,0xffb7b7cb,0xffe2e2ed,0xffb6b6ca,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xfffbfbfe,0xffdadae6,0xffc7c7d7,0xffc6c6d7,0xffe7e7f1,0xffb9b9cd,0xffaaaac1,0xffd1d1e0,0xffb6b6cb,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe2e2eb,0xfff9f9fd,0xfff3f3f9,0xffd9d9e5,0xffececf3,0xffe9e9f1,0xffccccdc,0xffcacada,0xffd5d5e3,0xffb6b6cb,0x409c9cb6,0x0, - 0x0,0x40d0d0df,0xffe1e1eb,0xfff8f8fc,0xfff3f3f9,0xfff1f1f8,0xffefeff6,0xffebebf4,0xffe9e9f2,0xffe6e6f0,0xffe3e3ee,0xffb6b6cb,0x409c9cb6,0x0, - 0x0,0x40a3a3bb,0xffa5a5bd,0xffa7a7bf,0xffa7a7be,0xffa7a7be,0xffa6a6be,0xffa6a6be,0xffa6a6be,0xffa5a5bd,0xffa5a5bd,0xff9f9fb9,0x409c9cb6,0x0 -}; - -static const QRgb bold_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x30000000,0x60000000,0x60000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x40000000,0xcf000000,0xff000000,0x8f000000,0x8f000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0xc000000,0x87000000,0xdb000000,0x50000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x40000000,0xff000000,0x7f000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x1c000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xe3000000,0xdf000000,0xe7000000,0xab000000,0x10000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x30000000,0xd7000000,0x9f000000,0x18000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x0,0x60000000,0xff000000,0x60000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0x20000000,0x0,0x20000000,0xaf000000,0xbf000000,0x30000000,0x0,0x0, - 0x0,0x0,0x0,0x50000000,0xdb000000,0xff000000,0xab000000,0x9f000000,0xb7000000,0xc3000000,0x30000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x20000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb c_src_data[] = { - 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0, - 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0, - 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0, - 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0, - 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0, - 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0, - 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0, - 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0, - 0x0,0x0,0x7db5b5ca,0xffe2d9e9,0xffccbcd8,0xffbba5cb,0xffad93c0,0xffa588ba,0xff8b67a6,0xff7f579d,0xff9779b1,0x938282a1,0x0,0x0, - 0x0,0x0,0x7db2b2c9,0xffddd3e5,0xffc2aed0,0xffad93c0,0xffbca7cc,0xffa082b6,0xff754894,0xff663589,0xff8560a2,0x937f7f9f,0x0,0x0, - 0x0,0x0,0x7daeaec6,0xffddd3e5,0xffc2aed0,0xffb69ec6,0xffb59dc6,0xffad92bf,0xff764a95,0xff663589,0xff8661a3,0x937d7d9e,0x0,0x0, - 0x0,0x0,0x7ca5a5c1,0xffddd8e7,0xffd0c7dd,0xffc5b9d5,0xffbaabcc,0xffaf9dc5,0xffa591bd,0xff9d86b7,0xffaa99c2,0x92747499,0x0,0x0, - 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0 -}; - -static const QRgb calculator_data[] = { - 0x2000000,0xfff9f9f9,0xfff3f3f3,0xffe6e6e6,0xffdbdbdb,0xffe4e4e4,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0xffeeeeee,0x13000000,0xe000000, - 0x7000000,0xff76aa76,0xff66a166,0xff4d874d,0xffffffff,0xff4d874d,0xff589958,0xff589958,0xff589958,0xff589958,0xff589958,0xff3e8a3e,0xff006a00,0x2b000000, - 0xe000000,0xff629a62,0xff3c7c3c,0xff1e5c1e,0xffffffff,0xff1e5c1e,0xff247024,0xff287a28,0xff297f29,0xff297f29,0xff297f29,0xff006d00,0xff005400,0x55000000, - 0x13000000,0xff508d50,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff006500,0xff006e00,0xff006e00,0xff006e00,0xff006300,0xff004b00,0x71000000, - 0x15000000,0xff549354,0xff247024,0xff004f00,0xffffffff,0xff004a00,0xff005300,0xff005800,0xff005d00,0xff005d00,0xff006100,0xff005f00,0xff004b00,0x7f000000, - 0x15000000,0xff589958,0xff297f29,0xff006100,0xffffffff,0xff005800,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff005b00,0xff004b00,0x7f000000, - 0x15000000,0xff549354,0xff257625,0xff006500,0xff006500,0xff006100,0xff005800,0xff005800,0xff005800,0xff005300,0xff005d00,0xff005f00,0xff004b00,0x7f000000, - 0x15000000,0xff508d50,0xffffffff,0xff8fb28f,0xff006500,0xff8fb28f,0xffffffff,0xff006500,0xff8fb68f,0xffffffff,0xff8fb68f,0xff006300,0xff004b00,0x7f000000, - 0x15000000,0xff549354,0xff9ab89a,0xffffffff,0xff8fad8f,0xffffffff,0xff8faf8f,0xff005d00,0xff005800,0xff005300,0xff005800,0xff005800,0xff004800,0x7f000000, - 0x15000000,0xff589958,0xff257625,0xff8fad8f,0xffffffff,0xff8fad8f,0xff005d00,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff004600,0x7f000000, - 0x15000000,0xff549354,0xff9ab89a,0xffffffff,0xff8fad8f,0xffffffff,0xff8faf8f,0xff005d00,0xff005800,0xff005300,0xff005800,0xff005800,0xff004800,0x7f000000, - 0x15000000,0xff397f39,0xffffffff,0xff8fad8f,0xff005b00,0xff8fad8f,0xffffffff,0xff005b00,0xff8fb18f,0xffffffff,0xff8fb18f,0xff005a00,0xff004700,0x7f000000, - 0x13000000,0xff006600,0xff004e00,0xff004800,0xff004b00,0xff004800,0xff004600,0xff004800,0xff004800,0xff004600,0xff004800,0xff004700,0xff004000,0x71000000, - 0xe000000,0x2b000000,0x55000000,0x71000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x7f000000,0x71000000,0x55000000 -}; - -static const QRgb center_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, - 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, - 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0, - 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0, - 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, - 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0, - 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0, - 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, - 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, - 0x0,0x0,0x3c000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x3c000000,0x0,0x0, - 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x18000000,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - -static const QRgb citytime_icon_data[] = { - 0x0,0x0,0x0,0x1b9ebfb,0x2ca9e0fc,0x7688c4f8,0x8f75b7f8,0x856cb1f7,0x4b68b0f5,0x75c9ed8,0x0,0x0,0x0,0x0, - 0x0,0x0,0xed3fcfd,0xa2b8e6fc,0xfbb6e0f9,0xffc5eafe,0xffd1eefe,0xffb9e4fe,0xff89c7fc,0xd46db2f7,0x38509ae6,0x0,0x0,0x0, - 0x0,0xaecfcfd,0xc2bde5fd,0xffade3ff,0xffccf7ff,0xffebfeff,0xffdffdff,0xffb8ecff,0xff97d7ff,0xff76c1ff,0xf14e9ff8,0x3d408ada,0x0,0x0, - 0x0,0x84aed3f9,0xff8dccfe,0xffc8edff,0xffe9f9ff,0xfff2fbff,0xffddfcff,0xffbbedff,0xff9cd8ff,0xff74bfff,0xff55aaff,0xdd3b89ec,0xe295582,0x0, - 0xfd8fdfd,0xed77b7f7,0xffb7e2ff,0xffddf5ff,0xffe4f7ff,0xffd3f3ff,0xffbbedff,0xfface2ff,0xff95d2ff,0xff6ab9ff,0xff53a9ff,0xff2e76e9,0x653b82d1,0x0, - 0x45b4e5fa,0xff4f96f0,0xffc2eafe,0xffd6f3ff,0xffdaf4ff,0xffa4ddff,0xff99d8ff,0xff8aceff,0xff74bfff,0xff5eb0ff,0xff55aaff,0xff1a56da,0xae2b70d5,0x1000000, - 0x6399d1f8,0xff4088eb,0xff57adf7,0xffabe3ff,0xffd3f2ff,0xffc6ebff,0xffafdfff,0xff6cbaff,0xff5bafff,0xff53a9ff,0xff529af5,0xff1f59db,0xcb2d70d7,0x5000000, - 0x5b90caf7,0xff2c6de0,0xff3b83e9,0xff56a6f4,0xffbce6fe,0xffcaeeff,0xffcbefff,0xff62b2ff,0xff4ca1fb,0xff5299f3,0xff5991ec,0xff3a76e4,0xc54287dc,0x5000000, - 0x2d91cdf5,0xfd265fda,0xff2763dd,0xff7baff2,0xffb7e1fc,0xffc8ecfe,0xffccefff,0xff619bed,0xff2663dd,0xff80b2f1,0xff5386e6,0xff0e43d2,0x9c4081cd,0x1000000, - 0x376add3,0xcc4983e4,0xff5383e4,0xffb2dcfc,0xffcceeff,0xffdcf4ff,0xffe1f6ff,0xffb9d7f8,0xffa5ccf6,0xff9ac6f6,0xff71a3ee,0xfd407ce5,0x49306294,0x0, - 0x0,0x456eb0ec,0xfb669aec,0xffbbe3fd,0xffd5f3ff,0xffe9f9ff,0xfff4fcff,0xffe6f8ff,0xffd2f1ff,0xffb6dffc,0xff95c7f9,0xb15592d3,0x903070b,0x0, - 0x0,0x12f516f,0x6d6eafea,0xfaaad9fc,0xffceedfe,0xffe6f7ff,0xfff0fbff,0xffe4f7ff,0xffd1f1ff,0xffb0dcfc,0xc668a4df,0x1e18334d,0x0,0x0, - 0x0,0x0,0x10b151f,0x435094d5,0xc34c8ae0,0xf73c74e0,0xff4a7be2,0xfc5286e5,0xe37db3ea,0x88528bc2,0x150e1e2d,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x4000000,0x202a5885,0x35306498,0x302a5886,0x130b1824,0x2000000,0x0,0x0,0x0,0x0 -}; - -static const QRgb close_data[] = { - 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0, - 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0, - 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0, - 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000, - 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000, - 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000, - 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000, - 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000, - 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000, - 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000, - 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000, - 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0, - 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0, - 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0 -}; - -static const QRgb copy_data[] = { - 0x5bbc5d1,0xdb9c4cf,0x1cbfc8d3,0x40c2cbd6,0x64c0c9d4,0x419fadbf,0x128494ac,0x27e8fa9,0x0,0x0,0x0,0x0,0x0,0x0, - 0x41bfc9d4,0x90c9d1da,0xbaced5dd,0xe9d0d8df,0xffced6de,0xdca6b3c3,0x958b9bb1,0x2d8090a9,0x0,0x0,0x0,0x0,0x0,0x0, - 0x84c4cdd7,0xffe0e5ea,0xffe3e7ec,0xffd7dee4,0xffd7dde4,0xffadbac8,0xfd9eadbd,0xa88394ab,0x97d8da8,0x0,0x0,0x0,0x0,0x0, - 0x5bc4cdd7,0xf8e2e6eb,0xffe6eaed,0xffd7dee4,0xffdde3e8,0xffc9d2da,0xffb9c4cf,0xe894a3b5,0x8aa0a2b0,0x7fc0bbc6,0x6bcac4d2,0x26a39cab,0x42b2b2b,0x2b2b2b, - 0x2fc2cbd5,0xd9d8dee4,0xffeaeef0,0xffdbe1e6,0xffd5dce2,0xffc9d1da,0xffc0c9d4,0xffafbac7,0xfe9ea1af,0xfebebac2,0xf0d2cdd9,0xa1b2aaba,0x3178717f,0x637343a, - 0x15bec8d3,0xb0d0d7df,0xffe8ecef,0xffdbe1e6,0xffced6dd,0xffc3ccd6,0xffc1c9d4,0xffc0cad3,0xff99a1af,0xffb9b6bd,0xffc5becb,0xf4b2a7bb,0xb59c92a5,0x2a5e5a63, - 0xcb7c1ce,0x86cdd4dd,0xfce7ecef,0xffdce2e7,0xffcbd3db,0xffc9d1da,0xffc6cfd9,0xffc7d0d8,0xff9fa8b7,0xffb2b0b9,0xffcbc5cf,0xffcfc7d6,0xf9b5abbe,0x5659555d, - 0x3b7c2ce,0x4cccd3dc,0xeadee3e8,0xffdee3e8,0xffcdd5dd,0xffcad2db,0xffc7cfd9,0xffd2d8e0,0xffafb8c5,0xffa6a7b1,0xffbeb9c4,0xffd7d1de,0xfebbb2c4,0x6f514e54, - 0x0,0x2dc4cdd7,0xd0d8dee4,0xffe6eaed,0xffdbe1e7,0xffdae0e6,0xffd2d9e0,0xffc5ccd7,0xffa1abbb,0xff9c9fad,0xffb4afba,0xffd5d0dc,0xfebdb4c5,0x73504d52, - 0x0,0x1dbbc4d1,0xa7cbd3dc,0xf7d5dbe2,0xe1c6ced8,0xf5b3bbc8,0xffa5adba,0xff9ea5b4,0xffa9abb9,0xffb5b2be,0xffc0bbc6,0xffd9d4df,0xfebeb6c6,0x73504d53, - 0x0,0xb9baabc,0x56a0acbf,0x8e9ca9bc,0x5e8999b0,0xd0b0b2c0,0xffc9c9d0,0xffc9c5ce,0xffd1ccd6,0xffd5d0db,0xffd8d2de,0xffe0dbe6,0xfebfb6c7,0x73504d53, - 0x0,0x17d8ea8,0xc7d8ca8,0x137d8ba8,0x57d8aa8,0xbcdbd6e0,0xfef2f1f4,0xffe9e6ed,0xffe9e5ed,0xffe8e3ec,0xffe5e1ea,0xffe8e4ed,0xfec0b8c8,0x73504d53, - 0x0,0x0,0x0,0x0,0x0,0xbbbdb5c6,0xfcc6bfcc,0xfdc3bbca,0xfdc2bac9,0xfdc2bac9,0xfdc1b8c8,0xfdc0b8c8,0xfcb0a6b9,0x724e4b51, - 0x0,0x0,0x0,0x0,0x0,0x267c7682,0x585c595f,0x72504e53,0x73504d53,0x73504d53,0x73504d53,0x73504d52,0x724e4b51,0x4e313132 -}; - -static const QRgb copy_inactive_data[] = { - 0x2bbc6d1,0x7b9c4cf,0xebfc8d3,0x1fc2cbd6,0x31c0c9d4,0x209fadbf,0x98494ac,0x17e8fa9,0x0,0x0,0x0,0x0,0x0,0x0, - 0x21bfc9d4,0x48c8d1da,0x5cced5dd,0x73d0d8df,0x7eced6de,0x6da6b3c3,0x498b9bb1,0x168090a9,0x0,0x0,0x0,0x0,0x0,0x0, - 0x42c4cdd7,0x7ee0e5ea,0x7ee3e7ec,0x7ed7dee4,0x7ed7dde4,0x7eadbac8,0x7d9eadbd,0x538394ab,0x47d8da8,0x0,0x0,0x0,0x0,0x0, - 0x2dc4cdd7,0x7be2e6eb,0x7ee6eaed,0x7ed7dee4,0x7edde3e8,0x7ec9d2da,0x7eb9c4cf,0x7394a3b5,0x44a0a2b0,0x3ec0bbc6,0x35cac4d2,0x13a39cab,0x22b2b2b,0x2b2b2b, - 0x17c2cbd5,0x6bd8dee4,0x7eeaeef0,0x7edbe1e6,0x7ed5dce2,0x7ec9d1da,0x7ec0c9d4,0x7eafbac7,0x7e9ea1af,0x7ebebac2,0x76d2cdd9,0x50b2aaba,0x1877707f,0x336343a, - 0xbbec8d3,0x57d0d7df,0x7ee8ecef,0x7edae1e6,0x7eced5dd,0x7ec3ccd6,0x7ec1c9d4,0x7ec0cad3,0x7e99a1af,0x7eb9b6bd,0x7ec4bdcb,0x79b2a7bb,0x599c92a5,0x145f5a63, - 0x6b7c1ce,0x42cdd4dd,0x7ce7ecef,0x7edce2e7,0x7ecbd2db,0x7ec9d1da,0x7ec6cfd9,0x7ec7d0d8,0x7e9fa8b7,0x7eb2b0b9,0x7ecbc5cf,0x7ecfc7d6,0x7bb5abbe,0x2b59555c, - 0x2b7c2ce,0x25ccd3dc,0x73dee3e8,0x7edee3e8,0x7ecdd5dd,0x7ecad2db,0x7ec7cfd9,0x7ed2d8e0,0x7eafb8c5,0x7ea6a7b1,0x7ebeb9c4,0x7ed7d1de,0x7dbbb2c4,0x36514e54, - 0x0,0x16c4cdd7,0x67d8dee4,0x7ee6eaed,0x7edbe1e7,0x7edae0e6,0x7ed2d9e0,0x7ec5ccd7,0x7ea1abbb,0x7e9d9fad,0x7eb4afba,0x7ed5d0dc,0x7dbdb4c5,0x39504d52, - 0x0,0xebbc4d1,0x53cbd3dc,0x7ad5dbe2,0x6fc6ced8,0x79b3bbc8,0x7ea5adba,0x7e9ea5b4,0x7ea9abb9,0x7eb5b2be,0x7ec0bbc6,0x7ed9d4df,0x7ebeb5c6,0x39504d53, - 0x0,0x59baabc,0x2b9facbf,0x469ca9bc,0x2e8999b0,0x67b0b2c0,0x7ec9c9d0,0x7ec9c5ce,0x7ed1ccd6,0x7ed5d0db,0x7ed8d2de,0x7ee0dbe6,0x7ebeb6c6,0x39504d52, - 0x0,0x17d8ea8,0x67d8ca8,0x97d8ba8,0x27d8aa8,0x5ddbd6e1,0x7ef2f1f4,0x7fe9e6ed,0x7ee9e5ed,0x7ee8e3ec,0x7ee5e1ea,0x7fe8e4ed,0x7fc0b8c8,0x3a504d53, - 0x0,0x0,0x0,0x0,0x0,0x5dbdb5c6,0x7ec6bfcc,0x7fc3bbca,0x7fc2bac9,0x7fc2b9c9,0x80c1b8c8,0x81c0b8c8,0x81b0a6b9,0x3b4e4b51, - 0x0,0x0,0x0,0x0,0x0,0x137e7783,0x2c5c595f,0x39514e53,0x3a504d52,0x3a504d53,0x3b504d52,0x3c4f4c51,0x3e4c494f,0x2f303031 -}; - -static const QRgb cut_data[] = { - 0x0,0x0,0x0,0x1f2bf00,0x20f9cd00,0xb1fdd900,0xfbfbe601,0x8edd8000,0x13170800,0x4000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0xdf3bf00,0x96fddc00,0xf3eddb02,0xebcfc305,0xe8ee9600,0x41361200,0x12403600,0xbdab102,0x4a77e05,0x0,0x0, - 0x0,0x0,0x0,0x17f0bb00,0xb1fee600,0xeec9a607,0xad897905,0xebec9300,0x54331b00,0x51c0ad00,0x74e8cc03,0x37b28906,0x93e1a02,0x1000000, - 0x0,0x0,0x0,0x16e7b600,0xaefcda00,0xf5dab905,0xccac9a06,0xebec9300,0x81917000,0xc3dfc503,0xecd5b606,0xb0cf8b04,0x37884600,0x7000000, - 0x0,0x0,0x0,0x9c49b00,0x62e2b800,0xdff1c201,0xf9eada03,0xf8f39900,0xd8dcb502,0xc2bba105,0xb2ad9705,0xe9e49301,0x6a8a4800,0x17000000, - 0x0,0x0,0x0,0x1000000,0x15775f00,0xabd9961e,0xfafbb509,0xffed8b0a,0xf7ddbb05,0xd1c3b204,0xd4e3d400,0xf4f09e00,0x7b763d00,0x23000000, - 0x0,0x0,0x0,0x1739ed6,0x5f92b5e6,0xe17ea5ce,0xfec5cfdb,0xf97393b6,0xead07c09,0xfbf7af00,0xf6f2a300,0xb4b16200,0x5e2c1300,0x1f000000, - 0x0,0x7fa9da,0x995b4dc,0x63a0bfe1,0xe1c7e5f5,0xff89c0e7,0xffbcd8fa,0xed4798e4,0x8935201a,0x8d862f00,0x82702a00,0x5d2a1000,0x31000000,0xd000000, - 0x0,0xc95b6de,0x67a7c5e4,0xe1c1e0f3,0xf8a0d3f6,0xf85ca0dd,0xfebed8fa,0xec4899e6,0x64021020,0x33000000,0x29000000,0x21000000,0xf000000,0x2000000, - 0x0,0x329abee2,0xddafd3ed,0xf8a1d3f6,0xc63e80bf,0xd43578b9,0xfbbfd8f8,0xeb4e99e1,0x5c001226,0x1b000000,0x7000000,0x5000000,0x2000000,0x0, - 0x0,0x3f8fbbe4,0xf481b6e7,0xc74385c4,0x77072749,0xb74479a8,0xfac1d9f8,0xeb4f99e1,0x5b001225,0x18000000,0x2000000,0x0,0x0,0x0, - 0x0,0x354590dc,0xb5367dc6,0x6f0a2f55,0x40000204,0xa74b86bb,0xf9bed9f9,0xe65e9cd6,0x5a041321,0x18000000,0x1000000,0x0,0x0,0x0, - 0x0,0xf0e59a4,0x3a093c6f,0x31000407,0x19000000,0x9f5592c8,0xf560a6ee,0x9b2f5475,0x4a020609,0x14000000,0x1000000,0x0,0x0,0x0, - 0x0,0x2000000,0xa000000,0xc000000,0x4000000,0x8f1d7dd3,0x8e11579e,0x5603080c,0x29000000,0x9000000,0x1000000,0x0,0x0,0x0 -}; - -static const QRgb cut_inactive_data[] = { - 0x0,0x0,0x0,0x1b9b9b9,0x13c3c3c3,0x6bcbcbcb,0x97d3d3d3,0x568d8d8d,0xb0b0b0b,0x2000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x8b9b9b9,0x5acdcdcd,0x93c8c8c8,0x8eb1b1b1,0x8c9f9f9f,0x271b1b1b,0xb333333,0x7a5a5a5,0x2808080,0x0,0x0, - 0x0,0x0,0x0,0xeb6b6b6,0x6bd4d4d4,0x909e9e9e,0x68707070,0x8e9d9d9d,0x331e1e1e,0x30a0a0a0,0x46bebebe,0x21878787,0x6212121,0x1000000, - 0x0,0x0,0x0,0xdb0b0b0,0x69cccccc,0x94afafaf,0x7b8f8f8f,0x8e9d9d9d,0x4e6d6d6d,0x76b7b7b7,0x8facacac,0x6a909090,0x21515151,0x5000000, - 0x0,0x0,0x0,0x59a9a9a,0x3bb0b0b0,0x86bababa,0x96c7c7c7,0x96a2a2a2,0x82acacac,0x75979797,0x6c8d8d8d,0x8d9b9b9b,0x40545454,0xe000000, - 0x0,0x0,0x0,0x1000000,0xc5c5c5c,0x679d9d9d,0x97b7b7b7,0x9a9a9a9a,0x95b0b0b0,0x7ea4a4a4,0x80c1c1c1,0x93a5a5a5,0x4a474747,0x15000000, - 0x0,0x0,0x0,0x8d8d8d,0x39b0b0b0,0x889d9d9d,0x9acccccc,0x968d8d8d,0x8d888888,0x98b1b1b1,0x94a8a8a8,0x6c6e6e6e,0x38181818,0x13000000, - 0x0,0xa1a1a1,0x5aeaeae,0x3bb9b9b9,0x88dddddd,0x9ab3b3b3,0x9ad3d3d3,0x8f888888,0x52252525,0x55434343,0x4f3a3a3a,0x38161616,0x1e000000,0x8000000, - 0x0,0x7afafaf,0x3ebebebe,0x88d8d8d8,0x96c7c7c7,0x96919191,0x9ad4d4d4,0x8e898989,0x3c0d0d0d,0x1f000000,0x19000000,0x14000000,0x9000000,0x1000000, - 0x0,0x1eb7b7b7,0x86cacaca,0x96c7c7c7,0x77737373,0x806b6b6b,0x98d4d4d4,0x8e8a8a8a,0x370e0e0e,0x10000000,0x4000000,0x3000000,0x1000000,0x0, - 0x0,0x26b2b2b2,0x93ababab,0x78787878,0x48212121,0x6f6e6e6e,0x97d5d5d5,0x8e8a8a8a,0x370e0e0e,0xe000000,0x1000000,0x0,0x0,0x0, - 0x0,0x20818181,0x6e6f6f6f,0x43272727,0x27010101,0x65797979,0x96d4d4d4,0x8b909090,0x37101010,0xe000000,0x1000000,0x0,0x0,0x0, - 0x0,0x94c4c4c,0x23323232,0x1e030303,0xf000000,0x60858585,0x94989898,0x5e4c4c4c,0x2d050505,0xc000000,0x0,0x0,0x0,0x0, - 0x0,0x1000000,0x6000000,0x8000000,0x3000000,0x57696969,0x564a4a4a,0x35070707,0x1a000000,0x6000000,0x0,0x0,0x0,0x0 -}; - -static const QRgb datebook_icon_data[] = { - 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, - 0xf592b8e5,0xffafd4fd,0xff90c6fd,0xff70b6fd,0xff57a9fd,0xff3499fc,0xff258efd,0xff2388fd,0xff2189fc,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, - 0xf19fbfe5,0xffddebfa,0xffb7daf7,0xffa6d3f6,0xffc5dffa,0xff93cbf4,0xffb0d7f9,0xffadd5f9,0xff8ec9f4,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, - 0xf1a9c5e6,0xfffbfefe,0xffcbe6fa,0xffbbdff8,0xfff2fafe,0xff9fd1f5,0xffe0f3fd,0xffdef1fd,0xff9bd0f5,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, - 0xfa91c4ee,0xffb0daf7,0xff9ed1f5,0xff97cef4,0xffabd8f7,0xff8dc9f3,0xffa4d5f6,0xffa3d4f6,0xff8cc8f3,0xffa5d5f7,0xffa6d6f7,0xff91cbf4,0xc42b6089,0x34001425, - 0xf49dc5e9,0xffd9effc,0xffb6ddf8,0xffa9d7f7,0xffceeafc,0xff96cdf4,0xffc0e4fb,0xffbfe2fb,0xff93ccf4,0xffc1e5fc,0xffc2e6fc,0xff9bd1f6,0xc42a6089,0x34001425, - 0xf1a6c4e6,0xfff2fcff,0xffc5e5fa,0xffb5def9,0xffe5f6ff,0xff9bd0f5,0xffd2edfd,0xffd0ebfd,0xff97cff5,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, - 0xf3a0c4e7,0xffe2f3fd,0xffbbe0f9,0xffadd9f8,0xffd6eefd,0xff98cef5,0xffc6e6fc,0xffc3e5fc,0xff94cdf5,0xffc7e8fd,0xffc8e9fd,0xff9bd1f6,0xc4296089,0x34001425, - 0xfc8bc4ef,0xff9cd1f5,0xff92ccf4,0xff8ecaf4,0xff99cff5,0xff88c7f3,0xff94cef5,0xff94cdf5,0xff87c7f3,0xff95cef5,0xff95cef5,0xff86c7f3,0xc4285f89,0x34001425, - 0xf1a3c3e6,0xffe8f8ff,0xffbfe2fa,0xffb0dbf9,0xffdaf1ff,0xff99cff5,0xffc9eafd,0xffc6e8fd,0xff95cef5,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, - 0xf1a6c5e7,0xffeaf9ff,0xffc0e3fa,0xffb1dcf9,0xffdcf3ff,0xff99d0f5,0xffcbebfd,0xffc8e9fd,0xff95cef5,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, - 0xfa80b6e6,0xffafdbf7,0xff9cd1f5,0xff95cdf4,0xffa6d6f7,0xff8bc8f3,0xff9dd2f6,0xff9bd1f6,0xff89c8f3,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, - 0xa628618e,0xc12e628a,0xc42b6089,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc42a6089,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16, - 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 -}; - -static const QRgb day_data[] = { - 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, - 0xf592b8e5,0xffafd4fd,0xff95c7fd,0xff77b9fd,0xff57a9fd,0xff389afd,0xff268efd,0xff2388fd,0xff2388fd,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, - 0xf19fbfe5,0xffddebfa,0xffd4e6fa,0xffcde3fa,0xffc5dffa,0xffbedcfa,0xffb7dafa,0xffb3d8fa,0xffb1d7fa,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, - 0xf1a9c5e6,0xfffbfefe,0xfff5fbfe,0xfff4fbfe,0xfff2fafe,0xfff0fafe,0xffedfafe,0xffeaf7fe,0xffe7f6fe,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, - 0xf1a8c5e6,0xfff9fdff,0xfff2faff,0xffeff9ff,0xffecf8ff,0xffe9f7ff,0xffe5f6ff,0xffe2f4ff,0xffdef3ff,0xffdbf2ff,0xffddf3ff,0xffa6d6f7,0xc42b6089,0x34001425, - 0xf1a7c5e6,0xfff6fdff,0xffeff9ff,0xffecf8ff,0xffe8f7ff,0xffe5f6ff,0xffe1f4ff,0xffdef2ff,0xffdaf1ff,0xffd7f0ff,0xffd8f2ff,0xffa3d5f7,0xc42a6089,0x34001425, - 0xf1a6c4e6,0xfff2fcff,0xffebf8ff,0xffe8f7ff,0xffe5f6ff,0xffe1f4ff,0xffdef3ff,0xffdaf1ff,0xffd6f0ff,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, - 0xf1a4c3e6,0xffeffaff,0xffe8f6ff,0xffe5f5ff,0xffe2f4ff,0xffdef2ff,0xffdaf1ff,0xffd6efff,0xffd2efff,0xffd0eeff,0xffd2eeff,0xff9ed3f7,0xc4296089,0x34001425, - 0xf1a3c3e6,0xffebfaff,0xffe5f5ff,0xffe1f4ff,0xffddf3ff,0xffdaf1ff,0xffd6f1ff,0xffd3efff,0xffcfeeff,0xffccecff,0xffceeeff,0xff9cd3f7,0xc4285f89,0x34001425, - 0xf1a3c3e6,0xffe8f8ff,0xffe1f4ff,0xffdef3ff,0xffdaf1ff,0xffd7f0ff,0xffd3f0ff,0xffcfeeff,0xffccecff,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, - 0xf1a6c5e7,0xffeaf9ff,0xffe3f5ff,0xffe0f4ff,0xffdcf3ff,0xffd9f2ff,0xffd5f1ff,0xffd1eeff,0xffceeeff,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, - 0xfa80b6e6,0xffafdbf7,0xffaad8f7,0xffa8d7f7,0xffa6d6f7,0xffa3d5f7,0xffa1d5f7,0xff9ed3f7,0xff9cd2f7,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, - 0xa628618e,0xc12e628a,0xc42c6189,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc4285f89,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16, - 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 -}; - static const QRgb done_data[] = { 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0, 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0, 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0, 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605, 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605, 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507, 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507, 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507, 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507, 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506, 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605, 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0, 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0, 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0 }; static const QRgb down_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x1fefefe,0x1ba5cdfe,0x167ab7fe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0xfefefe,0xef3f9fe,0x2163a6fe,0x7fadfe,0x0, 0x5fefefe,0x9289c2fe,0xdd7ab3fd,0x31236ff3,0x0,0x0,0x0,0x0,0x1fefefe,0x1feaf4fe,0xa385bffe,0xdf77b2fb,0x231553d0,0x0, 0x7fefefe,0xa288c1fd,0xffe6f1fb,0xe58bb8f9,0x3e2569ea,0x21252e9,0x0,0x3fefefe,0x2fc3e1fe,0xb099cbfd,0xfdd9eafb,0xf09ec3f2,0x320e369f,0x0, 0x7fefefe,0xa077b5fb,0xffd8e7f2,0xffe5edf2,0xeb92bbf2,0x71276af7,0x98da9f5,0x43a7d1fe,0xd087bff9,0xfdd3e5f3,0xffe8eff1,0xf090b8eb,0x320b2f9c,0x0, 0x4fefefe,0x8b4f98f9,0xffbad3ea,0xffd2e0e7,0xffd0dfe7,0xf994b9ec,0x913776f5,0xe075b2f5,0xffc5dae9,0xffd2e0e7,0xffd2e0e7,0xec75a4e3,0x2d092380,0x0, 0x1fefefe,0x174c77f4,0xb2366eed,0xfea4c0de,0xffbdd0d9,0xffbdd0d9,0xffa1c1de,0xffbbcfda,0xffbdd0d9,0xffbacfd9,0xf6789fdf,0x760c34a1,0x8000000,0x0, 0x0,0xfefefe,0x100f37df,0xa8285bed,0xff81a8d7,0xffa8c2ce,0xffa8c2ce,0xffa8c2ce,0xffa1bed0,0xf35885db,0x6d0c2e9d,0x8000000,0x0,0x0, 0x0,0x0,0xfefefe,0xc0e33e5,0x811d4ddf,0xf66a95d0,0xff95b5c3,0xff8eb0c6,0xdc3f6cc2,0x580a2482,0x6010411,0x0,0x0,0x0, 0x0,0x0,0x0,0xfefefe,0x31f39c8,0x630f39e4,0xf14e7cd1,0xd32a53c9,0x37041461,0x4010103,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0xfefefe,0x494949,0x350421de,0x1f030d4c,0x2000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb editdelete_data[] = { + 0x0,0x261818,0x8d5858,0xdd000000,0x0,0x5000000,0x0,0x0,0x0,0x0,0xde000000,0x663a3a,0x5000000,0x1000000, + 0x0,0x261818,0x8e201313,0xdf764747,0x90000000,0x0,0x4000000,0x0,0x0,0x8b000000,0xdf795353,0x93150d0d,0x4000000,0xa000000, + 0x0,0x8f261818,0xff8b5f5f,0xf7e08383,0xf37e3f3f,0xa2000000,0x1000000,0x0,0x98000000,0xec946c6c,0xf6e79696,0xff824141,0xaa000000,0x18100808, + 0xdc000000,0xdf764848,0xf6e08383,0xffd37171,0xf7cf6767,0xf8783c3c,0x8b020101,0x8a040303,0xed946c6c,0xf4e89b9b,0xffca6969,0xfa944a4a,0xfc412121,0x88020101, + 0x1000000,0x90000000,0xf37f3f3f,0xf8cf6868,0xffcd6666,0xf6d46c6c,0xf1683838,0xea795757,0xf1e99a9a,0xffca6969,0xfb8a4444,0xfb3d1e1e,0xbe000000,0x2e000000, + 0x3000000,0x0,0xa2000000,0xf9763b3b,0xf6d46d6d,0xffcd6969,0xfdd77878,0xfedb8383,0xffc76868,0xf98f4646,0xfb3b1d1d,0xc5000000,0x48000000,0x22000000, + 0x0,0x4000000,0x1000000,0x8a000000,0xf2683737,0xfcd77777,0xffd06c6c,0xffce6666,0xfdab5555,0xf6361b1b,0xb8000000,0x4e000000,0x29000000,0xb000000, + 0x0,0x0,0x0,0x88000000,0xea785858,0xfcdb8282,0xffce6767,0xffc86363,0xfdb95c5c,0xf5572c2c,0xb6000000,0x27000000,0x11000000,0x1000000, + 0x0,0x0,0x95000000,0xed926b6b,0xf2ea9b9b,0xffc86868,0xfeab5454,0xfeb95c5c,0xffc86464,0xf8c66363,0xf5723939,0xa8000000,0x2000000,0x4000000, + 0x0,0x8e000000,0xec956c6c,0xf4e89b9b,0xffca6969,0xf98f4646,0xf6361b1b,0xf6572c2c,0xf9c76363,0xffd06868,0xf9ca6565,0xf6713939,0xa2000000,0x2000000, + 0xdc000000,0xd7785050,0xf3e79595,0xffca6969,0xfa8a4444,0xfa3c1e1e,0xb8000000,0xb6020101,0xf6743a3a,0xf9ca6565,0xffbd5e5e,0xf8a15151,0xf64e2727,0x81000000, + 0x0,0x8d000000,0xff884444,0xfa964a4a,0xfa3d1f1f,0xc5000000,0x4e000000,0x28000000,0xa8000000,0xf6713838,0xf9a25050,0xff542929,0xbc000000,0x29000000, + 0x2000000,0x0,0xa5000000,0xf6412121,0xbc000000,0x46000000,0x29000000,0x10000000,0x2000000,0xa3000000,0xf74b2525,0xbc000000,0x4c000000,0x2a000000, + 0x1000000,0x7000000,0xb000000,0x84000000,0x28000000,0x21000000,0xb000000,0x0,0x3000000,0x3000000,0x81000000,0x29000000,0x29000000,0x11000000 +}; + static const QRgb edit_data[] = { 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e, 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a, 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a, 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010, 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0, 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0, 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0, 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0 }; -static const QRgb editdelete_data[] = { - 0x0,0x352424,0x9c6a6a,0xdd000000,0x0,0x5000000,0x0,0x0,0x0,0x0,0xde000000,0x784b4b,0x5000000,0x1000000, - 0x0,0x352424,0x8e2e1e1e,0xdf875959,0x90000000,0x0,0x4000000,0x0,0x0,0x8b000000,0xdf8a6565,0x93201616,0x4000000,0xa000000, - 0x0,0x8f352424,0xff9a7171,0xf7e59393,0xf38e5050,0xa2000000,0x1000000,0x0,0x98000000,0xeca37d7d,0xf6eba4a4,0xff925252,0xaa000000,0x181a0f0f, - 0xdc000000,0xdf875a5a,0xf6e59393,0xffda8282,0xf7d77979,0xf8894d4d,0x8b050303,0x8a080606,0xeda37d7d,0xf4eca9a9,0xffd27a7a,0xfaa35c5c,0xfc522f2f,0x88050303, - 0x1000000,0x90000000,0xf38f5050,0xf8d77a7a,0xffd57878,0xf6db7d7d,0xf17a4949,0xea8a6969,0xf1eda8a8,0xffd27a7a,0xfb9a5656,0xfb4e2b2b,0xbe000000,0x2e000000, - 0x3000000,0x0,0xa2000000,0xf9874c4c,0xf6db7e7e,0xffd57a7a,0xfddd8989,0xfee19393,0xffd07a7a,0xf99e5858,0xfb4c2a2a,0xc5000000,0x48000000,0x22000000, - 0x0,0x4000000,0x1000000,0x8a000000,0xf27a4848,0xfcdd8888,0xffd77d7d,0xffd67878,0xfdb76767,0xf6472828,0xb8000000,0x4e000000,0x29000000,0xb000000, - 0x0,0x0,0x0,0x88000000,0xea896a6a,0xfce19292,0xffd67979,0xffd17575,0xfdc46e6e,0xf5693c3c,0xb6000000,0x27000000,0x11000000,0x1000000, - 0x0,0x0,0x95000000,0xeda17c7c,0xf2eea9a9,0xffd17a7a,0xfeb76666,0xfec46e6e,0xffd17676,0xf8cf7575,0xf5834a4a,0xa8000000,0x2000000,0x4000000, - 0x0,0x8e000000,0xeca47d7d,0xf4eca9a9,0xffd27a7a,0xf99e5858,0xf6472828,0xf6693c3c,0xf9d07575,0xffd77a7a,0xf9d27777,0xf6824a4a,0xa2000000,0x2000000, - 0xdc000000,0xd7896262,0xf3eba4a4,0xffd27a7a,0xfa9a5656,0xfa4d2b2b,0xb8000000,0xb6050303,0xf6854b4b,0xf9d27777,0xffc77070,0xf8ae6363,0xf6603636,0x81000000, - 0x0,0x8d000000,0xff985656,0xfaa45c5c,0xfa4e2d2d,0xc5000000,0x4e000000,0x28000000,0xa8000000,0xf6824949,0xf9af6262,0xff663838,0xbc000000,0x29000000, - 0x2000000,0x0,0xa5000000,0xf6522f2f,0xbc000000,0x46000000,0x29000000,0x10000000,0x2000000,0xa3000000,0xf75d3434,0xbc000000,0x4c000000,0x2a000000, - 0x1000000,0x7000000,0xb000000,0x84000000,0x28000000,0x21000000,0xb000000,0x0,0x3000000,0x3000000,0x81000000,0x29000000,0x29000000,0x11000000 -}; - static const QRgb enter_data[] = { 0x0,0x0,0x0,0x5179f1b,0x4709990e,0x96049709,0xbd039708,0xbf039708,0x9f039607,0x54049708,0x709990d,0x0,0x0,0x0, 0x0,0x1ba21f,0x230e9b12,0xb7059709,0xf8029607,0xfc039608,0xfe029608,0xfe019506,0xff009606,0xff009506,0xd0019606,0x32039607,0x8990c,0x0, 0x0,0x230d9b12,0xd7049708,0xf908980d,0xfc119b15,0xfe129c16,0xfe0b9910,0xff05970a,0xff019507,0xff009506,0xff009506,0xef009606,0x36019606,0x0, 0x5179f1b,0xb6059709,0xf908980d,0xfc1fa124,0xfe39ab3c,0xfe35a939,0xff1b9f20,0xff0a990f,0xff039608,0xff029607,0xff169d1c,0xff109b17,0xda009507,0xd009605, 0x460a990e,0xf8039608,0xfc2ba52f,0xfe67bd6a,0xff87ca8a,0xff6fc071,0xff2ca630,0xff0e9b13,0xff0e9a13,0xff70c274,0xffe2f1e2,0xff91cf94,0xff019508,0x69009605, 0x96049709,0xfc05970a,0xfe78c57b,0xffeff6ef,0xffb6ddb7,0xff61ba64,0xff29a52d,0xff24a228,0xffa0d6a2,0xfff6faf7,0xffd0ead2,0xff3cac41,0xff009507,0xbb009507, 0xbd039708,0xfe039608,0xfe3ead42,0xffeef7ef,0xffe9f4e9,0xff4db351,0xff27a42b,0xffa7d8a9,0xfff6faf6,0xff94d197,0xff179e1d,0xff009507,0xff009508,0xe0009507, 0xbf039708,0xfe019506,0xff07970c,0xff7fc882,0xfffbfdfb,0xffa0d5a2,0xffa1d6a4,0xfff9fcf9,0xff8fcf93,0xff08980e,0xff009506,0xff009507,0xff009508,0xe3009507, 0x9f039607,0xff009606,0xff019507,0xff159d1b,0xffcee9cf,0xfff8fbf8,0xfffafcfa,0xffbae0bc,0xff129c18,0xff009506,0xff009506,0xff009507,0xff009508,0xc6009507, 0x53049708,0xfe009506,0xff009506,0xff019506,0xff56b75a,0xfffafcfa,0xffddf0de,0xff26a32c,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0x7c009506, 0x809990d,0xd0019606,0xff009506,0xff009506,0xff07970d,0xff75c379,0xff3cac41,0xff009506,0xff009506,0xff009507,0xff009508,0xff009508,0xeb009507,0x17009605, 0x0,0x32039607,0xef009606,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009507,0xff009508,0xff009508,0xfa009408,0x53009606,0x0, 0x0,0x8990c,0x36019606,0xda009606,0xff009507,0xff009507,0xff009508,0xff009508,0xff009508,0xff009508,0xeb009507,0x53009606,0x9604,0x0, 0x0,0x0,0x0,0xd009605,0x69009605,0xbb009507,0xe1009507,0xe3009507,0xc6009507,0x7c009506,0x17009605,0x0,0x0,0x0 }; static const QRgb exec_data[] = { 0x0,0x0,0x0,0x643db5f6,0xa324c2f7,0x243d95ee,0x4c31a3f7,0x572a95ec,0xc2c70e3,0x0,0x0,0x0,0x0,0x0, 0x0,0x513fb3f5,0x7337b7f4,0xce46b4f2,0xff03e2ff,0xe914cbf9,0xec0fc9f9,0xfe03d5fe,0x7b1f87df,0xe1f6cf0,0x41c64e6,0x0,0x0,0x0, 0x1254b7ff,0xea34cbfa,0xfe06e2ff,0xfd08dcfd,0xff06d4f9,0xff16a9e8,0xff1aa2e6,0xff10b6f2,0xfa0bbef9,0xed0eacf5,0xb81296ed,0x110e4fcf,0x0,0x0, 0x1e4fafff,0xed56b0f4,0xff2ed6fc,0xff05d8fb,0xf6318edc,0xd23283d4,0xe63387d8,0xfe3488d7,0xff2e98e1,0xff0ab9fc,0xf50ba2f4,0x2709328c,0x0,0x0, 0x9436befb,0xf51fc6f6,0xfe10defe,0xde0dc9f7,0x2f246088,0xc000000,0xa112e40,0x563ea3e4,0xeb41ace8,0xff3bafeb,0xfe06b0fd,0xb50d84eb,0x500861de,0x0, 0xd043bbf4,0xfd0cddfd,0xfe09dcff,0xe608cdfc,0xb235488,0x0,0x0,0x0,0x354ecdf6,0xf94fd1f5,0xff23b8fc,0xff00a5ff,0xee078cf2,0x150030b1, 0xd74792e8,0xfc357fe0,0xfd54bbf4,0xff04d0ff,0x761bbbfb,0x0,0x0,0x0,0x6bffff,0xaa5aebff,0xff30c3fe,0xfc13a1fa,0xc51662d4,0x27002377, 0x7f3584e4,0xd4317ede,0xfd57abf0,0xfe1ecdfe,0xfd03c2fe,0x761cb7fc,0x751bbfe,0x0,0x0,0x7758e5ff,0xff15aaff,0xfd0399fd,0xb5086de0,0x140239b6, 0x1000000,0x3b2872d8,0xf747bef6,0xff00c3ff,0xfe21c4fe,0xff04b7ff,0xe10db3ff,0xa219b3ff,0xa11ab0ff,0xea0ca4ff,0xff039aff,0xfe2a9bf6,0xfe0e99fd,0x650a4dc3, 0x0,0x873280e6,0xfc4797e8,0xfc46abef,0xfd327add,0xfb4fa0eb,0xfe10afff,0xff04a6ff,0xff1faaff,0xff109fff,0xff1e9ffd,0xfe1b5dd3,0xd41a5cd2,0x29001c6b, 0x0,0x482874e2,0xec3380e1,0xf02a6bd8,0xc82067d6,0xf85d95e4,0xfb1caefe,0xfd29abfd,0xfc2d70d9,0xfa6ba7ed,0xff0996ff,0xe5337ae0,0x30002373,0x5000000, 0x0,0x0,0x331d65dd,0x3a124398,0xf07255f,0xf06292e3,0xfb4295e9,0xf64393ea,0xd81e5ad2,0xfd739be3,0xf2558ee4,0x721a47b5,0x9000001,0x0, 0x0,0x0,0x0,0x0,0x0,0xbb1f60da,0xf6195ed4,0x9f0b48c5,0x1c001f6c,0xb02d5fd2,0x6d0338b0,0xf000206,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x5002371,0x2d0033af,0x1f001a56,0x1000000,0x3000000,0x7000000,0x0,0x0,0x0 }; static const QRgb fastback_data[] = { 0x0,0x0,0x0,0x1fefefe,0x16c8e3fe,0x299ecbfe,0x2690c1fe,0x1b69a4fe,0x10cee4fe,0x26a7d1fe,0x2795c4fe,0x2079b0fe,0x9488afe,0x0, 0x0,0x0,0xfefefe,0x20e2f0fe,0xb796c9fe,0xe7aad3fe,0xe59fccfe,0xdd7eb7fe,0xa561a6fb,0xe3a7d2fe,0xe6a3cffe,0xe292c4fe,0x95458ef9,0x4103996, 0x0,0x0,0xdfefefe,0x9497c9fe,0xfcdeeefd,0xfffcfcfc,0xfffcfcfc,0xec6ea0ed,0xf29fc7f6,0xfffafcfc,0xfffcfcfc,0xf9b5d1f7,0x6c2556b3,0x2010101, 0x0,0x5fefefe,0x5fa6d1fe,0xf7b7d8f9,0xfff2f6f7,0xfff2f6f7,0xfd95bef9,0xe36194e1,0xffebf3f8,0xfff2f6f7,0xffd4e6f8,0x9d3064c0,0xc03081b,0x0, 0x2fefefe,0x3fa9d2fe,0xe094c5f8,0xffe3ecf1,0xffe6edf1,0xfbb6d0ef,0xdf3975dd,0xffcfe2f2,0xffe6edf1,0xffdde9f1,0xcc4f7fd7,0x1f061136,0x0,0x0, 0x1cd5e8fe,0xb583bbf9,0xffc6dceb,0xffd7e4e9,0xffc6d9eb,0xe44076df,0xf99bbfea,0xffd7e4e9,0xffd6e3e9,0xf2739ee8,0x410d2466,0x2000000,0x0,0x0, 0x5366abfb,0xfc95bfe8,0xffc8d8df,0xffc7d8e0,0xee6691e1,0xe35185da,0xffc5d7e0,0xffc8d8df,0xff9fbee6,0x851741aa,0x6020514,0x0,0x0,0x0, 0x1d81a9fc,0xcf4d86ed,0xffb1c8d8,0xffb8cdd7,0xff8db2dd,0xdb2560ed,0xfd99b9dc,0xffb8cdd7,0xffafc8d8,0xc93d72e5,0xf0831ce,0x0,0x0,0x0, 0x2fefefe,0x3f265cf3,0xec5f90df,0xffa7c2ce,0xffa8c2cd,0xf3618edb,0xe02b63e8,0xff9fbecf,0xffa8c2cd,0xff8eb1d2,0x921d50e6,0x103070e,0x0,0x0, 0xfefefe,0x5c3d8fa,0x7b1b4ff4,0xfc799fd1,0xff9bb7c6,0xff96b4c7,0xe63666e0,0xec4b7bdd,0xff9bb7c6,0xff9bb7c6,0xf46792d2,0x510732e3,0x0,0x0, 0x0,0xfefefe,0xaafbefa,0xab1f55e8,0xff81a7c2,0xff90b0be,0xff82a7c1,0xda1648e4,0xfd5c8ad0,0xff90afbe,0xff8eaebf,0xe23f70d7,0x230627d4,0x0, 0x0,0x0,0x1fefefe,0x213458f6,0xd23663dc,0xff7095c5,0xff7095c4,0xfa4d79d1,0xc8143fe2,0xfc668dc8,0xff7095c4,0xff668ec8,0xa71a46de,0x4031060, 0x0,0x0,0x0,0x1fbfbfb,0x220527de,0x60062bbe,0x640629af,0x630628b1,0x2e041fa8,0x53062bcb,0x640629b0,0x640629af,0x450524ab,0x3020616, 0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x0,0x0 }; static const QRgb fastforward_data[] = { 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0, 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0, 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0, 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0, 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0, 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0, 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089, 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000, 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0, 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0, 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0, 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0, 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0, 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0 }; static const QRgb fileopen_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0, 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0, 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0, 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0, 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0, 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0, 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0, 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0, 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0, 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb find_data[] = { 0x0,0x16acaec0,0x89a5b4ce,0xe8a0bfdf,0xffa8cae7,0xf6a6c7e3,0xafaabed6,0x31aeb2c4,0x1aaaabc,0x0,0x20fefeff,0x5fbfcbd7,0xb36a849d,0x799eb1c3, 0x169fa1b6,0xc395afd1,0xff96ccf2,0xffa8e0fa,0xfface4fb,0xffa9e1fb,0xffabe2fa,0xeaaacadf,0x44a3a8bc,0x0,0x23f2f5f8,0xa49db3c5,0xa987a0b5,0x9f748ca3, 0x898e9ebd,0xff93caf1,0xffb5ecfc,0xffccfafe,0xffbff1fd,0xffb8eefc,0xffb4ebfc,0xffbdf1fc,0xcda8c1d2,0x129393a9,0x708aa4ba,0xff728fa8,0xff53728f,0x9c6b849c, 0xe888a7cc,0xffa4ddfa,0xffc8f8fe,0xffe8ffff,0xffcdf5fe,0xffccf9fe,0xffcafcfe,0xffccfdff,0xfebce2e9,0x418e93a9,0x55839cb2,0xfb4f6e8b,0xfb3c5a79,0x8076899f, 0xff8eb0d2,0xffa8e1fb,0xffb6ebfc,0xffc8f3fd,0xffcaf9fe,0xffdbffff,0xffdaffff,0xffdcffff,0xffceeef1,0x648f97ad,0xcfefeff,0x4556718c,0x4948637f,0x18fefeff, 0xf4809fc4,0xffa7e0fa,0xffb1e8fb,0xffc4f5fe,0xffd7feff,0xffdeffff,0xffe7ffff,0xffebffff,0xffcce0e7,0x4b7b809a,0x0,0x0,0x0,0x0, 0xa56a7da1,0xffa4dbf6,0xfface5fb,0xffc0f5fd,0xffd4ffff,0xffe2ffff,0xfff0ffff,0xfff7feff,0xe1aeb7c6,0x1a5d5d7e,0x0,0x0,0x0,0x0, 0x25585a7e,0xe07c99ba,0xffb1e6f7,0xffc1f5fe,0xffd2ffff,0xffe0ffff,0xffecfefe,0xffc6ced8,0xe8898aa2,0x2d968c92,0x9c7862c,0x0,0x0,0x0, 0x0,0x30595c7f,0xb4768caa,0xf6a0c4d5,0xffb7dce4,0xfbb9d4dd,0xd99eabbc,0xb08789a1,0xdda7a5b2,0xe1c89f68,0xabcf8a23,0xfb57729,0x0,0x0, 0xdfefeff,0x49859eb4,0x238595ab,0x2a565779,0x47666c8a,0x345e5f80,0x13555578,0x47c7c97,0x92b48549,0xffefd28d,0xfeecb34d,0xacc37f21,0xfa16728,0x0, 0x40fafbfd,0x8e8197ac,0x729caebf,0xb0617c97,0x0,0x0,0x0,0x0,0x25a26a2b,0xd4cca153,0xfff8e19e,0xfeeab24e,0xafb77622,0xf8f5825, 0x9ca4b9ca,0xff7592ab,0xa57a93aa,0x7296a8b9,0x1c90a4b7,0x0,0x0,0x0,0x0,0x22865327,0xd4c29851,0xfff8df9b,0xffe9b351,0xb3a26825, 0xff7592aa,0xff51708d,0xff405e7d,0x8e879db1,0x49516d88,0x0,0x0,0x0,0x0,0x0,0x257e4d29,0xd5bb9353,0xffe2c586,0xfd977964, 0x917d94aa,0xff3d5c7a,0x9c5d758e,0x41f8f9fb,0x18fefeff,0x0,0x0,0x0,0x0,0x0,0x744426,0x267c4c29,0x8a87644d,0x6d726e86 }; static const QRgb finish_data[] = { 0x8e9f4fe,0x24aad2fe,0x289ac8fe,0x2386bbfe,0x117fb3fe,0x1bb9dafe,0x299ecbfe,0x2590c1fe,0x186ba6fe,0x15b96fe,0x0,0x0,0x0,0x0, 0x3680bcfe,0xe091c5fe,0xe7a9d2fe,0xe49fccfe,0xb96aa7fc,0xb96aacfc,0xe7abd4fe,0xe5a3cefe,0xd886bbfe,0x473277f1,0x5080e,0x0,0x0,0x0, 0x1691c1fd,0xbd6dabfc,0xffedf4fd,0xfffcfcfc,0xfde0edfc,0xdb4c8ef5,0xfac7dffc,0xfffcfcfc,0xfff7fafc,0xd781b0f7,0x1e1756dc,0x0,0x0,0x0, 0x1fefefe,0x254a87f3,0xdf7db0fa,0xffeff5f8,0xfff2f6f7,0xfdb2d0f8,0xda3c7ef3,0xffdfedf8,0xfff2f6f7,0xffe5eff8,0xb04b87f0,0x40c3ab5,0x0,0x0, 0x0,0x3fefefe,0x52286ff8,0xf1a0c4f4,0xffe6edf1,0xffe6edf1,0xee7caaf2,0xe35a92f4,0xffdfeaf1,0xffe6edf1,0xfcbbd5f2,0x7c2766ee,0x20a2fab,0x0, 0x0,0xfefefe,0x6f5f5f5,0x8d3475f6,0xffb8d1ec,0xffd7e4e9,0xffd0e0ea,0xdf427ded,0xf481abef,0xffd7e3e9,0xffd6e3e9,0xee84afed,0x3d124cde,0x0, 0x0,0x0,0xfefefe,0x2aa8c7fb,0xde5e9ff2,0xffc7d8e0,0xffc8d8df,0xfda4c2e3,0xd3266ded,0xffaecbe4,0xffc8d8df,0xffc2d5e0,0xbe467ce4,0x9072089, 0x0,0x0,0x7fefefe,0x7785bdfb,0xff8bb7e2,0xffb8cdd7,0xffb8cdd7,0xf35988df,0xee5288de,0xffb4cbd7,0xffb8cdd7,0xfd8eb1dd,0x821940ac,0x4000000, 0x0,0x3fefefe,0x489bcafe,0xed6ba7e6,0xffa8c2cd,0xffa8c2cd,0xff749fda,0xde2a5fd1,0xff98bad2,0xffa8c2cd,0xff99b9d1,0xb92856c6,0x18030c3b,0x0, 0xfefefe,0x28b9d9fe,0xc65da1ed,0xfe94b4c9,0xff9bb7c6,0xff87a9cc,0xe21e50d8,0xfb79a4d0,0xff9bb7c6,0xff9bb7c6,0xe7406cd2,0x36041870,0x1000000,0x0, 0xfeaf2fe,0x9a5b9ff4,0xfe7aa6c9,0xff90afbe,0xff88abc0,0xea2b5bd2,0xf55083d1,0xff90afbe,0xff90afbe,0xfc5383d1,0x5a08207d,0x3000000,0x0,0x0, 0x384884fb,0xf64279dc,0xff7095c4,0xff7095c5,0xeb4670c7,0xde1a45d3,0xff6a91c7,0xff7095c4,0xfb628ac7,0x941335ad,0xa01051b,0x0,0x0,0x0, 0x112e5ff8,0x58072ed7,0x630629b1,0x640629af,0x42051d91,0x44062ad1,0x61062ab9,0x640629af,0x590624a6,0x14020a44,0x0,0x0,0x0,0x0, 0x0,0x0,0x1000000,0x1000000,0x0,0x0,0x1000000,0x1000000,0x1000000,0x0,0x0,0x0,0x0,0x0 }; -static const QRgb folder_data[] = { - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0, - 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65b9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0, - 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0, - 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0, - 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0, - 0xa6d7d7d9,0xfffbfbfb,0xffe8f2fb,0xffb8d9f5,0xffe0f5fb,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x911f45a4,0x0, - 0x4ebdbec1,0xc7d3d5da,0xfeececf0,0xffa2caf0,0xffdff4fc,0xffbfe2fa,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275, - 0x0,0x9869b2f0,0xfdaecde6,0xff93b4d9,0xffbbdcf4,0xffb7dcf8,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97, - 0x0,0x4a439be9,0xf3a5d3f6,0xffc1e6fc,0xff8bbae8,0xff9bc4ec,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbbbdd1,0xed5a6fb2,0x860e3292,0x21000d2a, - 0x0,0x0,0x3d3d9aec,0xea9ecdf4,0xff89bceb,0xffebf2fa,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0, - 0x0,0x0,0x0,0x2c2c84dd,0xe381b2e6,0xffa2bee6,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x221c68ca,0xd33f77cc,0xc2537cc6,0x4e052c77,0x12000103,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xa0f4394,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 -}; - static const QRgb folder_open_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3bc4cce8,0x49c1c9e7,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x36c8cfe7,0xeee9eaf3,0xdedcdfee,0xc5e6e9b,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x36d1d6e8,0xededeef5,0xffececf4,0xffeaeaf3,0xae879ed4,0x3000000,0x0,0x0,0x0, 0x23fabff,0x284da4f0,0x7d8fc1f2,0xcfa2caf6,0x7e90b7e7,0xecf1f2f7,0xfff2f2f8,0xffececf4,0xffe6e6f0,0xf6cfd4ea,0x6a4b70be,0x9b5880d6,0x3f0836a7,0x0, 0x4a62b1f4,0xfed1e6fc,0xffcfe4ff,0xffc3daf8,0xffeff2f7,0xfff8f8fb,0xfff3f2f7,0xffc2d1eb,0xff9fbce8,0xff6fa2ea,0xdc5197f1,0xc40045c7,0x37001b53,0x0, 0x13329cf5,0xf5c3dffb,0xffcae1ff,0xffe0e6ee,0xfffefefe,0xfff8f8fb,0xffc1d5ee,0xff9bc6f7,0xff65a7f8,0xff5a9ff7,0xf53e7de3,0xd8002db1,0x21000c24,0x0, 0x0,0xbbabd1f7,0xffc4deff,0xffbacdea,0xffcee3f6,0xffb2d4f3,0xff9fcbf7,0xff75b3fa,0xff589cf6,0xff3e78e2,0xf70c39be,0xbe002cae,0x19000104,0x0, 0x0,0x697cb3ec,0xffc1dcff,0xff9ec8f8,0xffc5e4f8,0xffaed9fd,0xff87befa,0xff5996f1,0xff336fe3,0xff2054cf,0xfe6279c5,0xb85e71b0,0x12000000,0x0, 0x0,0x1d368be9,0xfeafd0fa,0xff91c2f8,0xffabd4f8,0xff98c9fa,0xff6fa8f4,0xff518beb,0xff7596db,0xffb2b6cf,0xffb4b4c6,0xa24c63a8,0xb000000,0x0, 0x0,0x12684f0,0xc997bff1,0xff8bbef7,0xff94c9fe,0xff7eb6f6,0xff9dbdee,0xffcbd0e0,0xffcbcbd8,0xfa9ba4c4,0xa84a63a7,0x3f00154b,0x3000000,0x0, 0x0,0x0,0x7c82aee7,0xff91c1f6,0xffbbdcfc,0xffe0e7f1,0xffe3e2e9,0xfcb9c1d7,0xb86178b6,0x4b092063,0x18000001,0x2000000,0x0,0x0, 0x0,0x0,0x303176d6,0xfd9fc5f0,0xfffafafb,0xffdae0ec,0xc97c99cc,0x5813357b,0x1b000000,0x4000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x1186ce6,0xda82afe6,0xd59cbce4,0x6626559a,0x20000409,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x30297bdc,0x25030f1e,0x9000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb folder_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0, + 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65b9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0, + 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0, + 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0, + 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0, + 0xa6d7d7d9,0xfffbfbfb,0xffe8f2fb,0xffb8d9f5,0xffe0f5fb,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x911f45a4,0x0, + 0x4ebdbec1,0xc7d3d5da,0xfeececf0,0xffa2caf0,0xffdff4fc,0xffbfe2fa,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275, + 0x0,0x9869b2f0,0xfdaecde6,0xff93b4d9,0xffbbdcf4,0xffb7dcf8,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97, + 0x0,0x4a439be9,0xf3a5d3f6,0xffc1e6fc,0xff8bbae8,0xff9bc4ec,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbbbdd1,0xed5a6fb2,0x860e3292,0x21000d2a, + 0x0,0x0,0x3d3d9aec,0xea9ecdf4,0xff89bceb,0xffebf2fa,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0, + 0x0,0x0,0x0,0x2c2c84dd,0xe381b2e6,0xffa2bee6,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x221c68ca,0xd33f77cc,0xc2537cc6,0x4e052c77,0x12000103,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xa0f4394,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 +}; + static const QRgb font_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x4d171717,0x510f0f0f,0xa000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x37000000,0xf5737373,0xffa0a0a1,0xc8464647,0x550c0c0c,0x4000000,0x0,0x0,0x0, 0x0,0x0,0x24000000,0x30000000,0x0,0x50000000,0xab1e1e1f,0xff717172,0xffcccccd,0xffa5a5a5,0xcb3e3e3e,0x4e000000,0x0,0x0, 0x0,0x20000000,0xe0626262,0xf7818182,0xa9272727,0x31070707,0x4000000,0x96707073,0xff141414,0xff6e6e6f,0xffd1d1d2,0xfc858586,0x3c000000,0x0, 0x0,0x40000000,0xd8972c2c,0xfcc89798,0xffd0d0d1,0xff7f7f7f,0xab2e2e2f,0xa458585a,0xff000000,0xff2d2d2d,0xff565656,0xf6919191,0x34000000,0x0, 0x0,0x10000000,0xc000000,0x9bc8585b,0xffd72d2d,0xffca9394,0xffcfcfd0,0xff6d6d6d,0xff000000,0xff484848,0xfa656565,0x5e313131,0x0,0x0, 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd81e1e,0xff975858,0xffababab,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 0x0,0x0,0x0,0x80ac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff252525,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xff000000,0xff000000,0xff484848,0xef666666,0x0,0x0,0x0, 0x0,0x0,0x0,0x7fac8c90,0xffff0000,0xffd03c3c,0xff6c6c6c,0xd5000000,0xff000000,0xff484848,0xf58f8f8f,0x24000000,0x0,0x0, 0x0,0x0,0x0,0x86b27c80,0xffff0000,0xffd03c3c,0xff6c6c6c,0x9000000,0x5d000000,0xda050505,0xfd8e8e8e,0x8a3a3a3a,0x0,0x0, 0x0,0x0,0x2ac00000,0xe1dd0000,0xfffb0000,0xffd03c3c,0xff818181,0x15c00000,0x0,0x0,0x54000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x20c00000,0x85d30000,0xebdb1010,0xffdfa7a7,0xa0c03a3a,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x18c00000,0x81c71515,0xec00000,0x0,0x0,0x0,0x0,0x0,0x0 }; -static const QRgb forward_data[] = { - 0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x5fefefe,0x2fefefe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1ca8d1fe,0x8f86c0fe,0x9a81bcfe,0x9776b5fe,0x8058a1fe,0x101b64f1,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x1d9bcbfe,0xe07eb8fd,0xffeaf4fc,0xffeaf4fc,0xffe0eefc,0xb25494f7,0x101453de,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x3fefefe,0x37367cf3,0xe588b7f9,0xfff0f5f8,0xfff2f6f7,0xfed6e6f8,0xa84585f7,0xc1251e4,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x2f2f2f2,0x432a6aeb,0xed94bcf4,0xffe4ecf1,0xffe6edf1,0xffb8d3f3,0x813875e9,0x30d3abf,0x0,0x0,0x0, - 0x0,0x0,0x0,0xfefefe,0x67fa2f5,0x742969f7,0xf99bbeef,0xffd7e4e9,0xffd7e4e9,0xf69bbfeb,0x621e5cea,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0xfefefe,0xeb6c8f8,0x9c478af7,0xffafcde4,0xffc8d8df,0xffc7d8df,0xf179a5e8,0x350a3ade,0x0,0x0, - 0x0,0x0,0x0,0x0,0x3fefefe,0x449ac9fe,0xe169a8ef,0xffb6ccd7,0xffb8cdd7,0xffb0c8d8,0xd33d6cd2,0x1f05114c,0x0,0x0, - 0x0,0x0,0x0,0x1fefefe,0x2eb7dafe,0xcf60a3ef,0xff9dbdd1,0xffa8c2cd,0xffa2bfcf,0xdc4876c6,0x37061961,0x2000000,0x0,0x0, - 0x0,0x0,0xfefefe,0x1fe2effe,0xb064a5f1,0xfc8bb0cd,0xff9bb7c6,0xff99b6c7,0xf34e7cd5,0x580a2482,0x4010204,0x0,0x0,0x0, - 0x0,0x0,0xfeef6fe,0xa54c93f5,0xfd7aa5ca,0xff90b0be,0xff90afbe,0xf65781cd,0x6d09259c,0x6010411,0x0,0x0,0x0,0x0, - 0x0,0x0,0x265188fe,0xe02b69de,0xf0477ac8,0xf04679c7,0xec4273c8,0x7606239e,0x8000000,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x2bfdffe,0x230420d0,0x3203189f,0x3203179c,0x2d031480,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 -}; - static const QRgb forward_inactive_data[] = { 0x0,0x0,0x1f1f1f1,0x5f1f1f1,0x5f1f1f1,0x5f1f1f1,0x2f1f1f1,0xf1f1f1,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x1c94aff1,0x8f83a3f1,0x9a80a0f1,0x977b9cf1,0x806c90f1,0x103f72d1,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x1d8daaf1,0xe07f9dec,0xffc7d5e8,0xffc7d5e8,0xffbccce8,0xb26989db,0x103769ba,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x3f1f1f1,0x37567ed4,0xe5839ddf,0xffcfd7dd,0xffd2d9db,0xfeb3c2dd,0xa86082db,0xc3468c0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x2d2d2d2,0x434d75c8,0xed89a0d5,0xffc0cad1,0xffc2cbd1,0xff9db1d4,0x81587bc6,0x32d59a2,0x0,0x0,0x0, 0x0,0x0,0x0,0xf1f1f1,0x67f91d7,0x744c75db,0xf98da1ce,0xffb4c0c6,0xffb4c0c6,0xf68da2c8,0x62426ec7,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0xf1f1f1,0xe9ca8dd,0x9c6284db,0xff98acc0,0xffa8b5bb,0xffa7b5bb,0xf17c92c5,0x352859ba,0x0,0x0, 0x0,0x0,0x0,0x0,0x3f1f1f1,0x448ca9f1,0xe17594ce,0xff9cabb4,0xff9dacb4,0xff99a8b5,0xd35b76b0,0x1f1d3365,0x0,0x0, 0x0,0x0,0x0,0x1f1f1f1,0x2e9db7f1,0xcf7091ce,0xff8ea1af,0xff94a4ac,0xff91a2ad,0xdc627ba7,0x37203d71,0x2000000,0x0,0x0, 0x0,0x0,0xf1f1f1,0x1fbecef1,0xb07292d1,0xfc8599ac,0xff8d9da7,0xff8c9ca7,0xf3667eb2,0x58284881,0x40e131a,0x0,0x0,0x0, 0x0,0x0,0xfccd9f1,0xa56589d7,0xfd7d92aa,0xff8799a1,0xff8798a1,0xf66b80ac,0x6d26488d,0x60e1a33,0x0,0x0,0x0,0x0, 0x0,0x0,0x266883f1,0xe04e75ba,0xf0627da8,0xf0617ca7,0xec5e7aa8,0x7620478e,0x8000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x2a2bbf1,0x231a44ae,0x32173b8f,0x32173a8d,0x2d173780,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb forward_data[] = { + 0x0,0x0,0x1fefefe,0x5fefefe,0x5fefefe,0x5fefefe,0x2fefefe,0xfefefe,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1ca8d1fe,0x8f86c0fe,0x9a81bcfe,0x9776b5fe,0x8058a1fe,0x101b64f1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1d9bcbfe,0xe07eb8fd,0xffeaf4fc,0xffeaf4fc,0xffe0eefc,0xb25494f7,0x101453de,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x3fefefe,0x37367cf3,0xe588b7f9,0xfff0f5f8,0xfff2f6f7,0xfed6e6f8,0xa84585f7,0xc1251e4,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x2f2f2f2,0x432a6aeb,0xed94bcf4,0xffe4ecf1,0xffe6edf1,0xffb8d3f3,0x813875e9,0x30d3abf,0x0,0x0,0x0, + 0x0,0x0,0x0,0xfefefe,0x67fa2f5,0x742969f7,0xf99bbeef,0xffd7e4e9,0xffd7e4e9,0xf69bbfeb,0x621e5cea,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xfefefe,0xeb6c8f8,0x9c478af7,0xffafcde4,0xffc8d8df,0xffc7d8df,0xf179a5e8,0x350a3ade,0x0,0x0, + 0x0,0x0,0x0,0x0,0x3fefefe,0x449ac9fe,0xe169a8ef,0xffb6ccd7,0xffb8cdd7,0xffb0c8d8,0xd33d6cd2,0x1f05114c,0x0,0x0, + 0x0,0x0,0x0,0x1fefefe,0x2eb7dafe,0xcf60a3ef,0xff9dbdd1,0xffa8c2cd,0xffa2bfcf,0xdc4876c6,0x37061961,0x2000000,0x0,0x0, + 0x0,0x0,0xfefefe,0x1fe2effe,0xb064a5f1,0xfc8bb0cd,0xff9bb7c6,0xff99b6c7,0xf34e7cd5,0x580a2482,0x4010204,0x0,0x0,0x0, + 0x0,0x0,0xfeef6fe,0xa54c93f5,0xfd7aa5ca,0xff90b0be,0xff90afbe,0xf65781cd,0x6d09259c,0x6010411,0x0,0x0,0x0,0x0, + 0x0,0x0,0x265188fe,0xe02b69de,0xf0477ac8,0xf04679c7,0xec4273c8,0x7606239e,0x8000000,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x2bfdffe,0x230420d0,0x3203189f,0x3203179c,0x2d031480,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + static const QRgb fullscreen_data[] = { 0xe483addd,0xf18cb6e6,0xf181b1e6,0xf175abe6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf1559ae7,0xf14597e8,0xa315588d,0x17002741, 0xf592b8e5,0xffafd5fc,0xff95c8fb,0xff77b8fa,0xff57a8fc,0xff389afd,0xff268efd,0xff2388fd,0xff2388fc,0xff2388fa,0xff238bfc,0xff1d8afb,0xc208518c,0x30001827, 0xf19fbfe5,0xffdbb8c9,0xffd191a6,0xffcba8bf,0xffc5d3ec,0xffbedcfa,0xffb7dafa,0xffb3d9f9,0xffb2c0e3,0xffb38db0,0xffb78cad,0xff8daada,0xc4255e8a,0x34001525, 0xf1a8c6e8,0xfff67678,0xffee1a1e,0xfff17579,0xfff2e6e7,0xfff0fbfe,0xffedf9fe,0xffeafbfd,0xffeaced2,0xfff1474c,0xfff8282b,0xffb48eaa,0xc42d6189,0x34001626, 0xf1a8c6e8,0xfff57e81,0xffee3a40,0xffee444b,0xffecafb3,0xffe8f3f8,0xffe5f7ff,0xffe2eff4,0xffe7848b,0xffec3238,0xffee474d,0xffae8fae,0xc42b5f88,0x34001626, 0xf1a6c4e6,0xfff4d7da,0xffefbfc4,0xffec7981,0xffe9b2b7,0xffe5f3f9,0xffe1f5ff,0xffdeedf5,0xffe38d98,0xffe2828b,0xffddccd4,0xffa5c0e1,0xc42a5f88,0x34001525, 0xf1a6c4e5,0xfff2fcfe,0xffebf9fc,0xffe8f0f3,0xffe5f3f8,0xffe1f4ff,0xffdef3ff,0xffdaf1fe,0xffd7ebf5,0xffd4eaf4,0xffd5f4fe,0xffa1d6f7,0xc42a6089,0x34001425, 0xf1a4c4e5,0xffeffcfe,0xffe8f8fc,0xffe5eff3,0xffe1f1f8,0xffdef3ff,0xffdaf1ff,0xffd6effe,0xffd3ebf5,0xffd0e9f4,0xffd1f2fe,0xff9ed5f6,0xc4296089,0x34001425, 0xf1a3c3e6,0xffedd6da,0xffe7bec4,0xffe87881,0xffe2b0b7,0xffdaf1f9,0xffd6f1ff,0xffd3eaf5,0xffde8b98,0xffdd818b,0xffd5c8d5,0xffa0bee1,0xc4295f88,0x34001525, 0xf1a3c4e8,0xffee7c81,0xffec3940,0xffea424b,0xffe0adb3,0xffd7eff8,0xffd3f0ff,0xffd0e8f4,0xffdd818b,0xffea3138,0xffec454e,0xffa88cae,0xc4295e88,0x34001626, 0xf1a6c5e9,0xfff2757b,0xfff31c21,0xffea747b,0xffdde4e8,0xffd8f4ff,0xffd5f1ff,0xffd0f2fe,0xffd5c8d4,0xffec464e,0xfff7272d,0xffac8bac,0xc429608a,0x34001626, 0xfa80b7e7,0xffb2aac7,0xffb186a4,0xffad9ebd,0xffa7ccea,0xffa3d7f7,0xffa1d5f7,0xff9ed5f6,0xffa0bde1,0xffa88dae,0xffad8cac,0xff81aadb,0xc7205f8d,0x34001728, 0xa628618e,0xc12e628a,0xc42c6089,0xc42c5f88,0xc42b6088,0xc42a6089,0xc42a6089,0xc4296089,0xc4295f88,0xc4295e88,0xc42a608a,0xc421608d,0x9e083655,0x30000d16, 0x14002a4a,0x30001728,0x34001626,0x34001626,0x34001525,0x34001425,0x34001425,0x34001425,0x34001525,0x34001626,0x34001626,0x34001727,0x30000d16,0x16000204 }; +static const QRgb Games_data[] = { + 0x0,0x0,0x0,0x186b7bdd,0xd77387d0,0x25101320,0x0,0x65060a2,0x3e4e5d9f,0x4d495794,0x3273052,0x0,0x0,0x0, + 0x0,0x0,0x0,0x2e6778cf,0xdc7386c8,0x4c434f89,0x635a6ab2,0xd37989c5,0xfdaabbe0,0xfdacbbdc,0x93505c93,0x51d2348,0x0,0x0, + 0x0,0x0,0x0,0x286472d0,0xfa7184d4,0xff7a8cce,0xffaec4ee,0xff96a5ff,0xffc0d4fd,0xffb7dfd9,0xffbac6de,0x80424c80,0x1050509,0x0, + 0x0,0x6674d6,0x306472ce,0xc47485d6,0xffa6bdef,0xffcbe5ff,0xffcdd7ed,0xffb2b6f0,0xffb5dade,0xff79c382,0xfff0fbfd,0xfba3acc9,0x452e3668,0x0, + 0x56876dd,0x7c6b7adc,0xf58399e1,0xff9ab1d2,0xffb9d3f2,0xffcbe5ff,0xffed9172,0xffe0c3b3,0xfff1cf6b,0xffebf6f9,0xfff4fcff,0xfff7fbfd,0xd1656d97,0x90f1228, + 0x9a6e80e5,0xff8ca7df,0xff9a9ea4,0xff979797,0xff75797f,0xffcde5fd,0xffd6ebff,0xffddeefa,0xffe0eceb,0xffd9edff,0xfff5fdff,0xfffcffff,0xffc5c9db,0x5c2d3667, + 0xbf738deb,0xff899fbc,0xff959595,0xff717171,0xff7d8083,0xffd0e7fe,0xffd2e8ff,0xffbcdbff,0xffa0c0f3,0xf66f84ba,0xfeacbadb,0xfff6fbff,0xffedf6ff,0xc0515e8f, + 0xa86c7fe0,0xff9fc1ed,0xff959ea9,0xff98a1ab,0xffbdd5ef,0xffabd0ff,0xff96bef9,0xfa738fcc,0xb0404d80,0x3d191e3a,0x81384378,0xfa7f93c3,0xff9db5e1,0xb93e497a, + 0x7c6574d3,0xff9ec4fe,0xffbcdbff,0xffc4dfff,0xff92baf8,0xf96c88cf,0xbb475690,0x50242b4c,0xb000000,0x0,0x1000000,0x45272e5c,0x76272e5c,0x280f1225, + 0x4a616fc8,0xff8eaff4,0xffbddcff,0xffc6e0ff,0xf77992d4,0x5122294a,0xd020205,0x1000000,0x0,0x0,0x0,0x0,0x1000000,0x0, + 0x125767b0,0xfb7997e6,0xffbfdcff,0xffc5e0ff,0xf06e89cb,0x1705060c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x14d5d9b,0xc56980d3,0xffb4d5ff,0xffb3d5ff,0xe05f77bc,0xf000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x675969b7,0xff7ca1ed,0xff7ba4ee,0xba4c5c99,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x6303c6d,0x72495694,0x813e4a7f,0x2715192e,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +static const QRgb Go_black_highlight_data[] = { + 0x28999b9c,0x2d949697,0x32959798,0x43868788,0x776f6f70,0x9a626263,0x93606060,0x60646565,0x31818384,0x22969899,0x1e939596,0x1b919394,0x2e9a9b9c,0x369c9d9f, + 0x6b7c7d7e,0xbc737474,0xe2696a6a,0xed656565,0xed616162,0xe35a5a5a,0xb24b4c4c,0x51555555,0x25818384,0x1c919394,0x34949697,0x6a848586,0xce7d7e7e,0xf97b7c7d, + 0xff767777,0xff767777,0xff727373,0xff5e5e5f,0xfa494a4a,0xcd393939,0x5b414243,0x237d7e7f,0x409c9e9f,0xb97f8080,0xf9838484,0xffaaabac,0xffa6a7a8,0xff9b9c9c, + 0xff717272,0xff5e5e5e,0xff505151,0xfc3f3f3f,0xb62e2f2f,0x46464748,0x68848585,0xde828283,0xffa0a1a2,0xffe5e6e6,0xffffffff,0xffa6a8a8,0xff7b7c7c,0xff666666, + 0xff545555,0xff434343,0xeb2d2d2e,0x7a2d2d2e,0x82777878,0xea757676,0xff919292,0xffbdbebe,0xffe6e6e7,0xffa2a3a4,0xff7f8080,0xff646565,0xff515152,0xff404040, + 0xfa2d2d2d,0xa3232324,0x766f7071,0xea6e6f6f,0xff787a7a,0xff7e8080,0xff949595,0xff757676,0xff646464,0xff575858,0xff4d4d4e,0xff404040,0xfc2d2d2d,0xb2202020, + 0x4a7c7e7e,0xda59595a,0xfe565757,0xff6c6d6d,0xff787878,0xff626262,0xff525354,0xff484849,0xff3c3c3c,0xff373838,0xfa242424,0xa91e1e1e,0x2e8d8f90,0x9b464747, + 0xf7484949,0xff5a5a5b,0xff636364,0xff515152,0xff454545,0xff3c3c3c,0xff373838,0xff2a2a2a,0xee191919,0x871e1f1f,0x26909293,0x4b585859,0xc0393939,0xfa414141, + 0xff4e4e4f,0xff434343,0xff3b3c3c,0xff333334,0xff2a2b2b,0xf81b1b1c,0xc0171717,0x572b2b2c,0x218e9091,0x28818384,0x5d444445,0xb52d2d2d,0xeb2e2f2f,0xfa2d2d2d, + 0xfd272728,0xfb1f2020,0xf1181818,0xc4171717,0x6f232424,0x2e4b4c4d,0x1e8e9091,0x1f929495,0x28787a7b,0x4b434445,0x842c2c2c,0xaf232323,0xc01c1d1d,0xb71a1a1b, + 0x931c1c1c,0x5c282929,0x2f4a4b4c,0x1b7c7e7e +}; + +static const QRgb Go_black_data[] = { + 0x0,0x0,0x0,0x184a4a4a,0x664a4a4a,0x89454545,0x763c3c3c,0x302d2d2d,0x2000000,0x0,0x0,0x0,0x0,0x0, + 0x6d505050,0xf5535353,0xff525252,0xff4d4d4d,0xff454545,0xfd393939,0xb3272727,0x18080808,0x1000000,0x0,0x0,0x64505050,0xfe575757,0xff595959, + 0xff585858,0xff4d4d4d,0xff464646,0xff3d3d3d,0xff313131,0xce1a1a1a,0x1d000000,0x1000000,0xb474747,0xec525252,0xff575757,0xff989898,0xffa2a2a2,0xff4f4f4f, + 0xff434343,0xff3b3b3b,0xff313131,0xff212121,0x98090909,0x12000000,0x48474747,0xff515151,0xff545454,0xff888888,0xff787878,0xff474747,0xff3f3f3f,0xff373737, + 0xff2d2d2d,0xff212121,0xe80f0f0f,0x3f000000,0x64424242,0xff4b4b4b,0xff4c4c4c,0xff4c4c4c,0xff474747,0xff404040,0xff3a3a3a,0xff323232,0xff282828,0xff1e1e1e, + 0xf8111111,0x6e000000,0x4b363636,0xff434343,0xff444444,0xff424242,0xff3f3f3f,0xff3a3a3a,0xff333333,0xff2b2b2b,0xff222222,0xff1b1b1b,0xfa0e0e0e,0x82000000, + 0x101b1b1b,0xf1343434,0xff3b3b3b,0xff3a3a3a,0xff363636,0xff313131,0xff2b2b2b,0xff232323,0xff1c1c1c,0xff1a1a1a,0xf3050505,0x75000000,0x2000000,0x861d1d1d, + 0xff2d2d2d,0xff2f2f2f,0xff2c2c2c,0xff282828,0xff212121,0xff1c1c1c,0xff1b1b1b,0xfe0f0f0f,0xd8000000,0x4a000000,0x0,0x15000000,0xb4101010,0xfe1e1e1e, + 0xff1f1f1f,0xff1d1d1d,0xff1b1b1b,0xff1a1a1a,0xfe0e0e0e,0xed000000,0x8f000000,0x18000000,0x0,0x2000000,0x28000000,0x97020202,0xe90a0a0a,0xf90d0d0d, + 0xfb0a0a0a,0xf6030303,0xdf000000,0x95000000,0x2c000000,0x3000000,0x0,0x0,0x2000000,0x1b000000,0x55000000,0x89000000,0x9c000000,0x8b000000, + 0x58000000,0x1d000000,0x3000000,0x0 +}; + static const QRgb go_data[] = { - 0xffdae3c0,0xffcfdeb7,0xffb2d0a0,0xffa8ca98,0xffa5c897,0xffa5c897,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797,0xffa5c797, - 0xffa5c797,0xffa6c797,0xffabc998,0xffcdd9b8,0xffc0d9a6,0xffb1d399,0xff8ac379,0xff8dc47d,0xff8fc480,0xff90c482,0xff90c382,0xff90c382,0xff90c382,0xff90c382, - 0xff90c382,0xff90c382,0xff90c382,0xff90c382,0xff8fc380,0xff8cc17c,0xff84bc72,0xffaecc9b,0xff78bc5e,0xff61b54a,0xff26a319,0xff4eb83e,0xff5ebe4d,0xff62be52, - 0xff61bc51,0xff60bb4f,0xff5fb94e,0xff5fb94e,0xff5fba4e,0xff61bb50,0xff62bd51,0xff62bd52,0xff5fbc4e,0xff4fb63e,0xff259e15,0xff5cab4e,0xff3aa528,0xff47b037, - 0xff6fce63,0xffb7e7ac,0xffcaedbf,0xffc7e7bb,0xffbadaae,0xffa5c298,0xff96b186,0xff92ae83,0xff9bb78d,0xffafcda2,0xffc2e2b6,0xffcaebbf,0xffcbedc0,0xffbce8b0, - 0xff81d272,0xff47aa3d,0xff33a121,0xff4db13b,0xff94de83,0xffcbf0bd,0xffc7dfb9,0xffa5b796,0xff77826a,0xff4e5446,0xff4b5440,0xff47503d,0xff495140,0xff5c6552, - 0xff8b997e,0xffb6cfa7,0xffcfeec0,0xffcdf3bf,0xffa6e794,0xff48ad3c,0xff37a123,0xff52b33d,0xff99e083,0xffb6e1a3,0xff91aa80,0xff5e6d4f,0xff39452c,0xff344528, - 0xff415a33,0xff3d5830,0xff2d4923,0xff1f3c16,0xff3b4c32,0xff668a5a,0xff84c377,0xff8ce37f,0xff85e471,0xff3aac2e,0xff34a120,0xff4bb236,0xff86db6d,0xff8bbb73, - 0xff4e663d,0xff2a3a1c,0xff385729,0xff6ea65a,0xff77c464,0xff6ec55c,0xff4faa41,0xff1b7514,0xff083306,0xff11410e,0xff1d7d18,0xff25c41e,0xff34d424,0xff18a610, - 0xff32a01e,0xff44b02e,0xff70d355,0xff4b7636,0xff29411b,0xff356126,0xff62bb4c,0xff61dd50,0xff2ddb25,0xff10d70d,0xff05d004,0xff02bd01,0xff017a00,0xff013501, - 0xff024602,0xff029f02,0xff03ca02,0xff02a301,0xff2fa01c,0xff3bac26,0xff57c33d,0xff26481a,0xff1b4511,0xff248519,0xff30d224,0xff25db1e,0xff0ed90b,0xff02d802, - 0xff00d600,0xff00cf00,0xff00a800,0xff005400,0xff004400,0xff008500,0xff00c800,0xff00a200,0xff2ba01a,0xff30a81d,0xff3cb525,0xff14370c,0xff11530a,0xff139c0c, - 0xff0fd80a,0xff07d805,0xff02d801,0xff00d800,0xff00d800,0xff00d500,0xff00bf00,0xff006900,0xff004400,0xff006e00,0xff00c700,0xff00a300,0xff279f17,0xff25a615, - 0xff21b010,0xff0c3505,0xff095904,0xff07a203,0xff01d801,0xff00d800,0xff00d800,0xff00d800,0xff00d800,0xff00d700,0xff00c300,0xff006d00,0xff004400,0xff006900, - 0xff00c800,0xff00a300,0xff239f15,0xff1ca810,0xff0bb704,0xff043501,0xff024b01,0xff019401,0xff00d500,0xff00d800,0xff00d800,0xff00d800,0xff00d800,0xff00d500, - 0xff00b200,0xff005c00,0xff004400,0xff007d00,0xff00cc00,0xff00a500,0xff22a015,0xff1aac10,0xff06c602,0xff046601,0xff024400,0xff016a00,0xff01bb00,0xff02d500, - 0xff00d800,0xff00d800,0xff00d400,0xff00c400,0xff006600,0xff012900,0xff024501,0xff04a202,0xff05d302,0xff03a801,0xff28a117,0xff24ae14,0xff19cf0c,0xff179e0b, - 0xff0d5406,0xff044102,0xff026e00,0xff06a402,0xff08b703,0xff08ba03,0xff06a902,0xff017d01,0xff004000,0xff013f00,0xff057301,0xff0cbf05,0xff15d90a,0xff0ca906, - 0xff2ea11b,0xff2fb01b,0xff32d41b,0xff32c81c,0xff268615,0xff17500d,0xff0b4105,0xff095d04,0xff0b7005,0xff0c7405,0xff096304,0xff053e03,0xff044d02,0xff027901, - 0xff04ab01,0xff0cd106,0xff1fdb10,0xff14aa0b,0xff34a21f,0xff39b022,0xff46d52a,0xff4ddd30,0xff48c82d,0xff399723,0xff245916,0xff16370d,0xff15360b,0xff15380c, - 0xff16380d,0xff173b0e,0xff16870e,0xff09bc06,0xff02d502,0xff0ad807,0xff25d816,0xff1eaa13,0xff3c9f20,0xff41ab25,0xff50cb33,0xff61df42,0xff64e245,0xff63dd44, - 0xff5ed040,0xff51af35,0xff47982d,0xff46972d,0xff4da833,0xff56c23a,0xff49d632,0xff20d917,0xff0cd909,0xff19d812,0xff3acd25,0xff32a625,0xff4a9319,0xff419519, - 0xff2b9c1a,0xff33ab23,0xff35ae25,0xff35ae26,0xff34ab25,0xff30a222,0xff2d9b1f,0xff2d9b1f,0xff2fa021,0xff32a823,0xff2bac1f,0xff15aa0f,0xff0aa907,0xff12a70c, - 0xff229b16,0xff56a54b + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x19000000,0x21000000,0x5000000, + 0x0,0x0,0x0,0x0,0x0,0x0,0x2b488ed4,0x804a92d9,0xa64a92da,0x9f4a93db,0x764b95de,0x2d4488cb,0x4c000000,0x841f2123, + 0xb24a5b6c,0x42080b0f,0x5000000,0x0,0x0,0x0,0x43c77b1,0x944990d6,0xfe4a93db,0xff4a94dc,0xe7336597,0xda316191,0xff468bcf,0xfe316292, + 0xd6263c52,0xe3a0b0c1,0xffeef3f7,0xb37089a2,0x41010202,0x13000000,0x0,0x0,0x954990d7,0xff4c97e1,0xff4b96df,0xd94385c6,0xd060d13,0x1060d13, + 0xb42a557f,0xff254a6f,0xff7795b2,0xffe1eaf1,0xfbaacdee,0xffd9e4ec,0x98577ea4,0x34000000,0x0,0x324489cb,0xfe4d9ae5,0xff4d99e4,0xff4c98e2,0x6e4488cb, + 0x0,0x0,0x54152b40,0xff1e3c5b,0xff6990b5,0xff6b9ccb,0xcf102337,0xe779a8d3,0xbb6494c0,0x31000000,0x0,0x924b96e0,0xff4e9ce8,0xff4e9be7, + 0xff4d98e3,0x32468cd0,0x0,0x0,0x27020507,0xff1b3753,0xff214971,0xff23486d,0xdb1a344e,0x70040f19,0x76122e4a,0x23000000,0x0,0xce4c97e1, + 0xff4e9be7,0xff4e9ce8,0xff4c98e2,0x114890d6,0x0,0x0,0x4010304,0xf6326496,0xff336597,0xff3e7bb8,0xe43e7cb8,0x28000000,0x15000000,0x0, + 0x0,0xe34b95dd,0xff4c97e1,0xff4c98e3,0xfa4c96e0,0x14a92da,0x0,0x0,0x0,0xe63f7dbb,0xff4991d8,0xff4a92da,0xf84a94dc,0x2000000, + 0x0,0x0,0x24d99e4,0xce4991d8,0xff4a93dc,0xff4a93db,0xe84b94dd,0x34d99e4,0x24c99e3,0x14d99e3,0x0,0xe04487c9,0xff4b95de,0xff4b95de, + 0xfd4b96df,0x0,0x0,0x0,0x34d99e4,0xd74589cd,0xff4990d6,0xff488fd5,0xdd4a94dc,0x24d99e3,0x4d99e4,0x14d99e5,0x34d9ae5,0xdb4b95de, + 0xff4c98e3,0xff4c97e1,0xf04b96e0,0x0,0x0,0x0,0x4c97e1,0xb14488ca,0xff478dd2,0xff478cd1,0xec4a94dc,0x44b96e0,0x4c99e3,0x4d99e4, + 0xc4d9ae5,0xec4b97e0,0xff4e9be7,0xff4d99e5,0xcb4c96e0,0x0,0x0,0x0,0x0,0x4a4283c3,0xff478cd1,0xff468cd0,0xfd4992d9,0x274c97e1, + 0x4d9ae5,0x4c99e3,0xf4991d8,0xf54c98e3,0xff4e9ce8,0xff4e9be7,0x844b95de,0x0,0x0,0x0,0x0,0xe458acd,0xd94487c9,0xff468cd0, + 0xff488fd5,0x7b4d99e3,0x0,0x4d9ae5,0x584487ca,0xfe4d9ae5,0xff4e9ce8,0xf34d99e4,0x1a468ace,0x0,0x0,0x0,0x0,0x0, + 0x224284c5,0xc8458acd,0xff478cd1,0xf24c96e0,0x5b4d98e2,0x3c3f7ebc,0xde478ed3,0xff4d99e3,0xfb4d9ae6,0x554890d6,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x183c78b3,0xa04488ca,0xe8468ace,0xff4992d9,0xff4a92d9,0xff4b95de,0xcd4c96e0,0x3e488fd5,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x14d9ae5,0xc4488cb,0x453971a9,0x504180bf,0x273c77b1,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0 }; -static const QRgb h_src_data[] = { - 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0, - 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0, - 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0, - 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0, - 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0, - 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0, - 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0, - 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0, - 0x0,0x0,0x7db5b5ca,0xffefe4d7,0xffe5cfb5,0xffdcc09d,0xffdcc09d,0xffcca26e,0xffc5965c,0xffc18e50,0xffcba77d,0x938282a1,0x0,0x0, - 0x0,0x0,0x7db2b2c9,0xffeddfcd,0xffe0c5a3,0xffd6b184,0xffe1c7a6,0xffdbbb94,0xffbc8139,0xffb47220,0xffc3945b,0x937f7f9f,0x0,0x0, - 0x0,0x0,0x7daeaec6,0xffede0cf,0xffe1c6a5,0xffd8b58b,0xffddc09b,0xffd3ad7e,0xffc08945,0xffb77829,0xffc69862,0x937d7d9e,0x0,0x0, - 0x0,0x0,0x7ca5a5c1,0xffe5dfdd,0xffdfd3cb,0xffddcfc6,0xffd7c7bb,0xffd1bdad,0xffcab19a,0xffc5a991,0xffcab6a9,0x92747499,0x0,0x0, - 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0 +static const QRgb Go_white_data[] = { + 0x0,0x0,0x0,0x0,0x10d0d0d,0x730302c,0xb282825,0x7000000,0x2000000,0x0,0x0,0x0,0x0,0x0, + 0x1000000,0x50bdbdac,0xc7cecebb,0xf5d3d3c0,0xf8c3c3b1,0xde99998b,0x875b5b52,0x17030303,0x2000000,0x0,0x0,0x0,0x86cdcdba,0xfef7f7e2, + 0xfffdfde8,0xfff8f8e1,0xffe7e7d2,0xffcdcdba,0xffa6a697,0xd355554d,0x2a020202,0x2000000,0x0,0x4dc5c5b2,0xfef7f7e2,0xfffffff0,0xfffffff1,0xfffdfde9, + 0xffeeeed8,0xffd7d7c3,0xffb7b7a6,0xff87877a,0xbf2b2b27,0x1a000000,0x1000000,0xc4d1d1be,0xfffdfde8,0xfffffff1,0xfffffffd,0xfffffff7,0xffececd6,0xffd5d5c1, + 0xffb7b7a6,0xff8e8e81,0xfa474740,0x51000000,0x53e3e38,0xf4d4d4c0,0xfff8f8e1,0xfffdfde9,0xfffffff7,0xfffafaec,0xffe2e2cd,0xffcbcbb8,0xffafaf9e,0xff88887b, + 0xff4c4c45,0x8b070706,0x8383833,0xf7c3c3b2,0xffe7e7d2,0xffeeeed8,0xffececd6,0xffe2e2cd,0xffd1d1be,0xffbcbcaa,0xff9f9f90,0xff79796d,0xff40403a,0x9d070706, + 0x3000000,0xd89d9d8f,0xffcdcdba,0xffd7d7c3,0xffd5d5c1,0xffcbcbb8,0xffbcbcaa,0xffa6a697,0xff89897c,0xff616158,0xfe2c2c28,0x87010101,0x1000000,0x7a65655b, + 0xffa6a697,0xffb7b7a6,0xffb7b7a6,0xffafaf9e,0xff9f9f90,0xff89897c,0xff6a6a60,0xff3f3f39,0xf2161613,0x5b000000,0x0,0xe060605,0xca585851,0xff87877a, + 0xff8e8e81,0xff88887b,0xff79796d,0xff616158,0xff3f3f39,0xfc1e1e1b,0xa7010101,0x23000000,0x0,0x1000000,0x1f030303,0xb62d2d29,0xfa474740,0xff4c4c45, + 0xff40403a,0xfe2c2c28,0xf2161613,0xa7010101,0x39000000,0x5000000,0x0,0x0,0x1000000,0x14000000,0x44010100,0x7e080807,0x8e080807,0x7a010101, + 0x55000000,0x22000000,0x5000000,0x0 +}; + +static const QRgb HelpButton_data[] = { + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d8d8d8,0xfad5d5d5,0xd8c8c8c8,0x9ebebebe,0x508e8e8e,0xc000000,0x3000000,0xffffff,0xffffff, + 0xffffff,0xffffff,0x60d5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc4c4c4,0xffd0d0d0,0xe6bbbbbb,0x837d7d7d,0x18000000,0x4000000,0xffffff, + 0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffd1d1d1,0xff9c9b9b,0xff333333,0xff323132,0xff565556,0xffbababa,0xffb1b2b1,0xec8f8e8f,0x75474747,0x18000000,0x3000000, + 0xffffff,0x94cdcecd,0xffc8c7c7,0xffb2b2b2,0xff000000,0xff616161,0xffb2b2b2,0xff000000,0xff5f5f5f,0xffaaabaa,0xff9d9c9c,0xc84f4f4f,0x3d000000,0xc000000, + 0xffffff,0xd5c2c2c2,0xffafafaf,0xffa0a0a0,0xff5b5b5b,0xff757575,0xffa8a8a8,0xff000000,0xff585858,0xffa4a4a4,0xffa4a4a4,0xef4f4f4f,0x61000000,0x1a000000, + 0xffffff,0xfab4b4b4,0xff9d9d9d,0xff959595,0xffa5a5a5,0xff989898,0xff434343,0xff1d1d1d,0xff878787,0xffa1a1a1,0xff939393,0xfd4b4b4b,0x7c000000,0x25000000, + 0xffffff,0xd9a3a3a3,0xff919191,0xff989898,0xff909090,0xff4e4e4e,0xff000000,0xff919191,0xff989898,0xff949494,0xff7b7b7b,0xf2373737,0x85000000,0x2b000000, + 0xffffff,0xa0848484,0xff8c8c8b,0xff8a8b8b,0xff979797,0xff8e8e8e,0xff929291,0xff959595,0xff8c8c8c,0xff8b8c8b,0xff585758,0xdf272727,0x7c000000,0x25000000, + 0xffffff,0x515d5d5d,0xe7707070,0xff7c7c7c,0xff848484,0xff434343,0xff262626,0xff8f8f8f,0xff7f7f7f,0xff616061,0xf5313131,0xbb101010,0x61000000,0x1a000000, + 0xffffff,0xc000000,0x843f3f3f,0xed505050,0xff5d5c5c,0xff535353,0xff262626,0xff646364,0xff515051,0xf5313130,0xcd141414,0x83000000,0x3d000000,0xc000000, + 0xffffff,0x3000000,0x18000000,0x76212121,0xc92b2b2b,0xf0303030,0xfd353535,0xf32a2a2a,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000, + 0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x85000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, + 0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x25000000,0x2b000000,0x25000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff }; static const QRgb help_icon_data[] = { 0x0,0x0,0x0,0x0,0x18fdb293,0x5ffdbba0,0x81fbc4ac,0x81fbba9e,0x60fa7a50,0x19ee662d,0x0,0x0,0x0,0x0, 0x0,0x0,0x8fdbfa4,0x88fea391,0xf3fdeae2,0xfffdfaf9,0xfffdfdfd,0xfffdfdfd,0xffffbebc,0xf4fe8473,0x8cf64a1b,0xabe3700,0x0,0x0, 0x0,0x8fdbfa4,0xbaff9687,0xffffb7b6,0xfffdefef,0xfffcfcfc,0xfffbfbfb,0xfffbf5f5,0xfffdcdcd,0xfffecccc,0xffffb2af,0xbfee502d,0xc982900,0x0, 0x0,0x88fe8f7c,0xffffabaa,0xfffebfbf,0xfff9b6b5,0xf6eec9ba,0xcbdaa28a,0xc8dd7d62,0xf5ef604c,0xfff7a9a8,0xfffdbfbf,0xfffea9a7,0x93d25735,0x1000000, 0x18fdb293,0xf3ff877f,0xfffeaaaa,0xfff79696,0xd6e0533a,0x3974381f,0x7000000,0x4000000,0x26aa3100,0xcae13a19,0xfff4bbba,0xfffbf2f2,0xf6ecc4b8,0x257e1d00, 0x5ffdba9e,0xfffddcdb,0xfffac5c5,0xf6ed7061,0x3974381f,0x0,0x0,0x0,0x0,0x1ec23501,0xf2e5b9aa,0xfff8f8f8,0xfff9f4f2,0x70a6482f, 0x81fbc3ab,0xfffbfbfb,0xfff6f6f6,0xcbd9a189,0x7000000,0x0,0x0,0x0,0x0,0x0,0xb9d7947e,0xfff5f5f5,0xfffafafa,0x96ae6a5a, 0x81fbba9e,0xfffafafa,0xfff4f4f4,0xc8dc9c82,0x4000000,0x0,0x0,0x0,0x0,0x0,0xb8d28470,0xfff3f0f0,0xfff9f9f9,0x98a66558, 0x60fa966c,0xfffaf5f3,0xfff4f3f3,0xf5e9917e,0x26aa3100,0x0,0x0,0x0,0x0,0x1ab62700,0xf2d02c21,0xffee6868,0xfff68988,0x79852e20, 0x19ee662d,0xf4fbaf9e,0xfff76d6d,0xffe83838,0xcadb2908,0x1ec23400,0x0,0x0,0x1ab62700,0xc4c11c08,0xffe03837,0xfff14040,0xf7db2622,0x32430900, 0x0,0x8cf6390b,0xfffc2926,0xfff12b2b,0xffe22525,0xf2da5748,0xb9d6937d,0xb8d2917d,0xf2d69c91,0xffdc2b2b,0xffea2b2b,0xfff32726,0xa5900d05,0x6000000, 0x0,0xbc23800,0xbfed2a06,0xfff91614,0xfff01616,0xffedaaaa,0xffececec,0xffececec,0xffefeeee,0xffef7979,0xfff11514,0xcda80d06,0x1c230400,0x0, 0x0,0x0,0xc932800,0x93d22301,0xf6eb1407,0xfff5e0df,0xfff6f6f6,0xfff6f6f6,0xfff3efee,0xf7d8a6a1,0xa5900c04,0x1c230400,0x0,0x0, 0x0,0x0,0x0,0x1000000,0x257e1d00,0x70a5482e,0x96ae6959,0x98a66658,0x7985392b,0x32430900,0x6000000,0x0,0x0,0x0 }; static const QRgb home_data[] = { 0x0,0x8097dff,0x20097dff,0x11097bfa,0x10135ca5,0x47115ba4,0x891b61a7,0x7a1860a7,0x290754a0,0xb0855a0,0x0,0x0,0x0,0x0, 0x0,0x40097dff,0xff097dff,0x9f0a76ed,0x982b6dae,0xea598cc0,0xfd92b3d6,0xfb81a8d1,0xe53876b4,0x791a61a8,0x150e59a3,0x0,0x0,0x0, 0x0,0x40097dff,0xf90a79f4,0xe82174cb,0xf27aa3ce,0xfed8e4f4,0xffe7effb,0xffe0eafa,0xfdbed4ed,0xe45d8fc6,0x842368ad,0x190e59a4,0x0,0x0, 0x0,0x360c6fd9,0xde2073cc,0xf174a0cd,0xfecadbf1,0xffdce8fa,0xffd5e3f9,0xffcedff7,0xffc6daf6,0xfda9c5eb,0xe6568bc6,0x84185ca7,0x15054a9b,0x0, 0xb05539f,0x77175fa7,0xe76192c6,0xfebfd4ef,0xffd0e0f8,0xffc9dbf6,0xffc2d6f5,0xffb9d0f4,0xffb1ccf3,0xffa9c6f2,0xfd8ab0e5,0xe92f69ba,0x940245a7,0xf0044a9, 0xc34878b0,0xe62d6eb1,0xfdacc7ea,0xffc3d7f5,0xffbbd2f4,0xffb4cdf3,0xffacc8f2,0xffa2c2f1,0xff9abcef,0xff90b6ed,0xff6696e1,0xff1a59c8,0xf2024ab7,0xc54777b3, 0x3b497db7,0xf85e90c8,0xffb4cdf3,0xffadc9f2,0xffa5c4f1,0xffd8ebfa,0xffe9f8fd,0xffe7f7fd,0xffc1dbf7,0xff3e7be1,0xff115bdc,0xff0251dc,0xff0f5bd3,0x3c316ec2, 0x1f4680c1,0xfa5d90cd,0xff99bcef,0xff80abed,0xff5089e8,0xffc5def9,0xfff2ffff,0xfff2ffff,0xffb6d6fb,0xff005aef,0xff015df2,0xff015ff4,0xff0e64e1,0x201365da, 0x1f3d7abf,0xfa4d86cb,0xff639aef,0xff1f70f1,0xff025ff3,0xffb6d7fc,0xfff2ffff,0xfff2ffff,0xffb7dafe,0xff066bfc,0xff096dfd,0xff0b6ffe,0xff126ce5,0x20146add, 0x1f3274bf,0xfa3278cd,0xff237af8,0xff096dfd,0xff0b6ffe,0xffb8dbff,0xfff2ffff,0xfff2ffff,0xffbcdeff,0xff197cff,0xff1d7fff,0xff2082ff,0xff1b75e4,0x201970dc, 0x1f2672cc,0xfb2374d9,0xff1a7dff,0xff1c7fff,0xff2082ff,0xffbee0ff,0xfff2ffff,0xfff2ffff,0xffc2e3ff,0xff3291ff,0xff3694ff,0xff3a97ff,0xff287fe4,0x202177db, 0x20287cdf,0xfd2a81e7,0xff3291ff,0xff3694ff,0xff3997ff,0xffc4e5ff,0xfff2ffff,0xfff2ffff,0xffc9e9ff,0xff4ea8ff,0xff52aaff,0xff56adff,0xff378be3,0x202c7fda, 0x1f267ad1,0xf92a7fd7,0xfa388fe7,0xfb3b91e8,0xfe3e93ea,0xff60a6eb,0xff6cadeb,0xff6daeeb,0xff64aaea,0xff499cea,0xff4b9eea,0xff4ea0ea,0xf93080ce,0x1f2675c4, 0x42477cb,0x1f297cd0,0x1f378cdf,0x1f3a8ee1,0x203c8fe3,0x203e91e4,0x203f92e4,0x204093e4,0x204294e3,0x204495e3,0x204697e3,0x204899e3,0x1f2c7bc6,0x42271bc }; -static const QRgb install_data[] = { - 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0, - 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0, - 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0, - 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000, - 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000, - 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00, - 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00, - 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0, - 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0, - 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0, - 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0, - 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 +static const QRgb h_src_data[] = { + 0x0,0x0,0x14d3d3d4,0x2fcdcdd1,0x2fc8c8cf,0x2fc4c4cc,0x2fbfbfc9,0x2fbabac7,0x17adadbc,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x7cd6d6d9,0xfff4f4f5,0xfff5f5f6,0xfff3f3f5,0xffeeeef2,0xffe6e6ed,0xe3bebecd,0x289393a5,0x0,0x0,0x0,0x0, + 0x0,0x0,0x7dd2d2d7,0xfffdfdfe,0xfff3f3f3,0xfffdfdfe,0xfff0f0f2,0xffececf1,0xffdedee7,0xddc9c9d7,0x2489899f,0x0,0x0,0x0, + 0x0,0x0,0x7dcdcdd5,0xfffdfdfe,0xfff4f4f4,0xfffefefe,0xfff4f4f5,0xfff1f1f6,0xffdddde6,0xfff3f3f7,0xdcbabace,0x207b7b94,0x0,0x0, + 0x0,0x0,0x7dc8c8d2,0xfffdfdfd,0xffebebeb,0xfffcfcfd,0xffebebec,0xffececf1,0xffd3d3e0,0xffc9c9da,0xffc6c6d8,0x8d8d8da6,0x0,0x0, + 0x0,0x0,0x7dc3c3d0,0xfffdfdfd,0xfffcfcfc,0xffffffff,0xfff6f6f8,0xfff2f2f7,0xffe8e8f1,0xffe0e0ec,0xffdfdfec,0x938e8ea6,0x0,0x0, + 0x0,0x0,0x7dbebecd,0xfffdfdfd,0xffffffff,0xffffffff,0xffe8e8ea,0xffeaeaf0,0xffd9d9e1,0xffe0e0e9,0xffe1e1ed,0x938a8aa5,0x0,0x0, + 0x0,0x0,0x7db9b9cb,0xfffcfcfd,0xffececee,0xfff0f0f6,0xffe3e3e9,0xffe6e6ee,0xffe9e9f2,0xffe6e6f0,0xffe3e3ef,0x938888a3,0x0,0x0, + 0x0,0x0,0x7db4b4c8,0xfff8f8fa,0xffefeff1,0xfff3f3f7,0xffebebf0,0xffededf3,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0x938585a2,0x0,0x0, + 0x0,0x0,0x7db5b5ca,0xffefe4d7,0xffe5cfb5,0xffdcc09d,0xffdcc09d,0xffcca26e,0xffc5965c,0xffc18e50,0xffcba77d,0x938282a1,0x0,0x0, + 0x0,0x0,0x7db2b2c9,0xffeddfcd,0xffe0c5a3,0xffd6b184,0xffe1c7a6,0xffdbbb94,0xffbc8139,0xffb47220,0xffc3945b,0x937f7f9f,0x0,0x0, + 0x0,0x0,0x7daeaec6,0xffede0cf,0xffe1c6a5,0xffd8b58b,0xffddc09b,0xffd3ad7e,0xffc08945,0xffb77829,0xffc69862,0x937d7d9e,0x0,0x0, + 0x0,0x0,0x7ca5a5c1,0xffe5dfdd,0xffdfd3cb,0xffddcfc6,0xffd7c7bb,0xffd1bdad,0xffcab19a,0xffc5a991,0xffcab6a9,0x92747499,0x0,0x0, + 0x0,0x0,0x1a6d6d8a,0x455b5b76,0x45585873,0x45545472,0x45515170,0x454d4d6e,0x454a4a6d,0x4547476b,0x45434369,0x2831314e,0x0,0x0 }; static const QRgb installed_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x10000ff,0xd0303ff,0x370606ff,0x760808ff,0xa30808ff,0xa90505ff,0x820202ff,0x3e0101ff,0xf0000ff,0x10000ff,0x0,0x0, 0x0,0x10000ff,0x1a0505ff,0x6b0f0fff,0xb72121ff,0xd73030ff,0xe52e2eff,0xee1e1eff,0xf10f0fff,0xde0505ff,0x830101ff,0x1d0000ff,0x10000ff,0x0, 0x0,0xe0303ff,0x6c0f0fff,0xbe3434ff,0xdd6666ff,0xf07575ff,0xf96161ff,0xfb3e3eff,0xfb2323ff,0xfa0f0fff,0xee0404ff,0x820000ff,0xe0000ff,0x0, 0x0,0x390606ff,0xb82121ff,0xdc6868ff,0xf4a7a7ff,0xfdaeaeff,0xfe8383ff,0xff4f4fff,0xfe2e2eff,0xfe1717ff,0xfd0808ff,0xe30101ff,0x3a0000ff,0x0, 0x0,0x7b0707ff,0xd63131ff,0xf07878ff,0xfdb1b1ff,0xffb6b6ff,0xff8888ff,0xff5252ff,0xff3030ff,0xff1818ff,0xfe0909ff,0xfd0101ff,0x7f0000ff,0x0, 0x0,0xa90808ff,0xe53131ff,0xf96565ff,0xfe8686ff,0xff8a8aff,0xff6e6eff,0xff4646ff,0xff2929ff,0xff1515ff,0xff0808ff,0xfe0101ff,0xac0000ff,0x0, 0x0,0xb20505ff,0xed1f1fff,0xfb4040ff,0xff5252ff,0xff5454ff,0xff4747ff,0xff2f2fff,0xff1d1dff,0xff0e0eff,0xff0505ff,0xff0101ff,0xad0000ff,0x0, 0x0,0x8e0202ff,0xf10f0fff,0xfa2424ff,0xfe3030ff,0xff3131ff,0xff2a2aff,0xff1d1dff,0xff1111ff,0xff0808ff,0xff0202ff,0xfe0000ff,0x7f0000ff,0x0, 0x0,0x470101ff,0xe40505ff,0xf90f0fff,0xfd1717ff,0xff1919ff,0xff1616ff,0xff0f0fff,0xff0909ff,0xff0303ff,0xff0000ff,0xe50000ff,0x390000ff,0x0, 0x0,0x120000ff,0x900101ff,0xf20404ff,0xfd0808ff,0xfe0909ff,0xfe0808ff,0xff0606ff,0xff0202ff,0xff0000ff,0xf30000ff,0x830000ff,0xe0000ff,0x0, 0x0,0x20000ff,0x240000ff,0x910000ff,0xeb0101ff,0xfe0101ff,0xfe0101ff,0xff0101ff,0xff0000ff,0xe80000ff,0x870000ff,0x1d0000ff,0x10000ff,0x0, 0x0,0x0,0x20000ff,0x120000ff,0x490000ff,0x950000ff,0xc00000ff,0xbf0000ff,0x8e0000ff,0x410000ff,0xf0000ff,0x10000ff,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb install_data[] = { + 0x0,0x0,0x0,0x2fcac00,0x49feb50d,0xd2ffd436,0x68e2a50e,0x4f7a500,0x8afabb25,0x3edd9508,0x0,0x0,0x0,0x0, + 0x0,0xfdad00,0x31feb007,0xb9ffd147,0xfdfff275,0xffffff72,0xe6f8d235,0xa0f5be35,0xfffff883,0xf3f9dc4d,0x53d6890a,0x301b00,0x0,0x0, + 0x2f3a600,0x97fec53f,0xfcffec94,0xffffffa4,0xffffff87,0xffffe951,0xfffed131,0xfffbc232,0xfffef974,0xfffff55e,0xfaf7cb35,0x6bd27f08,0x1522b00,0x0, + 0x2e09900,0x97f9c240,0xfffffdba,0xfffff082,0xffffcf34,0xffffd534,0xffffed52,0xfffec724,0xfff6bd27,0xfffce047,0xffffd636,0xfdf8b418,0x77c56901,0x1000000, + 0xa3f6ab09,0xbcfac646,0xffffc635,0xffffc01a,0xffffd332,0xffffe649,0xfffff761,0xffffd939,0xffffdd40,0xfff1b92b,0xfff9bd21,0xf1e6960c,0x517a3c00,0x1000000, + 0x12bb8001,0xbcf6c643,0xffffea66,0xfffdc421,0xffffde40,0xfffff057,0xfffffe79,0xffffe94e,0xffffef55,0xfffcea56,0xffe3981c,0xd3cd790b,0x84c75e02,0x279c3d00, + 0x0,0xdb57b00,0xe6f9bb1a,0xfffdd73b,0xfff8c52d,0xfffff865,0xfff8d75b,0xfff9d943,0xfff1cb44,0xffefc33b,0xfff9d03a,0xe7d78b14,0x76904202,0x11260f00, + 0x0,0x2e89700,0xdcfab310,0xfff8b417,0xfff5ac13,0xffea960a,0xffe88f05,0xffecb64c,0xfffaee74,0xffecbc39,0xfada7f0c,0x36512100,0x1000000,0x0, + 0x0,0x2e28d00,0xdcf8bc20,0xffffd635,0xfffed334,0xfff8c631,0xfff2b630,0xffefb22e,0xffedad28,0xfffbc325,0xfae89e19,0x295c2200,0x0,0x0, + 0x0,0x1d88300,0xcdf0b124,0xffffe84e,0xffffeb50,0xffffec54,0xffffe552,0xffffe043,0xffffdf41,0xffffdd3f,0xfae7aa2a,0x295b2200,0x0,0x0, + 0x0,0x0,0x25bc6c02,0xd6e7ac2f,0xfffef667,0xfffffd70,0xfffff668,0xfffff35b,0xfffff158,0xfef5cf47,0xd0c1741d,0x1b3e1700,0x0,0x0, + 0x0,0x0,0x0,0x1aa65600,0xc9dc952f,0xfffdf18f,0xfffffe86,0xfff9e161,0xe1d08d2d,0x70883a06,0x11140700,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x10924200,0xb9cf7a2f,0xedd99445,0x8695420b,0x1b2c1000,0x1000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xa782e00,0x214b1c00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 +}; + static const QRgb italic_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x54000000,0x60000000,0x60000000,0x3c000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x70000000,0xff000000,0xdf000000,0x50000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0xa7000000,0xff000000,0xbf000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xe3000000,0x18000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0xdf000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x30000000,0xe7000000,0xdf000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0xbf000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x64000000,0xe7000000,0xff000000,0x8b000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x38000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb konsole_data[] = { 0x24dadae9,0xf5ddddeb,0xe6d8d8e8,0xe6cfcee3,0xe6c9c8e0,0xe6c2c0dc,0xe6b8b7d7,0xe6aeaed4,0xe6a4a5d0,0xe69b9dcc,0xed9c9dce,0xa08586c6,0x1b6263b6,0x0, 0x49e3e3f3,0xfff3f7fc,0xffd4e2f3,0xffdde4f2,0xffdce6f4,0xffdbe6f6,0xffd7e5f8,0xffd2e5fa,0xffcde3fa,0xffc6def7,0xffe0ebf8,0xe0a9aad3,0x33686ab2,0x0, 0x61e3e3fd,0xffcee1f6,0xff71a9e4,0xffb6d8f4,0xffa0d5f4,0xff8dd0f6,0xff76c2f6,0xff5db1f5,0xff429ef3,0xff2181e4,0xff83b1e7,0xebaeafdb,0x387778c3,0x0, 0x77d9d9f9,0xffcfe3f7,0xff83b5e7,0xffcddbef,0xffb9e3f6,0xfface5ff,0xff87d1ff,0xff61b9ff,0xff41a4fe,0xff1c7ce9,0xff81ace4,0xf8b3b4e2,0x3d8385d0,0x0, 0x91d6d6f7,0xffd0e4f7,0xff7eb9ea,0xffc6e8f6,0xffa7dffa,0xff80c4f3,0xff99a075,0xff938f61,0xff6a7770,0xff275498,0xff80a3df,0xfeb7bae8,0x3f8c90da,0x0, 0xaed5d5f7,0xffd2e7f8,0xff78bdee,0xff94d3f7,0xff4ca7f3,0xff7e9282,0xffe3bf37,0xffefdeb5,0xffdabf96,0xff6d5a50,0xff809ddf,0xffbcc0ee,0x40949ae5,0x0, 0xc7d3d3f7,0xffcee5f8,0xff3c97e5,0xff3396ef,0xff198afa,0xff517e9a,0xffecbc37,0xfffffae2,0xffe9d7bf,0xff694e4e,0xff7291e8,0xffbac5fa,0x409fa7f5,0x0, 0xe1d5d5f6,0xffc7e0f7,0xff2289e7,0xff68949f,0xffd29e2d,0xffeeab29,0xfffdb818,0xfffffae2,0xffeddfc2,0xffb07818,0xff985e0a,0xff937878,0x507b76a0,0x308091f, 0xf3d5d4f7,0xffdae9f8,0xff61a5ea,0xff99a396,0xfff0cf81,0xfffef9e6,0xfffcb91f,0xfffff4c9,0xfff0e7b7,0xffd9c070,0xffd9b046,0xffa98f81,0x6471739e,0x61b1d4a, 0xd2cbccf6,0xe6d4d4e8,0xede2d5c8,0xfff6d395,0xffeeb034,0xfffae7b8,0xfff9b625,0xfffee793,0xffeadba8,0xffd6be75,0xffbc9946,0xff9a836b,0x886c5b5f,0xc391f27, 0x43a2a3e7,0x607575b0,0x9dc5943a,0xfefbc235,0xfff7d171,0xfff4d381,0xfff8c344,0xfffbdb70,0xffdfc890,0xffdcc280,0xffdab659,0xffc08c25,0xcf723b02,0x18582400, 0x0,0x2f3a200,0x28febe00,0x98fec940,0xedfad06c,0xfff2c965,0xfff3ce6e,0xfff7cd57,0xffd9c28c,0xffdec688,0xffc4a057,0xbea4731b,0x6f703d03,0xc572600, 0x0,0x0,0x0,0x17fca300,0xb0fcb20a,0xfff8b41b,0xffe4ae3f,0xffe7b03e,0xffc99f56,0xffc99943,0xe4a26b1d,0x5a5c2700,0xa1e0a00,0x1000000, 0x0,0x0,0x0,0x0,0x15ffb200,0x47a56e00,0x4e916312,0x568e6015,0x4e79531c,0x51724912,0x44573205,0x132a1100,0x0,0x0 }; static const QRgb language_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7216ac7,0x2d2068c6,0x481d64c5,0x5d1a5ebf,0x4d1759bb,0x311454b7,0xd1048a4,0x0,0x0,0x0,0x0, 0x0,0x82571cc,0x5e2773ce,0xca4684cd,0xf15078aa,0xfe89acd4,0xffafcdef,0xff7a9cc4,0xf473a0d7,0xd44c84d3,0x74154eb1,0xf083488,0x0,0x0, 0xe2773ce,0xab3983d8,0xfc8ac4f3,0xff7d8388,0xffe397a5,0xffa62927,0xffb6647a,0xffb3b3b4,0xffa4b7c0,0xffc4ecfe,0xfe8ec4f1,0xc4275fbc,0x20052e81,0x0, 0x8d317cd5,0xff7cbcf6,0xffb6eaff,0xff717676,0xffee9492,0xffb41815,0xffb90d0b,0xffdb9798,0xff666e72,0xffabd0df,0xffb2e9ff,0xff7fbdf5,0xb01a4eb0,0xd001442, 0xed4990e2,0xff8dccff,0xffb0e8ff,0xff545959,0xff6e6b6a,0xff593932,0xff3a150e,0xff554e47,0xff282d25,0xff52656e,0xfface6ff,0xff8eccff,0xf53f79d4,0x32001b58, 0xfc5297e5,0xff8ac9ff,0xff9fdcff,0xff363d3c,0xff6e4749,0xffd00303,0xffab0e01,0xff7c1a14,0xffad130f,0xff733036,0xff99d5f8,0xff85c4ff,0xfd4e89de,0x40001850, 0xbd3b80d3,0xff8dccfd,0xff9ddbff,0xff7aa2b4,0xff6f5956,0xffe28b00,0xffeed004,0xffb45e0f,0xfffa7900,0xffa96a30,0xff92cff7,0xff88c7fd,0xda3064bb,0x2c000f31, 0x3b1e5db3,0xec5596db,0xff9edbfc,0xffb5e8fd,0xff6b645a,0xffb18e4f,0xff998c6a,0xff967b2d,0xffb5ae2f,0xff98a082,0xff99d6fa,0xf25088d3,0x73062871,0xd000000, 0x20b2d5d,0x43174e9e,0xc8427cc6,0xfe88b9e7,0xff8a9eab,0xffc9d8e1,0xffcfdce4,0xffb9ccd6,0xffadccdf,0xff81b3e2,0xdb3a6cba,0x6d05256a,0x1900050f,0x1000000, 0x0,0x1000000,0x11071e44,0x911a4fa7,0xffb2d1ef,0xfdb3caea,0xdc5e7fbf,0xc64166b0,0xa61a4295,0x6e082970,0x2c000a23,0xc000000,0x1000000,0x0, 0x0,0x0,0x10b45b0,0xbe2a61bd,0xe85c87c8,0x890e3683,0x29010716,0x13000000,0xe000000,0x6000000,0x1000000,0x0,0x0,0x0, 0x0,0x0,0x170a41a9,0x9e0a3d9d,0x48041c4e,0x12000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x1052259,0xc010a1b,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb Language_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x411d62c2,0x431b5ebb,0x441859b7, + 0x441858b5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x31216bc7,0x822069c7,0xc12068c6,0xf01f67c6, + 0xff1d65c6,0xff1c63c4,0xff1b60c2,0xff195ec1,0xff185cc0,0xff175abe,0xf01658bc,0xc31453b7,0x87124eb0,0x370f46a1,0x4000000,0x1000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x61246fcb,0xe0236ecb, + 0xff216cca,0xff387fda,0xff609de7,0xff85b7f1,0xffaad3ff,0xffacd4ff,0xffc4e2ff,0xffc3e2ff,0xffaad3ff,0xffa7d2ff,0xff80b2ee,0xff5993e1,0xff2e6ecf,0xff114fb7, + 0xe20f4cb4,0x6b0d42a2,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x512571cc,0xe02471cc,0xff2c77d2,0xff68a6eb,0xff7c9ebc,0xff737b7f,0xff505052,0xff2c2c2c,0xffb6bec2,0xffe6eef3,0xffe6edf3,0xffe4ecf2,0xffa9b1b7,0xff4f5355, + 0xff6e7a7f,0xffd7f3ff,0xffc9edff,0xff9fd0fa,0xff5d98e3,0xff1855bc,0xe30c45ae,0x5c093b99,0x7000000,0x2000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x902572cd,0xff2471cd,0xff579be6,0xffacddff,0xff161616,0xffa8a8a8,0xffffffff,0xffc8b8b9,0xffef0030,0xff503020,0xff484849, + 0xff606060,0xff808080,0xffb0b0b0,0xff989899,0xff4d5254,0xffd9f4ff,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffa5dbff,0xff4883d8,0xff0942af,0x9d073a9d,0xd000000, + 0x2000000,0x0,0x0,0x0,0x0,0x0,0xa02672cd,0xff2976d1,0xff72b2f6,0xffb4e7ff,0xffc0edff,0xff404040,0xffc8c8c9,0xffffffff, + 0xffe06090,0xffff0000,0xff923822,0xffff0000,0xffef3060,0xffef97da,0xffffffff,0xffc8c8c9,0xff404040,0xffc8dbe5,0xffd1f2ff,0xffc9efff,0xffc1edff,0xffb9ebff, + 0xffb1e8ff,0xff70adf0,0xff0d45b1,0xae05379b,0x10000000,0x3000000,0x0,0x0,0x0,0x812673cd,0xff2a76d1,0xff6aacf6,0xffabe4ff,0xffb7eaff, + 0xffbfecff,0xff363636,0xffa0a0a0,0xffffffff,0xffff6060,0xffff0000,0xffef0000,0xffbc220c,0xffff0000,0xffff0000,0xffffcad5,0xffe0e0e0,0xff8c8c8c,0xff59626a, + 0xffcbecfa,0xffc8efff,0xffc0edff,0xffb8eaff,0xffb0e8ff,0xffa5e2ff,0xff5f9eef,0xff0b41ae,0x87022f8c,0xf000000,0x2000000,0x0,0x21256fc9,0xff2572ce, + 0xff5fa3f3,0xff8bcaff,0xffade7ff,0xffb5eaff,0xffbdecff,0xff222222,0xffa0a0a0,0xffffffff,0xffff8a76,0xffff0000,0xffd51616,0xff661616,0xff961616,0xffff0000, + 0xffff0000,0xffffffff,0xffa0a0a2,0xff3d4147,0xff56636d,0xffc5eeff,0xffbdecff,0xffb6eaff,0xffaee8ff,0xffa7e4ff,0xff89c8ff,0xff5290e9,0xff0236a6,0x3f011b54, + 0xa000000,0x1000000,0x912470cb,0xff3882da,0xff76b7ff,0xff90cfff,0xffabe6ff,0xffb2e9ff,0xffbaebff,0xff0c1c0c,0xff989899,0xffffffff,0xff806070,0xff384848, + 0xff585858,0xff262616,0xff000000,0xff6c3c3c,0xff800000,0xffb0b0b0,0xff646455,0xff223232,0xff101000,0xff60767f,0xffbbebff,0xffb3e9ff,0xfface7ff,0xffa6e3ff, + 0xff8bcaff,0xff70b1ff,0xff1c53bc,0xa8002b8c,0x18000000,0x4000000,0xe02470cc,0xff5da1ef,0xff7bbbff,0xff8dccff,0xffa8e5ff,0xffafe8ff,0xffb6eaff,0xff000000, + 0xff7e7e7f,0xffe0e0e0,0xff000000,0xff324222,0xff585858,0xff3c3c2c,0xff000000,0xff202010,0xff324232,0xff585858,0xff4e4e4e,0xff102010,0xff000000,0xff000000, + 0xffb6eaff,0xffb0e8ff,0xffa9e5ff,0xffa4e1ff,0xff8ac9ff,0xff74b5ff,0xff4d8ae3,0xe800309e,0x28000000,0xa000000,0xff236fcc,0xff70b2f9,0xff7fbfff,0xff84c3ff, + 0xffa0deff,0xffabe6ff,0xffb1e8ff,0xff000000,0xff747475,0xffe0e0e0,0xff000000,0xff201010,0xff8c2c2c,0xffd00000,0xff900000,0xff3c1c0c,0xff183828,0xff525242, + 0xff585858,0xff262616,0xff000000,0xff100000,0xffb2e9ff,0xffabe7ff,0xffa6e3ff,0xff9cdaff,0xff7fbfff,0xff78b9ff,0xff65a4f4,0xff0032a4,0x33000000,0x10000000, + 0xff226dcb,0xff7ebeff,0xff83c3ff,0xff88c7ff,0xff8ecdff,0xffa3e1ff,0xfface7ff,0xff000000,0xff586859,0xffc8c8c9,0xff100000,0xff900000,0xffef0000,0xffff0000, + 0xffb00000,0xff700000,0xff501000,0xff7c2c2c,0xff7c422c,0xff961616,0xffa00000,0xff800000,0xff56737f,0xffa7e4ff,0xff9fddff,0xff87c7ff,0xff81c1ff,0xff7cbcff, + 0xff77b7ff,0xff0032a4,0x38000000,0x12000000,0xf0216bc8,0xff6aacf1,0xff87c6ff,0xff8ccbff,0xff91cfff,0xff95d4ff,0xffa0ddff,0xff000000,0xff2c2c2c,0xff9aa6b2, + 0xff400000,0xffa00000,0xffe00000,0xffff0000,0xffe02000,0xffa02000,0xff5c0c0c,0xffd00000,0xffff0000,0xffff0000,0xffc00000,0xff800000,0xff53717f,0xff9cdaff, + 0xff8fceff,0xff8ac9ff,0xff85c4ff,0xff7fbfff,0xff5c99e8,0xf40031a1,0x39000000,0x13000000,0xb41f66c3,0xff4c91df,0xff8acaff,0xff90ceff,0xff95d3ff,0xff9ad8ff, + 0xff9edcff,0xff000000,0xffa9e5ff,0xffb7d1e6,0xff200000,0xff900000,0xffd04600,0xffffdf00,0xffffff00,0xffefb000,0xff763c16,0xffd02c00,0xffff0000,0xffff0000, + 0xffd03600,0xffb02c00,0xff4d6c7f,0xff97d6ff,0xff92d1ff,0xff8dccff,0xff88c7ff,0xff83c2ff,0xff3770cc,0xc7002c90,0x35000000,0x11000000,0x491b5aaf,0xff246bc9, + 0xff87c6fb,0xff93d2ff,0xff98d7ff,0xff9ddbff,0xffa2e0ff,0xff53717f,0xffade7ff,0xffb8d0e6,0xff000000,0xffdf6000,0xffffa000,0xffffff00,0xffffff00,0xffffc000, + 0xff9c4c0c,0xffd0b020,0xffffc000,0xffffc000,0xffffc000,0xffff8000,0xff4f6e7f,0xff9bd9ff,0xff96d4ff,0xff91cfff,0xff8bcaff,0xff7dbcf9,0xff083baa,0x74001c5b, + 0x2c000000,0xc000000,0x5000000,0xc61b60bd,0xff397dd2,0xff96d5ff,0xff9cdaff,0xffa1dfff,0xffa6e3ff,0xfface7ff,0xffb3e9ff,0xffb9d0e6,0xff000000,0xffff8000, + 0xffefb000,0xffa08600,0xff707020,0xffa6602c,0xff7c480c,0xffb09020,0xffffff00,0xffffff00,0xffffdf00,0xffef7600,0xff51707f,0xff9fdcff,0xff99d7ff,0xff94d2ff, + 0xff8ecdff,0xff2258bb,0xd2002d95,0x3d000000,0x1d000000,0x5000000,0x1000000,0x1d0f366c,0xf21a5ebf,0xff498bd8,0xff9fdcff,0xffa4e2ff,0xffaae6ff,0xffb2e9ff, + 0xffbaebff,0xffbbd0e5,0xff000000,0xffdf8000,0xff705030,0xffa4a7ac,0xffadb2b9,0xff705600,0xff564626,0xffefb000,0xffb09000,0xff808000,0xff806000,0xff4b5a40, + 0xffa7e4ff,0xffa2dfff,0xff9cdaff,0xff96d5ff,0xff366dc6,0xe900309d,0x51000a20,0x2c000000,0xe000000,0x1000000,0x0,0x4000000,0x4311438a,0xe61658b9, + 0xff3072c9,0xff95d2f7,0xffafe8ff,0xffb7eaff,0xffbfedff,0xffbad0e4,0xff000000,0xff505356,0xffbfc9d9,0xffbdc7d8,0xffbbc6d7,0xffa9afba,0xff7d838e,0xff565c66, + 0xff838c9b,0xffb1bdd2,0xff8fabc1,0xffb3e9ff,0xffabe6ff,0xffa4e2ff,0xff8bc7f4,0xff1d51b5,0xdd002f9a,0x6900174b,0x33000000,0x16000000,0x4000000,0x0, + 0x0,0x0,0x7000000,0x2809244c,0xbf1350ad,0xff1d5dbf,0xff629ddc,0xffb1e2fb,0xffc4eeff,0xffc8ebfa,0xff000000,0xffb9ced8,0xffbed0d8,0xffc1d0d8, + 0xffc2d0d8,0xffbfd0d8,0xffbbcfd8,0xffb6cdd8,0xffb0ccd8,0xffaac9d8,0xffacd4e4,0xffb7eaff,0xffa3dcf9,0xff538bd2,0xff0a3daa,0xc7002c90,0x50000a21,0x32000000, + 0x19000000,0x6000000,0x0,0x0,0x0,0x0,0x1000000,0x6000000,0x16000000,0x600d377c,0xce104aaa,0xff104eb6,0xff5489d1,0xffa0c7ec, + 0xffd9f4ff,0xffe1f6ff,0xffe9f9ff,0xffeefaff,0xfff0fbff,0xffecfaff,0xffe6f8ff,0xffdef5ff,0xffd5f3ff,0xffc0e4f9,0xff86b3e3,0xff4677c6,0xff0032a4,0xd2002d95, + 0x75001b59,0x3d000000,0x2b000000,0x15000000,0x6000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xe000000, + 0x1e000000,0x56082a65,0xda0d46aa,0xff3f72c5,0xffdcf5ff,0xffe5f8ff,0xffeefaff,0xffe7f0fa,0xff8ea8da,0xff7b9ad4,0xff7698d3,0xff3965bc,0xff2957b6,0xff0032a4, + 0xe900309d,0xbb002b8c,0x6800174c,0x3c000000,0x2f000000,0x1e000000,0xe000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x1000000,0x6000000,0xf000000,0xe30c47af,0xff89b2e2,0xffddf5ff,0xffe6f8ff,0xffa6bfe5,0xff1548b0,0xdd05379f,0xa4032c83, + 0xa2022b84,0xa1012983,0x71001c5d,0x5700123c,0x3b000000,0x34000000,0x29000000,0x1b000000,0xf000000,0x6000000,0x1000000,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x410c46af,0xff1751b6,0xffc6e7fa,0xffc0def5,0xff3e6dc1, + 0xf4063ca8,0x99042b7d,0x41000000,0x33000000,0x29000000,0x26000000,0x24000000,0x1e000000,0x17000000,0x11000000,0xb000000,0x5000000,0x1000000,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa10b45af, + 0xff5284ce,0xff6c99d6,0xff083fad,0xc7063697,0x5c02153c,0x38000000,0x24000000,0x13000000,0xb000000,0xa000000,0x8000000,0x5000000,0x2000000,0x1000000, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x100b45b0,0xff0a44b0,0xff154db3,0xe8083da6,0x8104266b,0x3e000000,0x2c000000,0x19000000,0xa000000,0x2000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x720a43ad,0xff0942af,0x9b073690,0x4d020d24,0x34000000,0x20000000,0xf000000,0x4000000, + 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15083385,0x35052869,0x2c000000,0x27000000, + 0x15000000,0x8000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x3000000,0xb000000,0x11000000,0xb000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x1000000,0x2000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0 +}; + static const QRgb left_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0, 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, 0x4000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x14000000,0x0,0x0,0x0,0x0, 0x18000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x78000000,0x0,0x0,0x0,0x0, 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 0x14000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x64000000,0x0,0x0,0x0,0x0, 0x8000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x28000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb library_data[] = { 0x0,0x0,0x0,0x1fcfcfd1,0xbbe2e2e4,0xbbe3e3e6,0xbbe0e0e4,0xbbdcdce2,0xbbd6d6df,0xb3c3c3d0,0x218f8f9e,0x0,0x0,0x0, 0x0,0x0,0x0,0x2dc8c8cd,0xfff6f6f7,0xffffffff,0xffffffff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xdccbcbd8,0x1f828294,0x0,0x0, 0x0,0x0,0x0,0x2dc3c3ca,0xfff5f5f6,0xffeef5fe,0xfffefeff,0xfffcfcfd,0xfff5f5f9,0xffd9d9e4,0xfffafafc,0xd8c4c4d4,0x1c78788e,0x0, 0x0,0x0,0x0,0x3193aed0,0xff7dd2f5,0xff10d2fc,0xff6bcdf8,0xfff9f9fd,0xfff5f5f9,0xffd4d4e1,0xffd5d5e0,0xffcdcddc,0xcea0a0bb,0x709090b, 0x0,0x0,0x0,0x9e1bbff9,0xff05caff,0xff00c7ff,0xff01c6ff,0xff68baf2,0xfff4f4f8,0xffeeeef5,0xffe5e5ef,0xffdadbe8,0xf2c1c1d4,0x1108080b, 0x0,0x581e00,0x42fb761c,0xdd51b3c3,0xff06d2ff,0xff0ab0ff,0xff04adff,0xff32aaf0,0xfff1f1f6,0xffececf4,0xffe3e3ef,0xffdbdce9,0xf2bebfd3,0x1108080a, 0x0,0x57fb862f,0xfeff9033,0xff839291,0xff01c1ff,0xff0bb1ff,0xff00b3ff,0xff30aaed,0xffeaeaf1,0xffe8e8f2,0xffe6e6f0,0xffdadbe8,0xf2bcbdd2,0x1108080a, 0x0,0x64f6812f,0xffff8931,0xfffd6f1f,0xff73869c,0xff0ea7f9,0xff01b49a,0xff05de22,0xff97e1a0,0xffebebf3,0xffe8e8f2,0xffdfe0eb,0xf2bdbed3,0x1107070a, 0x0,0x53e4641e,0xfffd7021,0xffff7427,0xffe27d2a,0xff0daf32,0xff02ce0d,0xff00cd0c,0xff07d011,0xffb8d9c1,0xffebebf3,0xffdcdde9,0xf2babbd1,0x1107070a, 0x0,0x2160600,0x7bca4610,0xfdf95415,0xffcb6029,0xff02c110,0xff0fca1a,0xff04b015,0xff00da09,0xffa6d3ae,0xffededf5,0xffe2e3ed,0xf2bbbcd2,0x1107070a, 0x0,0x0,0x1000000,0x66884643,0xffd3d9d9,0xff32d43c,0xff0fe813,0xff00c80c,0xff04e707,0xffb2d4b9,0xfff0f0f6,0xffe3e5ef,0xf2babbd2,0x11060609, 0x0,0x0,0x0,0x2d8f8fb0,0xffebebf2,0xffeef8ef,0xff4bde50,0xff44c74c,0xffbed8c4,0xfff0f0f5,0xfff2f2f8,0xffdfe1ec,0xf2b6b7d0,0x11060609, 0x0,0x0,0x0,0x278888ab,0xe7c1c1d3,0xe8cacad9,0xe8c5c6d5,0xe8bebed0,0xe8c1c1d4,0xe8bebed3,0xe8bbbbd1,0xe8b3b3cc,0xdb9494b7,0x10050508, 0x0,0x0,0x0,0x1000000,0xb000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0xd000000,0x2000000 }; -static const QRgb locked_data[] = { - 0x0,0x0,0x80d9d9db,0xbce4e4e6,0xbce2e2e5,0xbcdfdfe4,0xbcdcdce2,0xbcd7d7df,0xbcd1d1db,0x81aeaebe,0x5323237,0x0,0x0,0x0, - 0x0,0x0,0xb2dedee1,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffeeeef4,0xffd2d2de,0xa3b1b1c3,0x843434c,0x0,0x0, - 0x0,0x0,0xb2dbdbe0,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffdfdfe8,0xffededf3,0xb1afafc3,0xd595969,0x0, - 0x0,0x0,0xb2d8d8de,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffc9c9d8,0xffdbdbe6,0xffcdcddd,0xbf9898b5,0xb373743, - 0x0,0x0,0xb2d4d4dc,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xfff1f1f6,0xffe5e5ed,0xffdcdce8,0xffd6d6e4,0xfcc2c2d6,0x26383845, - 0x0,0x1797994,0xbec1c1cf,0xffe4e4ea,0xffe1e1e7,0xffededf1,0xfffdfdfe,0xfff7f7fa,0xfff1f1f7,0xffe9e9f2,0xffe2e2ee,0xffd4d6e4,0xfcc3c4d8,0x27343442, - 0x0,0x5ba3a3b7,0xffe2e2e7,0xffd6d6dd,0xffcbcbd3,0xffcfcfd6,0xfff3f3f7,0xfff3f3f8,0xffececf4,0xffe6e6f0,0xffe4e4ef,0xffdadbe8,0xfcc3c3d8,0x27323241, - 0x0,0x9bbbbbc8,0xffc7c7d0,0xffffffff,0xffeaeaef,0xffbdbdc3,0xffd0d0dc,0xffededf4,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0xffd9dbe8,0xfcc2c2d8,0x27303040, - 0x2ace9235,0xd0d5bf7e,0xffd7c68e,0xfff4e3a7,0xffead9a0,0xffd1c087,0xffd9c498,0xffefeef4,0xffededf4,0xffebebf3,0xffe9e9f2,0xffd8dae7,0xfcc1c2d7,0x272e2e3f, - 0x78bc9047,0xffffe83c,0xffffe836,0xffffe836,0xffffe836,0xffffe534,0xffe6ae26,0xffece8e9,0xfff0f0f6,0xffededf5,0xffebebf3,0xffdedfeb,0xfcc1c2d8,0x272c2c3e, - 0x789f7342,0xffffc728,0xffffc624,0xffffc422,0xffffbe1f,0xffffa914,0xffdb8715,0xffece8eb,0xfff2f2f7,0xfff0f0f6,0xffeeeef5,0xffd7d9e7,0xfcbfc0d7,0x272a2a3d, - 0x779b6b3e,0xffffb922,0xffffb118,0xffffa713,0xffff9d0e,0xffff9409,0xffd97a0f,0xffeeebec,0xfff4f4f9,0xfff2f2f7,0xfff0f0f6,0xffe0e2ed,0xfcbcbdd5,0x2728283c, - 0x1d764627,0x69976128,0xd2a98c77,0xffd5bca2,0xffd5bba2,0xffd5b9a1,0xffd4beae,0xfff8f8fb,0xfff7f7fa,0xfff5f5f9,0xfff2f2f8,0xffdadcea,0xfcb9bad4,0x2726263b, - 0x0,0x0,0x6e9292af,0xa8a6a6b9,0xa8a4a4b8,0xa8a1a1b7,0xa89e9eb6,0xa89b9bb4,0xa89898b2,0xa89696b1,0xa89393af,0xa89090ae,0xa67a7aa0,0x1b1a1a2a -}; - static const QRgb lockedfolder_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x121760ca,0xa1459c2,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0xbadb7db,0x11abb7de,0x0,0x262376d8,0x904f8cda,0xd15e95df,0x791656ba,0x0,0x0,0x0, 0x0,0x0,0x0,0xea4acc6,0xc4c3c8db,0xf3d6dae9,0xa3adbadc,0xe66ba4e3,0xb65c9fe8,0xac0d6fe2,0xc41055be,0xb052564,0x0,0x0, 0x0,0x0,0xcadb3c5,0xbfc6cad9,0xfff1f1f6,0xffe7e9f3,0xffa4c3e9,0xfe8cbaee,0xee65a5f0,0xcd2578e2,0xcd1056b8,0x570539a1,0x0,0x0, 0x0,0xab6b9c5,0xbac9ccd7,0xffedf1f7,0xffa9ccee,0xff98c4ed,0xffb2d6f7,0xff91c3f7,0xff77b2f8,0xff5996e4,0xe72462b8,0xab02399f,0x2000c27,0x0, 0x9d4d7dc,0xb2d1d2d9,0xffcae1f5,0xffa7cff3,0xffddf2fa,0xffc7e7fa,0xffaad4f9,0xff8cc0f6,0xff6aa2e9,0xff3c78ca,0xd0084ba0,0xd2003c95,0x2e002a8e,0x0, 0xa6d7d7d9,0xfff4f4f4,0xffe0e7ed,0xffd2dee7,0xffdbf0f5,0xffc3e5fa,0xffa5d0f8,0xff7bade9,0xff568dd5,0xff2c70c3,0xf81757aa,0xd2154b95,0x901f45a4,0x0, 0x64c8c9cb,0xf5eaeaea,0xfddcdde0,0xffc5d2dd,0xffcbd3d5,0xffbfe2f9,0xff95c2f0,0xff6e9fdf,0xff3c7bc9,0xff3b7ac4,0xff7f9ec9,0xffb6b8cc,0xed6c7cb8,0x13002275, 0x57ebebeb,0xeaabc9e2,0xfdaecde6,0xff93b4d8,0xffacb8c4,0xffb4d8f3,0xff88b5e8,0xff6093d3,0xff99b8de,0xffd1d4e1,0xffcbcbd8,0xffbfbfd0,0xff8b93ba,0x5d032d97, 0x89e8cfa2,0xe4b9bfb1,0xfed8d7bf,0xffd1d3bc,0xffbeb7a4,0xffa2b7c7,0xffbdd3ee,0xffeff2f7,0xffe9e9ef,0xffdddde6,0xffbabcd1,0xed5a6fb2,0x860e3292,0x21000d2b, 0xf8ffdb8b,0xffffe193,0xffaa945f,0xffddae5d,0xfffec15a,0xffe6bb7e,0xffffffff,0xfffbfbfc,0xffebecf2,0xf68595c9,0x9b1e409e,0x30001547,0xa000000,0x0, 0xf8fed989,0xffffd883,0xff94753e,0xffd4953c,0xffeb9f33,0xffdbab6f,0xffffffff,0xfcafc0e5,0xaf3b5db2,0x3e001a5d,0xe000000,0x0,0x0,0x0, 0xf8f9c871,0xfff6b952,0xff835c26,0xffc17c28,0xffdc8c23,0xfba18161,0xc2537cc6,0x4d052c77,0x12000103,0x0,0x0,0x0,0x0,0x0, 0xaaedad4f,0xc7e79e36,0xc7be7b25,0xc7ca8026,0xc7c87d25,0x71b1702c,0x14010409,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb locked_data[] = { + 0x0,0x0,0x80d9d9db,0xbce4e4e6,0xbce2e2e5,0xbcdfdfe4,0xbcdcdce2,0xbcd7d7df,0xbcd1d1db,0x81aeaebe,0x5323237,0x0,0x0,0x0, + 0x0,0x0,0xb2dedee1,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffeeeef4,0xffd2d2de,0xa3b1b1c3,0x843434c,0x0,0x0, + 0x0,0x0,0xb2dbdbe0,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffdfdfe8,0xffededf3,0xb1afafc3,0xd595969,0x0, + 0x0,0x0,0xb2d8d8de,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xffededf4,0xffc9c9d8,0xffdbdbe6,0xffcdcddd,0xbf9898b5,0xb373743, + 0x0,0x0,0xb2d4d4dc,0xffffffff,0xffffffff,0xffffffff,0xfffdfdfe,0xfff7f7fa,0xfff1f1f6,0xffe5e5ed,0xffdcdce8,0xffd6d6e4,0xfcc2c2d6,0x26383845, + 0x0,0x1797994,0xbec1c1cf,0xffe4e4ea,0xffe1e1e7,0xffededf1,0xfffdfdfe,0xfff7f7fa,0xfff1f1f7,0xffe9e9f2,0xffe2e2ee,0xffd4d6e4,0xfcc3c4d8,0x27343442, + 0x0,0x5ba3a3b7,0xffe2e2e7,0xffd6d6dd,0xffcbcbd3,0xffcfcfd6,0xfff3f3f7,0xfff3f3f8,0xffececf4,0xffe6e6f0,0xffe4e4ef,0xffdadbe8,0xfcc3c3d8,0x27323241, + 0x0,0x9bbbbbc8,0xffc7c7d0,0xffffffff,0xffeaeaef,0xffbdbdc3,0xffd0d0dc,0xffededf4,0xffebebf3,0xffe9e9f2,0xffe6e6f0,0xffd9dbe8,0xfcc2c2d8,0x27303040, + 0x2ace9235,0xd0d5bf7e,0xffd7c68e,0xfff4e3a7,0xffead9a0,0xffd1c087,0xffd9c498,0xffefeef4,0xffededf4,0xffebebf3,0xffe9e9f2,0xffd8dae7,0xfcc1c2d7,0x272e2e3f, + 0x78bc9047,0xffffe83c,0xffffe836,0xffffe836,0xffffe836,0xffffe534,0xffe6ae26,0xffece8e9,0xfff0f0f6,0xffededf5,0xffebebf3,0xffdedfeb,0xfcc1c2d8,0x272c2c3e, + 0x789f7342,0xffffc728,0xffffc624,0xffffc422,0xffffbe1f,0xffffa914,0xffdb8715,0xffece8eb,0xfff2f2f7,0xfff0f0f6,0xffeeeef5,0xffd7d9e7,0xfcbfc0d7,0x272a2a3d, + 0x779b6b3e,0xffffb922,0xffffb118,0xffffa713,0xffff9d0e,0xffff9409,0xffd97a0f,0xffeeebec,0xfff4f4f9,0xfff2f2f7,0xfff0f0f6,0xffe0e2ed,0xfcbcbdd5,0x2728283c, + 0x1d764627,0x69976128,0xd2a98c77,0xffd5bca2,0xffd5bba2,0xffd5b9a1,0xffd4beae,0xfff8f8fb,0xfff7f7fa,0xfff5f5f9,0xfff2f2f8,0xffdadcea,0xfcb9bad4,0x2726263b, + 0x0,0x0,0x6e9292af,0xa8a6a6b9,0xa8a4a4b8,0xa8a1a1b7,0xa89e9eb6,0xa89b9bb4,0xa89898b2,0xa89696b1,0xa89393af,0xa89090ae,0xa67a7aa0,0x1b1a1a2a +}; + static const QRgb logout_data[] = { 0x1aa31c0d,0x9aa62213,0xffac3222,0xffb34331,0xffb2402e,0xffb23f2d,0xffb03e2b,0xffb03d2a,0xffb03c29,0xffaf3b28,0xffaf3c28,0xffaa2d1b,0x9aa52011,0x1aa41c0e, 0x9aa62213,0xffc06750,0xffcc8662,0xffc36d48,0xffc4734c,0xffc5764f,0xffcb835d,0xffcc855f,0xffc97f55,0xffc88258,0xffca865c,0xffcf9367,0xffba5a3e,0x9aa52011, 0xffac3222,0xffcc8965,0xffb64c26,0xffbb5b36,0xffca7959,0xffd5977d,0xffe2b6a3,0xffe3b8a5,0xffd79f84,0xffcf8968,0xffc67751,0xffc67a53,0xffcf9268,0xffa92b19, 0xffb34331,0xffc4704b,0xffbb5b35,0xffd18d72,0xfff1d6cb,0xfffbebe3,0xffefd4c8,0xfff3dbd0,0xfffef3ed,0xfff1d8ca,0xffd7a082,0xffc8815a,0xffce8f65,0xffad3520, 0xffb2402e,0xffc4724c,0xffca7959,0xfff1d6cb,0xfff4ded5,0xffdca288,0xffe7b9a3,0xffe8bba4,0xffe0af97,0xfff5e1d7,0xfff1d8ca,0xffd29675,0xffce9167,0xffac321d, 0xffb23f2d,0xffc77a54,0xffdaa28a,0xfffbebe3,0xffdca288,0xffc5734d,0xfff5d8c9,0xfff4d8c8,0xffc87e58,0xffe1b39b,0xfffdf4ee,0xffdcb097,0xffcf936a,0xffab301c, 0xffb03e2b,0xffcc845e,0xffe3b8a5,0xffeed0c2,0xffcc8360,0xffc4734c,0xfff8e0d3,0xfff8e2d5,0xffc77e57,0xffd69c7d,0xfff7e5db,0xffe5c2ad,0xffd29b74,0xffaa2f1b, 0xffb03d2a,0xffcc8560,0xffe4baa8,0xffedd0c3,0xffcd8563,0xffc57750,0xfff8e1d4,0xfff8e3d6,0xffc8825c,0xffd7a082,0xfff7e6dc,0xffe8cab8,0xffd5a07c,0xffaa2d19, 0xffb03c29,0xffcb835a,0xffdeac95,0xfffbebe4,0xffdba488,0xffc77d57,0xfff7ded0,0xfff5ddcd,0xffcb8a65,0xffe3bba3,0xfffef7f2,0xffe3bda7,0xffd69e7a,0xffa92b17, 0xffaf3b28,0xffc88258,0xffd39172,0xfff6e4db,0xfff1dbcf,0xffdeab90,0xffeec9b5,0xffeac2ab,0xffe2b69c,0xfff6e6dd,0xfff6e3d8,0xffdeae94,0xffd5a280,0xffa82a15, 0xffaf3c29,0xffc9855b,0xffc77a54,0xffd8a388,0xfff4dfd3,0xfffdefe8,0xfff2dcd0,0xfff3ddd1,0xfffef2eb,0xfff7e6db,0xffe1b8a1,0xffd7a386,0xffd7a686,0xffa92a15, 0xffaa2d1c,0xffcf9367,0xffc67a53,0xffc8815a,0xffd59a7a,0xffe0b69e,0xffebccba,0xffebcfbd,0xffe4bea8,0xffdfb096,0xffd7a385,0xffddb397,0xffd29877,0xffa62311, 0x9aa52011,0xffba5a3e,0xffcf9268,0xffce8f65,0xffce9167,0xffd0956c,0xffd49f79,0xffd6a27e,0xffd69e7a,0xffd5a27f,0xffd9a989,0xffd39979,0xffb3452c,0x9aa41d0d, 0x1aa41c0e,0x9aa52011,0xffa92b19,0xffad3520,0xffac321d,0xffab301c,0xffaa2f1b,0xffaa2d19,0xffa92b17,0xffa82a15,0xffa82915,0xffa62311,0x9aa41d0d,0x1aa41d0e }; static const QRgb mag_data[] = { 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0, 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0, 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 }; static const QRgb month_data[] = { - 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, - 0xf592b8e5,0xffafd4fd,0xff90c6fd,0xff70b6fd,0xff57a9fd,0xff3499fc,0xff258efd,0xff2388fd,0xff2189fc,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, - 0xf19fbfe5,0xffddebfa,0xffb7daf7,0xffa6d3f6,0xffc5dffa,0xff93cbf4,0xffb0d7f9,0xffadd5f9,0xff8ec9f4,0xffaed6fa,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, - 0xf1a9c5e6,0xfffbfefe,0xffcbe6fa,0xffbbdff8,0xfff2fafe,0xff9fd1f5,0xffe0f3fd,0xffdef1fd,0xff9bd0f5,0xffe4f5fe,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, - 0xfa91c4ee,0xffb0daf7,0xff9ed1f5,0xff97cef4,0xffabd8f7,0xff8dc9f3,0xffa4d5f6,0xffa3d4f6,0xff8cc8f3,0xffa5d5f7,0xffa6d6f7,0xff91cbf4,0xc42b6089,0x34001425, - 0xf49dc5e9,0xffd9effc,0xffb6ddf8,0xffa9d7f7,0xffceeafc,0xff96cdf4,0xffc0e4fb,0xffbfe2fb,0xff93ccf4,0xffc1e5fc,0xffc2e6fc,0xff9bd1f6,0xc42a6089,0x34001425, - 0xf1a6c4e6,0xfff2fcff,0xffc5e5fa,0xffb5def9,0xffe5f6ff,0xff9bd0f5,0xffd2edfd,0xffd0ebfd,0xff97cff5,0xffd3efff,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, - 0xf3a0c4e7,0xffe2f3fd,0xffbbe0f9,0xffadd9f8,0xffd6eefd,0xff98cef5,0xffc6e6fc,0xffc3e5fc,0xff94cdf5,0xffc7e8fd,0xffc8e9fd,0xff9bd1f6,0xc4296089,0x34001425, - 0xfc8bc4ef,0xff9cd1f5,0xff92ccf4,0xff8ecaf4,0xff99cff5,0xff88c7f3,0xff94cef5,0xff94cdf5,0xff87c7f3,0xff95cef5,0xff95cef5,0xff86c7f3,0xc4285f89,0x34001425, - 0xf1a3c3e6,0xffe8f8ff,0xffbfe2fa,0xffb0dbf9,0xffdaf1ff,0xff99cff5,0xffc9eafd,0xffc6e8fd,0xff95cef5,0xffc9ecff,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, - 0xf1a6c5e7,0xffeaf9ff,0xffc0e3fa,0xffb1dcf9,0xffdcf3ff,0xff99d0f5,0xffcbebfd,0xffc8e9fd,0xff95cef5,0xffcbedff,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, - 0xfa80b6e6,0xffafdbf7,0xff9cd1f5,0xff95cdf4,0xffa6d6f7,0xff8bc8f3,0xff9dd2f6,0xff9bd1f6,0xff89c8f3,0xff9ad2f7,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, - 0xa628618e,0xc12e628a,0xc42b6089,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc42a6089,0xc4285f89,0xc4296089,0xc421608d,0x9e083656,0x30000d16, - 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 + 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b, + 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65, + 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858, + 0xe96dbff5,0xff86cdf4,0xff72c6f2,0xff72c6f2,0xff71c5f2,0xff71c4f2,0xff70c3f2,0xff70c2f2,0xff70c2f2,0xff70c2f2,0xff6fc2f2,0xff72c2f3,0xf060afe4,0x79013455, + 0xe97cb5c6,0xfff0d662,0xfff3c95e,0xfff2ce5a,0xfff1cd5c,0xffefc85c,0xffeed358,0xffedc45e,0xffedd258,0xffebc45e,0xffead157,0xffeac75c,0xf089abaf,0x79003453, + 0xe97bafb2,0xfff8ca28,0xffffb129,0xffffc21f,0xffffb925,0xffffb924,0xffffc71e,0xffffb228,0xffffc81d,0xffffb029,0xffffcb1b,0xffffb426,0xf091a49c,0x79003554, + 0xe979acb2,0xfff7bd2e,0xffffab2c,0xffffb625,0xffffb02a,0xffffb029,0xffffba25,0xffffab2c,0xffffbb23,0xffffaa2d,0xffffbd22,0xffffad29,0xf093a49b,0x79003554, + 0xe976afb2,0xfff7cf26,0xffffb628,0xffffc71d,0xffffbe24,0xffffbe22,0xffffcd1c,0xffffb727,0xffffce1a,0xffffb428,0xffffd218,0xffffb924,0xf096a79d,0x79003554, + 0xe975a9b1,0xfff6b732,0xffffa331,0xffffb128,0xffffa92e,0xffffab2b,0xffffb328,0xffffa62f,0xffffb527,0xffffa430,0xffffb825,0xffffa62d,0xf098a59c,0x79003554, + 0xe973acb0,0xfff6d124,0xffffbc24,0xffffca1b,0xffffc420,0xffffc021,0xffffd119,0xffffbb24,0xffffd118,0xffffb924,0xffffd316,0xffffbe20,0xf09aaa9c,0x79003554, + 0xea6ea8ba,0xffeeb649,0xfff7a449,0xfff8b340,0xfff9a947,0xfff9ad43,0xfffab342,0xfffba947,0xfffcb641,0xfffda749,0xfffeba3e,0xffffaa47,0xf09caaa7,0x78003554, + 0xbb469ed9,0xf882bcdf,0xfd88bedf,0xfd8cc0df,0xfd8fc2e0,0xfd93c3e1,0xfd97c5e1,0xfd9ec8e2,0xfda2cae2,0xfda7cce2,0xfdabcfe2,0xfcafd1e2,0xdc669bbe,0x63001f36, + 0x360f466e,0x75164e75,0x89144769,0x8a154768,0x8a154768,0x8a164869,0x8a174869,0x8a184869,0x8a194969,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306, + 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000 +}; + +static const QRgb MPEGPlayer_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2a4a6dc, + 0xfa4a6dc,0x18a4a6dc,0x18a4a6dc,0x26a4a6dc,0x27a4a6dc,0x14a4a6dc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x2a0a1b6,0x1fa3a4bb,0x579d9fba,0x979a9bbc,0xb6989ac1,0xc29698c3,0xc29698c4,0xd09698c8,0xd0989acb,0xb18f91bc,0x708486a5,0x2885869e,0x8727496,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x6a5a6b6,0x419e9fbd,0x95a9aac6,0xefb8b9d1,0xfecbcce0,0xffe4e5f1,0xffefeff9,0xfff4f5ff,0xfff3f3ff,0xffefeffe,0xffe5e6f7,0xffd2d3ec, + 0xffb9bbdf,0xf59c9ec7,0xb98688b3,0x5174779f,0x156b6d91,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0xcc917107,0xcd876b09, + 0xf4a5a293,0xffb1b1b1,0xffcbcbcb,0xf4a4a4a4,0x339e9e9e,0x11a7a7b5,0x70a3a3bc,0xe0bebfd4,0xfce0e0eb,0xfff6f6fa,0xfffcfcfe,0xfff9f9ff,0xfff6f7ff,0xfff3f4ff, + 0xfff1f1ff,0xffedeeff,0xffebecff,0xffe8e9ff,0xffe6e7fe,0xffd9dbf6,0xffc3c5e7,0xea989ac4,0xa27c7fac,0x1f66678b,0x320212f,0x0,0x0,0x0, + 0x0,0x0,0xcc6b5803,0xcc5f5103,0xd25c541a,0xf497968b,0xffa4a4a4,0xffcacaca,0xe39a9a9a,0xc9ababb7,0xfcd5d6e3,0xfffcfcff,0xfffefeff,0xffffffff, + 0xfffdfdff,0xfff9faff,0xfff7f7ff,0xfff4f4ff,0xfff1f1ff,0xffedeeff,0xffebecff,0xffe7e9ff,0xffe5e6ff,0xffe2e3ff,0xffdfe1ff,0xffd7d9fa,0xffaaaddf,0xd77e7fb3, + 0x576b6c99,0x6222332,0x1000000,0x0,0x0,0x0,0xcc413f01,0xcc474201,0xcc514903,0xcd74600b,0xf4a19a84,0xff9a9a9a,0xffa5a5a5,0xff9e9e9e, + 0xffe0e1e5,0xfffbfbff,0xfffdfdff,0xffffffff,0xfffefeff,0xfffbfbff,0xfff8f8ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff,0xffeaebff,0xffe6e8ff,0xffe4e5ff,0xffe1e2ff, + 0xffdee0ff,0xffd3d5ff,0xffbbbef6,0xfe9396cf,0xe07274aa,0x425c5d88,0x71b1b27,0x0,0x0,0x0,0xcc756006,0xcc8d720a,0xcca5850f,0xccb59415, + 0xd5bda42f,0xfca09b81,0xff9d9d9d,0xff949494,0xff979798,0xffe3e3e7,0xfffbfbff,0xfffefeff,0xfffefeff,0xfffcfcff,0xfff9f9ff,0xfff4f5ff,0xfff2f2ff,0xffedeeff, + 0xffeaebff,0xffe5e6ff,0xffe3e4ff,0xffdfe1ff,0xffd8daff,0xffbec1f7,0xffa7aae4,0xff8f92cc,0xff787bb4,0xdb5f6197,0x4c53547e,0x5000000,0x0,0x0, + 0xccbe9f19,0xcccaac1f,0xccd2b726,0xcdd6be2b,0xe1d6c23a,0xfed8c955,0xff9e9a80,0xff8c8c8c,0xffababab,0xff838384,0xffdddde1,0xfffdfdff,0xfffefeff,0xfffdfdff, + 0xfffafaff,0xfff4f5ff,0xfff2f2ff,0xffecedff,0xffe9eaff,0xffe4e5ff,0xffe1e3ff,0xffdcdeff,0xffc9cbfc,0xffa9ace6,0xff9598d2,0xff7e81bb,0xff6f72ac,0xfd6567a0, + 0xbd5b5d8f,0x17242534,0x3000000,0x0,0xccd8c12d,0xccdbc630,0xccdfcb35,0xd8dbc738,0xf8d5c247,0xffdbc556,0xffcbb757,0xff8e8976,0xff7b7b7b,0xffb2b2b2, + 0xff808081,0xffdedfe2,0xfffdfdff,0xfffefeff,0xfffbfbff,0xfff5f5ff,0xfff0f1ff,0xffebecff,0xffe7e8ff,0xffe2e4ff,0xffdee0ff,0xffcbcdfd,0xffadb0ea,0xff8f92cc, + 0xff7b7eb8,0xff6d70aa,0xff7174ae,0xff777ab4,0xfe686aa3,0x764f517a,0x12181924,0x1000000,0xccddc834,0xccdac130,0xccd3b728,0xe8c8ad30,0xfec5ad41,0xffc7af47, + 0xffb7a34d,0xff878370,0xff85826c,0xff707070,0xff878787,0xff7e7e7f,0xffd9d9dc,0xfffefeff,0xfffcfcff,0xfff8f8ff,0xfff3f4ff,0xffeeeeff,0xffe7e8ff,0xffe0e2ff, + 0xffd7daff,0xffb1b4ed,0xff9497d1,0xff787bb5,0xff6e71ab,0xff7477b1,0xff7d80ba,0xff8588c2,0xff7c7fb9,0xc7575a8d,0x3434364f,0x4000000,0xccc9ac23,0xccc3a51e, + 0xd1bb9e1a,0xfbbda433,0xffc6ae45,0xffc2ac4d,0xff898571,0xffb2a863,0xffc7be5e,0xff89866a,0xff777777,0xff6b6b6b,0xff757576,0xffd9d9de,0xffeeefff,0xffd6d8fe, + 0xffcccefb,0xffc9ccf7,0xffd4d6fa,0xffd9dbff,0xffbbbef3,0xff8e91cb,0xff7679b3,0xff6f72ac,0xff7a7db7,0xff8588c2,0xff8c8fc9,0xff9396d0,0xff9295cf,0xf56a6da4, + 0x7945476e,0xd000000,0xccbd9c17,0xccc2a31a,0xdbc7aa24,0xffceb843,0xffc8b85b,0xff8c8874,0xffc3bb6c,0xffe8dc65,0xffe5e16e,0xffece26f,0xff848165,0xff686868, + 0xff878787,0xff5d5d60,0xffb6b8d8,0xffc7c9fe,0xffbabdf7,0xffabaee8,0xffaeb1eb,0xffb2b5ec,0xff9497d1,0xff7376b0,0xff7275af,0xff8083bd,0xff8a8dc7,0xff9396d0, + 0xff989bd5,0xff9da0da,0xff9fa2dc,0xff7a7db6,0xae4d4f7e,0x18000000,0xd0cbb130,0xccd9c22e,0xe7dac83d,0xffd6cb5e,0xff8e8b76,0xffc2bd74,0xfff2e971,0xffede46e, + 0xffe6e06f,0xfff2e46c,0xffdbcd65,0xff767257,0xff515151,0xff9a9a9a,0xff59595b,0xffb5b8d9,0xffbbbef5,0xffacafe9,0xffb5b8f2,0xffb7baf4,0xff8c8fc9,0xff7a7db7, + 0xff8b8ec8,0xff9699d3,0xff9c9fd9,0xffa1a4de,0xffa5a8e2,0xffa9ace6,0xffabaee8,0xff9294ce,0xe1525588,0x27000000,0xf699967e,0xd3ded251,0xeed6cc58,0xff8f8d77, + 0xffc7bf72,0xffeee26e,0xffe9db69,0xffe1d262,0xffd3c65c,0xffd8c556,0xffceb94e,0xffbca848,0xff645f48,0xff474747,0xff6d6d6d,0xff55555a,0xff72749f,0xff9294ca, + 0xffb8bbf4,0xffc5c8fe,0xffbbbef5,0xff9295cf,0xff9ea1db,0xffa5a8e2,0xffa9ace6,0xffaeb1eb,0xffb1b4ee,0xffb3b6f0,0xffb5b8f2,0xffa1a4dd,0xf551538a,0x30000000, + 0xff909090,0xf88e8d7b,0xfc8c8a72,0xffbaaf6c,0xffe0d061,0xffdac85b,0xffd0bc53,0xffc4b04a,0xffb5a546,0xffbca441,0xffb1993d,0xffa8903a,0xff94803a,0xff534f3f, + 0xff505050,0xff424242,0xf63e3e40,0xbf3f3f51,0xf29798c2,0xffd3d5ff,0xffd4d6ff,0xffb0b3ed,0xffb5b8f2,0xffb9bcf6,0xffbbbef7,0xffbec1f9,0xffc0c3fb,0xffc1c4fc, + 0xffc2c5fd,0xffafb2e9,0xff4e518a,0x39000000,0xffababab,0xff7b7b7b,0xfc86826b,0xffbdab55,0xffbea848,0xffb69f43,0xffac953e,0xffa28a39,0xff988639,0xff9d8737, + 0xff917f36,0xff867836,0xff7b7135,0xff6b6635,0xff3f4036,0xff454545,0xff606060,0xec262627,0xd76a6a82,0xffe1e2ff,0xffe0e1ff,0xffc2c5fc,0xffcbcdfe,0xffcccfff, + 0xffcdd0ff,0xffcdd0ff,0xffcdd0ff,0xffced1ff,0xffced1ff,0xffb7baea,0xff4d5088,0x3e000000,0xe47b7b7b,0xffb2b2b2,0xff707070,0xff767263,0xff978039,0xff927a31, + 0xff86722f,0xff7a6a2b,0xff766f35,0xff797035,0xff6e6934,0xff686534,0xff626234,0xff6b6734,0xff4d4a32,0xff3c392f,0xff272727,0xff828282,0xfc2a2a2c,0xffc1c3ce, + 0xffebecfe,0xffced0ff,0xffdee0ff,0xffdddfff,0xffdddeff,0xffdcddff,0xffdbddff,0xffdadcff,0xffd9dbff,0xffc0c2ea,0xfe4f5187,0x3f000000,0x2b757575,0xd6707070, + 0xff878787,0xff7d7d7d,0xff666256,0xff695d2f,0xff5d5526,0xff504c24,0xff565a34,0xff6b6734,0xff736c35,0xff887a37,0xff9d8a3b,0xff695e35,0xff555035,0xffac9a44, + 0xff4b472d,0xff1d1d1d,0xff585858,0xff383839,0xffb6b8c7,0xffd3d5fe,0xffe4e5ff,0xffe2e3ff,0xffe1e3ff,0xffdfe1ff,0xffdfe1ff,0xffdee0ff,0xffdee0ff,0xffbbbee6, + 0xf64e5186,0x3f000000,0x0,0x1f6d6d6d,0xef706f6f,0xff6a6a6a,0xff6e6e6e,0xff54544e,0xff4a4928,0xff655b26,0xff867a39,0xffa6903c,0xffb59d40,0xffbda644, + 0xff7a6e3b,0xff5d5938,0xffc9ba52,0xffd6c858,0xffc8bc56,0xff444127,0xff272727,0xff1b1b1b,0xff2d2e30,0xffb7bacb,0xffe8eafe,0xffe7e8ff,0xffe5e6ff,0xffe4e5ff, + 0xffe3e4ff,0xffe1e3ff,0xffe1e3ff,0xffaaacd7,0xe24a4c7c,0x3b000000,0x0,0x0,0x6371625c,0xff636166,0xff878787,0xff515151,0xff575245,0xff978137, + 0xffbaa747,0xffcfb84c,0xffd6c251,0xff867b41,0xff5a573a,0xffcec359,0xffd9cc5c,0xffd7c95b,0xffd2c157,0xffb9a94c,0xff38331c,0xff232323,0xff363636,0xff1b1c1e, + 0xffb5b7c6,0xffeaebfe,0xffe9eaff,0xffe6e8ff,0xffe6e7ff,0xffe4e5ff,0xffe2e3fe,0xff9193c1,0xc33d3f67,0x35000000,0x0,0x0,0xf735b4c,0xda796d76, + 0xff57575d,0xff9a9a9a,0xff464646,0xff555242,0xffc0b453,0xffdccc59,0xff877f45,0xff5e5939,0xffcfbf56,0xffd3c155,0xffccb951,0xffc5b24c,0xffbfac48,0xffbba746, + 0xffb09e42,0xff302c14,0xff000000,0xff6f6f6f,0xff121213,0xffbcbecc,0xffebecfe,0xffeaebff,0xffe8eaff,0xffe7e9ff,0xffd1d2ef,0xf46b6da1,0x9123243f,0x2a000000, + 0x0,0x0,0x24f3f2f,0x83816f6e,0xfc7f7a96,0xff52525b,0xff6c6c6c,0xff575757,0xff59573f,0xff787243,0xff555035,0xffc1ac4b,0xffc7b14a,0xffc1ac48, + 0xffbfaa46,0xffc0aa46,0xffc4b049,0xffc9b54d,0xffcebd53,0xffbeb350,0xff343217,0xff000000,0xff525252,0xff262628,0xffb6b8c7,0xffecedfe,0xffebecff,0xffe7e8fd, + 0xffb2b4dc,0xd8444674,0x6510111d,0x1e000000,0x0,0x0,0x0,0x2b796651,0xc68c7e80,0xff9192be,0xff53535b,0xff414141,0xff4c4c4c,0xff38362e, + 0xffa69440,0xffc6ae46,0xffc5af48,0xffc9b34b,0xffcdbb50,0xffd2c456,0xffd7cc5c,0xffddd362,0xffe2da67,0xffe6df6c,0xffdad569,0xff35341a,0xff111111,0xff121212, + 0xff262628,0xffbbbdcc,0xffecedfe,0xffd0d2ed,0xfa777bad,0x951b1d35,0x3e030304,0x10000000,0x0,0x0,0x0,0x73f3427,0x6082715e,0xfc9793ae, + 0xff9497c4,0xff4b4c54,0xff5f5f5f,0xff272727,0xff433e29,0xffbeac4b,0xffd6c657,0xffdbce5c,0xffe0d663,0xffe4dc69,0xffe9e36e,0xffebe470,0xffebe571,0xffeae370, + 0xffe5dd6e,0xffa8a14f,0xff000000,0xff1e1e1e,0xff2b2b2b,0xff1c1d1f,0xffafb3c3,0xfe989cc7,0xd740446e,0x5a07070c,0x28000000,0x7000000,0x0,0x0, + 0x0,0x1000000,0x91a170d,0x9a8b8073,0xf6a3a1bc,0xffa6a9da,0xff3c3d45,0xff828282,0xff1d1d1d,0xff383623,0xffcbc55e,0xffebe46e,0xffeee772,0xffece571, + 0xffe9e16d,0xffe5db6b,0xffdfd365,0xffd6c95e,0xffb4a74d,0xff262310,0xff73682c,0xff26220e,0xff000000,0xff6f6f6f,0xff0a0a0d,0xe743476a,0x8116182b,0x31000000, + 0x12000000,0x2000000,0x0,0x0,0x0,0x0,0x2000000,0x285e5542,0xa88d8579,0xfeafaed2,0xffa2a9d5,0xff35353b,0xff575757,0xff2f2f2f, + 0xff3a3821,0xffd3cb64,0xffe6db6a,0xffe0d364,0xffd7ca5e,0xffcebf56,0xffc4b44e,0xffa3943f,0xff221f0e,0xff675a26,0xff9f8b3b,0xff837333,0xff1f1c0c,0xff000000, + 0xff606060,0xf308090c,0x7c0c1422,0x1b000000,0x7000000,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x171f1c12,0x9f837e71, + 0xefa3a3b6,0xffb7b8d3,0xff37373c,0xff191919,0xff2b2b2b,0xff252312,0xffb1a248,0xffc1af4b,0xffb7a545,0xffae9a40,0xff8f7e34,0xff1e1b0b,0xff5a4f24,0xff857736, + 0xff7c7136,0xff706a35,0xff5f5e32,0xff11120b,0xff0b0b0b,0xff171717,0xf6181819,0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0, + 0x0,0x1000000,0x5000000,0x25373426,0x7a6a685e,0xe89999a2,0xfe999ab0,0xff2e2f32,0xff353535,0xff000000,0xff231f0d,0xff958236,0xff9c873a,0xff827231, + 0xff1b170a,0xff4a4522,0xff716b35,0xff656334,0xff5a5c34,0xff525833,0xff5f6034,0xff645f30,0xff201c0d,0xff1f1f1f,0xff222222,0x1000000,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5000000,0x11000000,0x3f2b2b24,0x8d5e5e5b,0xdc717282,0xfd16171a,0xff6f6f6f, + 0xff000000,0xff151309,0xff595126,0xff15140a,0xff3b3d22,0xff5b5d33,0xff5c5d34,0xff656335,0xff7d7337,0xff91823b,0xffa18f3e,0xffb09c43,0xffb5a446,0xff2c2912, + 0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0xe010101, + 0x21090909,0x5031312f,0x922f2f35,0xf4050607,0xff515151,0xff1a1a1a,0xff000000,0xff3d3d21,0xff6c6835,0xff7f7437,0xff93833a,0xffa5923f,0xffb39f43,0xffbdaa48, + 0xffc4b44d,0xffcabc52,0xffcec257,0xffb9b051,0xff7c7b3b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x1000000,0x4000000,0xd000000,0x18000000,0x40000000,0xde020202,0xf3000000,0xe1000000,0xff181509,0xff8f7e36,0xffb2a044, + 0xffbbab49,0xffc1b44f,0xffc5bb53,0xffc9c058,0xffcbc359,0xffcac25b,0xffcac05a,0xffc4b855,0xffb4a94e,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x4000000,0x21000000,0x50000000,0x6e000000, + 0x57000000,0x7f000000,0x7f3f3a19,0x7d777131,0x7c7c7735,0x7983803a,0x7688863e,0x748c8b42,0x748c8a41,0x738a853e,0x7388803c,0x73827a37,0x668c843b,0x0, + 0x0,0x0 }; static const QRgb mute_data[] = { 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x20202,0xd000000,0x7000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202, 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202, 0xff000000,0xffcde6ff,0xffcee6ff,0xffcee6ff,0xffcde5ff,0xffcee5ff,0xffcee5ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202, 0xff000000,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec4ff,0xff8ec4ff,0xff000000,0xe3020202,0xbb575757,0xffffffff,0xab5f5f5f,0xbf020202,0x2f020202, 0xff000000,0xff4ea3ff,0xff4ea4ff,0xff4ea3ff,0xff4fa4ff,0xff4ea4ff,0xff4ea4ff,0xff000000,0xda4b4b4b,0xffffffff,0xab5f5f5f,0xffffffff,0xab5f5f5f,0xbf020202, 0xff000000,0xff000000,0xff000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff1d8aff,0xff000000,0xffffffff,0xbb575757,0xbf020202,0xab5f5f5f,0xffffffff,0xbf020202, 0x26000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff000000,0xe3020202,0xcb020202,0x2f020202,0xbf020202,0xbf020202,0xbf020202, 0x16000000,0x24000000,0x30000000,0x32000000,0x48000000,0xff000000,0xff1d8aff,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xd000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x78000000,0x79000000,0x2b000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x34000000,0x3f000000,0x19000000,0xffffff,0xffffff,0xffffff,0xffffff }; -static const QRgb new_data[] = { - 0x0,0x0,0x0,0xefcbd5e6,0xffe1e6ef,0xffe1e6ef,0xffe0e6ef,0xffdbe2ee,0xffd1dae9,0xfabcc7dc,0x5e9ba5b6,0x2191a1c,0x0,0x0, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffdffff,0xfff2f7fe,0xffe4eaf5,0xffc8d2e4,0xf6d3dceb,0x6199a3b6,0x219191c,0x0, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff7faff,0xffeaeef8,0xffcdd6e7,0xffeaeef5,0xf2ccd5e5,0x63949fb2,0x2212225, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfff9fcff,0xffedf2fb,0xffd9e1ef,0xffb6c2d6,0xffa3b2cb,0xfa94a5c0,0x23728097, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfffafdff,0xfff0f4fb,0xffeac99f,0xffc7c9d0,0xffb7c4da,0xffa1b0ca,0x2f566274, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff8fbff,0xffece6e2,0xfff7c05d,0xffd2ae82,0xffc2cde0,0xffaab8cf,0x2f566173, - 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xfffeffff,0xfffafdff,0xffe9eff8,0xffe8c9a0,0xfffdea5a,0xffeaba5d,0xffcaced8,0xffb1bdd3,0x2f566173, - 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf3,0xfffee0af,0xfff5d39f,0xfff1ca86,0xfff7cb5d,0xfffffe4c,0xfffae75a,0xffe1ae69,0xffcba57c,0x7dc0702c, - 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf2,0xfff9c671,0xfffedf57,0xfffff24a,0xfffff643,0xfffff838,0xfffff83d,0xfffef247,0xfffbe248,0xe9e19226, - 0x0,0x0,0x0,0xefd9e1ee,0xfffefeff,0xfff2f1f0,0xfff0c47a,0xfffbcf23,0xffffe324,0xffffe324,0xffffe324,0xfffdd426,0xffd6932b,0x64874714, - 0x0,0x0,0x0,0xefd9e1ee,0xfffdfeff,0xfff1f5fd,0xffecf0f6,0xfff3ab31,0xffffcc10,0xffffcb10,0xffffcc10,0xfff6ad11,0xffac8c77,0x3050596a, - 0x0,0x0,0x0,0xefd9e1ee,0xfffafcfe,0xffeff4fc,0xffece9e9,0xfff6a113,0xfffda902,0xfff2960b,0xfff8a403,0xfffaa402,0xffb2805c,0x2f535e70, - 0x0,0x0,0x0,0xefc3cee0,0xffd1d8e3,0xffcad3e1,0xffd1beb1,0xffee8208,0xffc77d33,0xffaf9a8f,0xffb98b69,0xffda7614,0xffb96730,0x3050525c, - 0x0,0x0,0x0,0x28747e91,0x40444c59,0x41434b58,0x62945c29,0x77964a05,0x48453932,0x41404854,0x41434853,0x50723b1a,0x80983c0a,0x1b3e2317 -}; - static const QRgb newfolder_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4fdbe1f9,0x49d3daf4,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x4dae1f9,0x3fe1e5f9,0xe3eff0f9,0xcce5e8f3,0x268d9bc8,0x34bc,0x0,0x0,0x0, 0x0,0x0,0x240a0fe,0xb6bb7ff,0x48ac3fe,0x46eaedfb,0xd8f3f5fa,0xffeeeef4,0xfce8e9f3,0xa5abbbe1,0xa3460bf,0x92e63d5,0x4255dd4,0x0, 0xc6bbef8,0x368dc8f9,0x7fa1cdf8,0xc4afd5fe,0x95afcef4,0xdcf4f6fb,0xfff4f4f8,0xffededf3,0xffe7e7f0,0xf2c7d1eb,0x806891db,0xa44d80de,0x362158c8,0x1000000, 0x5395d1fc,0xe7cde5fc,0xfdd1e5fe,0xffc9ddf7,0xfeecf0f7,0xfff8f8fb,0xfff5f4f8,0xffc1d3ed,0xff9fbee9,0xff87a6d3,0xde5897e8,0xc30b4bca,0x45022c90,0x1000000, 0x2e81c8fe,0xdfd2e8fe,0xffcce2fd,0xffdde3ee,0xfffdfdfd,0xfff0f4f9,0xffc2d8f0,0xff9bc7f6,0xff78aae6,0xffbca173,0xf26d7ba0,0xc80331b2,0x37002478,0x0, 0x952b2ff,0xb6b5d6f7,0xffcae1fe,0xffbfd1eb,0xffcbe1f4,0xffbcdaf5,0xffa7cff7,0xff7cb8fa,0xff85a5c7,0xffefcc5f,0xf6a07f62,0xb70c30a7,0x23001d60,0x0, 0x0,0x6c9acafa,0xfec3dcfd,0xffa4cbf8,0xffc4e0f2,0xffbed7e3,0xffa1bdd4,0xff829abd,0xffbca36e,0xfffff753,0xfff0d05a,0xcd8e7471,0x44a45c25,0x21d65b00, 0x0,0x348dbff5,0xedb4d4fb,0xff9ecaf9,0xffb8d1dd,0xffdaba72,0xffeacf73,0xffead461,0xfff7e554,0xfffffd43,0xfffdf44d,0xf7efd251,0xdef2c74c,0xcae89932, 0x0,0x137db2f0,0xbca4caf7,0xff98c7f8,0xff9accfa,0xffa7b6bb,0xfff0c650,0xfffee82d,0xffffed2d,0xffffed2d,0xffffed2d,0xffffe82e,0xeff5c125,0x91e1800e, 0x0,0x54995f0,0x799ac2f3,0xfe94c3f5,0xffbeddfa,0xffdde4f0,0xffe7d7c8,0xfff1b227,0xfffed218,0xffffd519,0xffffd519,0xfbf7b616,0x80e27b09,0xbd55a01, 0x0,0x0,0x3d71a7ee,0xf1a2c9f2,0xfff2f6f9,0xfaccdaef,0xd287a4d3,0xf2e79a13,0xfffeb906,0xfffdb208,0xfffeba07,0xfdf7a506,0x65e06e02,0x0, 0x0,0x0,0x1267a1ef,0xce8dbbf1,0xd098bdeb,0x6f5480bf,0x517a5843,0xf3f68e00,0xe0f68d00,0xa2e97a01,0xc3ec8200,0xf4f48c00,0x97dd6500,0x1c54300, 0x0,0x0,0x4529af8,0x404b90e5,0x2d164682,0xc1d1209,0x4ee26e00,0xb0ec7400,0x45e66c00,0x7dd6200,0x1cd45600,0x7ddb5d00,0xa4cf4e00,0xdc34100 }; +static const QRgb new_data[] = { + 0x0,0x0,0x0,0xefcbd5e6,0xffe1e6ef,0xffe1e6ef,0xffe0e6ef,0xffdbe2ee,0xffd1dae9,0xfabcc7dc,0x5e9ba5b6,0x2191a1c,0x0,0x0, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffdffff,0xfff2f7fe,0xffe4eaf5,0xffc8d2e4,0xf6d3dceb,0x6199a3b6,0x219191c,0x0, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff7faff,0xffeaeef8,0xffcdd6e7,0xffeaeef5,0xf2ccd5e5,0x63949fb2,0x2212225, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfff9fcff,0xffedf2fb,0xffd9e1ef,0xffb6c2d6,0xffa3b2cb,0xfa94a5c0,0x23728097, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xffffffff,0xfffafdff,0xfff0f4fb,0xffeac99f,0xffc7c9d0,0xffb7c4da,0xffa1b0ca,0x2f566274, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xffffffff,0xfffeffff,0xfff8fbff,0xffece6e2,0xfff7c05d,0xffd2ae82,0xffc2cde0,0xffaab8cf,0x2f566173, + 0x0,0x0,0x0,0xefd9e1ee,0xffffffff,0xfffeffff,0xfffafdff,0xffe9eff8,0xffe8c9a0,0xfffdea5a,0xffeaba5d,0xffcaced8,0xffb1bdd3,0x2f566173, + 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf3,0xfffee0af,0xfff5d39f,0xfff1ca86,0xfff7cb5d,0xfffffe4c,0xfffae75a,0xffe1ae69,0xffcba57c,0x7dc0702c, + 0x0,0x0,0x0,0xefd9e1ee,0xfffffaf2,0xfff9c671,0xfffedf57,0xfffff24a,0xfffff643,0xfffff838,0xfffff83d,0xfffef247,0xfffbe248,0xe9e19226, + 0x0,0x0,0x0,0xefd9e1ee,0xfffefeff,0xfff2f1f0,0xfff0c47a,0xfffbcf23,0xffffe324,0xffffe324,0xffffe324,0xfffdd426,0xffd6932b,0x64874714, + 0x0,0x0,0x0,0xefd9e1ee,0xfffdfeff,0xfff1f5fd,0xffecf0f6,0xfff3ab31,0xffffcc10,0xffffcb10,0xffffcc10,0xfff6ad11,0xffac8c77,0x3050596a, + 0x0,0x0,0x0,0xefd9e1ee,0xfffafcfe,0xffeff4fc,0xffece9e9,0xfff6a113,0xfffda902,0xfff2960b,0xfff8a403,0xfffaa402,0xffb2805c,0x2f535e70, + 0x0,0x0,0x0,0xefc3cee0,0xffd1d8e3,0xffcad3e1,0xffd1beb1,0xffee8208,0xffc77d33,0xffaf9a8f,0xffb98b69,0xffda7614,0xffb96730,0x3050525c, + 0x0,0x0,0x0,0x28747e91,0x40444c59,0x41434b58,0x62945c29,0x77964a05,0x48453932,0x41404854,0x41434853,0x50723b1a,0x80983c0a,0x1b3e2317 +}; + static const QRgb next_data[] = { 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0, 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0, 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfff9fcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0, 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xfff9fbfc,0xfff3f9fd,0xff9dd1fb,0xffd4ebfe,0xfffbfcfd,0xffe7f2fc,0xe689c3fd,0x2a68abed,0x0, 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff5f8f9,0xfff5f8f9,0xfff5f8f9,0xfff6f9fb,0xff72befc,0xff299efe,0xffe3f1fd,0xfff6f9fa,0xffd1e6fb,0xa568b0f8,0x33c6a98, 0x34d4e9ff,0xec9accfd,0xffecf3f7,0xffeaedef,0xffe6eaec,0xffe7ebed,0xffe8ebed,0xffdde6ec,0xff49a9f7,0xff48acfe,0xffedf5fb,0xffecf3f7,0xe57bbaf9,0x1c4c8aca, 0x45c1e0ff,0xfb99cafb,0xffeaf0f3,0xff58acef,0xff2296f4,0xff2397f5,0xff2397f5,0xff2296f4,0xff1895fa,0xff028dfe,0xff78c2fe,0xffeef3f6,0xfa85c0f9,0x31478cd0, 0x41b4daff,0xfa8ec5fa,0xffe8eff2,0xff9fd2fb,0xff7fc5fd,0xff7fc5fd,0xff7fc5fd,0xff7cc3fc,0xff45aafc,0xff0c91fe,0xffb0dafd,0xffe8eff3,0xfa7cbbf8,0x333c82c7, 0x2bb6dbff,0xe778bbfb,0xffdbe6ed,0xffe4ecef,0xffe6eef1,0xffe7eef1,0xffe9f0f3,0xffb3cbdd,0xff1f98fa,0xff85c8fe,0xffedf2f5,0xffdae6ed,0xe860aaf4,0x232c69a5, 0xbe5f2ff,0xac5daeff,0xffb1d2ee,0xffd8e3e8,0xffd8e3e8,0xffd9e4e9,0xffdee9ef,0xff3ca1f2,0xff5eb6fe,0xffebf3f7,0xffdae4e9,0xffafd1ee,0xb03890e9,0x90d2134, 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbdd6ea,0xffd3e0e6,0xffd4e0e6,0xffdbe7ee,0xffd2e7f6,0xffe4eef4,0xffd7e3e8,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000, 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5caeb,0xffcadbe4,0xffcfdde4,0xffd0dde5,0xffcbdbe5,0xffa4caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0, 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0, 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0 }; +static const QRgb OKButton_data[] = { + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0x3ed5d5d5,0x93d4d4d4,0xd5d9d9d9,0xfed8d8d8,0xf8d2d2d2,0xeed5d5d5,0xe1d1d1d1,0xdcd3d3d3,0xe1d3d3d3,0xe6d4d4d4, + 0xecd6d6d6,0xf1d5d5d5,0xf6d5d5d5,0xfbd6d6d6,0xfed7d7d7,0xffd8d8d8,0xffd6d6d6,0xd9cacaca,0xa1bebebe,0x518f8f8f,0xc000000,0x3000000,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0x5fd5d5d5,0xdbdddddd,0xffdcdcdc,0xffcbcbcb,0xffc5c5c5,0xffc3c3c3,0xffcdcdcd,0xffc7c7c7,0xffc4c4c4,0xffc5c5c5,0xffc5c5c5, + 0xffc4c4c4,0xffc3c3c3,0xffc4c4c4,0xffc5c5c5,0xffc8c8c8,0xffcacaca,0xffcbcbcb,0xffcccccc,0xffd5d5d5,0xe7bdbdbd,0x847e7e7e,0x18000000,0x4000000,0xffffff, + 0xffffff,0xffffff,0x3ed6d5d5,0xdbd3d3d3,0xffd1d1d1,0xffc0bfbf,0xffbcbcbc,0xffb7b6b7,0xffb9b8b9,0xff989898,0xff313131,0xff323232,0xff555555,0xffbababa, + 0xff969696,0xff323232,0xff989798,0xffc1c0c1,0xff797879,0xffa6a5a6,0xffcecdce,0xffcecdce,0xffcbcbcb,0xffbbbcbb,0xed939293,0x76484848,0x18000000,0x3000000, + 0xffffff,0xffffff,0x93cccdcc,0xffc8c7c7,0xffb0b0b0,0xffaeadad,0xffb2b2b2,0xffb0b0b0,0xffafaeae,0xff000000,0xff5b5c5b,0xffb2b1b1,0xff000000,0xff606060, + 0xff828282,0xff000000,0xff878787,0xff6a6a6a,0xff1a1a1a,0xffa4a4a4,0xffc8c8c8,0xffc9c8c8,0xffc7c7c7,0xffbdbebd,0xffa6a5a5,0xc9505050,0x3d000000,0xc000000, + 0xffffff,0xffffff,0xd5c1c1c1,0xffacacac,0xff999999,0xffa1a1a1,0xff9b9a9a,0xffa4a4a4,0xff989898,0xff000000,0xff565656,0xffa9a9a9,0xff000000,0xff565656, + 0xff757575,0xff000000,0xff474747,0xff191919,0xff8e8e8e,0xffbababa,0xffb5b5b5,0xffb0b0b0,0xffbcbcbc,0xffbbbbbb,0xffafafaf,0xf0545454,0x61000000,0x1a000000, + 0xffffff,0xffffff,0xfab3b3b3,0xff969696,0xff878787,0xff9a9a9a,0xff919191,0xff8c8c8c,0xff929292,0xff000000,0xff515151,0xff959595,0xff000000,0xff4d4d4d, + 0xff686868,0xff000000,0xff000000,0xff909090,0xffafafaf,0xff9f9f9f,0xff999999,0xffa5a5a5,0xffb0b0b0,0xffb7b7b7,0xff9f9f9f,0xfd505050,0x7c000000,0x25000000, + 0xffffff,0xffffff,0xd8a0a0a0,0xff888888,0xff858585,0xff7a7a7a,0xff838383,0xff8a8a8a,0xff838383,0xff000000,0xff464646,0xff878787,0xff000000,0xff494949, + 0xff636363,0xff000000,0xff1e1e1e,0xff212121,0xff9b9b9b,0xffa6a6a6,0xff9f9f9f,0xffa0a0a0,0xffacacac,0xffa7a7a7,0xff858585,0xf2393939,0x85000000,0x2b000000, + 0xffffff,0xffffff,0x9e818181,0xff848483,0xff757676,0xff7b7b7b,0xff707070,0xff777776,0xff797979,0xff000000,0xff434443,0xff737273,0xff000000,0xff3e3e3e, + 0xff555554,0xff000000,0xff616160,0xff3d3d3c,0xff2c2c2c,0xff8f8f8f,0xffa1a1a1,0xffa5a5a5,0xff9e9e9e,0xff979897,0xff5e5d5e,0xdf282828,0x7c000000,0x25000000, + 0xffffff,0xffffff,0x505b5b5b,0xe66a6a6a,0xff6c6c6c,0xff686868,0xff656666,0xff656565,0xff6c6d6c,0xff373737,0xff0d0d0d,0xff1c1c1c,0xff131414,0xff585959, + 0xff4a4a4a,0xff000000,0xff4f4f4f,0xff727272,0xff373737,0xff6d6d6d,0xff979797,0xff989998,0xff878787,0xff666566,0xf5333333,0xbb101010,0x61000000,0x1a000000, + 0xffffff,0xffffff,0xc000000,0x833c3c3c,0xec474747,0xff4c4b4b,0xff535352,0xff575757,0xff575657,0xff595859,0xff585857,0xff545453,0xff525251,0xff535352, + 0xff545454,0xff565656,0xff5a5a5a,0xff606060,0xff696969,0xff717171,0xff707070,0xff666566,0xff535253,0xf5323231,0xce161616,0x83000000,0x3d000000,0xc000000, + 0xffffff,0xffffff,0x3000000,0x18000000,0x751f1f1f,0xc8262626,0xef272727,0xff2e2e2e,0xfd282828,0xfa262626,0xf5242424,0xf3232323,0xf5262626,0xf7262626, + 0xf9282828,0xfa292929,0xfc2c2c2c,0xfe2d2d2d,0xff323232,0xff343434,0xff343434,0xf3292929,0xdf1d1d1d,0xbb0d0d0d,0x83000000,0x4b000000,0x18000000,0x3000000, + 0xffffff,0xffffff,0xffffff,0x4000000,0x18000000,0x3d000000,0x61000000,0x7c000000,0x8a000000,0x8b000000,0x87000000,0x82000000,0x81000000,0x82000000, + 0x84000000,0x87000000,0x89000000,0x8b000000,0x8e000000,0x8e000000,0x8f000000,0x8b000000,0x7c000000,0x61000000,0x3d000000,0x18000000,0x4000000,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0x3000000,0xc000000,0x1a000000,0x26000000,0x2d000000,0x2e000000,0x2b000000,0x29000000,0x28000000,0x29000000, + 0x2a000000,0x2b000000,0x2d000000,0x2e000000,0x2e000000,0x2f000000,0x30000000,0x2e000000,0x26000000,0x1a000000,0xc000000,0x3000000,0xffffff,0xffffff +}; + static const unsigned char oneoverx_data[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; static const QRgb oneoverx_ctable[] = { 0xc6c6c6,0xff000000 }; static const unsigned char pass_data[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 0x00,0x00,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02, 0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02, 0x02,0x02,0x01,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00, 0x01,0x02,0x02,0x02,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01, 0x01,0x01,0x01,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x01, 0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x02,0x02, 0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x01, 0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x01, 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00 }; static const QRgb pass_ctable[] = { 0xc6c6c6,0xff000000,0xffffff00 }; -static const QRgb paste_data[] = { - 0x27efb54a,0x61efb649,0x61f1b645,0x61e0ae4e,0x8a96a0ac,0xe29bb0d4,0xcf5e7095,0x615e4f33,0x61e8a933,0x45e5a732,0x1168440f,0x4240c00,0x0,0x0, - 0xd1efbe61,0xfff2d797,0xffedcf86,0xffbaaf8f,0xffa7b4c7,0xffc9d6eb,0xffc0d1eb,0xff7e8289,0xffc39033,0xead58c1d,0x9c7e440b,0x2d2c0f00,0x1000000,0x0, - 0xfcf0c470,0xfff5f0d4,0xffddd6b5,0xff8695a8,0xff7285a7,0xff7786a1,0xff7a879c,0xff69748e,0xff946339,0xfff67202,0xdaa44102,0x52311100,0x6000000,0x0, - 0xf7f0c36e,0xfff4ebcc,0xffecdcaf,0xffcdc29b,0xffc1b486,0xffc3a86b,0xffb8924a,0xffb17b31,0xffc66c1c,0xffde6610,0xde944311,0x5830170e,0x7020000,0x0, - 0xf7f0c36e,0xfff3e7c5,0xfff4e1aa,0xfff7df9b,0xfff8d781,0xfff7c353,0xffcfa555,0xffb8b7ac,0xffc2b1aa,0xffb7aaac,0xf49ba0b2,0x9755739a,0x19154070,0x0, - 0xf7f0c36e,0xfff3e3b5,0xfff3d893,0xfff3d485,0xfff4c663,0xfff3aa27,0xffbc9656,0xffc5e2ff,0xffbfdafb,0xffadcffc,0xffa9ccfd,0xee6eabf2,0x832061a8,0xf002f61, - 0xf7f0c36d,0xfff3e2ad,0xfff3d890,0xfff3cc73,0xfff4b63e,0xfff3a216,0xffbc9859,0xffcde6fe,0xffc8dffb,0xffbad6fb,0xffa8ccfb,0xff5da3f8,0xf3218af6,0x5e07427d, - 0xf7f0c36d,0xfff3e0af,0xfff3d181,0xfff3c056,0xfff4b539,0xfff2ab22,0xffbc9c60,0xffcce5fe,0xffc7defb,0xffb8d5fb,0xffbbd5fd,0xffabcafe,0xff6cb0ff,0x73194579, - 0xf7f0c36e,0xfff3dda7,0xfff3c564,0xfff3bc4c,0xfff4b63c,0xfff3ac26,0xffbc9e63,0xffcae4ff,0xffbcd7fb,0xffa4c8fb,0xff92bbfb,0xff8eb7fb,0xff72b3fe,0x741d4678, - 0xf7f0c36d,0xfff3d99a,0xfff3bd50,0xfff3ba45,0xfff4b53b,0xfff3ac25,0xffbc9d63,0xffcae5ff,0xffbbd6fb,0xffa1c5fb,0xff99c1fb,0xff9cc1fc,0xff7cb9fe,0x741f4678, - 0xfbf5c870,0xfff8dc9b,0xfff8c65c,0xfff8c252,0xfff8be49,0xfff7b534,0xffbfa46c,0xffcbe4ff,0xffb7d3fb,0xffa4c6fb,0xffa0c4fb,0xffa2c4fc,0xff80bdff,0x74204778, - 0xb2b08749,0xf6b78958,0xf8b48041,0xf8b47d3a,0xf8b47c36,0xf8b3742b,0xfe927d68,0xffc4e7ff,0xffc1defe,0xffb4d6fe,0xffaed3fe,0xffaed2fe,0xff7dc1ff,0x761d487a, - 0x274d2f15,0x64533018,0x73482912,0x73482810,0x73482810,0x7048250e,0x9b303341,0xd43a7cba,0xd53c78b3,0xd53975b3,0xd53774b3,0xd53674b3,0xd32570b9,0x61083059, - 0x1000000,0x8000000,0xd000000,0xd000000,0xd000000,0xd000000,0x1d000a17,0x38002245,0x3b001e3e,0x3a001f3f,0x3a001f3f,0x3b001f3e,0x37002245,0x1a001020 -}; - static const QRgb paste_inactive_data[] = { 0x1bbbbbbb,0x45bababa,0x45bababa,0x45b2b2b2,0x619e9e9e,0x9fadadad,0x916e6e6e,0x45505050,0x45afafaf,0x31acacac,0xc484848,0x3111111,0x0,0x0, 0x93c3c3c3,0xb3d8d8d8,0xb3cfcfcf,0xb3aeaeae,0xb3b2b2b2,0xb3d4d4d4,0xb3cecece,0xb3828282,0xb3949494,0xa4959595,0x6d4f4f4f,0x1f151515,0x1000000,0x0, 0xb1c7c7c7,0xb3eeeeee,0xb3d4d4d4,0xb3929292,0xb3838383,0xb3848484,0xb3858585,0xb3737373,0xb36d6d6d,0xb38d8d8d,0x99575757,0x3a181818,0x4000000,0x0, 0xaec6c6c6,0xb3eaeaea,0xb3dbdbdb,0xb3c0c0c0,0xb3b2b2b2,0xb3a9a9a9,0xb3959595,0xb3828282,0xb37d7d7d,0xb3808080,0x9c555555,0x3e1d1d1d,0x5000000,0x0, 0xaec6c6c6,0xb3e6e6e6,0xb3e0e0e0,0xb3dedede,0xb3d7d7d7,0xb3c6c6c6,0xb3a8a8a8,0xb3b5b5b5,0xb3b5b5b5,0xb3adadad,0xaba0a0a0,0x6a6e6e6e,0x12383838,0x0, 0xaec6c6c6,0xb3e3e3e3,0xb3d8d8d8,0xb3d4d4d4,0xb3c8c8c8,0xb3b0b0b0,0xb3999999,0xb3dcdcdc,0xb3d5d5d5,0xb3c9c9c9,0xb3c6c6c6,0xa7a0a0a0,0x5c555555,0xb252525, 0xaec6c6c6,0xb3e1e1e1,0xb3d8d8d8,0xb3cdcdcd,0xb3bbbbbb,0xb3aaaaaa,0xb39b9b9b,0xb3e0e0e0,0xb3dbdbdb,0xb3d1d1d1,0xb3c6c6c6,0xb3979797,0xab767676,0x42373737, 0xaec6c6c6,0xb3e0e0e0,0xb3d2d2d2,0xb3c3c3c3,0xb3bababa,0xb3b1b1b1,0xb39e9e9e,0xb3e0e0e0,0xb3dadada,0xb3d0d0d0,0xb3d1d1d1,0xb3c6c6c6,0xb3a4a4a4,0x513d3d3d, 0xaec6c6c6,0xb3dddddd,0xb3c8c8c8,0xb3c0c0c0,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d3d3d3,0xb3c2c2c2,0xb3b5b5b5,0xb3b1b1b1,0xb3a8a8a8,0x513f3f3f, 0xaec6c6c6,0xb3d9d9d9,0xb3c1c1c1,0xb3bebebe,0xb3bababa,0xb3b2b2b2,0xb3a0a0a0,0xb3dfdfdf,0xb3d2d2d2,0xb3c0c0c0,0xb3bbbbbb,0xb3bcbcbc,0xb3aeaeae,0x51404040, 0xb3cbcbcb,0xb6dddddd,0xb5c9c9c9,0xb4c6c6c6,0xb4c2c2c2,0xb4bababa,0xb4a5a5a5,0xb3dfdfdf,0xb3cecece,0xb3c1c1c1,0xb3bebebe,0xb3bfbfbf,0xb3b1b1b1,0x51414141, 0x828c8c8c,0xb2909090,0xb2888888,0xb1868686,0xb0848484,0xaf7e7e7e,0xb4808080,0xb4dfdfdf,0xb4d8d8d8,0xb4d0d0d0,0xb4cccccc,0xb4cbcbcb,0xb4b3b3b3,0x53414141, 0x1c353535,0x49383838,0x532f2f2f,0x532e2e2e,0x522e2e2e,0x502d2d2d,0x6e333333,0x966e6e6e,0x976c6c6c,0x97696969,0x98686868,0x98676767,0x97606060,0x45282828, 0x1000000,0x6000000,0x9000000,0x9000000,0x9000000,0x9000000,0x14080808,0x281c1c1c,0x2a181818,0x2a181818,0x29191919,0x2a191919,0x281b1b1b,0x120d0d0d }; +static const QRgb paste_data[] = { + 0x27efb54a,0x61efb649,0x61f1b645,0x61e0ae4e,0x8a96a0ac,0xe29bb0d4,0xcf5e7095,0x615e4f33,0x61e8a933,0x45e5a732,0x1168440f,0x4240c00,0x0,0x0, + 0xd1efbe61,0xfff2d797,0xffedcf86,0xffbaaf8f,0xffa7b4c7,0xffc9d6eb,0xffc0d1eb,0xff7e8289,0xffc39033,0xead58c1d,0x9c7e440b,0x2d2c0f00,0x1000000,0x0, + 0xfcf0c470,0xfff5f0d4,0xffddd6b5,0xff8695a8,0xff7285a7,0xff7786a1,0xff7a879c,0xff69748e,0xff946339,0xfff67202,0xdaa44102,0x52311100,0x6000000,0x0, + 0xf7f0c36e,0xfff4ebcc,0xffecdcaf,0xffcdc29b,0xffc1b486,0xffc3a86b,0xffb8924a,0xffb17b31,0xffc66c1c,0xffde6610,0xde944311,0x5830170e,0x7020000,0x0, + 0xf7f0c36e,0xfff3e7c5,0xfff4e1aa,0xfff7df9b,0xfff8d781,0xfff7c353,0xffcfa555,0xffb8b7ac,0xffc2b1aa,0xffb7aaac,0xf49ba0b2,0x9755739a,0x19154070,0x0, + 0xf7f0c36e,0xfff3e3b5,0xfff3d893,0xfff3d485,0xfff4c663,0xfff3aa27,0xffbc9656,0xffc5e2ff,0xffbfdafb,0xffadcffc,0xffa9ccfd,0xee6eabf2,0x832061a8,0xf002f61, + 0xf7f0c36d,0xfff3e2ad,0xfff3d890,0xfff3cc73,0xfff4b63e,0xfff3a216,0xffbc9859,0xffcde6fe,0xffc8dffb,0xffbad6fb,0xffa8ccfb,0xff5da3f8,0xf3218af6,0x5e07427d, + 0xf7f0c36d,0xfff3e0af,0xfff3d181,0xfff3c056,0xfff4b539,0xfff2ab22,0xffbc9c60,0xffcce5fe,0xffc7defb,0xffb8d5fb,0xffbbd5fd,0xffabcafe,0xff6cb0ff,0x73194579, + 0xf7f0c36e,0xfff3dda7,0xfff3c564,0xfff3bc4c,0xfff4b63c,0xfff3ac26,0xffbc9e63,0xffcae4ff,0xffbcd7fb,0xffa4c8fb,0xff92bbfb,0xff8eb7fb,0xff72b3fe,0x741d4678, + 0xf7f0c36d,0xfff3d99a,0xfff3bd50,0xfff3ba45,0xfff4b53b,0xfff3ac25,0xffbc9d63,0xffcae5ff,0xffbbd6fb,0xffa1c5fb,0xff99c1fb,0xff9cc1fc,0xff7cb9fe,0x741f4678, + 0xfbf5c870,0xfff8dc9b,0xfff8c65c,0xfff8c252,0xfff8be49,0xfff7b534,0xffbfa46c,0xffcbe4ff,0xffb7d3fb,0xffa4c6fb,0xffa0c4fb,0xffa2c4fc,0xff80bdff,0x74204778, + 0xb2b08749,0xf6b78958,0xf8b48041,0xf8b47d3a,0xf8b47c36,0xf8b3742b,0xfe927d68,0xffc4e7ff,0xffc1defe,0xffb4d6fe,0xffaed3fe,0xffaed2fe,0xff7dc1ff,0x761d487a, + 0x274d2f15,0x64533018,0x73482912,0x73482810,0x73482810,0x7048250e,0x9b303341,0xd43a7cba,0xd53c78b3,0xd53975b3,0xd53774b3,0xd53674b3,0xd32570b9,0x61083059, + 0x1000000,0x8000000,0xd000000,0xd000000,0xd000000,0xd000000,0x1d000a17,0x38002245,0x3b001e3e,0x3a001f3f,0x3a001f3f,0x3b001f3e,0x37002245,0x1a001020 +}; + static const QRgb pixmap_data[] = { 0x9377b7fe,0xc277b7fe,0xc264aefe,0xc251a5fe,0xc23e9cfe,0xc22f94fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc22890fe,0xc2258cf8,0x2a0449a2,0x0,0x0, 0xc28fc3fd,0xff90c3fc,0xff71b4fc,0xff50a4fc,0xff3194fc,0xff1788fc,0xff0b81fc,0xff0b81fc,0xff0b80fc,0xff0a80fc,0xff0a7df5,0x3e034391,0x0,0x0, 0xc2cae2fa,0xfff7f8f9,0xfff4f7f9,0xfff0f6f9,0xffecf4f9,0xffe8f3f9,0xffdfecf7,0xffc9d8f0,0xffc3d3ed,0xffc2d6ed,0xffc4ddf1,0x3e1b4f91,0x0,0x0, 0xc2cee6fe,0xfffafdff,0xfff7fcff,0xfff3fbff,0xffeef8ff,0xffd1def9,0xffd4dcf7,0xffe4e9fd,0xffd7e0fe,0xffc1cdf9,0xffaebbe6,0x61576ba2,0x1a1c2b,0x0, 0xc2cde6fe,0xfff8fdff,0xfff4fbff,0xfff0f9ff,0xffd3dffb,0xfff1f4fe,0xfff5f7ff,0xffeff3ff,0xffdce5ff,0xffd1ddff,0xffe2e9ff,0xf6d2d6ef,0x476971a4,0x0, 0xc2cce5fe,0xfff6fbff,0xfff2faff,0xffe0ecfe,0xffdfe8fe,0xfff5f8ff,0xfffbfcff,0xfff5f7ff,0xffe2eaff,0xffe0e8ff,0xfff6f8ff,0xfff7f9ff,0xdeb3b8db,0x10323756, 0xc2cbe5fe,0xfff3faff,0xffeff9ff,0xffd3e1fe,0xffdbe6ff,0xffe7efff,0xfff6f9ff,0xfff7f8fe,0xffe5ebfb,0xfff2f5fe,0xfff8faff,0xfff5f8ff,0xffe0e4f9,0x575b608f, 0xc2c8e4fe,0xfff0f9ff,0xffebf8ff,0xffd1dffe,0xffcedeff,0xffdae6ff,0xffe6eeff,0xffd7dff7,0xffa8b7d4,0xffe2e5f4,0xffe7edff,0xffd6e1ff,0xffc9d7ff,0x8b7176a6, 0xc2c6e3fe,0xffedf8ff,0xffe8f6ff,0xffd1e0fe,0xffd8e5ff,0xffe8efff,0xfff3f7ff,0xffd9e0f7,0xffb1c2e2,0xffe3e6f4,0xffe9efff,0xffdce6ff,0xffd1ddff,0x8f6e74a1, 0xc1beddfa,0xfce2f0f8,0xfcddeef8,0xfdcddcf9,0xfff3f7ff,0xfff6f9ff,0xfff8faff,0xffe6edfe,0xffebeffc,0xfff6f8fd,0xfff7f9ff,0xffe9efff,0xffd3dbfa,0x684d5279, 0x603277cb,0x7f175ab4,0x7f175ab4,0x8e4676c5,0xfbe8edfd,0xfff6f9ff,0xffebf1ff,0xffd7e4ff,0xffeef3ff,0xfff4f7ff,0xfff8faff,0xfff7f9ff,0xe9acb1d5,0x21161825, 0x0,0x0,0x0,0x15a6796,0x8db1beec,0xffeaf0fe,0xffd3e1ff,0xffcbdcff,0xffe9f0ff,0xffeef3ff,0xfff3f7ff,0xfbd4d8ef,0x6d4e5276,0x2000000, 0x0,0x0,0x0,0x0,0x44b5780,0x809caadb,0xf2bccaf4,0xffc8d7fd,0xffe2ebfe,0xffdde3fa,0xe7b1b8da,0x6b52577a,0x6010102,0x0, 0x0,0x0,0x0,0x0,0x0,0x1000000,0x1e515c87,0x5b7580af,0x6a7982af,0x575b628a,0x1d1e212e,0x2000000,0x0,0x0 }; -static const QRgb play_data[] = { - 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000, - 0xff000000,0xffdddddd,0xffe6e6e6,0xffe2e2e2,0xffd7d7d7,0xffd4d4d4,0xffd3d3d3,0xffd3d3d3,0xffcccccc,0xffbababa,0xffa2a2a2,0xff818181,0xff525252,0xff000000, - 0xff000000,0xffd1d1d1,0xffdddddd,0xffcacaca,0xffa7a7a7,0xffafafaf,0xffc3c3c3,0xffc8c8c8,0xffbdbdbd,0xffa4a4a4,0xff818181,0xff525252,0xff3c3c3c,0xff000000, - 0xff000000,0xffbebebe,0xffcbcbcb,0xffaaaaaa,0xff686868,0xffb8b8b8,0xff979797,0xffaeaeae,0xffa6a6a6,0xff828282,0xff585858,0xff3d3d3d,0xff313131,0xff000000, - 0xff000000,0xffa9a9a9,0xffb3b3b3,0xff909090,0xff3f3f3f,0xffffffff,0xffadadad,0xff7b7b7b,0xff7e7e7e,0xff5a5a5a,0xff3e3e3e,0xff343434,0xff292929,0xff000000, - 0xff000000,0xff919191,0xff969696,0xff747474,0xff2b2b2b,0xffffffff,0xffffffff,0xffa3a3a3,0xff424242,0xff3c3c3c,0xff343434,0xff2a2a2a,0xff222222,0xff000000, - 0xff000000,0xff868686,0xff848484,0xff646464,0xff242424,0xffffffff,0xffffffff,0xffffffff,0xff9e9e9e,0xff343434,0xff2e2e2e,0xff252525,0xff1e1e1e,0xff000000, - 0xff000000,0xff868686,0xff848484,0xff646464,0xff242424,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffa2a2a2,0xff2e2e2e,0xff252525,0xff1e1e1e,0xff000000, - 0xff000000,0xff7a7a7a,0xff727272,0xff515151,0xff1d1d1d,0xffffffff,0xffffffff,0xffffffff,0xffa3a3a3,0xff313131,0xff292929,0xff222222,0xff1b1b1b,0xff000000, - 0xff000000,0xff5b5b5b,0xff474747,0xff343434,0xff1d1d1d,0xffffffff,0xffffffff,0xff9e9e9e,0xff2b2b2b,0xff242424,0xff1f1f1f,0xff1a1a1a,0xff161616,0xff000000, - 0xff000000,0xff414141,0xff3b3b3b,0xff2d2d2d,0xff222222,0xffffffff,0xff999999,0xff202020,0xff1e1e1e,0xff191919,0xff161616,0xff161616,0xff161616,0xff000000, - 0xff000000,0xff383838,0xff2f2f2f,0xff252525,0xff1d1d1d,0xff969696,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff000000, - 0xff000000,0xff2f2f2f,0xff232323,0xff191919,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff000000, - 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000 -}; - static const QRgb play2_data[] = { 0xffffff,0x3000000,0x8000000,0x11000000,0x1a000000,0x1b000000,0x16000000,0x12000000,0xd000000,0x8000000,0x2000000,0xffffff,0xffffff,0xffffff, - 0xffffff,0x6000000,0xf000000,0x33000000,0x86898989,0x57000000,0x38000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff, - 0xffffff,0x9000000,0x19000000,0x5f000000,0xffffffff,0xdca2a2a2,0x7f000000,0x56000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff, - 0xffffff,0xd000000,0x24000000,0x7a000000,0xffffffff,0xffffffff,0xe99a9a9a,0xa0000000,0x72000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, - 0xffffff,0x10000000,0x2e000000,0x88000000,0xffffffff,0xffffffff,0xffffffff,0xf2969696,0xb8000000,0x7d000000,0x47000000,0x24000000,0xf000000,0x5000000, - 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf7939393,0xb7000000,0x69000000,0x35000000,0x17000000,0x7000000, - 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xec999999,0x84000000,0x43000000,0x1e000000,0xa000000, - 0xffffff,0x14000000,0x3c000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xdb000000,0x88000000,0x49000000,0x22000000,0xb000000, - 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xfd000000,0xc4000000,0x7a000000,0x43000000,0x1e000000,0xa000000, - 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xfe909090,0xf9000000,0xd7000000,0xa2000000,0x63000000,0x35000000,0x17000000,0x7000000, - 0xffffff,0x10000000,0x2e000000,0x7f000000,0xffffffff,0xf0979797,0xd5000000,0xc2000000,0xa3000000,0x78000000,0x47000000,0x24000000,0xf000000,0x5000000, - 0xffffff,0xd000000,0x24000000,0x57000000,0xa8727272,0x9c000000,0x94000000,0x85000000,0x6d000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, + 0xffffff,0x6000000,0xf000000,0x33000000,0x86787878,0x57000000,0x38000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff, + 0xffffff,0x9000000,0x19000000,0x5f000000,0xffffffff,0xdc939393,0x7f000000,0x56000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff, + 0xffffff,0xd000000,0x24000000,0x7a000000,0xffffffff,0xffffffff,0xe98b8b8b,0xa0000000,0x72000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, + 0xffffff,0x10000000,0x2e000000,0x88000000,0xffffffff,0xffffffff,0xffffffff,0xf2868686,0xb8000000,0x7d000000,0x47000000,0x24000000,0xf000000,0x5000000, + 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf7838383,0xb7000000,0x69000000,0x35000000,0x17000000,0x7000000, + 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xec898989,0x84000000,0x43000000,0x1e000000,0xa000000, + 0xffffff,0x14000000,0x3c000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff7f7f7f,0xdb000000,0x88000000,0x49000000,0x22000000,0xb000000, + 0xffffff,0x14000000,0x3a000000,0x9b000000,0xffffffff,0xffffffff,0xffffffff,0xff7f7f7f,0xfd000000,0xc4000000,0x7a000000,0x43000000,0x1e000000,0xa000000, + 0xffffff,0x12000000,0x35000000,0x94000000,0xffffffff,0xffffffff,0xfe808080,0xf9000000,0xd7000000,0xa2000000,0x63000000,0x35000000,0x17000000,0x7000000, + 0xffffff,0x10000000,0x2e000000,0x7f000000,0xffffffff,0xf0878787,0xd5000000,0xc2000000,0xa3000000,0x78000000,0x47000000,0x24000000,0xf000000,0x5000000, + 0xffffff,0xd000000,0x24000000,0x57000000,0xa8606060,0x9c000000,0x94000000,0x85000000,0x6d000000,0x4d000000,0x2b000000,0x14000000,0x8000000,0x2000000, 0xffffff,0x9000000,0x19000000,0x2f000000,0x48000000,0x5a000000,0x5a000000,0x50000000,0x3e000000,0x2a000000,0x14000000,0x8000000,0x2000000,0xffffff, 0xffffff,0x6000000,0xf000000,0x1a000000,0x25000000,0x31000000,0x31000000,0x2a000000,0x1f000000,0x14000000,0x8000000,0x2000000,0xffffff,0xffffff }; +static const QRgb play_data[] = { + 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000, + 0xff000000,0xffd6d6d6,0xffe1e1e1,0xffdcdcdc,0xffcfcfcf,0xffcccccc,0xffcbcbcb,0xffcbcbcb,0xffc3c3c3,0xffaeaeae,0xff939393,0xff707070,0xff414141,0xff000000, + 0xff000000,0xffc8c8c8,0xffd6d6d6,0xffc0c0c0,0xff999999,0xffa2a2a2,0xffb8b8b8,0xffbebebe,0xffb1b1b1,0xff959595,0xff707070,0xff414141,0xff2c2c2c,0xff000000, + 0xff000000,0xffb3b3b3,0xffc1c1c1,0xff9c9c9c,0xff565656,0xffacacac,0xff878787,0xffa1a1a1,0xff989898,0xff717171,0xff464646,0xff2d2d2d,0xff232323,0xff000000, + 0xff000000,0xff9b9b9b,0xffa6a6a6,0xff808080,0xff2f2f2f,0xffffffff,0xffa0a0a0,0xff6a6a6a,0xff6d6d6d,0xff484848,0xff2e2e2e,0xff252525,0xff1c1c1c,0xff000000, + 0xff000000,0xff818181,0xff868686,0xff626262,0xff1e1e1e,0xffffffff,0xffffffff,0xff949494,0xff323232,0xff2c2c2c,0xff252525,0xff1d1d1d,0xff161616,0xff000000, + 0xff000000,0xff757575,0xff737373,0xff525252,0xff181818,0xffffffff,0xffffffff,0xffffffff,0xff8f8f8f,0xff252525,0xff202020,0xff191919,0xff131313,0xff000000, + 0xff000000,0xff757575,0xff737373,0xff525252,0xff181818,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff939393,0xff202020,0xff191919,0xff131313,0xff000000, + 0xff000000,0xff686868,0xff606060,0xff404040,0xff121212,0xffffffff,0xffffffff,0xffffffff,0xff949494,0xff232323,0xff1c1c1c,0xff161616,0xff111111,0xff000000, + 0xff000000,0xff494949,0xff363636,0xff252525,0xff121212,0xffffffff,0xffffffff,0xff8f8f8f,0xff1e1e1e,0xff181818,0xff141414,0xff101010,0xff0d0d0d,0xff000000, + 0xff000000,0xff313131,0xff2b2b2b,0xff1f1f1f,0xff161616,0xffffffff,0xff898989,0xff151515,0xff131313,0xff0f0f0f,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000, + 0xff000000,0xff292929,0xff212121,0xff191919,0xff121212,0xff868686,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000, + 0xff000000,0xff212121,0xff171717,0xff0f0f0f,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff0d0d0d,0xff000000, + 0xc6000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xc6000000 +}; + static const QRgb programs_data[] = { 0xd778b7fd,0xeb77b7fd,0xea5daafd,0xea479ffd,0xea3295fd,0xea238efd,0xea1e8bfd,0xea1e8bfd,0xea1d8bfd,0xec1d8dfe,0xbf166ec7,0x3c072f5e,0x3000000,0x0, 0xed9cc9fb,0xffa8d0fb,0xff89c0fb,0xff6eb2fb,0xff53a6fb,0xff409cfa,0xff3595fa,0xff3493f9,0xff3393f9,0xff3294fa,0xde246ebb,0x5b0c2b4d,0x8000000,0x0, 0xeac7e0fb,0xfff5f8fb,0xffeff6fb,0xffeaf5fb,0xffe2f0fb,0xffd3e5f8,0xffc2d3f2,0xffc3d2f2,0xffb8cbf0,0xffaec6ed,0xdf7c94b4,0x5d29384c,0x9000000,0x0, 0xeacde4fd,0xfffeffff,0xfff8fdff,0xfff2fafe,0xffe3ecfc,0xffe2e8fa,0xffe7ebfa,0xffe7ecfd,0xffd1dbfc,0xffc9d4f7,0xf0adb6d3,0x89626882,0x16222539,0x0, 0xeacbe3fd,0xfffcfeff,0xfff2faff,0xffe3edfd,0xffe3eafc,0xfff6f9fe,0xfff8f9ff,0xffeef3ff,0xffd8e2ff,0xffdfe7ff,0xfeeceffa,0xdeb9bbd1,0x5b585b71,0x70d0e19, 0xeacbe3fd,0xfffbfeff,0xffebf5fe,0xffdbe6fd,0xffe4ecfe,0xfff4f8ff,0xfffcfcff,0xfff4f7ff,0xffe5ecff,0xfff0f4ff,0xfffbfcff,0xfef1f3f9,0xb77e8196,0x22292b3b, 0xeacae3fd,0xfff9feff,0xffe6f2ff,0xffd3e2fe,0xffd8e4ff,0xffe6eeff,0xfff4f7ff,0xffe4e7f7,0xffdbe1f2,0xfff3f6fd,0xfff1f4ff,0xffebf2ff,0xe9969ebb,0x51292c38, 0xeac7e2fd,0xfff6fdff,0xffe3f1ff,0xffcbddff,0xffcedeff,0xffdeeaff,0xffedf3ff,0xffa9b8d6,0xffa0aeca,0xffe0e6f8,0xffdde7ff,0xffd6e4ff,0xf99da8cd,0x73252833, 0xecc6e3fe,0xfff3fdff,0xffe1f2ff,0xffdae8ff,0xffebf1ff,0xfff6f8ff,0xfff8fbff,0xffd3dbf2,0xffd4dbed,0xfff1f4fb,0xffecf1ff,0xffe5efff,0xf3959ebb,0x7120222b, 0xcc9dbdd8,0xe4b3c3ce,0xe4a7bccf,0xf0c0cde3,0xfdf1f3fb,0xfff9fbff,0xffedf3ff,0xffe3ecff,0xfff3f7ff,0xfff8faff,0xfff7faff,0xffe9effb,0xda71758a,0x5514151c, 0x4a334a63,0x6b2f3e4f,0x6a2d3d51,0x8f6e7a94,0xe3d6dbea,0xfff2f7ff,0xffd6e4ff,0xffdae6ff,0xfff0f5ff,0xfff6f9ff,0xfff9faff,0xf5b9bccf,0xa53c3f4d,0x2d050508, 0x3000000,0xb000000,0xb000000,0x1b343a51,0x7d9097ae,0xe5c0cbe5,0xfecadcfd,0xffdeecff,0xfff2f9ff,0xffeaf0fa,0xf3b7bbcd,0xbb56596a,0x56121319,0xe000000, 0x0,0x0,0x0,0x0,0x133f4764,0x62606881,0xb6717b97,0xd5868ea0,0xd78a8f9d,0xcb6f7485,0x9e3e404f,0x53111319,0x16000000,0x2000000, 0x0,0x0,0x0,0x0,0x0,0x7121421,0x1f2a2e3e,0x39292c35,0x3d272830,0x39181921,0x2506070b,0xc000000,0x2000000,0x0 }; static const QRgb quit_icon_data[] = { 0x0,0x0,0x0,0x2c90000,0x1fc80000,0x5bc60000,0x83c50000,0x83c20000,0x5bbb0000,0x1fb70000,0x2b50000,0x0,0x0,0x0, 0x0,0x0,0xdcb0000,0x87cb0000,0xecd51313,0xffe44a4a,0xffed6f6f,0xffec7070,0xffe05050,0xecc91a1a,0x87b30000,0xdad0000,0x0,0x0, 0x0,0xdca0000,0xaacd0000,0xfee53b3b,0xfffbb1b1,0xffffd6d6,0xffffd9d9,0xffffd9d9,0xffffd7d7,0xfffbbcbc,0xfedb4c4c,0xaab00000,0xda70000,0x0, 0x2c90000,0x87ca0000,0xfee52f2f,0xfffeadad,0xffffd6d6,0xffffbdbd,0xffffb3b3,0xffffb3b3,0xffffbdbd,0xffffd6d6,0xfffeb1b1,0xfed84343,0x87a60000,0x2a00000, 0x1fc80000,0xecd50808,0xfffb7272,0xffffbcbc,0xffffffff,0xffffe7e7,0xffff9b9b,0xffff9b9b,0xffffe7e7,0xffffffff,0xffffbbbb,0xfffa7171,0xecb90c0c,0x1f9d0000, 0x5bc50000,0xffe41b1b,0xffff6464,0xffff7474,0xffffd9d9,0xffffffff,0xffffe0e0,0xffffe0e0,0xffffffff,0xfffcc6c6,0xfff63535,0xfff30e0e,0xffd00202,0x5b9a0000, 0x83c50000,0xffec1c1c,0xffff3f3f,0xffff3f3f,0xffff5252,0xffffd2d2,0xffffffff,0xffffffff,0xfffcc6c6,0xfff31c1c,0xfff20000,0xfff20000,0xffdc0000,0x839b0000, 0x83c10000,0xffec0a0a,0xffff1616,0xffff1616,0xffff3131,0xffffcece,0xffffffff,0xffffffff,0xfffcc6c6,0xfff41c1c,0xfff40000,0xfff40000,0xffdc0000,0x83970000, 0x5bbb0000,0xffe10000,0xfffe0101,0xfffe1b1b,0xffffc5c5,0xffffffff,0xffffc6c6,0xffffc6c6,0xffffffff,0xfffdc4c4,0xfffa1a1a,0xfffa0000,0xffcf0000,0x5b900000, 0x1fb70000,0xeccb0202,0xfffc0909,0xffff6d6d,0xffffffff,0xffffc8c8,0xffff2525,0xffff2525,0xffffc8c8,0xffffffff,0xffff6d6d,0xfffb0909,0xecae0202,0x1f8c0000, 0x2b40000,0x87b30101,0xfede1313,0xffff2828,0xffff7e7e,0xffff3a3a,0xffff2323,0xffff2323,0xffff3a3a,0xffff7e7e,0xfffe2828,0xfed01313,0x878e0101,0x28b0000, 0x0,0xdac0000,0xaab00404,0xfedb2121,0xfffc3b3b,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xffff3d3d,0xfffb3b3b,0xfed02121,0xaa930404,0xd890000,0x0, 0x0,0x0,0xda60000,0x87a50202,0xecbb1616,0xffd73131,0xffe63f3f,0xffe53f3f,0xffd33131,0xecaf1616,0x878e0202,0xd890000,0x0,0x0, 0x0,0x0,0x0,0x29f0000,0x1d9c0000,0x59990101,0x839b0505,0x83970505,0x5b8f0101,0x1f8c0000,0x28a0000,0x0,0x0,0x0 }; static const QRgb redo_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x1000000,0x4000000,0x5000000,0x5000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x1000000,0xc000000,0x26000c00,0x5f003900,0x7b004500,0x7c004600,0x69004700,0x26003100,0x3000000,0x0,0x0,0x0,0x0, 0x3000000,0x1e000800,0x71003c00,0xdb006b00,0xfb009200,0xff00a600,0xff00a800,0xfd009d00,0xec007b00,0x74005500,0x6003300,0x0,0x0,0x0, 0x23000e00,0xa0004f00,0xfa008100,0xf9009a00,0xef009200,0xfa009d00,0xff00b700,0xff00c700,0xff00c600,0xfd009a00,0x6d005d00,0x0,0x0,0x0, 0x86004e00,0xe1006900,0x83006b00,0x3a005f00,0x2a005c00,0x43005a00,0xa1006d00,0xfd00a800,0xff00d700,0xff00d600,0xe7008a00,0x13005600,0x2000000,0x1000000, 0xb6006f00,0x27006c00,0x1006600,0x0,0x3000000,0x24001d00,0x44003500,0xb1006600,0xff00c200,0xff00e800,0xfc00c000,0x75005c00,0x3d003600,0x2a004700, 0x0,0x0,0x0,0x0,0x2000000,0x53006700,0xf3008c00,0xff02c102,0xff03d803,0xff03f903,0xff03f003,0xff03c403,0xff01b001,0xca007f00, 0x0,0x0,0x0,0x0,0x0,0x2000000,0x63007600,0xf611c111,0xff36fc36,0xff39ff39,0xff39ff39,0xff2aec2a,0xc406a306,0x1d008300, 0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x67038503,0xf63ac63a,0xff89fc89,0xff75f075,0xc616ab16,0x1f008f00,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4003500,0x65058f04,0xf356c852,0xc927b325,0x19009a00,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x4018ab00,0x1616ad00,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb repeat_data[] = { 0x0,0x0,0x313131,0x8313131,0x1b343434,0x46363636,0x70373737,0x71373737,0x47333333,0x1c2e2e2e,0x92a2a2a,0x11c1c1c,0x0,0x0, 0x0,0x1313131,0x1a323232,0x6d3b3b3b,0xd24e4e4e,0xfb656565,0xff797979,0xff7a7a7a,0xfc666666,0xd44e4e4e,0x72383838,0x1d282828,0x21f1f1f,0x0, 0x2f2f2f,0x1a313131,0x91404040,0xf2696969,0xffa9a9a9,0xffd7d7d7,0xffe4e4e4,0xffe9e9e9,0xffdedede,0xffafafaf,0xf36d6d6d,0x973e3e3e,0x20252525,0x1111111, 0x82e2e2e,0x6d3a3a3a,0xf2656565,0xffb2b2b2,0xffd1d1d1,0xffdcdcdc,0xffe5e5e5,0xffe2e2e2,0xffdcdcdc,0xffd6d6d6,0xffbbbbbb,0xf36a6a6a,0x7a353535,0xd1e1e1e, 0x1b313131,0xd2474747,0xff939393,0xffc0c0c0,0xffdcdcdc,0xfff2f2f2,0xfffefefe,0xfff5f5f5,0xffd7d7d7,0xffc0c0c0,0xffc0c0c0,0xff949494,0xd9454545,0x291f1f1f, 0x46343434,0xfb565656,0xffa1a1a1,0xffcdcdcd,0xfff9f9f9,0xffdbdbdb,0xffbdbdbd,0xffbfbfbf,0xffafafaf,0xff979797,0xff808080,0xff707070,0xfc494949,0x5e262626, 0x70363636,0xff5e5e5e,0xff9d9d9d,0xffdadada,0xffe6e6e6,0xffa4a4a4,0xff8f8f8f,0xffa5a5a5,0xffc2c2c2,0xffdddddd,0xffc1c1c1,0xff727272,0xff4e4e4e,0x8a2a2a2a, 0x71353535,0xff565656,0xff898989,0xffd6d6d6,0xffdfdfdf,0xff8d8d8d,0xff939393,0xfffdfdfd,0xffffffff,0xffffffff,0xffd4d4d4,0xff7b7b7b,0xff4e4e4e,0x8c292929, 0x47343434,0xfc484848,0xff6e6e6e,0xffb8b8b8,0xfff6f6f6,0xffb9b9b9,0xff959595,0xfff4f4f4,0xffffffff,0xffffffff,0xffcbcbcb,0xff767676,0xfc474747,0x69232323, 0x1c2e2e2e,0xd43e3e3e,0xff646464,0xff8b8b8b,0xffd0d0d0,0xfff7f7f7,0xfff2f2f2,0xfffbfbfb,0xffefefef,0xfff9f9f9,0xffc2c2c2,0xff6e6e6e,0xde3c3c3c,0x3c161616, 0x92a2a2a,0x72363636,0xf3545454,0xff767676,0xff939393,0xffb6b6b6,0xffc7c7c7,0xffbcbcbc,0xffababab,0xffbcbcbc,0xff9c9c9c,0xf5555555,0x8c2c2c2c,0x1a0f0f0f, 0x11c1c1c,0x1d292929,0x973c3c3c,0xf35b5b5b,0xff7e7e7e,0xff8a8a8a,0xff909090,0xff8b8b8b,0xff8a8a8a,0xff808080,0xf55c5c5c,0xaa343434,0x36161616,0x5030303, 0x0,0x21f1f1f,0x20262626,0x7a363636,0xd9484848,0xfc616161,0xff727272,0xff727272,0xfc616161,0xde474747,0x8c2f2f2f,0x36161616,0xa070707,0x0, 0x0,0x0,0x1111111,0xd1e1e1e,0x29222222,0x5e2d2d2d,0x8a323232,0x8c313131,0x69282828,0x3c181818,0x1a0f0f0f,0x5030303,0x0,0x0 }; static const unsigned char reset_data[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x01,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x01, 0x01,0x02,0x02,0x01,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x01, 0x01,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x02, 0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02, 0x02,0x01,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0x01, 0x02,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00, 0x00,0x01,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x02, 0x01,0x00,0x00,0x00,0x01,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00 }; static const QRgb reset_ctable[] = { 0xc6c6c6,0xff000000,0xffff0000 }; static const QRgb right_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000, 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000, 0x1c000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0xdf000000,0x1c000000, 0x0,0x0,0x0,0x0,0x14000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x4000000, 0x0,0x0,0x0,0x0,0x78000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x18000000, 0xc000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0x60000000,0xc000000, 0x10000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x80000000,0x10000000, 0x0,0x0,0x0,0x0,0x64000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x9f000000,0x14000000, 0x0,0x0,0x0,0x0,0x28000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x40000000,0x8000000, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb rotate_data[] = { 0x0,0x0,0xffffff,0x2ffffff,0x10f5faff,0x2fd4e9ff,0x3dc1e0ff,0x38b6daff,0x21b4d9ff,0x5d7ebff,0xffffff,0x0,0x0,0x0, 0x0,0x0,0x9ffffff,0x4fd6eaff,0xbbacd5ff,0xe9aad4ff,0xfab2d8ff,0xf9afd7ff,0xe49ecfff,0xa382c0ff,0x287dbcfc,0x0,0x0,0x0, 0xffffff,0x9ffffff,0x6ecee6ff,0xeeaad4ff,0xffdeeefe,0xfffafcfe,0xfffdfdfe,0xfffdfdfe,0xfffafcfe,0xffdbedfe,0xe590c7fe,0x3e72b3f4,0x0,0x0, 0x2ffffff,0x51d5eaff,0xefa6d2fe,0xffe8f2fc,0xfff9fbfc,0xffe6eef4,0xffc0e1f7,0xffcae9fd,0xfff4f9fd,0xfffafcfd,0xffe8f2fd,0xe689c3fd,0x2a68abed,0x0, 0x12f5faff,0xbea6d2ff,0xffd4e8fb,0xfff4f6f7,0xffaed1e9,0xff29a5f8,0xff12a0fe,0xff13a1ff,0xff3fb2fe,0xffb9e1fc,0xffd1ebfd,0xffd2e7fb,0xa568b0f8,0x33c6a98, 0x34d4e9ff,0xec9accfd,0xffecf2f6,0xffc9ddea,0xff19a0fa,0xff76c8ff,0xffe1f2fd,0xffd7edfc,0xff51b8fd,0xff049bff,0xff8ed1fe,0xffeff4f8,0xe57bbaf9,0x1c4c8aca, 0x45c1e0ff,0xfb99cafb,0xffeaf0f4,0xff8ac6ed,0xff28a9ff,0xfff4f9fc,0xffecf1f4,0xffecf3f7,0xff7ecafc,0xff33adff,0xff7fcbff,0xffeff4f6,0xfa85c0f9,0x31478cd0, 0x41b4daff,0xfa8ec5fa,0xffe6edf1,0xff82c6f2,0xff37afff,0xfff4f7f9,0xffe4ecef,0xffe7eef1,0xffeef3f5,0xfff2f6f7,0xfff0f5f6,0xffe5ecf0,0xfa7cbbf8,0x333c82c7, 0x2bb6dbff,0xe778bbfb,0xffdce7ee,0xffb6dcf3,0xff12a0fe,0xffafdcfa,0xffe7eef1,0xffdde6eb,0xffd4e7f2,0xffe7eef1,0xffdee8ec,0xffd9e5ec,0xe860aaf4,0x232c69a5, 0xbe5f2ff,0xac5daeff,0xffb1d2ef,0xffe3ebf0,0xff7cc8f9,0xff14a0fe,0xff44b1f9,0xff38aaf5,0xff24a7fe,0xffdcecf7,0xffd9e4e9,0xffafd1ee,0xb03890e9,0x90d2134, 0x1ffffff,0x3371b6fd,0xe653a7fa,0xffbfd8eb,0xffe3ecf0,0xffb9e0f9,0xff79c8fd,0xff80cbfe,0xffc9e8fb,0xffe1eaee,0xffbdd6ea,0xeb4da1f4,0x3d2264a5,0x1000000, 0xffffff,0x3ffffff,0x403394f5,0xe649a2f9,0xffa5cbeb,0xffd0dfe8,0xffdbe5eb,0xffdae5eb,0xffcfdee7,0xffa5caeb,0xeb469ef3,0x591f66ad,0x5000000,0x0, 0x0,0x0,0xa2a2a2,0x2a268aed,0xa52890f8,0xe5469ff5,0xfa5ba9f4,0xfa5ba8f4,0xe8459df2,0xb02588e9,0x3d1a60a5,0x5000000,0x0,0x0, 0x0,0x0,0x0,0x0,0x3165798,0x1c1d74ca,0x311e77d0,0x331c72c7,0x23185ea5,0x9081e34,0x1000000,0x0,0x0,0x0 }; +static const QRgb Rotation_data[] = { + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000, + 0x35000000,0x38000000,0x3b040404,0x4d535353,0x5a828282,0x3d3f3f3f,0x2d060606,0x24070707,0x1b090909,0x140d0d0d,0xc151515,0x7242424,0x3000000,0x1000000, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000, + 0x6e647e80,0xab7da6a7,0xd387b7b9,0xeb8bc0c2,0xf98dc6c8,0xfe8ac8ca,0xf97ec0c2,0xed6fb6b7,0xd8629ea2,0xcc90aeb0,0xa1849698,0x460b0b0b,0x390d0d0d,0x2b0c0c0c, + 0x1f101010,0x130d0d0d,0xb171717,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, + 0x16000000,0x23000000,0x84759496,0xd091b9bb,0xfaabcecf,0xffa9d0d2,0xffa1ccce,0xff9acacc,0xff90c6c8,0xff89c4c6,0xff7fc1c3,0xff74bfc1,0xff69bcbe,0xff60b9bc, + 0xfd88c1c4,0xe78bb4b7,0xa0395f62,0x4f101010,0x3a121212,0x28131313,0x19141414,0xe121212,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000, + 0x2000000,0x7000000,0xe000000,0x1a000000,0x545f7474,0xc08eb5b6,0xfaafcfd1,0xffafcfd0,0xffadcccd,0xffa3c8ca,0xff9ac4c6,0xff93c0c2,0xff8abfbf,0xff80bbbd, + 0xff79babc,0xff6fb8bb,0xff65b8ba,0xff5cb6b9,0xff50b2b5,0xff69a2a7,0xfe76b0b5,0xd2377579,0x7f293d3d,0x47121212,0x2f101010,0x1d121212,0xf111111,0x7000000, + 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x73728f8f,0xda9fc1c3,0xffb6d1d3,0xffb0cdce,0xffaac6c8,0xffa2bfc1,0xff96b8b9, + 0xff8db3b5,0xff84adaf,0xff7cabac,0xff76aaac,0xff6fadae,0xff6ab1b3,0xff63b4b5,0xff58b4b6,0xff4eadb3,0xff61a1a6,0xff4f8a8f,0xff5f9ea3,0xe82d777c,0x9d2a4a4c, + 0x50131313,0x33141414,0x1e111111,0xf111111,0x7242424,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x736f8f8f,0xe2a1c3c5,0xffb5cfd1,0xffaec9cb, + 0xffa2bec0,0xff98b4b5,0xff8ba6a8,0xff7e9a9d,0xff739395,0xff6b8c8e,0xff658c8d,0xff639092,0xff70a1a4,0xff88b3b6,0xff5aadaf,0xff53adb3,0xff4ba9b2,0xff40a0a8, + 0xff5c9398,0xff4a8488,0xff418d95,0xef2b7378,0xa2294449,0x53161616,0x33141414,0x1e1a1a1a,0xe121212,0x62b2b2b,0x3000000,0xa000000,0x16000000,0x545c7174, + 0xda9abec2,0xffb2cfd2,0xffacc8cb,0xffa2bdc0,0xff91abae,0xff80989b,0xff788e90,0xff9dadae,0xffa9babb,0xffb6c9ca,0xffc0d5d7,0xffb9d2d4,0xffb3cdce,0xff8fb4b7, + 0xff52a4a7,0xff4da8b1,0xff45a6ad,0xff3b9da6,0xff6fa2a7,0xff5b9095,0xff498086,0xff297e86,0xec2a676e,0x91243537,0x4e141414,0x2f161616,0x18151515,0xb171717, + 0x6000000,0x11000000,0x23000000,0xbf88b0b4,0xffafced2,0xffaac9cd,0xffa2bfc3,0xff92adb0,0xffb0c7c9,0xffc0d5d6,0xffcadcde,0xffd1e1e1,0xffd4e3e4,0xffd2e3e4, + 0xffcedfe1,0xffc7dcdd,0xffbfd6d7,0xff4c8b8f,0xff4c9ca2,0xff47a2ab,0xff40a0ab,0xff399aa4,0xff6aa2a9,0xff6b9da1,0xff598c91,0xff427d83,0xff28767e,0xdd2a585d, + 0x6c151515,0x45161616,0x27141414,0x120e0e0e,0xb000000,0x1b000000,0x846f8e93,0xfaa3c7cd,0xffa5c9cd,0xff9fc2c6,0xff92b2b6,0xff7f9a9e,0xff667e80,0xffd0dfe0, + 0xffd9e6e6,0xffe0eaea,0xffe2eced,0xffe0eced,0xffdbe8e9,0xffd3e3e3,0xffa4bcbe,0xff43868c,0xff44969f,0xff429da8,0xff3a9ea8,0xff3796a1,0xff45949c,0xff77a6a9, + 0xff65979b,0xff5c888b,0xff296c73,0xfc276b74,0xbb284146,0x5f151515,0x39161616,0x1d121212,0x12000000,0x26000000,0xd085afb6,0xff9dc7cd,0xff9dc3c9,0xff94b8be, + 0xff84a4aa,0xff6d898d,0xff687b7e,0xffd9e6e8,0xffe4eded,0xffecf2f3,0xffeef3f4,0xffebf3f3,0xffe4eef0,0xffdbe8ea,0xff628a8e,0xff3f848c,0xff3c919d,0xff3796a2, + 0xff3396a2,0xff36929d,0xff45919a,0xff7eabaf,0xff6e9ea2,0xff5c8e92,0xff2b646c,0xff28676e,0xe9285659,0x79171717,0x4b141414,0x2a121212,0x19000000,0x6e59747b, + 0xfa93c0c7,0xff98c2ca,0xff92bbc3,0xff87acb3,0xff73959b,0xff5c767b,0xffd2e2e2,0xffdfeaeb,0xffebf2f3,0xfff4f7f8,0xfff8fafb,0xfff4f8f8,0xffebf2f3,0xffe1ebec, + 0xff356f76,0xff37848e,0xff348e99,0xff2c909d,0xff308f9c,0xff328c98,0xff72a3a9,0xff83aeb2,0xff75a4a8,0xff639598,0xff2e5e65,0xff295f66,0xfc266069,0xb0233437, + 0x5e161616,0x37131313,0x21000000,0xab6b969e,0xff8ebec7,0xff8bbbc3,0xff84b1ba,0xff779fa7,0xff62858c,0xffaabcbe,0xffd5e4e5,0xffe3eded,0xffedf4f4,0xfff7fafa, + 0xffffffff,0xfff8fafa,0xffedf4f4,0xff8fa8ab,0xff30727c,0xff2e808e,0xff288795,0xff278795,0xff2b8795,0xff2f8491,0xff88aeb2,0xff85b0b3,0xff7aa7ab,0xff69999e, + 0xff305960,0xff2b5a61,0xff265e66,0xd6264448,0x71171717,0x45121212,0x29000000,0xd370a1ac,0xff83b9c4,0xff80b4be,0xff78a8b2,0xff68939c,0xff54767d,0xffc4d8da, + 0xffd3e2e3,0xffe0ecec,0xffebf2f2,0xfff3f8f8,0xfff7fafb,0xfff4f8f8,0xffebf2f3,0xff2b656f,0xff2a7481,0xff257d8e,0xff1f808e,0xff23818e,0xff277e8d,0xff2c7c87, + 0xff8fb6ba,0xff86b1b4,0xff7aa8ab,0xff6c9b9f,0xff32545a,0xff2e545b,0xff285961,0xed264d51,0x80181818,0x4f131313,0x2f000000,0xeb70a7b3,0xff79b3bf,0xff75aeb9, + 0xff6c9fa9,0xff5b858f,0xff81989c,0xffc1d7d8,0xffd0e1e1,0xffdbe8e9,0xffe5eeef,0xffebf2f3,0xff98a8ab,0xffd7e1e3,0xffe4edee,0xff276c7a,0xff237585,0xff1b7787, + 0xff1e7888,0xff1e7585,0xff227382,0xff5c8f98,0xff8db6b8,0xff84b0b3,0xff7aa8ac,0xff6d9da2,0xff345056,0xff2f5056,0xff2a555c,0xf7264f57,0x8d191919,0x5a141414, + 0x34000000,0xf96da9b8,0xff6dacba,0xff69a5b3,0xff5f95a1,0xff507b85,0xffa7c1c3,0xffbcd3d6,0xffc9dbdd,0xffd2e3e4,0xffdbe8e9,0xffb3c2c5,0xff28525c,0xff29606c, + 0xff64929d,0xff206f7f,0xff187283,0xff1a7183,0xff1a6f81,0xff1a6b7c,0xff1f6978,0xff92b9bb,0xff8ab3b7,0xff82afb2,0xff79a8ab,0xff6e9ea2,0xff364c51,0xff324d53, + 0xff2b5157,0xfc265259,0x961a1a1a,0x61181818,0x37000000,0xfe65a7b7,0xff64a6b6,0xff5f9ead,0xff558d9b,0xff47737e,0xffa7c5c7,0xffb4ced0,0xffc0d6d9,0xffc9dbdd, + 0xffcfe1e2,0xff26535e,0xff28616e,0xff266a7a,0xff1f6e7f,0xff166e80,0xff166e80,0xff548d9a,0xff186677,0xff196071,0xff87abae,0xff8db6b9,0xff87b2b4,0xff7facb0, + 0xff77a6a9,0xff749c9f,0xff36494d,0xff324b50,0xff2c4e56,0xfe25515b,0x9a1a1a1a,0x66171717,0x39040404,0xf9599daf,0xff5a9fb1,0xff5596a8,0xff4c8795,0xff3e6d78, + 0xffa0c0c3,0xffabc8ca,0xffb6cfd2,0xffbdd5d7,0xff5c7b82,0xff265d6b,0xff25687a,0xff206d81,0xff176e81,0xff166c7f,0xff166a7d,0xffa9c7c9,0xff9ab9be,0xff769aa1, + 0xff8fb7ba,0xff88b3b6,0xff83afb2,0xff7babae,0xff74a5a8,0xff6d7e80,0xff37484c,0xff334a4f,0xff2c4c52,0xfc244a53,0x9c1a1a1a,0x66171717,0x38050505,0xed4d8fa2, + 0xff5099ac,0xff4c91a4,0xff448091,0xff396a77,0xff97bbbd,0xffa3c2c5,0xffabc8cb,0xffb1cccf,0xff235362,0xff216172,0xff1e687e,0xff176a80,0xff166a7e,0xff15667b, + 0xff156175,0xff9fc1c4,0xff97bcbf,0xff90b8bb,0xff8ab4b7,0xff83afb3,0xff7eacb0,0xff79a9ab,0xff71a3a7,0xff394649,0xff39484c,0xff32494e,0xff2c4c53,0xf924444b, + 0x98191919,0x64141414,0x35050505,0xd7447d90,0xff4691a7,0xff428a9f,0xff3d7b8e,0xff336675,0xff8fb4b8,0xff99bec1,0xffa0c1c3,0xff8ca6ab,0xff215667,0xff1c6274, + 0xff19667b,0xff19677d,0xff16637b,0xff166074,0xff7097a1,0xff96bbbe,0xff8fb7ba,0xff88b4b7,0xff84b1b3,0xff7eadaf,0xff7aa9ac,0xff75a6a9,0xff7a9799,0xff3b4649, + 0xff38474c,0xff32494f,0xff294851,0xf1233d44,0x931a1a1a,0x5f151515,0x30050505,0xb5366775,0xff3d88a2,0xff39829a,0xff36778c,0xff2e6376,0xff85aeb1,0xff8fb7b9, + 0xff96bcbe,0xff6a878f,0xff1e5769,0xff1c6073,0xff1b6478,0xff196378,0xff185f74,0xff175a6e,0xff92b9bb,0xff8db6b8,0xff87b3b6,0xff82afb2,0xff7eadb0,0xff7aa9ad, + 0xff77a6aa,0xff71a2a6,0xff3c4346,0xff3c4649,0xff37474c,0xff30474e,0xff274650,0xe121353b,0x89181818,0x59141414,0x2a060606,0x81294953,0xfb357e99,0xff337c97, + 0xff30738b,0xff2c6377,0xff79a6aa,0xff85afb3,0xff8cb6b8,0xff315966,0xff225869,0xff215e72,0xff206177,0xff1c5f74,0xff1b5c72,0xff467483,0xff89b4b7,0xff85b1b4, + 0xff81afb2,0xff7eacaf,0xff7aaaad,0xff76a7a9,0xff73a4a7,0xff545a5b,0xff3e4447,0xff3b464a,0xff36474d,0xff2d464f,0xfd25434c,0xc51f2a2d,0x7d181818,0x4f131313, + 0x22080808,0x420c0c0c,0xd92c647a,0xff2d7593,0xff2a6d88,0xff276177,0xff6f9399,0xff78a6aa,0xff82adb2,0xff365b69,0xff265769,0xff265d72,0xff256074,0xff245e73, + 0xff225a6f,0xff7e9fa5,0xff82afb2,0xff7fadb0,0xff7cabaf,0xff79a8ac,0xff75a6aa,0xff72a3a7,0xff6ea0a4,0xff3f4446,0xff3e4649,0xff3a474b,0xff33464c,0xff2a444c, + 0xf2223940,0x9d1a1a1a,0x6d151515,0x420f0f0f,0x1a0a0a0a,0x350e0e0e,0x9d244b57,0xfb256b88,0xff246985,0xff236078,0xff456d7c,0xff6c9b9f,0xff76a5a8,0xff69858d, + 0xff2b5769,0xff2a5d70,0xff295e73,0xff295d72,0xff295a6e,0xff7eacb0,0xff7cabaf,0xff78a9ad,0xff76a6a9,0xff74a5a9,0xff71a2a6,0xff6ca0a4,0xff689b9e,0xff6b9395, + 0xff3b4549,0xff36454c,0xff2d434c,0xfd254049,0xd31f2c30,0x89181818,0x5c131313,0x350e0e0e,0x130d0d0d,0x280d0d0d,0x490e0e0e,0xd1215669,0xff1e6581,0xff1e5e7a, + 0xff21576d,0xff5c8e93,0xff68999e,0xff74949a,0xff2e5768,0xff2f5c6d,0xff305e72,0xff2f5d71,0xff77959d,0xff76a7ab,0xff75a6a9,0xff73a5a8,0xff7a9fa3,0xff7b969a, + 0xff788a8d,0xff4e5558,0xff3f474a,0xff3d474b,0xff36454b,0xff30434b,0xff28404b,0xec20343a,0x9e1b1b1b,0x73161616,0x49111111,0x280d0d0d,0xc151515,0x1d121212, + 0x36131313,0x7b193339,0xe71a556a,0xff1c5b77,0xff20576f,0xff486b7a,0xff588a8f,0xff619497,0xff2e5465,0xff30596a,0xff325c6e,0xff335d6f,0xff718d95,0xff516d7b, + 0xff375663,0xff39515c,0xff3b4e56,0xff3d4b52,0xff3e4b50,0xff3e4a4e,0xff3b484d,0xff38464e,0xff32434c,0xff29404b,0xf522383f,0xbe1e2528,0x83171717,0x5b141414, + 0x350e0e0e,0x1c090909,0x7242424,0x120e0e0e,0x26141414,0x43131313,0x97173a46,0xee1a5167,0xff1c5670,0xff21526a,0xff507981,0xff508389,0xff638089,0xff315567, + 0xff335a6b,0xff355b6c,0xff385b6c,0xff395a69,0xff3b5765,0xff3c555f,0xff3d515b,0xff3d4e56,0xff3c4c53,0xff394951,0xff364850,0xff2f434c,0xff29404b,0xf8233841, + 0xcc1e282c,0x8e191919,0x66141414,0x42131313,0x250e0e0e,0x120e0e0e,0x3000000,0xb171717,0x18151515,0x2d111111,0x4b141414,0x9e193642,0xea1a4a5f,0xff1c4f6a, + 0xff1f4e64,0xff3c6e75,0xff46787e,0xff2d5164,0xff315365,0xff345668,0xff365868,0xff375666,0xff395563,0xff3a5360,0xff3a505d,0xff384d57,0xff354a55,0xff324750, + 0xff2d444f,0xff273f4b,0xf521363f,0xcc1e282c,0x921a1a1a,0x6c151515,0x4b111111,0x2d111111,0x170b0b0b,0xa000000,0x1000000,0x5000000,0xe121212,0x1c121212, + 0x31151515,0x4e171717,0x8b182c33,0xdb194251,0xfc1c4b64,0xff1f4a62,0xff39666d,0xff386a70,0xff2b4e60,0xff2d4f61,0xff305062,0xff325161,0xff33505e,0xff324d5c, + 0xff324b59,0xff2f4855,0xff2c4653,0xff28414e,0xfd243d49,0xeb1f323a,0xbc1e2526,0x8e191919,0x6c151515,0x4d111111,0x30101010,0x1b090909,0xd000000,0x5000000, + 0xffffff,0x2000000,0x6000000,0xf111111,0x1d121212,0x31151515,0x4b141414,0x68161616,0xb719333e,0xe81c404f,0xfc1c465b,0xff5b7984,0xff50727b,0xff25485c, + 0xff27495a,0xff29495a,0xff294658,0xff294757,0xff274252,0xff264251,0xfd223f4c,0xf1213640,0xd11e2b30,0x9d1c1c1c,0x82181818,0x66141414,0x4a111111,0x30101010, + 0x1c090909,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0x10202020,0x1d1a1a1a,0x2d171717,0x44171717,0x5c161616,0x75181818, + 0xad192b32,0xd41a3841,0xed39555f,0xfa6f858f,0xfd466371,0xfe214253,0xfc20404f,0xf81f3c4a,0xef1f3842,0xde1e3139,0xc31c282e,0x9b1a1a1a,0x87191919,0x73161616, + 0x5a141414,0x42131313,0x2d111111,0x1b090909,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x7242424,0xe121212, + 0x18151515,0x26141414,0x38171717,0x4a151515,0x5d161616,0x6f171717,0x7e181818,0x8b1a1a1a,0x9c3a3a3a,0xa9575757,0xa74c4c4c,0x9f3a3a3a,0x98353535,0x8a252525, + 0x7d181818,0x6c151515,0x5b141414,0x49111111,0x350e0e0e,0x250e0e0e,0x170b0b0b,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, + 0xffffff,0x1000000,0x2000000,0x62b2b2b,0xb171717,0x120e0e0e,0x1d121212,0x29131313,0x37131313,0x44131313,0x4f131313,0x59141414,0x60181818,0x65171717, + 0x66171717,0x64141414,0x5f151515,0x58141414,0x4e141414,0x420f0f0f,0x350e0e0e,0x280d0d0d,0x1c090909,0x120e0e0e,0xa000000,0x5000000,0x2000000,0x1000000, + 0xffffff,0xffffff +}; + static const QRgb save_data[] = { 0x0,0x1000000,0x3000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x4000000,0x2000000,0x0, 0x0,0x75939393,0xd7788f79,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd736b43e,0xd752a357,0xc95e5e5e,0x1c000000,0x3000000, 0x1000000,0x8f949494,0xff9d9e9d,0xffe9f8e9,0xffe6f4e6,0xffe6f5e6,0xffe6f5e6,0xffe6f5e6,0xffe5f4e5,0xffe4f3e4,0xffc3cbc3,0xf9595959,0x4a000000,0xa000000, 0x1000000,0x908f8f8f,0xff999999,0xfffafafa,0xfff6f6f6,0xfff5f5f5,0xfff4f4f4,0xfff2f2f2,0xffeeeeee,0xffeaeaea,0xffbebebe,0xfa575757,0x56000000,0xb000000, 0x1000000,0x908e8e8e,0xff9b9b9b,0xfff8f8f8,0xfff3f3f3,0xfff1f1f1,0xffebebeb,0xffe5e5e5,0xffdfdfdf,0xffdbdbdb,0xffaeaeae,0xfa4d4d4d,0x57000000,0xc000000, 0x1000000,0x908f8f8f,0xff9d9d9d,0xfff2f2f2,0xffe7e7e7,0xffe1e1e1,0xffdadada,0xffd4d4d4,0xffcecece,0xffc9c9c9,0xff9b9b9b,0xfa484848,0x57000000,0xc000000, 0x1000000,0x90909090,0xff8c8c8c,0xffc4c4c4,0xffbdbdbd,0xffb5b5b5,0xffafafaf,0xffaaaaaa,0xffa4a4a4,0xff9c9c9c,0xff797979,0xf9444444,0x57000000,0xc000000, 0x1000000,0x908f8f8f,0xff7d7d7d,0xff767676,0xff6e6e6e,0xff656565,0xff5d5d5d,0xff5c5c5c,0xff5c5c5c,0xff585858,0xff515151,0xf93b3b3b,0x57000000,0xc000000, 0x1000000,0x90888888,0xff737373,0xffc4c4c4,0xffc2c2c2,0xffc7c7c7,0xffc7c7c7,0xffc2c2c2,0xffababab,0xff606060,0xff484848,0xfa353535,0x57000000,0xc000000, 0x1000000,0x90828282,0xff6d6d6d,0xffd9d9d9,0xff797979,0xffa9a9a9,0xffbfbfbf,0xffb3b3b3,0xff9d9d9d,0xff575757,0xff424242,0xfa313131,0x57000000,0xc000000, 0x1000000,0x907e7e7e,0xff6b6b6b,0xffc7c7c7,0xff747474,0xff979797,0xffa0a0a0,0xff9e9e9e,0xffa2a2a2,0xff575757,0xff404040,0xfa2f2f2f,0x57000000,0xc000000, 0x1000000,0x65565656,0xfc636363,0xffb0b0b0,0xff929292,0xff8e8e8e,0xff9b9b9b,0xffa9a9a9,0xffb8b8b8,0xff595959,0xff3c3c3c,0xf8252525,0x55000000,0xb000000, 0x0,0x10000000,0x61181818,0x8b191919,0x8e1f1f1f,0x8e292929,0x8f292929,0x8f292929,0x8e292929,0x8d282828,0x8b1a1a1a,0x7f101010,0x38000000,0x7000000, 0x0,0x1000000,0xc000000,0x19000000,0x1a000000,0x1a000000,0x1b000000,0x1b000000,0x1a000000,0x1a000000,0x19000000,0x17000000,0xb000000,0x1000000 }; +static const QRgb SettingsIcon_data[] = { + 0x0,0x0,0x67bbbbc8,0xc6e3e3e9,0xbddfdfe6,0x61bdbdc8,0x36f6f78,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1b91919e,0xd2d0d0d8,0xfffefefe,0xfef6f6f7,0x85b2b2be,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x429494a9,0x661616f,0x0,0x1d858594,0xedd1d1da,0xfffefeff,0xf9d8d8e0,0x1a474750,0x0,0x0,0x0,0x0,0x0,0x0, + 0xc5c1c1ce,0xa1a6a6b6,0x8626274,0x92a9a9bb,0xffe9e9ee,0xfff5f5f7,0xffdfdfe6,0x405c5c6b,0x0,0x0,0x0,0x0,0x0,0x0, + 0xbab5b5c4,0xffe0e0e7,0xd8a8a8b9,0xffdddde4,0xffe9e9ee,0xffe9e9ee,0xffc5c5d1,0x303d3d4a,0x0,0x0,0x0,0x0,0x0,0x0, + 0x5c818198,0xfecacad5,0xffdddde4,0xffdedee5,0xffdddde5,0xffd4d4dd,0xffc1c1cd,0xb7a39388,0x8fd79c2d,0x7895d1c,0x0,0x0,0x0,0x0, + 0x33f3f51,0x7f74748c,0xf7a0a0b3,0xffb4b4c3,0xffafafbf,0xffcacad5,0xffcfc4bc,0xffe0ab39,0xffeeb524,0xa7d09b2c,0x67a521a,0x0,0x0,0x0, + 0x0,0x1000000,0x192a2a39,0x403b3b50,0x3d39394d,0xd59a8c8b,0xffdea939,0xfff6a014,0xfffd9f12,0xfff1b523,0xa8c8922a,0x87e541b,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x87ba8128,0xfff1b423,0xffffb71f,0xffffb71f,0xfffdb51f,0xfff2b824,0xa7c08827,0x76f4919,0x0, + 0x0,0x0,0x0,0x0,0x0,0x5644217,0x9bb57e26,0xfff3bb27,0xffffcd2d,0xffffcb2b,0xfffebe24,0xfff5b622,0xa5b87d25,0x5533614, + 0x0,0x0,0x0,0x0,0x0,0x0,0x4563814,0x9dae7524,0xfff1be2b,0xffffc528,0xffffa515,0xffff9c0f,0xfeeca21d,0x50825420, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x55b3a17,0x9ca56b22,0xfff3a018,0xffffad1a,0xffff9a0e,0xfff49b14,0x69794d1e, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54e3115,0x9ba1631e,0xfee68912,0xfff28f0e,0xe2b06b1a,0x2637230f, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5472c15,0x4f6c421f,0x696b411d,0x2634200f,0x1000000 +}; + +static const QRgb Shutdown_data[] = { + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x3000000,0x6000000,0xb000000,0x12000000,0x19000000,0x21000000,0x29000000,0x2f000000, + 0x34000000,0x37000000,0x38000000,0x37000000,0x34000000,0x2f000000,0x29000000,0x21000000,0x19000000,0x12000000,0xb000000,0x6000000,0x3000000,0x1000000, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000, + 0x5d8b4143,0x93b85357,0xbed15b5f,0xdedf5f63,0xf3e85e63,0xfeee5d61,0xf3e75457,0xe0dc4b4d,0xc4c73e42,0x9fa73032,0x70721d20,0x3f000000,0x33000000,0x26000000, + 0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, + 0x16000000,0x23000000,0x6fa55154,0xbad2666a,0xf5ee7277,0xfff17275,0xffef6d71,0xffeb676a,0xffe96064,0xffe85b5e,0xffe85358,0xffe94e53,0xffec484c,0xffed4146, + 0xf7e8393e,0xc6c12a2e,0x8884191c,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000, + 0x2000000,0x7000000,0xe000000,0x1a000000,0x47793d3e,0xa7cc6669,0xf5f0797c,0xfff4787c,0xfff3777b,0xffef7174,0xffe96a6e,0xffe46366,0xffde5b5f,0xffdb5458, + 0xffdd4f53,0xffe2494e,0xffe74348,0xffeb3d42,0xffee373c,0xffef3036,0xf8e7282e,0xbcb01a1e,0x6c4d090b,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000, + 0x2000000,0x1000000,0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x5f9b4f51,0xc6db7072,0xfff57d80,0xfff57b7e,0xfff47a7d,0xfff07579,0xffea6e71, + 0xffe2676a,0xffd85e61,0xffd05457,0xffcc4e51,0xffcf484b,0xffd74447,0xffde3e43,0xffe7393d,0xffeb3237,0xffed2b31,0xffee2429,0xffed1d23,0xd7c11419,0x85670a0d, + 0x46000000,0x2e000000,0x1b000000,0xe000000,0x6000000,0x2000000,0x1000000,0x5000000,0xd000000,0x1a000000,0x5f9b4f51,0xd0e07276,0xfff57d81,0xfff47d7f, + 0xfff47b7e,0xfff2797c,0xffec7377,0xffe36b6e,0xffd55f63,0xffc85659,0xffffffff,0xffffffff,0xffffffff,0xffc63c40,0xffd2373b,0xffde3237,0xffe82d31,0xffeb262a, + 0xffec1e24,0xffeb181e,0xffe5171d,0xe0bd1318,0x8a5e0a0c,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000,0x3000000,0xa000000,0x16000000,0x47793d3e, + 0xc6db7072,0xfff57d81,0xfff47d80,0xfff37c7f,0xfff0797c,0xffed7679,0xffe46d71,0xffd76567,0xffc7585b,0xffb94e51,0xffffffff,0xffffffff,0xffffffff,0xffb73438, + 0xffc43034,0xffd32b31,0xffde252b,0xffe71f25,0xffe8191e,0xffe4171d,0xffde171c,0xffd9161b,0xdbaa1116,0x7b3b0607,0x46000000,0x2a000000,0x16000000,0xa000000, + 0x6000000,0x11000000,0x23000000,0xa7cc6669,0xfff57d80,0xfff47d7f,0xfff27c7e,0xffee7a7c,0xffe97477,0xffe26f73,0xffd7666a,0xffc85c5f,0xffb64f52,0xffa84548, + 0xffffffff,0xffffffff,0xffffffff,0xffa62d30,0xffb3282c,0xffc42428,0xffd21f24,0xffdb191f,0xffda161c,0xffd9161b,0xffd6161b,0xffd2151b,0xffcd151a,0xc88b0e11, + 0x60000000,0x3e000000,0x23000000,0x11000000,0xb000000,0x1b000000,0x6fa55154,0xf5f0797c,0xfff47b7e,0xfff37a7d,0xffee787b,0xffe87376,0xffdc6c70,0xffd36569, + 0xffc65d60,0xffc26e71,0xffcd999a,0xff993d40,0xffffffff,0xffffffff,0xffffffff,0xff982528,0xffcb8486,0xffbe4044,0xffc0181c,0xffca151a,0xffcb1519,0xffcd151a, + 0xffcb1419,0xffca151a,0xffc41419,0xf9b91217,0xa257090b,0x55000000,0x33000000,0x1b000000,0x12000000,0x26000000,0xbad2666a,0xfff4787c,0xfff47a7d,0xfff0787b, + 0xffe97477,0xffdc6c70,0xffce6366,0xffc25c5e,0xffd2999a,0xffeddcdc,0xffffffff,0xff8c3638,0xffffffff,0xffffffff,0xffffffff,0xff8b2023,0xffffffff,0xffedd2d3, + 0xffce7375,0xffb41217,0xffb71318,0xffbe1318,0xffc11419,0xffc11419,0xffbd1318,0xffb81317,0xd7860d11,0x6c000000,0x45000000,0x26000000,0x19000000,0x5d8b4143, + 0xf5ef7377,0xfff3777b,0xfff07579,0xffea7276,0xffdf6b6f,0xffd16367,0xffbe5a5c,0xffd7a6a8,0xfffefefe,0xffffffff,0xffffffff,0xff873234,0xffffffff,0xffffffff, + 0xffffffff,0xff851b1e,0xffffffff,0xffffffff,0xfffefdfd,0xffce8587,0xffa51015,0xffae1216,0xffb21217,0xffb61217,0xffb41317,0xffb11216,0xfaa61115,0x9b3b0608, + 0x56000000,0x33000000,0x21000000,0x93ba5558,0xfff47376,0xfff37376,0xffee7073,0xffe56c6f,0xffd66467,0xffc35a5d,0xffcf9799,0xfffefefe,0xffffffff,0xffffffff, + 0xffecdfdf,0xff862e31,0xffffffff,0xffffffff,0xffffffff,0xff84171a,0xffecdada,0xffffffff,0xffffffff,0xfffefdfd,0xffbe7173,0xff9b1014,0xffa41115,0xffa91116, + 0xffab1215,0xffa81115,0xffa51115,0xc25f0a0c,0x67000000,0x3f000000,0x29000000,0xbed35d61,0xfff46f73,0xfff26e72,0xffeb6b6f,0xffdf6467,0xffcd5b5e,0xffc16b6d, + 0xffeddbdc,0xffffffff,0xffffffff,0xffd1adae,0xffa1595a,0xff8c2c2e,0xffffffff,0xffffffff,0xffffffff,0xff8a1317,0xff9c3c3f,0xffcc9c9e,0xffffffff,0xffffffff, + 0xffe7d0d1,0xff9d3437,0xff950f13,0xff9d1014,0xffa01014,0xffa01014,0xff9e1014,0xde730c0f,0x75000000,0x4a000000,0x2f000000,0xdee26164,0xfff36a6d,0xffef686b, + 0xffe76567,0xffd75c60,0xffc25256,0xffd1999a,0xffffffff,0xffffffff,0xffeedfe0,0xffa85a5c,0xff952f32,0xff982a2d,0xffffffff,0xffffffff,0xffffffff,0xff940f13, + 0xff8a0e11,0xff983c3e,0xffead9d9,0xffffffff,0xffffffff,0xffb7797b,0xff870e11,0xff910f13,0xff960f13,0xff960f13,0xff960f13,0xef810d10,0x81000000,0x53000000, + 0x34000000,0xf3ec6165,0xfff36468,0xffef6266,0xffe45c60,0xffd35458,0xffbc494c,0xffe2c3c4,0xffffffff,0xffffffff,0xffd0a3a4,0xff9e3034,0xffa32d30,0xffa7282b, + 0xffffffff,0xffffffff,0xffffffff,0xff9b1013,0xff8f0e12,0xff830d10,0xffc29294,0xffffffff,0xffffffff,0xffd3b3b4,0xff7b0c0f,0xff850e10,0xff8d0e12,0xff8f0f12, + 0xff8e0e12,0xf9870d11,0x89000000,0x59000000,0x37000000,0xfef25f63,0xfff35f63,0xffed5b5f,0xffe15659,0xffce4c50,0xffb74245,0xfff3e7e7,0xffffffff,0xffffffff, + 0xffba6e70,0xffa72c2f,0xffb0292c,0xffb62327,0xffffffff,0xffffffff,0xffffffff,0xffa11015,0xff930f12,0xff830d11,0xff9e5759,0xffffffff,0xffffffff,0xffede1e2, + 0xff720b0e,0xff7b0d0f,0xff830d11,0xff870e12,0xff880e11,0xfe870e11,0x8e000000,0x5e000000,0x38000000,0xf3eb5559,0xfff2575c,0xffed5559,0xffe04e51,0xffcb4449, + 0xffb53a3e,0xfffefdfd,0xffffffff,0xffffffff,0xffa94144,0xffad2629,0xffbb2326,0xffc41d22,0xffc51419,0xffbd1317,0xffb31217,0xffa61015,0xff940f13,0xff810d10, + 0xff81292b,0xffffffff,0xffffffff,0xfffdfcfc,0xff6a0a0d,0xff740c0f,0xff7c0d10,0xff800d11,0xff820d10,0xfa7b0c0f,0x90000000,0x5f000000,0x37000000,0xe0df4c4f, + 0xfff15156,0xffec4c51,0xffe0474a,0xffcd3e42,0xffb63337,0xfff3e5e6,0xffffffff,0xffffffff,0xffbb6467,0xffad1e22,0xffbd1a1f,0xffc8151a,0xffc41419,0xffbc1318, + 0xffb11216,0xffa21015,0xff8e0e12,0xff790c0f,0xff975658,0xffffffff,0xffffffff,0xffebe1e1,0xff650b0d,0xff6f0b0e,0xff760c0f,0xff7b0d10,0xff7d0d10,0xf26a0b0e, + 0x8e000000,0x5e000000,0x34000000,0xc4c93f43,0xfff1494e,0xffed454a,0xffe13f43,0xffd0373b,0xffb92e31,0xffe2bbbc,0xffffffff,0xffffffff,0xffd09899,0xffa51418, + 0xffb21216,0xffb91217,0xffb91218,0xffb11216,0xffa51115,0xff950f12,0xff800d10,0xff6d0b0e,0xffb79192,0xffffffff,0xffffffff,0xffcbb3b3,0xff620a0c,0xff6c0b0e, + 0xff720b0e,0xff760c0f,0xff770c0f,0xe558090b,0x89000000,0x59000000,0x2f000000,0x9fa93034,0xfff04247,0xffec3d42,0xffe4383d,0xffd43034,0xffbf272c,0xffcf8385, + 0xffffffff,0xffffffff,0xffeed9da,0xffab3d40,0xff9f1014,0xffa41014,0xffa51115,0xff9f1014,0xff930f12,0xff830d10,0xff710c0e,0xff7f393b,0xffe4d8d9,0xffffffff, + 0xffffffff,0xffa37778,0xff600a0c,0xff680b0d,0xff6e0b0e,0xff700c0e,0xff740c0f,0xd1400608,0x81000000,0x53000000,0x29000000,0x70721d20,0xf7e9393e,0xffed373c, + 0xffe73136,0xffda2a2f,0xffc82227,0xffbe3e42,0xffecd2d2,0xffffffff,0xffffffff,0xffce9d9e,0xffa13c40,0xff8e0e12,0xff8e0e12,0xff870e11,0xff7e0d10,0xff710b0e, + 0xff80393c,0xffba9b9b,0xffffffff,0xffffffff,0xffded0d0,0xff733031,0xff610a0d,0xff670a0d,0xff6c0b0e,0xff6f0b0e,0xfc6c0a0d,0xb5220404,0x75000000,0x4a000000, + 0x21000000,0x3f000000,0xc6c12a2e,0xffee3036,0xffe82a30,0xffdf2428,0xffd11c21,0xffbe161a,0xffca7274,0xfffefdfd,0xffffffff,0xffffffff,0xffead9d9,0xffc39294, + 0xffa15759,0xff82292c,0xff975658,0xffb79192,0xffe4d8d9,0xffffffff,0xffffffff,0xfffefdfd,0xff9a6d6f,0xff5b0a0b,0xff620a0c,0xff680a0d,0xff6a0b0e,0xff6d0b0e, + 0xe64e080a,0x93000000,0x67000000,0x3f000000,0x19000000,0x33000000,0x8884191c,0xf8e6282e,0xffea2328,0xffe41d23,0xffd9171c,0xffc51419,0xffb01216,0xffcb8587, + 0xfffefdfd,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffefdfd,0xffa78183,0xff59090b,0xff60090c, + 0xff640a0d,0xff680b0d,0xff6a0b0e,0xfc680a0d,0xc32b0405,0x81000000,0x56000000,0x33000000,0x12000000,0x26000000,0x45000000,0xbcb01a1e,0xffec1d23,0xffe7181d, + 0xffda161c,0xffc91519,0xffb71318,0xffa51015,0xffbe7173,0xffe7d0d1,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffded0d0, + 0xff9a6d6f,0xff59090b,0xff5e090c,0xff620a0d,0xff660a0d,0xff680b0d,0xff6a0b0d,0xdf430709,0x94000000,0x6c000000,0x45000000,0x26000000,0xb000000,0x1b000000, + 0x33000000,0x6c4d090b,0xd7c01419,0xffe3171d,0xffd9161b,0xffcd151a,0xffbd1317,0xffae1216,0xff9c1014,0xff9e3437,0xffb8797b,0xffd3b3b4,0xffede1e2,0xfffdfcfc, + 0xffebe1e1,0xffccb3b3,0xffa47778,0xff743031,0xff5d0a0c,0xff60090c,0xff620a0d,0xff660a0d,0xff670b0d,0xff690b0d,0xed50080a,0xae160203,0x7b000000,0x55000000, + 0x33000000,0x1b000000,0x6000000,0x11000000,0x23000000,0x3e000000,0x85670a0d,0xe0bc1318,0xffd6161b,0xffcd141a,0xffc21419,0xffb41217,0xffa61115,0xff970f13, + 0xff8a0e12,0xff7f0d10,0xff740c0e,0xff6d0b0d,0xff680b0e,0xff650a0d,0xff640a0d,0xff620a0d,0xff630a0c,0xff650a0d,0xff660a0d,0xff670b0d,0xff690b0d,0xf054080a, + 0xbc220304,0x85000000,0x60000000,0x3e000000,0x23000000,0x11000000,0x3000000,0xa000000,0x16000000,0x2a000000,0x46000000,0x8a5e0a0c,0xdba91116,0xffca151a, + 0xffc11419,0xffb71217,0xffac1216,0xffa01014,0xff930f13,0xff890e11,0xff800d10,0xff770c0f,0xff720c0e,0xff6e0b0e,0xff6c0b0d,0xff6a0b0e,0xff690a0d,0xff690b0d, + 0xff6a0b0e,0xff690b0d,0xed50080a,0xbc220304,0x88000000,0x66000000,0x46000000,0x2a000000,0x16000000,0xa000000,0x1000000,0x5000000,0xd000000,0x1a000000, + 0x2e000000,0x48000000,0x7b3b0607,0xc88a0e11,0xf9b81217,0xffb51317,0xffae1215,0xffa31014,0xff990f13,0xff8e0e12,0xff870e11,0xff800d11,0xff7a0c10,0xff750c0f, + 0xff720b0e,0xff6e0c0e,0xff6d0b0e,0xff6b0b0e,0xfc680a0d,0xdf430709,0xae160203,0x85000000,0x66000000,0x48000000,0x2e000000,0x1a000000,0xd000000,0x5000000, + 0xffffff,0x2000000,0x6000000,0xe000000,0x1b000000,0x2e000000,0x46000000,0x60000000,0xa257090b,0xd7850d11,0xfaa51115,0xffa41115,0xff9c1014,0xff940f13, + 0xff8b0e12,0xff850e11,0xff7f0d10,0xff7b0d10,0xff750c0f,0xff730c0f,0xfc6c0a0d,0xe64e080a,0xc32b0405,0x94000000,0x7b000000,0x60000000,0x46000000,0x2e000000, + 0x1b000000,0xe000000,0x6000000,0x2000000,0xffffff,0x1000000,0x2000000,0x7000000,0xe000000,0x1a000000,0x2a000000,0x3e000000,0x55000000,0x6c000000, + 0x9b3b0608,0xc25f0a0c,0xde730c0f,0xef810d10,0xf9870d11,0xfe870e11,0xfa7b0c0f,0xf26a0b0e,0xe558090b,0xd1400608,0xb5220404,0x93000000,0x81000000,0x6c000000, + 0x55000000,0x3e000000,0x2a000000,0x1a000000,0xe000000,0x7000000,0x2000000,0x1000000,0xffffff,0xffffff,0x1000000,0x2000000,0x6000000,0xd000000, + 0x16000000,0x23000000,0x33000000,0x45000000,0x56000000,0x67000000,0x75000000,0x81000000,0x89000000,0x8e000000,0x90000000,0x8e000000,0x89000000,0x81000000, + 0x75000000,0x67000000,0x56000000,0x45000000,0x33000000,0x23000000,0x16000000,0xd000000,0x6000000,0x2000000,0x1000000,0xffffff,0xffffff,0xffffff, + 0xffffff,0x1000000,0x2000000,0x5000000,0xa000000,0x11000000,0x1b000000,0x26000000,0x33000000,0x3f000000,0x4a000000,0x53000000,0x59000000,0x5e000000, + 0x5f000000,0x5e000000,0x59000000,0x53000000,0x4a000000,0x3f000000,0x33000000,0x26000000,0x1b000000,0x11000000,0xa000000,0x5000000,0x2000000,0x1000000, + 0xffffff,0xffffff +}; + +static const QRgb SoundPlayer_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x318192d7,0x537d8ed0,0x847d8bce, + 0x867a88c9,0x867885c6,0x586f7dba,0x27636fa5,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x218698de,0xa18699df, + 0xf08597de,0xff96a5e2,0xffa6b1e7,0xffb0b8ea,0xffadb6e9,0xffabb3e7,0xff9da7df,0xff8490cf,0xe37482c2,0x8b6c78b3,0x2a576192,0x5000000,0x1000000,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x108ea1eb,0xa18a9ee6,0xff91a2e7,0xffb9c3f1,0xffdde1fb,0xffe9edff,0xffe8edff,0xffe8eeff,0xffe6edff,0xffc7d6ff,0xffc7d4ff,0xffc9d4ff,0xffc2cbf8,0xff9ca4dc, + 0xff7884c2,0x90646ea7,0x1d3d4466,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x318da1e9,0xf08da1eb,0xffb7c3f3,0xffe9ecfe,0xfff0f3ff,0xffeef3ff,0xffedf1ff,0xffebf0ff,0xffe9efff,0xffe8eeff,0xffc9d8ff, + 0xffc7d6ff,0xffc4d4ff,0xffcfdbff,0xffd4deff,0xffc9d0fb,0xff8c95d0,0xd96974af,0x454c537e,0x8000000,0x1000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x318fa3ec,0xf096a9f0,0xffd4dbf9,0xfff5f7ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff, + 0xffedf1ff,0xffebf0ff,0xffe4ebff,0xffccdaff,0xffc9d8ff,0xffc8d7ff,0xffd6e1ff,0xffd6e0ff,0xffd4e0ff,0xffe6eaff,0xffa9aee4,0xf36a75b2,0x4c444a71,0xa000000, + 0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3191a6f0,0xf098acf2,0xffe3e7fc,0xfff9fbff,0xfff9fbff, + 0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffedf1ff,0xffe4ebff,0xffcfdcff,0xffccdaff,0xffd0dcff,0xffd9e3ff,0xffd7e2ff,0xffe7edff,0xfff6f9ff, + 0xfff0f3ff,0xffacb2e3,0xf46872af,0x40353a58,0xa000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x1096abf8,0xe093a9f5, + 0xffd1d9fb,0xfff9fbff,0xfffdfeff,0xfffafcff,0xfff9fbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff,0xffeef3ff,0xffe7edff,0xffd3dfff,0xffcfdcff,0xffd8e3ff, + 0xffdbe4ff,0xffdfe7ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffedefff,0xff9fa5dd,0xdc626ba4,0x21000000,0x6000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x9194a9f5,0xffbac8fa,0xffeff4ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffbfcff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xfff0f4ff, + 0xffe4ebff,0xffd7e1ff,0xffd5e0ff,0xffdee7ff,0xffdce6ff,0xfff2f5ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff,0xfff6f9ff,0xffe5e8ff,0xff7e86c2,0x934e5582,0x17000000, + 0x3000000,0x0,0x0,0x0,0x0,0x2193a9f3,0xff9db1fa,0xffeaefff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff, + 0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xfff3f6ff,0xffe7eeff,0xffdbe4ff,0xffdee6ff,0xffe1e9ff,0xffedf2ff,0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff7f9ff, + 0xfff6f9ff,0xffc5c9f5,0xf4646da8,0x3d1b1d2c,0xc000000,0x0,0x0,0x0,0x0,0x8296acf8,0xffc3cffc,0xffe0eaff,0xffe3ecff,0xffe8efff, + 0xffedf3ff,0xfff3f7ff,0xfff9fbff,0xfffdfeff,0xfffcfdff,0xfffafbff,0xfff7f9ff,0xfff5f7ff,0xffebf0ff,0xffdfe8ff,0xffe5ecff,0xffe9efff,0xfff9fbff,0xfff9faff, + 0xfff8faff,0xfff8f9ff,0xfff8f9ff,0xfff7f9ff,0xfff5f7ff,0xffecefff,0xff878dca,0x8c454b74,0x1b000000,0x3000000,0x0,0x0,0x0,0xe197aefa, + 0xffe1e9fe,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffdfeff,0xfffdfdff,0xfffafbff,0xfff3f5fe,0xffe8edfd,0xffe2e9fd, + 0xffeaf0ff,0xfff7faff,0xfff9fbff,0xffabe0af,0xff7cdb7f,0xff7ce37f,0xff7bdb7f,0xffc6eccf,0xfff3f6ff,0xfff3f6ff,0xffacb0e4,0xca575e92,0x2c000000,0x9000000, + 0x0,0x0,0x2195abf7,0xffabbefd,0xffdfe9ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffedf3ff,0xfff3f7ff,0xfff8fbff,0xfffafcff, + 0xffeef1fc,0xffe8ecfa,0xffdfe5f9,0xffdce2f7,0xffe5e9f7,0xffe8f3ed,0xff3fbb40,0xff5ec660,0xff7bdf7f,0xff5dd560,0xff1fd020,0xff00e300,0xff1fe020,0xff98ea9f, + 0xffdbdeff,0xff6a72ad,0x3e000000,0x12000000,0x0,0x0,0x5395abf6,0xffbfcdfe,0xffd0dfff,0xffd1e0ff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff, + 0xffe8efff,0xffedf3ff,0xfff1f6ff,0xffeaeffe,0xffeef1fc,0xffe7ebfa,0xffd3d9f2,0xffdde1f3,0xffe9ebf6,0xffbcd2c7,0xffe8efee,0xfff8faff,0xfff7f9ff,0xfff6f9ff, + 0xffecf1ff,0xffa9dcbf,0xff36db40,0xff00ee00,0xff31e440,0xff6b8da5,0x77353959,0x1b000000,0x2000000,0x0,0x8495abf7,0xffcbd7fe,0xffc9daff,0xffcdddff, + 0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffe8efff,0xffe6edff,0xffe5ebfe,0xffd5dffc,0xf7899ce3,0xc96976ac,0xf57884bd,0xffd1d4e8,0xffe3e6f4, + 0xffe9ecf9,0xffe9efff,0xffe1e9ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xff8ad5af,0xff0cea10,0xff09ef0d,0x9b216f37,0x24000000,0x5000000,0x0, + 0x8693a9f4,0xffc0cffe,0xffc5d8ff,0xffc9daff,0xffcdddff,0xffd1dfff,0xffd5e2ff,0xffd9e5ff,0xffdee9ff,0xffe3ecff,0xffdfe8ff,0xffe6ecfe,0xffafc0fc,0x914c5576, + 0x51000000,0x8c4b537e,0xff929ac6,0xffdce1f4,0xffdde3f7,0xffe4ebff,0xffdfe8ff,0xffdbe5ff,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xffccdaff,0xffa4d3cf,0xff1bd528, + 0xfa03f605,0x52009100,0x8000000,0x0,0x8693a9f4,0xffc0cffe,0xffc2d6ff,0xffc5d8ff,0xffc9daff,0xffcdddff,0xffd6e3ff,0xffe2ebff,0xffebf1ff,0xfff2f6ff, + 0xffeff3ff,0xffeff2fe,0xffb0c2fc,0x84495376,0x35000000,0x755a6397,0xff6fa094,0xff38c13d,0xff00bb00,0xff1dd120,0xff48dd50,0xff8bdd9f,0xffdbe5ff,0xffd7e2ff, + 0xffd3dfff,0xffd0dcff,0xffccdaff,0xff7d95b9,0xfa03df05,0xe500ec00,0x1a008a00,0x0,0x8693a9f4,0xffcbd7fe,0xffccdcff,0xffdbe6ff,0xffe8efff,0xfff2f6ff, + 0xfff5f8ff,0xfff6f9ff,0xfff7f9ff,0xfff8fbff,0xfff2f5ff,0xffecf0fe,0xffd8e0fc,0xf5899ce4,0xcc7786c6,0xff6c7eaa,0xff87ca93,0xffd6dee5,0xffeceffa,0xffc1e4cf, + 0xff66db70,0xff0ee810,0xff2ae830,0xffb2e4cf,0xffd7e2ff,0xffd3dfff,0xffd0dcff,0xff8a90cd,0xa0205736,0xff00e100,0xa300dc00,0x0,0x588ca1e8,0xffbfcdfe, + 0xfff2f6ff,0xfff2f6ff,0xfff3f7ff,0xfff3f7ff,0xfff4f8ff,0xfff7f9ff,0xfff8fbff,0xfff9fbff,0xfff8fbff,0xffecf0fe,0xffe0e3f3,0xffa3a4b1,0xff8c8b94,0xff959399, + 0xffa8a7ae,0xffcfd0d7,0xfff8fafe,0xfff4f7ff,0xffeef3ff,0xffdaecef,0xff48e450,0xff00f400,0xff89eb9f,0xffd7e2ff,0xffcdd7ff,0xff7a81bd,0x84303450,0x95009600, + 0xff00de00,0x2000cb00,0x277e91d1,0xffa5b9fd,0xfff5f8ff,0xfff2f6ff,0xfff2f6ff,0xfff5f8ff,0xfff7f9ff,0xfff8faff,0xfff8faff,0xfff9fbff,0xfff9fbff,0xfff5f9ff, + 0xff7c7981,0xff746f74,0xff6b666b,0xff696469,0xff716d71,0xff797479,0xffa39fa4,0xffdedee2,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff72e77f,0xff00fc00,0xff96ecaf, + 0xffcbd3ff,0xff646da8,0x59010101,0x33002400,0xef00c300,0x9f00c300,0x4000000,0xe396acf8,0xffecf0fe,0xfff3f7ff,0xfff5f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff, + 0xfff8faff,0xfff8faff,0xfff9fbff,0xff9498a1,0xff757075,0xff696469,0xff696469,0xff696469,0xff696469,0xff696469,0xff6d686d,0xff847f84,0xffc8c6ca,0xfff4f7ff, + 0xffeef3ff,0xffe9efff,0xff64df70,0xff0ef110,0xff92b4c7,0xd6535a8a,0x4b000000,0x1c000000,0x8100a700,0xdf00bf00,0x1000000,0x8b8ca1e8,0xffc3cffc,0xfff6f8ff, + 0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff7f9ff,0xfff8faff,0xffeef3ff,0xff828692,0xff787478,0xff696469,0xff696469,0xff696469,0xff696469,0xff696469, + 0xff696469,0xff696469,0xff837f83,0xffc1c0c3,0xfff4f7ff,0xffeef3ff,0xffe9efff,0xff37d440,0xff28c13e,0xa33c4163,0x3e000000,0x13000000,0x30006400,0xff00bc00, + 0x0,0x1b5a6795,0xf29bb0f7,0xfff1f4ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xfff7f9ff,0xfff3f6ff,0xffdce7ff,0xff767c88,0xff7c787c,0xff696469, + 0xff6a656a,0xff7c787c,0xff8e8a8e,0xff7f7b7f,0xff6a656a,0xff6a656a,0xff6c676c,0xff848084,0xffc7c6c9,0xfff4f7ff,0xffeff3ff,0xff96b7c3,0xff00cf00,0x73013601, + 0x2e000000,0xa000000,0x0,0xff00a500,0x0,0x4000000,0x8e879be1,0xffb4c3f9,0xfff6f8ff,0xfff5f8ff,0xfff5f9ff,0xfff6f9ff,0xfff6f9ff,0xffdee9ff, + 0xffd7e4ff,0xff8d96a8,0xff666366,0xff6d686d,0xff645f64,0xff5a545a,0xff7f7b7f,0xffbab7ba,0xffb0adb0,0xff7f7b7f,0xff797579,0xff7b777b,0xffa19da1,0xffdedee1, + 0xffe4e7ff,0xff7e86c2,0xe90ba612,0x98008800,0x1c000000,0x3000000,0x0,0xff009c00,0x0,0x0,0x1c56628e,0xd88ea3eb,0xffd1d9fb,0xfff5f8ff, + 0xfff5f8ff,0xfff5f9ff,0xffe6eeff,0xffd3e1ff,0xffd5e3ff,0xffbfcef1,0xff5a585e,0xff848084,0xff646064,0xff433d43,0xff585358,0xff908b90,0xffbfbcbf,0xffc6c4c6, + 0xff888488,0xff8a868a,0xff8c888c,0xffb8b5b9,0xff9ba1d6,0xde5b6498,0xa2017301,0x98009c00,0xc000000,0x0,0x20008900,0xbf00a100,0x0,0x0, + 0x4000000,0x456775aa,0xf390a4ee,0xffdbe1fb,0xfff5f8ff,0xffeef3ff,0xffd0dfff,0xffd2e0ff,0xffd1e0ff,0xffc2d5ff,0xff5e5d6b,0xff878387,0xff7a757a,0xff474147, + 0xff433d43,0xff595359,0xff827d82,0xffb6b4b6,0xffb3b0b3,0xff9a969a,0xff9c989c,0xffa7a4a7,0xfb9296b5,0x7113151d,0x6f006900,0x8b00a200,0x3000000,0x0, + 0x7000ac00,0x30009500,0x0,0x0,0x0,0x8000000,0x4c5c6998,0xf48da2ea,0xffcdd5f8,0xffdbe6ff,0xffceddff,0xffd0dfff,0xffc6d8ff,0xffbfd3ff, + 0xff6d6d7a,0xff544f54,0xffa19ea1,0xff5b565b,0xff433d43,0xff433d43,0xff565056,0xff868186,0xffb6b4b6,0xffa9a6a9,0xffaba8ab,0xffadaaad,0xf7b9b8ba,0x48000000, + 0x75008500,0x64009a00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0xa000000,0x4e596593,0xe8889ce3,0xffabb9f0, + 0xffdae2fe,0xffd2dfff,0xffbcd2ff,0xffbcd1ff,0xff808395,0xff504b50,0xff6f6b6f,0xffa4a1a4,0xff585358,0xff453f45,0xff474147,0xff5e595e,0xff918e91,0xffb8b5b8, + 0xffbab8ba,0xffbcb9bc,0xffc0bec0,0x4f777577,0xa3009a00,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1000000,0xa000000,0x322e344c,0xac7485c2,0xff91a2e7,0xffb3bdef,0xffccd6fb,0xffcad8ff,0xffc2cdea,0xff625e64,0xff4e484e,0xff7b767b,0xffb8b5b8,0xff726e72, + 0xff4e484e,0xff4f4a4f,0xff837f83,0xffc7c5c7,0xffc9c7c9,0xffcbc9cb,0xffc7c5c7,0x48b1afb1,0x1000000,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x1000000,0x8000000,0x1b000000,0x4e39415e,0xa66978af,0xea8091d5,0xff90a0e0,0xffa0ace5,0xff9395b7, + 0xff635d63,0xff635e63,0xff7f7b7f,0xffcdcbcd,0xffc7c5c7,0xffb5b2b5,0xffd4d2d4,0xffd6d5d6,0xffd8d7d8,0xffdbd9db,0xffcdcbcd,0x31c5c3c5,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0xf000000,0x20000000, + 0x33000000,0x5b2f354d,0x7a444d72,0x9f5a6696,0xbb626990,0xf36e6a73,0xff777277,0xff716c71,0xffb2afb2,0xffe1e0e1,0xffe0dfe0,0xffe3e2e3,0xffe2e1e2,0xffd8d6d8, + 0xcfcdcbcd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1000000,0x5000000,0xc000000,0x16000000,0x1f000000,0x27000000,0x2e000000,0x32000000,0x634c484c,0x5d514e51,0x735d595d,0xd37f7c7f, + 0xffa19ea1,0xffb9b7b9,0xffbcb9bc,0xbfb1aeb1,0x10d1cfd1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x7000000,0xa000000,0xc000000, + 0xa000000,0x7000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0 +}; + +static const QRgb Sound_data[] = { + 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00c600,0xaf00cc00,0xe600d400,0xf600dc00,0xff00e400, + 0xff00ec00,0xff00f400,0xff00fc00,0xff00f800,0xff00ee00,0xfe00e300,0xef00d800,0xc000ce00,0x5700c400,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x9c00b500,0xef00bd00,0xff00c400, + 0xff00cc00,0xff00d400,0xff00dc00,0xff00d400,0xff00d900,0xff00d700,0xff00db00,0xff00dd00,0xff00d300,0xff00d600,0xff00d800,0xff00ce00,0xff00c300,0xfc00b701, + 0xc200ac01,0x23009106,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x5700a600, + 0xf600ad00,0xff00b400,0xff00bc00,0xff00bd00,0xf100b303,0xcd009c06,0x9d007808,0x6000350d,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x4300000e,0x8d006400, + 0xb4007302,0xe2009b00,0xfc00a900,0xff00b300,0xff00ae00,0xfe00a200,0xa9008904,0x4000030,0x0,0x0,0x0,0x0,0xffffff,0xffffff, + 0x0,0x0,0x9c009e00,0xff00a400,0xff00aa00,0xfd00a401,0xc3008108,0x67003110,0x3b000008,0x2f000000,0x26000000,0x1a000000,0xb000000,0x4000000, + 0x4000000,0x4000000,0x4000000,0x4000000,0x16000000,0x20000000,0x2c000000,0x8c005400,0xeb008900,0xff009b00,0xff009800,0xe7008303,0xf00002d,0x0, + 0x0,0x0,0xffffff,0xffffff,0x0,0x9c009600,0xff009c00,0xfe009c00,0xc3007108,0x51000016,0x35000004,0x24000000,0xd000000,0x2000000, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16000000,0x8a005d00, + 0xf8008500,0xff008e00,0xea007704,0x1700002a,0x0,0x0,0xffffff,0xffffff,0x3c008e00,0xff009400,0xf9008d02,0x85003511,0x3e00000b,0x24000000, + 0x7000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x16000000,0xe2007600,0xff008300,0xce006307,0x8000018,0x0,0xffffff,0xffffff,0xdb008d00,0xf8008402, + 0x73001c16,0x35000004,0x15000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe1007000,0xfd007601,0x4e00001c,0x1000000, + 0xffffff,0xffffff,0xff008900,0x97003c0f,0x3a000008,0x10000000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1f006000,0xfc007400,0xa900460c,0x9000000,0xffffff,0xffffff,0xe2007803,0x51000016,0x1a000000,0x2000000,0x0,0x0,0x0,0x0, + 0x0,0x0,0x5700d500,0x9c00de00,0xc000e800,0xc000f200,0xc000fc00,0xc000f700,0xc000e900,0x7000dc00,0x1f00d400,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x9e006f00,0xa900460c,0x1e000000,0xffffff,0xffffff,0x93006505,0x35000009,0x7000000,0x0, + 0x0,0x0,0x0,0x7000b800,0xdb00c100,0xfe00ca00,0xff00d400,0xff00de00,0xff00e800,0xff00f200,0xff00fc00,0xff00f700,0xff00e900,0xff00dc00, + 0xff00cf00,0xf600c200,0xaf00b500,0x23009606,0x0,0x0,0x0,0x0,0x0,0x1f006700,0x90005407,0x1e000000,0xffffff,0xffffff, + 0x4000030,0x1d000000,0x2000000,0x0,0x0,0x3c00a500,0xef00ad00,0xff00b600,0xff00bf00,0xf900bd02,0xe300ac05,0xbd009605,0x9a007307,0x97006f05, + 0x97006905,0x97006205,0x97005d05,0xcd00a000,0xed00a801,0xfe00a900,0xff00b500,0xfe00a600,0xb8009103,0xa000030,0x0,0x0,0x0,0x0, + 0xa000013,0x1a000000,0xffffff,0xffffff,0x0,0x1000000,0x0,0x0,0x87009a00,0xfe00a200,0xff00a800,0xea009a04,0x8300490f,0x45000010, + 0x32000000,0x2c000000,0x23000000,0x1a000000,0x19000000,0x19000000,0x19000000,0x19000000,0x26000000,0x2e000000,0xb0007200,0xfc009300,0xff009a00,0xe7008303, + 0x32005011,0x0,0x0,0x0,0x0,0x1000000,0xffffff,0xffffff,0x0,0x0,0x0,0x57009100,0xff009800,0xf9009102, + 0x85003b11,0x4300000e,0x2e000000,0x14000000,0x5000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x1f000000,0xbf006e00,0xff008700,0xea007504,0x1d000021,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0, + 0x0,0xf6008f00,0xe7007e04,0x58000019,0x35000004,0x15000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6e005600,0xfe007d00,0xa6004c0b,0x8000018,0x0,0x0,0x0, + 0xffffff,0xffffff,0x0,0x0,0x57008b00,0xf8008202,0x72001a16,0x2e000000,0x9000000,0x1000000,0x0,0x0,0x0,0x70bababa, + 0x70bcbcbc,0x70bebebe,0x70c0c0c0,0x70c3c3c3,0x70c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb4006d00,0xea006904, + 0x35000018,0x1000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x70008b00,0xa6005b09,0x3a000008,0x10000000,0x1fb4b4b4,0x9cababab, + 0xe69f9f9f,0xfb959595,0xff8f8f8f,0xff959595,0xff9b9b9b,0xffa2a2a2,0xffa7a7a7,0xffacacac,0xffafafaf,0xffb1b1b1,0xfbb8b8b8,0xe6c0c0c0,0x9cc9c9c9,0x23b4b4ba, + 0x0,0x0,0x0,0xe3006c01,0x4c000017,0x5000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x57007400,0x2b00001a, + 0x547d7d7d,0xdb999999,0xff7d7d7d,0xff7f7f7f,0xff767676,0xff6e6e6e,0xff686868,0xff626262,0xff626262,0xff636363,0xff6a6a6a,0xff737373,0xff7b7b7b,0xff8a8a8a, + 0xff9c9c9c,0xffababab,0xffb8b8b8,0xffbcbcbc,0xe0c1c1c3,0x45b5b5bb,0x0,0x70006e00,0x40000011,0x7000000,0x0,0x0,0xffffff,0xffffff, + 0x0,0x0,0x0,0xc4969696,0xff747474,0xff797979,0xff6b6b6b,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff686868, + 0xff707070,0xff797979,0xff818181,0xff8a8a8a,0xff929292,0xff9a9a9a,0xffa3a3a3,0xffb0b0b0,0xffbababa,0xffc0c0c0,0xcbbcbcbf,0xa000030,0x16000000,0x5000000, + 0x0,0x0,0xffffff,0xffffff,0x0,0x0,0xdb8f8f8f,0xff737373,0xff6c6c6c,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262, + 0xff626262,0xff626262,0xff666666,0xff6e6e6e,0xff777777,0xff7f7f7f,0xff888888,0xff909090,0xff989898,0xffa1a1a1,0xffa9a9a9,0xffb1b1b1,0xffb9b9b9,0xffbfbfbf, + 0xffc1c1c1,0xe7bcbcbf,0x1000002a,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x9c9c9c9c,0xff6f6f6f,0xff696969,0xff626262,0xff626262, + 0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff646464,0xff6c6c6c,0xff757575,0xff7d7d7d,0xff868686,0xff8e8e8e,0xff969696,0xff9f9f9f,0xffa7a7a7, + 0xffb0b0b0,0xffb7b7b7,0xffbfbfbf,0xffc8c8c8,0xffcbcbcb,0xffc3c3c3,0xc1a0a0a7,0x700001b,0x0,0x0,0xffffff,0xffffff,0x0,0xf67b7b7b, + 0xff717171,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff909090,0xffc0c0c0,0xffd7d7d7,0xffe7e7e7,0xffeeeeee,0xffdcdcdc, + 0xffc7c7c7,0xffb4b4b4,0xffa5a5a5,0xffaeaeae,0xffb5b5b5,0xffbdbdbd,0xffc6c6c6,0xffcecece,0xffd6d6d6,0xffcacaca,0xf9c6c6c8,0x40000019,0x1000000,0x0, + 0xffffff,0xffffff,0x0,0xff646464,0xff747474,0xff626262,0xff626262,0xff626262,0xff626262,0xff626262,0xff737373,0xffaaaaaa,0xffc1c1c1,0xffc6c6c6, + 0xffbdbdbd,0xffb4b4b4,0xffaaaaaa,0xffb9b9b9,0xffd7d7d7,0xffcfcfcf,0xffbababa,0xffb5b5b5,0xffbbbbbb,0xffc4c4c4,0xffcccccc,0xffd4d4d4,0xffdcdcdc,0xffcccccc, + 0xffcecece,0x5e00001c,0x7000000,0x0,0xffffff,0xffffff,0x0,0xff5f5f5f,0xff727272,0xff626262,0xff626262,0xff626262,0xff626262,0xff656565, + 0xff929292,0xff787878,0xff868686,0xff919191,0xff8b8b8b,0xff808080,0xff787878,0xff787878,0xff7b7b7b,0xff9c9c9c,0xffa1a1a1,0xff989898,0xffbfbfbf,0xffcacaca, + 0xffd2d2d2,0xffdadada,0xffe3e3e3,0xffd0d0d0,0xffc2c2c2,0x5f00001c,0xb000000,0x0,0xffffff,0xffffff,0x0,0xfe4d4d4d,0xff747474,0xff646464, + 0xff626262,0xff626262,0xff626262,0xff686868,0xff656565,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff505050,0xff5d5d5d, + 0xff6a6a6a,0xff656565,0xffb5b5b5,0xffd0d0d0,0xffd8d8d8,0xffe1e1e1,0xffe6e6e6,0xffcccccc,0xf9acacad,0x5a00001a,0xb000000,0x0,0xffffff,0xffffff, + 0x0,0xdb3c3c3c,0xff686868,0xff757575,0xff626262,0xff626262,0xff626262,0xff616161,0xff505050,0xff373737,0xff353535,0xff353535,0xff353535,0xff353535, + 0xff353535,0xff373737,0xff3e3e3e,0xff474747,0xff3d3d3d,0xff505050,0xffc0c0c0,0xffd6d6d6,0xffdfdfdf,0xffe5e5e5,0xffd4d4d4,0xffc2c2c2,0xd1606068,0x48000012, + 0xa000000,0x0,0xffffff,0xffffff,0x0,0x1f424242,0xfc2a2a2a,0xff696969,0xff7a7a7a,0xff6b6b6b,0xff626262,0xff686868,0xff5c5c5c,0xff494949, + 0xff3d3d3d,0xff353535,0xff353535,0xff353535,0xff353535,0xff3a3a3a,0xff393939,0xff3d3d3d,0xff4a4a4a,0xff9e9e9e,0xffd4d4d4,0xffdddddd,0xffe1e1e1,0xffd9d9d9, + 0xffc5c5c5,0xf9767678,0x6100001d,0x27000000,0x5000000,0x0,0xffffff,0xffffff,0x0,0x0,0x5b3b3b3b,0xf8252525,0xff4c4c4c,0xff838383, + 0xff7f7f7f,0xff787878,0xff7b7b7b,0xff737373,0xff606060,0xff4c4c4c,0xff474747,0xff474747,0xff474747,0xff474747,0xff4c4c4c,0xff727272,0xffacacac,0xffd6d6d6, + 0xffe1e1e1,0xffe0e0e0,0xffd5d5d5,0xffa3a3a3,0xf66f6f72,0x731b1b31,0x35000004,0xc000000,0x0,0x0,0xffffff,0xffffff,0x0,0x0, + 0x0,0x2e2f2f2f,0xcc343434,0xff242424,0xff535353,0xff818181,0xff959595,0xff999999,0xff9f9f9f,0xffa2a2a2,0xff989898,0xffa0a0a0,0xffa7a7a7,0xffaeaeae, + 0xffc9c9c9,0xffdadada,0xffdcdcdc,0xffdcdcdc,0xffc1c1c1,0xff9a9a9a,0xfe727273,0xd158585f,0x53000017,0x34000004,0x10000000,0x1000000,0x0,0x0, + 0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x6000000,0x40252525,0xbf3c3c3c,0xf9313131,0xff373737,0xff515151,0xff6b6b6b,0xff7f7f7f, + 0xff939393,0xff989898,0xff9e9e9e,0xffa4a4a4,0xff949494,0xff929292,0xff828282,0xff6a6a6a,0xf6646466,0xc352525a,0x6a1f1f31,0x3b000008,0x27000000,0x8000000, + 0x1000000,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x57262626, + 0xff393939,0xff505050,0xff444444,0xff3e3e3e,0xff404040,0xff454545,0xff4d4d4d,0xff565656,0xff696969,0xff7e7e7e,0xff737373,0xf95f5f60,0x5f00001c,0x31000000, + 0x24000000,0xe000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xa13d3d3d,0xfe444444,0xff4b4b4b,0xff464646,0xff434343,0xff444444,0xff535353,0xff646464,0xff737373,0xff6e6e6e, + 0xf9646466,0x99373745,0x3a000008,0xb000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0xffffff, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3a272727,0xbf474747,0xeb515151,0xf6535356,0xff5e5e5e, + 0xfe626262,0xf6616163,0xea5f5f63,0xb04f4f56,0x4d000015,0x35000004,0x19000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0 +}; + +static const QRgb Spreadsheet_data[] = { + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5, + 0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xffc4d0e5,0xde9daac1,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffbffff,0xffffffff, + 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff5faff,0xffedf3fe,0xffe4ebf9,0xffd8e1f2,0xffc2d0e9,0xe0a7b2c4, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0xffc4d0e5,0xfffcffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8fdff,0xfff2f7ff,0xffeaf1fd, + 0xffe1e9f7,0xffd5dff0,0xffbfcce3,0xffebf4ff,0xe6a2aec1,0x0,0x0,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffe5e5e5,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, + 0xffdcdcdc,0xffd8dcdc,0xffc6cace,0xffedf4fe,0xffe6edfa,0xffd9e2f2,0xffc2cee5,0xfff0f6ff,0xffdce7f9,0xe3a1adc3,0x0,0x0,0x0,0x0, + 0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff, + 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xffc4c7ca,0xfff1f7ff,0xffe9effc,0xffdce5f4,0xffc4d0e6,0xffffffff,0xffe8eefb,0xffdbe5f9, + 0xe8a4afc5,0x0,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, + 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc5c9ca,0xfff3f9ff,0xffebf1fd,0xffdfe7f6, + 0xffc6d1e5,0xffffffff,0xfffdffff,0xffecf2fd,0xffdee9fb,0xe3a4b0c4,0x0,0x0,0x0,0xffffff,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff, + 0xffc7caca,0xfff5f9ff,0xffedf3fe,0xffe3ebf9,0xffbecbe1,0xfff3f5fb,0xffecf2f9,0xffe4ebf7,0xffd8e1f0,0xffd0dcf1,0xe99eabc1,0x0,0x0,0xffffff, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc, + 0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffdcdcdc,0xffbfc1c1,0xffc3c6ca,0xffbec2ca,0xffb7bdc7,0xff9ea8b7,0xff78869c,0xff78869c,0xff78869c,0xff78869c,0xff808fa6, + 0xff98a9c5,0xff98a9c5,0x0,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc, + 0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc3c8cc,0xffccd4e0,0xffc6d0e0,0xffc1cbdf,0xffbcc8dc,0xffb9c5d9, + 0xffb1bdd4,0xff9faec8,0xff96a5c2,0xff93a0b7,0xffaebedb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffccd5e0, + 0xffc7d2e0,0xffc2cddf,0xffbcc8dc,0xffb7c3d8,0xffa8b4ce,0xff9caac7,0xff99a9c5,0xff97a3b9,0xffb5c5e0,0xff8495b1,0x33000000,0xffffff,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0,0xffd1d7e0, + 0xffd1d7e0,0xffd1d7e0,0xffc5c8cc,0xffcdd7e0,0xffc7d2e0,0xffc4cfe0,0xffbec9dd,0xffafbcd2,0xffa3b2cc,0xffa2b0ca,0xff9fafc9,0xff9da8bd,0xffbdcbe5,0xff8495b1, + 0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xfffcffff,0xffdcdcdc,0xffc5c8cc,0xffc5c8cc, + 0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffc5c8cc,0xffbfc0c2,0xffc3c8cc,0xffbdc4cc,0xffb4bcca,0xffa8b1c2,0xffa1abbe,0xff9ea9bb,0xff9ba6bb, + 0xff9aa4b9,0xff9fa9bb,0xffc3d0e8,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5, + 0xfffcffff,0xffdcdcdc,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffdadcdc,0xfff5faff,0xffeaf0fd,0xffdce5f5, + 0xffd6e0f1,0xffd3ddee,0xffd0dbed,0xffced9ec,0xffccd7ea,0xffafb9ca,0xffc8d5ec,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0, + 0x0,0x506ab5e6,0x8f52b2ec,0xff66baec,0xff60c5f8,0xff1bb1f9,0xff3abdf9,0xff54cafb,0xff50ceff,0xff7fdeff,0xffcff3ff,0xffffffff,0xffffffff,0xfffcffff, + 0xffd1d6dc,0xffe9effc,0xffdfe8f6,0xffdbe4f3,0xffdae3f3,0xffd7e0f1,0xffd5dff0,0xffd2dcef,0xffd0dbed,0xffb3bdcc,0xffcedaf0,0xff8495b1,0x33000000,0xffffff, + 0x0,0x0,0x106ab0e6,0x806ab2e6,0xef40aaf0,0xff21a7f7,0xff00a4ff,0xff00a8ff,0xff00acff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff, + 0xff00c2ff,0xff30d1ff,0xffbceffc,0xfff4f9ff,0xffc9cfd9,0xffe4ecf9,0xffe1e9f7,0xffdfe7f6,0xffdde5f4,0xffdbe4f3,0xffd9e2f3,0xffd7e1f2,0xffd4def0,0xffb7bece, + 0xffd2def2,0xff8495b1,0x33000000,0xffffff,0x0,0x306aafe6,0xdf53aceb,0xff14a0fa,0xff009fff,0xff00a3ff,0xff00a7ff,0xff00aaff,0xff00aeff,0xff00b2ff, + 0xff00b6ff,0xff00b9ff,0xff00bdff,0xff00c1ff,0xff00c5ff,0xff00c8ff,0xff14ccfa,0xff74d0e7,0xffb2bec9,0xffc6ccd7,0xffc5ccd7,0xffc3cad6,0xffc2c9d5,0xffbfc6d3, + 0xffbec5d2,0xffbdc4d1,0xffbac2d0,0xffb2bac7,0xffd5e0f4,0xff8495b1,0x33000000,0xffffff,0x3047a6ee,0xef55abeb,0xff079bfd,0xff009eff,0xff00a1ff,0xff00a5ff, + 0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bcff,0xff00c0ff,0xff00c3ff,0xff00c7ff,0xff00cbff,0xff00cfff,0xff07d2fd,0xff7cd2e5,0xffeaf1fc, + 0xffe7eefb,0xffe4ecf9,0xffe2eaf8,0xffe1e9f8,0xffdee6f5,0xffdde6f4,0xffdce5f4,0xffbcc4d1,0xffd9e3f6,0xff8495b1,0x33000000,0xffffff,0xbf6aafe6,0xff0d9cfc, + 0xff009cff,0xff00a0ff,0xff00a4ff,0xff00a8ff,0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00bbff,0xff00beff,0xff00c2ff,0xff00c6ff,0xff00caff,0xff00cdff, + 0xff00d1ff,0xff00d5ff,0xff28d7f6,0xffbbe7f4,0xffe9f0fc,0xffe7eefb,0xffe4ebf9,0xffe4ebf8,0xffe2eaf8,0xffdfe7f7,0xffdee6f5,0xffbec6d2,0xffdbe5f7,0xff8495b1, + 0x33000000,0xffffff,0xff42a7ef,0xff009bff,0xff009fff,0xff00a3ff,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b2ff,0xff00b5ff,0xff00b9ff,0xff00bdff,0xff00c1ff, + 0xff00c4ff,0xff00c8ff,0xff00ccff,0xff00d0ff,0xff00d4ff,0xff00d7ff,0xff00dbff,0xff93dfec,0xffebf1fd,0xffe8effc,0xffe7eefb,0xffe5ecf9,0xffe3ebf9,0xffe2eaf8, + 0xffe0e7f6,0xffc0c7d4,0xffdce6f8,0xff8495b1,0x33000000,0xffffff,0xff3ca7f1,0xff009dff,0xff00a1ff,0xff00a5ff,0xff00a9ff,0xff00adff,0xff00b0ff,0xff00b4ff, + 0xff00b8ff,0xff00d0af,0xff9f7751,0xffbf5d53,0xffbf5951,0xffbf554f,0xffbf524d,0xffbf4e4b,0xffbf4b49,0xffbf4747,0xffbf4345,0xffd19596,0xffcad1db,0xffcacfd9, + 0xffc8ced8,0xffc6ccd8,0xffc4cbd6,0xffc3c9d5,0xffc1c8d5,0xffb9c0cb,0xffdee8fa,0xff8495b1,0x33000000,0xffffff,0xff5ab0e8,0xff00a0ff,0xff00a4ff,0xff00a8ff, + 0xff00abff,0xff00afff,0xff00b3ff,0xff00b7ff,0xff00baff,0xff00ee40,0xff40d208,0xffff4d21,0xffff471f,0xffff411c,0xffff3b19,0xffff3517,0xffff2e14,0xffff2812, + 0xfffd3523,0xffde8179,0xffc4cee0,0xffc1cbdf,0xffbfc9de,0xffbdc8dc,0xffbbc7db,0xffbbc6db,0xffb8c4d9,0xffb6becd,0xffdfe9fa,0xff8495b1,0x33000000,0xffffff, + 0xff53acd7,0xff2eabf4,0xff00a6ff,0xff00aaff,0xff00aeff,0xff00b1ff,0xff00b5ff,0xff00b9ff,0xff00c5df,0xff00fe00,0xff00fe00,0xffbf871f,0xffff5c28,0xffff5625, + 0xffff4f22,0xffff4920,0xffff431d,0xfffe411f,0xfff86a53,0xffb77064,0xffc3cddf,0xffc1ccdf,0xffbfcade,0xffbec9dc,0xffbdc8dc,0xffbbc6da,0xffbac5da,0xffb7bfce, + 0xffdfe9fa,0xff8495b1,0x33000000,0xffffff,0xcc3495b9,0xff53b0e2,0xff28aff6,0xff00acff,0xff00b0ff,0xff00b4ff,0xff00b8ff,0xff00bbff,0xff00d790,0xff00f802, + 0xff00f702,0xff20e308,0xffff7031,0xffff6a2e,0xffff642b,0xffff5e29,0xfffe5b2b,0xfff87f5f,0xffbb5c45,0xffa38486,0xffc4cfe0,0xffc2ccdf,0xffbfcade,0xffbec9de, + 0xffbdc8dc,0xffbbc7db,0xffb9c5d9,0xffb8c0ce,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x5c236a91,0xff3097b8,0xff4faad0,0xff35b6f3,0xff00b3ff,0xff00b6ff, + 0xff00baff,0xff00beff,0xff00d137,0xff00d50a,0xff00d30a,0xff00d10a,0xff80a722,0xffff7f37,0xffff7934,0xfffc814a,0xfff1906b,0xffb15b41,0xff8b4d40,0xff9eabb9, + 0xffb8bfcc,0xffb6becb,0xffb4bcca,0xffb3bac8,0xffb2bac8,0xffafb7c7,0xffaeb7c6,0xffb6bdc9,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0xd000030,0x891f6788, + 0xff288fae,0xff2e93b1,0xff41aad1,0xff2ab9f0,0xff0dbefc,0xff00bde2,0xff00b112,0xff00af12,0xff00ad13,0xff07ad18,0xff31ae2f,0xfff1a160,0xffed9a6a,0xffc77453, + 0xff95452f,0xff8f5548,0xffa298a0,0xffedf3fd,0xffeff5ff,0xffebf2fd,0xffeaf1fd,0xffe7eefa,0xffe6edfa,0xffe3eaf8,0xffe2eaf8,0xffc3cad6,0xffdfe9fa,0xff8495b1, + 0x33000000,0xffffff,0x0,0x16000029,0x6a103f5f,0xd61e7a96,0xff1d85a0,0xff1a829c,0xff208ca8,0xff279797,0xff3c9d40,0xff429c48,0xff489b51,0xff41974f, + 0xff2f8d48,0xff8a623e,0xff97432d,0xff893d29,0xff9e7773,0xffc4c3d0,0xffc8cdd5,0xfff0f6ff,0xffedf3fe,0xffebf2fd,0xffe9f0fc,0xffe7eefa,0xffe6edfa,0xffe3ebf8, + 0xffe2eaf8,0xffc2c9d5,0xffe0e9fb,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0xe000022,0x35000022,0x740b3551,0xb812627c,0xe1117189,0xff1d807b, + 0xff3d9540,0xff2f8e3c,0xff218739,0xff147f36,0xff0b7a34,0xff866e58,0xffab8c8a,0xffb2b8c4,0xffd5dae5,0xffeff5fd,0xffd0d5dc,0xfff0f6ff,0xffedf3fe,0xffeaf1fd, + 0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x2000000, + 0x1200001b,0x2d00001f,0x4200001c,0xff9da6c1,0xffafc1ba,0xff94ac9f,0xff8ba599,0xff8ea6a1,0xffaeb2bc,0xffb6bac2,0xffc3c6cd,0xffcdd1d8,0xffd2d6dc,0xffd0d6dc, + 0xffc7ccd3,0xffcfd4dc,0xffccd1db,0xffcad0da,0xffc9cfd9,0xffc6ccd7,0xffc4cbd6,0xffc3cad6,0xffc3cad6,0xffc2c8d5,0xffe0eafc,0xff8495b1,0x33000000,0xffffff, + 0x0,0x0,0x0,0x0,0x0,0x2000000,0x6000000,0xffc4d0e5,0xfff4fdff,0xffffffff,0xffffffff,0xfff9feff,0xfff9feff,0xfff8fdff, + 0xfff7fcff,0xfff4f9ff,0xfff4f9ff,0xfff2f8ff,0xfff1f7ff,0xfff0f6ff,0xffedf3fe,0xffeaf1fd,0xffe9f0fc,0xffe6edfa,0xffe4ecf9,0xffe2eaf8,0xffe2eaf8,0xffe1e8f7, + 0xffe0eafc,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc4d0e5,0xff8495b1,0xff8495b1, + 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1, + 0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0xff8495b1,0x33000000,0xffffff,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000, + 0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0x33000000,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, + 0xffffff,0xffffff +}; + static const QRgb start_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x3f8fbff,0x11eff7ff,0x2ae0efff,0x3ad3e9ff,0x33c4e1ff,0x26c4e1ff,0x23e8f3fe,0x35d8ebff,0x37c9e4ff,0x28b1d8ff,0xb9bcbfc,0x0, 0x0,0x3fafdff,0x1be9f4ff,0x59d6eaff,0x9ecde6ff,0xbac6e3ff,0xb6badcff,0x9baed6ff,0x7ec5e1fd,0xb2c7e3ff,0xb9bedeff,0xacabd4ff,0x498fc2f6,0x0, 0x0,0x14f5f9ff,0x54dcedff,0xb9d0e7ff,0xf6ddeeff,0xffe8f4ff,0xffd7eaff,0xebacd4fb,0xe7c9e3fe,0xffe3f1ff,0xffe0efff,0xf6b7d9fc,0x7386b4e4,0x0, 0x0,0x43e9f4ff,0xa4d3e9ff,0xebe0effe,0xfff5fafe,0xffeff7fe,0xecb9d7f6,0xeab8d7f7,0xffe9f3fe,0xfff6fafe,0xf6d4e7fa,0xbb97bee5,0x415e84aa,0x0, 0x0,0x9bc8e3ff,0xe8d6e9fd,0xfdf0f6fb,0xffecf4fc,0xebb8d5f3,0xe498c3f0,0xfae2eef9,0xfff3f7fb,0xf7d7e8f8,0xc198bce2,0x5c5b83ab,0x14273c51,0x0, 0x0,0xeebbdbfb,0xfee7f0f7,0xffe8f0f7,0xffb7d8fa,0xf783bef9,0xfac3ddf6,0xffedf3f7,0xffd6e8f8,0xe195c4f2,0x75588ec4,0x1d294562,0x4090f15,0x0, 0x0,0xe592c7fa,0xfdcee2f2,0xffdde8f0,0xffb3d5f4,0xff75b9fb,0xfda9d1f6,0xffdfe9f0,0xffd0e3f1,0xe693c5f4,0x7b5ca5ed,0x184591dd,0x13785d2,0x0, 0x0,0x6c6fb5fa,0xd789c1f5,0xfbc1d9ed,0xffd0e0eb,0xff9ecaf2,0xea6db2f7,0xf8accff0,0xffd1e0eb,0xffbcd7ee,0xd083bcf2,0x5757a5f1,0xb3e93e7,0x0, 0x0,0x1675b8f9,0x6e5dabf6,0xd289bff0,0xfabbd5e9,0xffc5dae7,0xea93c2eb,0xdd67adf1,0xf5a6cbeb,0xffc7dae7,0xf5afcfe9,0xb476b3ee,0x394899e9,0x0, 0x0,0x4bcdaf7,0x1c51a3f2,0x725aa7f1,0xd57db8ef,0xfb90c1ed,0xff86bdef,0xc04d9ce9,0xb565a8e8,0xf38abeed,0xff8dc0ee,0xe46baeee,0x623f8dd9,0x0, 0x0,0x1fbfbfb,0x475b3f0,0x1c3995ee,0x564399ed,0x7b4798e6,0x834694e0,0x57317bc4,0x423480cb,0x714597e8,0x824696e3,0x733d8ad5,0x2f27639f,0x0, 0x0,0x0,0x0,0x22787e6,0x72079d2,0xc1c6bb9,0xe195fa5,0xa124274,0x616528e,0xa1e6ebf,0xe1a63ac,0xd165390,0x60a2641,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb stop_data[] = { 0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000, 0xf000000,0x2e000000,0x5f000000,0x7f000000,0x8d000000,0x98000000,0x9e000000,0xa2000000,0x9e000000,0x98000000,0x81000000,0x57000000,0x31000000,0x1d000000, 0x18000000,0x5f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0x98000000,0x52000000,0x31000000, 0x25000000,0x7f000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xcd000000,0x7a000000,0x49000000, 0x2e000000,0x8d000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xf0000000,0x9b000000,0x5d000000, 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000, 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000, 0x3d000000,0xa2000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xcc000000,0x7a000000, 0x3b000000,0x9e000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xc4000000,0x75000000, 0x36000000,0x98000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xb4000000,0x6c000000, 0x2e000000,0x81000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xee000000,0x9b000000,0x5d000000, 0x25000000,0x57000000,0x98000000,0xcd000000,0xef000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xed000000,0xbd000000,0x7a000000,0x49000000, 0x18000000,0x31000000,0x52000000,0x7a000000,0x9b000000,0xb3000000,0xc4000000,0xcc000000,0xc4000000,0xb3000000,0x9b000000,0x7a000000,0x52000000,0x31000000, 0xf000000,0x1d000000,0x31000000,0x49000000,0x5d000000,0x6c000000,0x75000000,0x7a000000,0x75000000,0x6c000000,0x5d000000,0x49000000,0x31000000,0x1d000000 }; static const QRgb style_data[] = { 0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20c0c0c0, 0xff000000,0xff0e0e0e,0xe7262626,0xbf000000,0xbf000000,0xef000000,0xff000000,0xff070707,0xef2c2c2c,0xbf000000,0xbf000000,0xe7000000,0xff000000,0xffc1c1c1, 0xff0a0a0a,0xe76a6a6a,0x64dcdcdc,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x64000000,0xe7000000,0xffc1c1c1, 0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xff000000,0xff1c1c1c,0xbfdcdcdc,0x0,0x0,0x0,0xbf000000,0xffc1c1c1, 0x601c1c1c,0x48dcdcdc,0x0,0x0,0x64000000,0xe7000000,0xff000000,0xeb8e8e8e,0x48dcdcdc,0x0,0x0,0x0,0x48000000,0x60c0c0c0, 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x9f000000,0xff000000,0xff000000,0xdfdcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x10000000,0xab000000,0xff000000,0xff181818,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0xff000000,0xffc1c1c1,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xff676767,0x74c5c5c5,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x60000000,0xff000000,0xff000000,0xffa5a5a5,0x20dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x1c000000,0xdf000000,0xeb000000,0xff000000,0xff000000,0xff151515,0xe3040404,0xc3dcdcdc,0x0,0x0,0x0,0x0,0x0,0x0 }; static const QRgb suspend_data[] = { 0x1a056999,0x9a0d6d9c,0xff1d77a3,0xff2981aa,0xff267fa9,0xff247ea8,0xff227ea7,0xff1f7ba8,0xff1e7ba6,0xff1d7ba5,0xff1e7ba5,0xff17729f,0x9a096b9b,0x1a016a9b, 0x9a0d6d9c,0xff4e95b9,0xff549fc3,0xff1e8bb7,0xff228db9,0xff2491bc,0xff3c96c1,0xff4d99c1,0xff4e94be,0xff5495bd,0xff5e97c0,0xff76a0c4,0xff3e87b0,0x9a086b9c, 0xff1d77a3,0xff59a0c4,0xff0074a9,0xff007bae,0xff1a8bb9,0xff63b0d0,0xff93c6de,0xff9bc7de,0xff79b0cf,0xff4d92bb,0xff4d8fb9,0xff5691bb,0xff76a0c4,0xff12709f, 0xff2981ab,0xff258eb9,0xff007bae,0xff0b84b5,0xff7bbdd9,0xffe6f5fa,0xffc5deec,0xffcadfed,0xffedf4f8,0xff95bcd6,0xff5b95bd,0xff6196bc,0xff759ec3,0xff1275a3, 0xff267fa9,0xff228db9,0xff037db0,0xff3d9cc5,0xffcbe4f0,0xffa9cfe2,0xff5e9fc4,0xff6ba4c7,0xffcbdfed,0xffd1e2ed,0xff74a5c6,0xff6a9abf,0xff79a0c3,0xff1072a2, 0xff247ea8,0xff1e8dba,0xff0c7fb1,0xff499bc3,0xffa2cde4,0xff63a1c6,0xff478eb8,0xff5291bb,0xff80adce,0xffb7d3e6,0xff80abca,0xff729cbf,0xff7ca2c4,0xff1072a1, 0xff227ea7,0xff2d8dbb,0xff2385b5,0xff90c1d9,0xfff0f7fb,0xffeaf3f7,0xffe8f1f6,0xffe9f1f7,0xffedf4f8,0xffeff7fb,0xffaac7dc,0xff7aa0c2,0xff7fa5c6,0xff1071a1, 0xff1f7ba8,0xff3f90bb,0xff4293bd,0xffb7d6e7,0xffd8eaf5,0xffafd0e6,0xffadcde3,0xffb2d0e5,0xffc2daeb,0xfff1f9fe,0xffbdd0e2,0xff82a6c6,0xff85abc9,0xff116f9f, 0xff1e7ba6,0xff4c92bd,0xff4d96be,0xffbcd7e7,0xffb2cfe3,0xff659bc1,0xff6096bc,0xff689abe,0xff85abcb,0xffdce8f3,0xffc0d3e3,0xff8bacc9,0xff84aecc,0xff106d9f, 0xff1d7ba5,0xff5495bd,0xff5798c0,0xffbfd8e8,0xffcfe1ed,0xff9bbfd9,0xff98bdd6,0xff9fbed7,0xffb1cade,0xffeaf2f8,0xffc4d5e4,0xff93b1cc,0xff89b3cf,0xff106d9f, 0xff1d7aa5,0xff5b97bf,0xff5997be,0xffb1cfe3,0xfff0fafe,0xffeef9ff,0xffeef9ff,0xfff0faff,0xfff3fbff,0xfff5fafd,0xffbed3e3,0xff9bb7d0,0xff8fb7d2,0xff116d9e, 0xff17729f,0xff759fc3,0xff5892bc,0xff7ba9c9,0xff9bbdd7,0xffa2c0d7,0xffa8c3da,0xffaec7dc,0xffb6ccde,0xffb7ccdf,0xffa9c1d8,0xffb5c5d9,0xff71adcc,0xff0b6b9c, 0x9a096b9b,0xff3e87b0,0xff76a0c4,0xff759ec3,0xff79a0c3,0xff7ca2c4,0xff7fa5c6,0xff85abc9,0xff84aecc,0xff88b3cf,0xff96bad4,0xff76afce,0xff227baa,0x9a03699a, 0x1a016a9b,0x9a086b9c,0xff12709f,0xff1275a3,0xff1072a2,0xff1072a1,0xff1071a1,0xff116f9f,0xff106d9f,0xff106d9f,0xff126d9e,0xff0c6b9c,0x9a03689a,0x1a00699a }; static const QRgb table_pattern_data[] = { 0xff598076,0xff5c857b,0xff5c857b,0xff567b72,0xff51756c,0xff577e74,0xff5d867c,0xff598076,0xff52766d,0xff51756c,0xff5a8177,0xff5f897e,0xff598076,0xff50736a, 0xff4f7269,0xff557b71,0xff5b847a,0xff5a8177,0xff588076,0xff54786f,0xff51756c,0xff577d73,0xff598076,0xff547970,0xff51746b,0xff53786e,0xff598076,0xff5d857b, 0xff577d74,0xff52766d,0xff587e74,0xff5d867b,0xff5c847a,0xff598076,0xff587f75,0xff557b71,0xff547a71,0xff587f75,0xff5a8278,0xff598177,0xff587f75,0xff587f75, 0xff598076,0xff5b8278,0xff598076,0xff587f75,0xff5f887d,0xff608b80,0xff567c73,0xff547970,0xff567c72,0xff577e74,0xff587f75,0xff5c857a,0xff608b80,0xff608b80, 0xff5e887e,0xff5c857a,0xff5a8278,0xff5a8177,0xff598076,0xff598076,0xff5b8379,0xff5a8278,0xff51746b,0xff51746b,0xff557a71,0xff587f75,0xff5a8177,0xff5d867c, 0xff608b80,0xff5d877c,0xff597f76,0xff577d74,0xff598076,0xff598076,0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff567c72,0xff567c72,0xff587f75,0xff5c847a, 0xff5c857b,0xff5f897e,0xff5f897e,0xff577c73,0xff4f726a,0xff53776e,0xff598076,0xff587f75,0xff577e74,0xff587f75,0xff587e74,0xff577d73,0xff5d867b,0xff598076, 0xff5a8278,0xff608a7f,0xff608a80,0xff608a7f,0xff5a8278,0xff50736b,0xff50736a,0xff598076,0xff5f897e,0xff5a8178,0xff557b71,0xff598076,0xff5e877c,0xff5f897e, 0xff5a8278,0xff557b71,0xff5a8278,0xff608b80,0xff5e877d,0xff577d74,0xff50746b,0xff50736a,0xff567d73,0xff5e887d,0xff608b80,0xff587f75,0xff53776e,0xff598076, 0xff618b80,0xff5f8a7f,0xff53776e,0xff51756c,0xff598076,0xff5f887e,0xff598076,0xff50736a,0xff50736b,0xff567d73,0xff5a8177,0xff5c847a,0xff5b8379,0xff547a70, 0xff51746b,0xff587f75,0xff5e877d,0xff598076,0xff51746b,0xff52766d,0xff587f75,0xff5d857b,0xff587e75,0xff53786e,0xff598076,0xff5e887d,0xff5c847a,0xff598076, 0xff587f75,0xff53786f,0xff52766c,0xff587e74,0xff598076,0xff547970,0xff587e74,0xff577e75,0xff598076,0xff5a8278,0xff598076,0xff598076,0xff5e887e,0xff608b80, 0xff5b8379,0xff587f75,0xff577e74,0xff567b72,0xff557b72,0xff598076,0xff598177,0xff598076,0xff5e887e,0xff5c857a,0xff5a8278,0xff598076,0xff587f75,0xff587f75, 0xff598177,0xff587f75,0xff547a71,0xff53786f,0xff567b72,0xff587f75,0xff5b8278,0xff5e887d,0xff618b80,0xff608a7f,0xff598177,0xff587e74,0xff598076,0xff598076, 0xff587f75,0xff577d74,0xff557a71,0xff53776e,0xff51746b,0xff52756c,0xff557b72,0xff5b8379,0xff608b80,0xff638e83,0xff608b80,0xff5d867c,0xff50736b,0xff52766d, 0xff587f75,0xff587f75,0xff577e74,0xff587f75,0xff598076,0xff598076,0xff577e74,0xff577e74,0xff598076,0xff5f887e,0xff638e83,0xff5e887e,0xff5a8177,0xff547a71, 0xff4f7269,0xff587e74,0xff5e887d,0xff5a8278,0xff557b72,0xff598076,0xff5e887e,0xff608a80,0xff5d867b,0xff587f75,0xff5b8278,0xff618c81,0xff608a7f,0xff598177, 0xff547970,0xff4f7169,0xff557b71,0xff5e877d,0xff618c81,0xff598076,0xff53776e,0xff587f75,0xff608a80,0xff5f897e,0xff587f75,0xff547970,0xff5a8278,0xff608b80, 0xff5c857b,0xff547970,0xff4f7169,0xff50726a }; static const QRgb tgz_data[] = { 0x0,0x100b200,0x791fd11e,0x4611ca0a,0x1cd3d3d5,0x3dcdcdd1,0x3dc8c8ce,0x3dc3c3cb,0x3dbebec9,0x3db9b9c7,0x1baaaab9,0x0,0x0,0x0, 0x1008800,0x7700b300,0xfd08e808,0x4802ae02,0x85dadadd,0xfff5f5f6,0xfff4f4f6,0xfff2f0ef,0xffeeeef2,0xffe6e6ed,0xdfbdbdcc,0x269494a6,0x0,0x0, 0x79008c00,0xfd00be00,0xff00c500,0x48008900,0x85d8d8dd,0xfffbf4e8,0xfff3dcaf,0xffeed399,0xffede0cf,0xfff0f0f6,0xffdfdfe8,0xe0c8c8d6,0x2387879c,0x0, 0x46007c00,0x48008200,0x52008000,0x26568512,0xb1e3c085,0xfff7e4af,0xfffffbd4,0xfff9eebf,0xfff1e0b1,0xffe0d1c0,0xffdddde7,0xfff4f4f8,0xd8babacd,0x1f7d7d97, 0x0,0x0,0xddc962a,0xdff0c97c,0xfffce4a6,0xfffce3a5,0xfffae09f,0xffecc377,0xffedcf90,0xffe9cc90,0xffbfac9e,0xffc9c9da,0xffc6c6d8,0x878989a2, 0x0,0x0,0x14db952a,0xf7f8de9a,0xffffe5a1,0xffffd98b,0xfffdd688,0xfff5c774,0xfff5cb7c,0xffeec377,0xffdbaf68,0xffd6d2d9,0xffdfdfec,0x8b8989a2, 0x0,0x0,0x14d5902a,0xf7f7d78c,0xffffe59c,0xffffd986,0xfff7be5e,0xfffec664,0xffffc766,0xffffcc6d,0xffe7bc6e,0xffd5d1d8,0xffe1e1ed,0x8b8585a0, 0x0,0x0,0x14cb8929,0xf7f5cf7d,0xffffdd88,0xffffda82,0xfffdcd6f,0xffffbe52,0xffffc763,0xffffd276,0xffe5bf76,0xffd7d3d9,0xffe3e3ef,0x8b82829f, 0x0,0x0,0xfc18129,0xeeecbe65,0xffffd575,0xffffd36f,0xffffcd69,0xffffc35c,0xffffcd6f,0xffffd882,0xffe3c27d,0xffd8d5da,0xffe6e6f0,0x8b7f7f9d, 0x0,0x0,0x0,0x3fb98134,0xece7b557,0xffffcb5c,0xffffcb61,0xffffc967,0xffffd47a,0xfff1cd81,0xffc2a680,0xffe1dfe6,0xffe8e8f2,0x8b7c7c9c, 0x0,0x0,0x0,0x0,0x89ab9992,0xffdfaf5b,0xffffc85a,0xfff7c76d,0xffceab76,0xffccbfb6,0xffd7e7d9,0xffb5e6b1,0xffbbe6ba,0xaa599e62, 0x0,0x0,0x0,0x0,0x85b1b1c9,0xffefe8e2,0xffceab77,0xffcebcaa,0xffefeef0,0xfff5f5f9,0xffb5e6b8,0xff75fb74,0xff75f475,0xa73dac46, 0x0,0x0,0x0,0x0,0x85aaaac5,0xfff3f3f7,0xfff1f1f5,0xfff1f1f6,0xffeeeef5,0xffececf3,0xffa8d5ae,0xff02dd02,0xff74c97c,0x8b6f7094, 0x0,0x0,0x0,0x0,0x22717190,0x5362627f,0x545e5e7c,0x545b5b7b,0x54575779,0x54535377,0x82256936,0x8d07830b,0x54484970,0x2d343454 }; static const QRgb toys_data[] = { 0x0,0x0,0x0,0x1d8c8c00,0x87a9a83a,0xcdc48877,0xe2cf8d8d,0xdfcd8989,0xbabea56c,0x639a9a23,0x7717100,0x0,0x0,0x0, 0x0,0x8a0000,0x619b821c,0xf3cdcd87,0xfff1eece,0xfff4d2d2,0xfff6d3d3,0xfff6d3d3,0xfff3dfcf,0xffebebc6,0xd6bcbb68,0x2d7d5104,0x0,0x0, 0x0,0x61982416,0xfdd8d099,0xfff2f2c4,0xfff6ebc2,0xfff9c4c4,0xfffac4c4,0xfffac5c5,0xfff8d4c2,0xfff5f5c4,0xffefefc5,0xecbe926b,0x286c0000,0x0, 0x1d8c0000,0xf3c37e6a,0xffeeeeb3,0xfff7f7b4,0xfffbe5b1,0xfffdb4b4,0xfffeb4b4,0xfffeb4b4,0xfffcc5b2,0xfffafab4,0xfff4f4b5,0xffe7e0ab,0xc58c0806,0x4080000, 0x889e2121,0xffe2c69e,0xfff2f2a4,0xfffafaa4,0xfffedea2,0xffffa4a4,0xffffa4a4,0xffffa3a3,0xfffe9b7f,0xfffcfc6d,0xfff5f56c,0xffdbdb42,0xffa61d06,0x46620101, 0xcdb44a4a,0xffe6cf96,0xfff5f598,0xfffdfd98,0xffffd796,0xffff9898,0xffff9797,0xffff4343,0xfffe3e15,0xfffdfd15,0xfff5f515,0xffdfdf15,0xffba4114,0x937a0707, 0xe2b74a4a,0xffe7d28e,0xfff6f690,0xfffdfd90,0xfffed28e,0xffff9090,0xffff5c5c,0xffff2929,0xfffe4b28,0xfffefe29,0xfff9f929,0xffe6e629,0xffc65827,0xb17f0f0f, 0xdfac2c2c,0xffe0c373,0xfff5f588,0xfffdfd8c,0xfffecb81,0xffff6060,0xffff4040,0xffff4040,0xffff6040,0xfffefe40,0xfff9f940,0xffe8e840,0xffca673d,0xb1811717, 0xbaa72c2c,0xffd4ac56,0xffeded5a,0xfffafa5b,0xfffec059,0xffff5a5a,0xffff5a5a,0xffff5a5a,0xfffe7759,0xfffefe59,0xfff7f75a,0xffe6e659,0xffc96d51,0x916e1010, 0x63961a1a,0xffcc9a63,0xffe8e873,0xfff6f674,0xfffccf72,0xfffe7373,0xfffe7474,0xfffe7474,0xfffd9172,0xfffbfb73,0xfff2f274,0xffe1e172,0xfbb7554b,0x43340101, 0x7710000,0xd7b06447,0xffdede86,0xffeeee8d,0xfff6d98b,0xfffa8c8c,0xfffc8d8d,0xfffb8d8d,0xfff9a98b,0xfff5f58c,0xffeaea8c,0xffd6c97d,0xb87c2424,0x6000000, 0x0,0x2e82190e,0xedbdb262,0xffe3e39b,0xffede0a2,0xfff2a3a3,0xfff5a4a4,0xfff4a4a4,0xfff1bea2,0xffebeba2,0xffdcdc93,0xde98703e,0x27160000,0x0, 0x0,0x0,0x2970690b,0xc5a8a84d,0xffd4d18c,0xffe5aba9,0xffe9afaf,0xffe9aeae,0xffe2c3a4,0xfbc8c87a,0xba828230,0x27181600,0x0,0x0, 0x0,0x0,0x0,0x4090900,0x4666660a,0x938e4637,0xb1954747,0xb1944646,0x91765925,0x44353501,0x7000000,0x0,0x0,0x0 }; static const QRgb trash_data[] = { 0x3d3d5d5,0x19d7d9d9,0x45cbcbcb,0x9cbebebd,0xdab2b2b2,0xf7a5a5a6,0xcc979797,0x948b8b8c,0x67848485,0x40838384,0x5838384,0x0,0x0,0x0, 0x51d5d5d5,0xd8dcdddd,0xffd4d4d4,0xffc2c3c3,0xffb4b5b4,0xffa5a5a5,0xff969698,0xff8c8c8d,0xfb7d7e7e,0xc5717071,0x5f676767,0x18555556,0x0,0x0, 0xffc8c8c8,0xffeaeaea,0xffc3c4c3,0xffb9baba,0xffafafb0,0xffa2a2a2,0xff959495,0xff8c8c8c,0xff7b7c7c,0xff676767,0xff535353,0x604e4e4e,0x0,0x0, 0xfeabacac,0xffdbdbda,0xffd1d1d1,0xffd1d1d1,0xffc5c5c5,0xffb5b5b5,0xffa3a3a4,0xff9a999a,0xff848484,0xff626262,0xff474747,0x60414141,0x0,0x0, 0xd9a4a5a5,0xffc2c2c2,0xffc5c5c5,0xffc6c6c5,0xffbbbbbb,0xffaeaeae,0xff9d9d9d,0xff939393,0xff7b7b7c,0xff595959,0xff494949,0x604d4d4e,0x0,0x0, 0x499c9d9d,0xffa1a1a1,0xffb6b6b6,0xffb5b5b5,0xffa9aaa9,0xff9b9b9b,0xff8b8b8c,0xff7f7f7f,0xff686868,0xff4e4e4e,0x9f4b4a4b,0x18555556,0x0,0x0, 0x20aeaeae,0xffbebebe,0xffededed,0xffcfcfcf,0xffababab,0xffa0a0a0,0xff939394,0xff888889,0xff696969,0xff4d4d4d,0x7f484848,0x0,0x0,0x0, 0x20b1b1b1,0xffc0c0c0,0xffececec,0xffcdcdcd,0xffaaaaaa,0xff9f9f9f,0xff929393,0xff8a8a8a,0xff7a7a7a,0xff5e5e5e,0x80494949,0x0,0x0,0x0, 0x20b0b0b0,0xffbcbcbc,0xffe0e0e0,0xffc6c6c6,0xffa9a9a9,0xff9e9e9d,0xff909190,0xff868687,0xff757575,0xff5c5c5c,0x7f4e4e4e,0x0,0x0,0x0, 0x20afb0af,0xffb9b9b9,0xffd4d4d4,0xffc0c0c0,0xffa8a8a8,0xff9d9d9d,0xff8f8f8e,0xff848484,0xff707070,0xff575757,0x80494949,0x1000000,0x0,0x0, 0x20afafaf,0xffb6b6b6,0xffc9c9c9,0xffbababa,0xffa7a8a8,0xff9c9c9c,0xff8e8d8c,0xff828281,0xff6c6c6c,0xff525252,0x963c3c3c,0x26000000,0x15000000,0x4000000, 0x20aeaeae,0xffb2b2b2,0xffbbbabb,0xffb2b2b2,0xffa7a7a7,0xff9a9a9a,0xff8b8b8b,0xff7e7e7e,0xff676767,0xff4c4c4c,0xb0302f2f,0x5c000000,0x4f000000,0x21000000, 0x11b0b0b0,0xa7acacac,0xffa7a7a7,0xffa9a9a9,0xffa3a3a3,0xff979798,0xff868686,0xff777777,0xff595959,0xdd3e3e3e,0x85212121,0x60000000,0x4f000000,0x1b000000, 0x2b1b2b2,0x11a9a9a9,0x219b9b9c,0x268d8d8e,0x2f6e6e6e,0x3a525252,0x433f3f3f,0x45363737,0x44282828,0x381b1b1b,0x250b0b0b,0x18000000,0xc000000,0x3000000 }; +static const QRgb Tux_data[] = { + 0x4000000,0x7000000,0xc000000,0x12000000,0x17000000,0x1b000000,0x1d000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000, + 0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1f000000,0x1d000000,0x1b000000, + 0x17000000,0x12000000,0xc000000,0x7000000,0x7000000,0xf000000,0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000, + 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000, + 0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000,0x18000000,0xf000000,0xc000000,0x18000000,0xff090684,0xff090682,0xff090680,0xff090680, + 0xff090681,0xff090681,0xff090682,0xff090683,0xff060456,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454,0xff060454, + 0xff060454,0xff060454,0xff060454,0xff060457,0xff070465,0xff070467,0xff060456,0xff06034d,0xff04033a,0x3d000000,0x29000000,0x18000000,0x12000000,0x25000000, + 0xff090682,0xffe4f8f0,0xffd2f3e7,0xffccf1e2,0xffcdf1e2,0xffd2f3e4,0xffd9f4e7,0xffafafae,0xff9b9b9b,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c, + 0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9c9c9c,0xff9d9d9d,0xffb1b1b1,0xffb4b4b5,0xffa1a1a1,0xff8f8f8f,0xff04033a,0x5c000000, + 0x3d000000,0x25000000,0x17000000,0x2e000000,0xff08067f,0xffcff2e5,0xff97e3c7,0xff7ddcb8,0xff7fdcb7,0xff8ee0bc,0xffa1e5c3,0xff565656,0xff4f4f4f,0xff4f4f4f, + 0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff4f4f4f,0xff505050,0xff595858,0xff525253, + 0xff4e4e4e,0xff494949,0xff02011d,0x74000000,0x4e000000,0x2e000000,0x1b000000,0x36000000,0xff08067e,0xffc4efdf,0xff76d9b5,0xff50cfa0,0xff53d09f,0xff69d6a7, + 0xff605f5c,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616,0xff161616, + 0xff161616,0xff161616,0xff161616,0xff161616,0xff151515,0xff131313,0xff010008,0x87000000,0x5a000000,0x36000000,0x1d000000,0x3b000000,0xff08067e,0xffc0eede, + 0xff6ad6af,0xff43cc99,0xff46cd98,0xff5fd3a0,0xff3a3937,0xff030303,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404, + 0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff040404,0xff030303,0xff040404,0xff030303,0xff030303,0xff000001,0x93000000,0x62000000,0x3b000000, + 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff61d4a1,0xff2a2928,0xff000000,0xff020202,0xff020202,0xff020202,0xff020202, + 0xff010101,0xff000201,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff020202,0xff010101,0xff050505,0xff0f0e0e,0xff060606,0xff010101,0xff010101, + 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff47cc97,0xff63d4a1,0xff242523,0xff000000, + 0xff020202,0xff010101,0xff020202,0xff131111,0xff171515,0xff020202,0xff000201,0xff020202,0xff020202,0xff020202,0xff010101,0xff030303,0xff060606,0xff060606, + 0xff161615,0xff383535,0xff050505,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98, + 0xff48cd98,0xff64d5a1,0xff20201f,0xff000000,0xff010101,0xff090909,0xff1b1918,0xff0e0e0d,0xff141414,0xff100f0f,0xff020202,0xff020202,0xff020202,0xff010101, + 0xff252220,0xff716d6c,0xff73706f,0xff565352,0xff1b1b1b,0xff090908,0xff0c0c0c,0xff010101,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, + 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff20201f,0xff000000,0xff090909,0xff7f7c7b,0xff888888,0xff797979,0xff2f2d2b,0xff020202, + 0xff020202,0xff020202,0xff010101,0xff181717,0xffb2b2b2,0xffa9a9a9,0xffa4a4a4,0xff9a9a9a,0xff9e9e9e,0xff383534,0xff010101,0xff010101,0xff000001,0x99000000, + 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff252423,0xff000000,0xff2e2c2a,0xffdddddd, + 0xffefefef,0xfff3f3f3,0xffe1e1e1,0xff1e1c1b,0xff000101,0xff020202,0xff010101,0xff6f6866,0xfff3f3f3,0xffeaeaea,0xff7d7d7d,0xff8a8a8a,0xffdcdcdc,0xffbcbcbe, + 0xff0d0c0c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2, + 0xff252624,0xff000000,0xff5f5856,0xfff3f3f3,0xff868686,0xff8b8b8b,0xfffefefe,0xff6a6663,0xff010101,0xff010101,0xff030303,0xffb9b3b0,0xffffffff,0xff595959, + 0xff000000,0xff050505,0xff949494,0xffebebee,0xff2f2c2d,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd, + 0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff282826,0xff000000,0xff837c78,0xff6d6d6d,0xff050505,0xff202020,0xff868686,0xff908c88,0xff020202,0xff060606, + 0xff0b0a09,0xffbfbab8,0xffd4d4d4,0xff070707,0xff030303,0xff282828,0xff3f3f3f,0xffebebee,0xff504c4e,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000, + 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff2b2c2a,0xff000000,0xff837c7a,0xff484848,0xff020202,0xff1b1b1b, + 0xff525252,0xff757072,0xff020202,0xff050505,0xff070707,0xff837d7f,0xffc7c7c7,0xff090909,0xff080808,0xff0b0b0b,0xff1c1c1c,0xffeaeaed,0xff575255,0xff000000, + 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff31302f,0xff000000, + 0xff6d6765,0xff636363,0xff020202,0xff000000,0xff524f47,0xff9f8948,0xff7e6717,0xff8b741b,0xff5f4f20,0xff968343,0xffddd3a1,0xff101010,0xff050505,0xff020202, + 0xff383838,0xffebebee,0xff443f42,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98, + 0xff48cd98,0xff64d5a2,0xff363634,0xff000000,0xff44403e,0xffa1a1a1,0xff020202,0xff39362b,0xffb89421,0xffc7a21f,0xfff2c711,0xfff0c915,0xffd1b333,0xffc2a228, + 0xffe8bf12,0xff97833d,0xff353229,0xff0e0e0e,0xffa8a8a8,0xffebebee,0xff1d1b1c,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, + 0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a2,0xff3a3937,0xff000000,0xff0b0b0b,0xffc6c7cd,0xffa28f5a,0xffd3a200,0xffe4b200,0xffe7bb10, + 0xffe9c51f,0xffeac827,0xffedcc2c,0xffefcd2e,0xffedcc2c,0xffe9bf0c,0xffe2b70b,0xffcda833,0xffeccd91,0xff938577,0xff030304,0xff000000,0xff000001,0x99000000, + 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff48cd98,0xff64d5a1,0xff42413e,0xff000101,0xff000000,0xff564a2d, + 0xffd6a200,0xffdca900,0xffe4b600,0xffe6be14,0xffe9c521,0xffedcc2d,0xffeed436,0xfff2d949,0xfff5e164,0xfff3dc51,0xffeecc27,0xffe6b700,0xffd5a200,0xff9d6d05, + 0xff241c0f,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff42cb98,0xff47cc98,0xff64d5a1, + 0xff474642,0xff000000,0xff14110d,0xffa07300,0xffcd9800,0xffddaa00,0xffe6b300,0xffe7bb10,0xffe9c51f,0xffecca28,0xffedce2e,0xfff4db58,0xfffae97f,0xfff0d547, + 0xffeec310,0xffae8a0e,0xff564214,0xffa37605,0xff3c2f11,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd, + 0xff69d6ae,0xff41cb98,0xff47cc97,0xff62d4a1,0xff4b4a47,0xff000000,0xff3c2e17,0xffbe8600,0xffc79400,0xffd9a700,0xffe3b200,0xffe6b90d,0xffe9c018,0xffe9c51f, + 0xffefd135,0xfff5e462,0xfff3d644,0xffeec30c,0xffb08c14,0xff624e17,0xffa2780b,0xffb68400,0xff2e2411,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000, + 0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc97,0xff62d4a1,0xff504f4c,0xff010101,0xff2d2414,0xff815c0e,0xffb68700,0xffd5a100, + 0xffe2b100,0xffe7b700,0xffe9bc0f,0xffecc214,0xfff8d625,0xfff2cf26,0xffb6941c,0xff6e561b,0xff785d18,0xffd3a100,0xffcb9700,0xffaf7b00,0xff1f1a0e,0xff000000, + 0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffbfeedd,0xff69d6ae,0xff41cb98,0xff46cc98,0xff61d4a1,0xff595854,0xff020202, + 0xff070706,0xff523f20,0xff755414,0xff7f6213,0xffac8408,0xffbf9500,0xffc09809,0xffba9413,0xff886d1b,0xff5c4b1a,0xff5f4918,0xff9d7610,0xffe2ae00,0xffce9d00, + 0xffc6992b,0xffbfa262,0xff242120,0xff000000,0xff000001,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067e,0xffc0eedd,0xff6ad7ae,0xff44cc99, + 0xff48cd98,0xff64d5a1,0xff82ddad,0xff030303,0xff020202,0xff96928d,0xffbe9643,0xff926407,0xff795d15,0xff7b6820,0xff7c661f,0xff7e681f,0xff957819,0xffbc920e, + 0xffe3af00,0xffe0ac00,0xffcf9d00,0xffd0b262,0xffcecbc3,0xffc3c3c6,0xff716f77,0xff020203,0xff000000,0x99000000,0x66000000,0x3d000000,0x1f000000,0x3d000000, + 0xff08067e,0xffc0eddd,0xff6cd5af,0xff49cb99,0xff4ecd9a,0xff69d4a3,0xff494845,0xff010101,0xff090908,0xffcbcbce,0xffdad2c5,0xffba8d2a,0xffb77f00,0xffd8a90b, + 0xffecc110,0xffeaba00,0xffdcad00,0xffd3a100,0xffcc9800,0xffcb9b15,0xffd4bf87,0xffd2d2d2,0xffd3d3d3,0xffc9c9cc,0xff9696a0,0xff08080a,0xff000000,0x99000000, + 0x66000000,0x3d000000,0x1f000000,0x3d000000,0xff08067c,0xffbee8da,0xff6dcdaa,0xff4bc094,0xff53c293,0xff6cc89d,0xff0f0f0f,0xff000000,0xff060606,0xffbab6b8, + 0xffd0d0d3,0xffcbc3ba,0xffaf8735,0xffa07100,0xffaa7a00,0xffad7e00,0xffb08000,0xffb88d22,0xffcaaf71,0xffcfc8be,0xffcbcbcd,0xffcdcdcf,0xffdedee1,0xffd8d8de, + 0xffa0a0ac,0xff1d1c21,0xff000000,0x99000000,0x66000000,0x3d000000,0x1d000000,0x3b000000,0xff080577,0xffb7d6cd,0xff69af98,0xff45987c,0xff489579,0xff1a1a1b, + 0xff000000,0xff010101,0xff080707,0xffa0a0a9,0xffababb5,0xff9e9ea7,0xffa0a0a9,0xff95866e,0xff907b52,0xff927d55,0xff9a8c75,0xff9e9da2,0xff9e9ea7,0xff9e9ea7, + 0xffa2a2ac,0xffacacb7,0xffafafba,0xffa3a3b0,0xff7c7c8f,0xff3e3d4f,0xff000002,0x93000000,0x62000000,0x3b000000,0x1b000000,0x36000000,0xff070568,0xff98b4ae, + 0xff59736d,0xff314e48,0xff202025,0xff010101,0xff000000,0xff000000,0xff232227,0xff65657a,0xff65657a,0xff616174,0xff5f5f72,0xff5e5e71,0xff5e5e71,0xff5e5e71, + 0xff5e5e71,0xff5f5f72,0xff5f5f72,0xff616174,0xff646478,0xff656579,0xff646479,0xff5e5e74,0xff4d4d65,0xff40405a,0xff01000c,0x87000000,0x5a000000,0x36000000, + 0x17000000,0x2e000000,0xff050451,0xff050343,0xff030226,0xff020117,0xff000005,0xff000000,0xff000000,0xff000002,0xff030238,0xff040242,0xff040241,0xff040241, + 0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040240,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040241,0xff040240,0xff040242, + 0xff03022c,0x74000000,0x4e000000,0x2e000000,0x12000000,0x25000000,0x3d000000,0x5c000000,0x74000000,0x87000000,0x93000000,0x99000000,0x99000000,0x99000000, + 0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000,0x99000000, + 0x99000000,0x99000000,0x93000000,0x87000000,0x74000000,0x5c000000,0x3d000000,0x25000000,0xc000000,0x18000000,0x29000000,0x3d000000,0x4d000000,0x5a000000, + 0x62000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000, + 0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x66000000,0x62000000,0x5a000000,0x4d000000,0x3d000000,0x29000000,0x18000000,0x7000000,0xf000000, + 0x18000000,0x25000000,0x2e000000,0x36000000,0x3b000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000, + 0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3d000000,0x3b000000,0x36000000,0x2e000000,0x25000000, + 0x18000000,0xf000000 +}; + static const QRgb txt_data[] = { 0xffd6dfed,0xffe5eaf4,0xffe5eaf4,0xffe5eaf4,0xffe3eaf4,0xffdae3f2,0xf9c5cedc,0x49c3b4a9,0x8d28357,0x0,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffbfeff,0xffedf3fd,0xffe5ce80,0xfbf8cf69,0xafebb785,0x14a74a17,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffeffff,0xfff3f1ed,0xfff8d625,0xfffeb006,0xfbe99141,0x5c9f8f93,0x0,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xfff8e59f,0xfffdcd09,0xfffc9e10,0xffc49277,0xf89dadc9,0x1a515b6b,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffefaf3,0xfffcdb44,0xfffec219,0xffef9234,0xffc1bfcc,0xffa7b6d0,0x26373e4a,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xffffffff,0xfffdedbb,0xfffdd82e,0xfffeb832,0xffdaa27b,0xffccd8eb,0xffafbed6,0x26373e4a,0x0,0x0,0x0, 0xffe4eaf4,0xffffffff,0xffffffff,0xfffefdfb,0xfffbe072,0xfffed342,0xfff6a845,0xffd7d0d7,0xffd6e0f1,0xffb6c3d9,0x26373e4a,0x100001f,0x800001f,0x600001e, 0xffe4eaf4,0xffffffff,0xffffffff,0xfff7eed3,0xfffde35e,0xfffecd5c,0xffe4b184,0xffe1e9f7,0xffdce4f3,0xffb5c1d7,0x35262b3d,0x1a00001d,0x1d00001b,0x1b00001a, 0xffe4eaf4,0xffffffff,0xfffcfeff,0xfff7dead,0xfffee483,0xfff6c471,0xffdecdc9,0xffd7deec,0xffcdd4e5,0xffaab5cb,0x3e1f2236,0x1e00001a,0x1e00001a,0x1c00001a, 0xffe4eaf4,0xffffffff,0xfffbffff,0xffecd3b7,0xfff7dfc0,0xffd6baa9,0xffd3d7e4,0xffcfd6e5,0xffccd3e3,0xffabb6cc,0x3d1f2336,0x17000018,0xf000016,0x7000010, 0xffe4eaf4,0xffffffff,0xfffafeff,0xffc8b7af,0xffc2aea9,0xffd7dce6,0xffd4dae7,0xffd0d7e6,0xffd1d8e7,0xffb5c0d6,0x2a303643,0x2000007,0x0,0x0, 0xffe4eaf4,0xfffeffff,0xfff9feff,0xffece9eb,0xffeaf0f7,0xffe6ecf6,0xffe0e6f3,0xffe2e9f6,0xffe2eaf8,0xffbecadf,0x26373e4a,0x0,0x0,0x0, 0xffcdd7e6,0xffd8dee7,0xffd4dde7,0xffd2dbe7,0xffd0d9e7,0xffced7e6,0xffcad4e5,0xffc6d1e3,0xffc4cfe2,0xffacb9d1,0x26373e4a,0x0,0x0,0x0, 0x2c737d8f,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x364e5868,0x10111316,0x0,0x0,0x0 }; static const QRgb underline_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x18000000,0x40000000,0x40000000,0x40000000,0x8000000,0x0,0x10000000,0x40000000,0x40000000,0x18000000,0x0,0x0, 0x0,0x0,0x3c000000,0xcf000000,0xff000000,0xb7000000,0x14000000,0x0,0x28000000,0xc3000000,0xcf000000,0x3c000000,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x80000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x80000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f000000,0xff000000,0x40000000,0x0,0x0,0x0,0x60000000,0x7f000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x50000000,0xdb000000,0x87000000,0xc000000,0x0,0x18000000,0x78000000,0x50000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x50000000,0xdf000000,0x8f000000,0x7f000000,0x7f000000,0x50000000,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x48000000,0x60000000,0x60000000,0x48000000,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x48000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0xbf000000,0x48000000,0x0,0x0, 0x0,0x0,0xc000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0xc000000,0x0,0x0 }; static const QRgb undo_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x1616ad00,0x4018ab00,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x19009a00,0xc927b325,0xf356c852,0x65058f04,0x4003500,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x1f008f00,0xc616ab16,0xff75f075,0xff89fc89,0xf63ac63a,0x67038503,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0, 0x1d008300,0xc406a306,0xff2aec2a,0xff39ff39,0xff39ff39,0xff36fc36,0xf611c111,0x63007600,0x2000000,0x0,0x0,0x0,0x0,0x0, 0xca007f00,0xff01b001,0xff03c403,0xff03f003,0xff03f903,0xff03d803,0xff02c102,0xf3008c00,0x53006700,0x2000000,0x0,0x0,0x0,0x0, 0x2a004700,0x3d003600,0x75005c00,0xfc00c000,0xff00e800,0xff00c200,0xb1006600,0x44003500,0x24001d00,0x3000000,0x0,0x1006600,0x27006c00,0xb6006f00, 0x1000000,0x2000000,0x13005600,0xe7008a00,0xff00d600,0xff00d700,0xfd00a800,0xa1006d00,0x43005a00,0x2a005c00,0x3a005f00,0x83006b00,0xe1006900,0x86004e00, 0x0,0x0,0x0,0x6d005d00,0xfd009a00,0xff00c600,0xff00c700,0xff00b700,0xfa009d00,0xef009200,0xf9009a00,0xfa008100,0xa0004f00,0x23000e00, 0x0,0x0,0x0,0x6003300,0x74005500,0xec007b00,0xfd009d00,0xff00a800,0xff00a600,0xfb009200,0xdb006b00,0x71003c00,0x1e000800,0x3000000, 0x0,0x0,0x0,0x0,0x3000000,0x26003100,0x69004700,0x7c004600,0x7b004500,0x5f003900,0x26000c00,0xc000000,0x1000000,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x3000000,0x5000000,0x5000000,0x4000000,0x1000000,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; -static const QRgb uninstall_data[] = { - 0x0,0x0,0x0,0xdffae00,0x55ffbd19,0xc3ffcf30,0x9df7bc1b,0xce89a00,0x74fbb81d,0x76f6b41f,0xbe79100,0x0,0x0,0x0, - 0xffae00,0xcffb30b,0x3fffbf27,0xa9ffd045,0xedffeb6a,0xfefff86c,0xf3fdd83b,0x98f1b21f,0xeefee567,0xf1fbe459,0x86edab1c,0x13db8405,0xcb7100,0x0, - 0xbffae00,0x84ffc43a,0xebffe37f,0xfffffa9d,0xfffffc86,0xffffe957,0xfffed333,0xfffbbe27,0xfffce967,0xfffff865,0xfaf9d43d,0x9ae69813,0x1bd47704,0xd26800, - 0x15ffae00,0x95fec845,0xfefff4a6,0xffffee82,0xffffd33c,0xffffd231,0xffffe549,0xfffec927,0xfff8bf27,0xfff9d43f,0xffffdb3d,0xfcf9bc20,0xa7dc8207,0x15ad5300, - 0x93fdb00a,0xc1fec233,0xfcffc739,0xffffc120,0xffffcf2d,0xffffe245,0xfffff25a,0xfffbce39,0xfff5b731,0xffeba025,0xfff0ab21,0xf7efa513,0x91ba6704,0x164f2500, - 0x2df0a80c,0xb3fac63d,0xfbffda50,0xfffec523,0xfffed839,0xfffee851,0xfff4c253,0xffe76c3b,0xffe97158,0xffe7725c,0xffd95932,0xeecf5e0d,0x9dbe5a03,0x45af4600, - 0x0,0x29f2aa0a,0xd3fbc021,0xfffcd236,0xfff9c62c,0xfff3b844,0xffe65745,0xfffcb3b3,0xffffcaca,0xffffcbcb,0xfffbbcbc,0xfedc5e50,0xc2b63e09,0x487b3000, - 0x0,0x10f9a806,0xbffbb20f,0xfff9b416,0xfff2a414,0xffe14617,0xfffb7e7e,0xffffeaea,0xffffc3c3,0xffffbdbd,0xffffe8e8,0xfff97b7b,0xc1c71c1c,0x14980000, - 0x0,0x10f4a50c,0xbffabc1f,0xfffed131,0xfff3ac27,0xffe8361d,0xffff4e4e,0xffff9393,0xffffecec,0xffffeded,0xfff87b7b,0xfff31212,0xe2d50202,0x2f9c0000, - 0x0,0xeed990a,0xb3f3b324,0xfefedf47,0xfff5c441,0xffe72a13,0xffff1616,0xffff7070,0xffffe8e8,0xfffeebeb,0xfff86b6b,0xfff50606,0xe4d60000,0x31980000, - 0x0,0x2e78800,0x38de890b,0xcfeaae2d,0xfef7db56,0xffe14e22,0xfffc1f1f,0xffffd1d1,0xffff8181,0xffff7373,0xffffd4d4,0xfffa2f2f,0xc2c30303,0x158e0000, - 0x0,0x0,0x1be6800,0x2ccc7308,0xbfe09c31,0xfce69d52,0xffdf3127,0xfffc5050,0xffff3737,0xffff3434,0xfffc5151,0xe9d51f1f,0x57a50606,0x18c0000, - 0x0,0x0,0x0,0x1b55a00,0x26c2640c,0xacd58030,0xebd06731,0xdbc5231c,0xe4dc3232,0xe4dd3434,0xc2c42222,0x57a50d0d,0x98e0202,0x0, - 0x0,0x0,0x0,0x0,0x0,0x1bae4501,0x4e933902,0x27650900,0x31940505,0x30980606,0x158d0000,0x18b0000,0x0,0x0 -}; - static const QRgb uninstalled_data[] = { 0x0,0x0,0x0,0x0,0xffae00,0x18fdaf06,0x84febf2b,0xebfdce4b,0x6cefb119,0x6966500,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xffdad00,0x6efebe30,0xdeffda77,0xfffff7aa,0xfffbf087,0xf8fde757,0x83eaa914,0x9976000,0x0,0x0,0x0, 0x0,0x6fbab00,0x53feb10e,0xcfffd478,0xfefff3c3,0xffffffc3,0xffffff9f,0xfff5e265,0xfffff660,0xfcfcd539,0x93e3960a,0xa955800,0x0,0x0, 0x0,0x93ffbe2f,0xfbffe4a8,0xfffff7d9,0xfffdf3b3,0xfffaed8e,0xfff5e36a,0xfff8d542,0xffffde40,0xfffed233,0xfdfbba1a,0xa5dd8502,0x139f5600,0x0, 0x0,0xafffba23,0xffffc850,0xfffff9be,0xffffffa7,0xffffff83,0xfffffa66,0xffffd534,0xfffdca28,0xfff8b417,0xfff6a408,0xfff29900,0x9fd27500,0x6000000, 0x0,0xafffbc25,0xffffb106,0xffffc736,0xfffff77b,0xfffffb6a,0xffffe84d,0xffffd434,0xffffc824,0xffffb70e,0xffffad01,0xffffac00,0xbed67e00,0xd000000, 0x0,0xafffc12b,0xffffbf19,0xffffc01a,0xffffcd2e,0xffffe84f,0xfffdd538,0xffffca27,0xffffbd15,0xffffb60d,0xffffb40b,0xffffb309,0xbed37d04,0xd000000, 0x0,0xafffc732,0xffffd02e,0xffffd02e,0xffffd12f,0xffffd435,0xfffed03c,0xffffc823,0xffffc621,0xffffc520,0xffffc41e,0xffffc21d,0xbed0800e,0xd000000, 0x0,0xaffdc938,0xffffdf41,0xffffe042,0xffffe143,0xffffe144,0xffffde4a,0xffffd635,0xffffd534,0xffffd433,0xffffd231,0xffffd12f,0xbece8417,0xd000000, 0x0,0x97f6b51f,0xfffee44b,0xffffef56,0xfffff057,0xfffff157,0xffffeb5a,0xffffe548,0xffffe347,0xffffe245,0xffffe144,0xffffe042,0xbecd891f,0xd000000, 0x0,0x16bb7601,0xafe5a218,0xfefbeb5b,0xfffffd6d,0xfffffe6e,0xfffff76b,0xfffff45b,0xfffff35a,0xfffff158,0xfffeee56,0xfcf1cd44,0xa7b76916,0xc000000, 0x0,0x0,0xd784600,0xa2db911d,0xfcf6e06f,0xffffff94,0xfffffd85,0xfffffe73,0xfffffd6f,0xfdf4e15b,0xd7d0942e,0x708c3f08,0x201b0a00,0x4000000, 0x0,0x0,0x0,0xb6e3a00,0x90cf8122,0xfaf1d387,0xfffffca7,0xfff7ea83,0xe2d6a045,0x869e5313,0x2c3c1600,0xb000000,0x1000000,0x0, 0x0,0x0,0x0,0x0,0x9743700,0x7ec0681c,0xf1d99750,0x93a4571b,0x364c1e02,0xe050200,0x2000000,0x0,0x0,0x0 }; +static const QRgb uninstall_data[] = { + 0x0,0x0,0x0,0xdffae00,0x55ffbd19,0xc3ffcf30,0x9df7bc1b,0xce89a00,0x74fbb81d,0x76f6b41f,0xbe79100,0x0,0x0,0x0, + 0xffae00,0xcffb30b,0x3fffbf27,0xa9ffd045,0xedffeb6a,0xfefff86c,0xf3fdd83b,0x98f1b21f,0xeefee567,0xf1fbe459,0x86edab1c,0x13db8405,0xcb7100,0x0, + 0xbffae00,0x84ffc43a,0xebffe37f,0xfffffa9d,0xfffffc86,0xffffe957,0xfffed333,0xfffbbe27,0xfffce967,0xfffff865,0xfaf9d43d,0x9ae69813,0x1bd47704,0xd26800, + 0x15ffae00,0x95fec845,0xfefff4a6,0xffffee82,0xffffd33c,0xffffd231,0xffffe549,0xfffec927,0xfff8bf27,0xfff9d43f,0xffffdb3d,0xfcf9bc20,0xa7dc8207,0x15ad5300, + 0x93fdb00a,0xc1fec233,0xfcffc739,0xffffc120,0xffffcf2d,0xffffe245,0xfffff25a,0xfffbce39,0xfff5b731,0xffeba025,0xfff0ab21,0xf7efa513,0x91ba6704,0x164f2500, + 0x2df0a80c,0xb3fac63d,0xfbffda50,0xfffec523,0xfffed839,0xfffee851,0xfff4c253,0xffe76c3b,0xffe97158,0xffe7725c,0xffd95932,0xeecf5e0d,0x9dbe5a03,0x45af4600, + 0x0,0x29f2aa0a,0xd3fbc021,0xfffcd236,0xfff9c62c,0xfff3b844,0xffe65745,0xfffcb3b3,0xffffcaca,0xffffcbcb,0xfffbbcbc,0xfedc5e50,0xc2b63e09,0x487b3000, + 0x0,0x10f9a806,0xbffbb20f,0xfff9b416,0xfff2a414,0xffe14617,0xfffb7e7e,0xffffeaea,0xffffc3c3,0xffffbdbd,0xffffe8e8,0xfff97b7b,0xc1c71c1c,0x14980000, + 0x0,0x10f4a50c,0xbffabc1f,0xfffed131,0xfff3ac27,0xffe8361d,0xffff4e4e,0xffff9393,0xffffecec,0xffffeded,0xfff87b7b,0xfff31212,0xe2d50202,0x2f9c0000, + 0x0,0xeed990a,0xb3f3b324,0xfefedf47,0xfff5c441,0xffe72a13,0xffff1616,0xffff7070,0xffffe8e8,0xfffeebeb,0xfff86b6b,0xfff50606,0xe4d60000,0x31980000, + 0x0,0x2e78800,0x38de890b,0xcfeaae2d,0xfef7db56,0xffe14e22,0xfffc1f1f,0xffffd1d1,0xffff8181,0xffff7373,0xffffd4d4,0xfffa2f2f,0xc2c30303,0x158e0000, + 0x0,0x0,0x1be6800,0x2ccc7308,0xbfe09c31,0xfce69d52,0xffdf3127,0xfffc5050,0xffff3737,0xffff3434,0xfffc5151,0xe9d51f1f,0x57a50606,0x18c0000, + 0x0,0x0,0x0,0x1b55a00,0x26c2640c,0xacd58030,0xebd06731,0xdbc5231c,0xe4dc3232,0xe4dd3434,0xc2c42222,0x57a50d0d,0x98e0202,0x0, + 0x0,0x0,0x0,0x0,0x0,0x1bae4501,0x4e933902,0x27650900,0x31940505,0x30980606,0x158d0000,0x18b0000,0x0,0x0 +}; + static const QRgb up_data[] = { 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0xfefefe,0xefefefe,0x486faefe,0x144391fe,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x1fefefe,0x18eaf4fe,0x8c98cafe,0xf5bdddfd,0xc867a4fb,0x1f1c62e9,0x134cd5,0x0,0x0,0x0,0x0, 0x0,0x0,0x1fefefe,0x26c1dffe,0xa792c7fc,0xf9cce3f8,0xfff1f5f7,0xffe7f0f7,0xd07aacf4,0x402064f2,0x11050eb,0x0,0x0,0x0, 0x0,0x2fefefe,0x31bfddfe,0xc27ab6fa,0xffc1daef,0xffdee8ed,0xffdee8ed,0xffdee8ed,0xffd7e5ed,0xef7caaf3,0x561959f4,0x0,0x0,0x0, 0x1fefefe,0x34badafe,0xca73b1f5,0xfeb8d2e4,0xffc9dae1,0xffc9dae1,0xffa8c7e6,0xffc5d8e2,0xffc9dae1,0xffc6d8e1,0xf37fa9e9,0x5e1150f0,0x0,0x0, 0x6fefefe,0x9962a7f6,0xffa3c2d9,0xffb4c9d5,0xffb2c8d5,0xfb7da3dd,0x98173fb1,0xd23f71e9,0xffa1bed8,0xffb4c9d5,0xffb3c9d5,0xe95e91dd,0x250727b8,0x0, 0x7fefefe,0xa25097f2,0xff91b5cd,0xff9dbaca,0xf05b89cf,0x851238b0,0xe020927,0x1e0833e9,0xbb2e62e7,0xfb84a9cf,0xff9fbcc9,0xf05689d0,0x32051d9d,0x0, 0x6fefefe,0x9e3e85ef,0xff7da7c5,0xeb4671ca,0x5908227a,0xa02040d,0x0,0xfefefe,0x100b29cf,0x8c1f4fdf,0xfd7098cb,0xf04c7fca,0x32041a9c,0x0, 0x3fefefe,0x80215aee,0xe22655d5,0x4a061a7c,0x5000000,0x0,0x0,0x0,0xfefefe,0x41631d0,0x83133be6,0xe22459d4,0x2b031589,0x0, 0xfefefe,0xc132ee4,0x15031063,0x2000000,0x0,0x0,0x0,0x0,0x0,0xfefefe,0x1081568,0x1c031799,0x5010102,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 }; +static const QRgb UtilsIcon_data[] = { + 0x0,0xf0f0f0,0x42f7eb5,0x1c3889c3,0x4c3988ca,0x7a3a8cd4,0xa43995e3,0x9d1e93ed,0x721290f2,0x430888f5,0x120162d6,0x20a162b,0xa0a0a,0xa0a0a, + 0xf0f0f0,0x82e85c2,0x453994d2,0xa53fa8e9,0xea63c1fc,0xff8bd2ff,0xff96d4ff,0xff75c3ff,0xf94eb0ff,0xd6228ef6,0x700558bd,0x21031d43,0x7050b17,0x10a0a0a, + 0x43b79af,0x444594d0,0xcc61b5f0,0xff91d7ff,0xffb8e7ff,0xffbde7ff,0xffabdfff,0xff8cceff,0xff6eb9ff,0xff3f9aff,0xdc0d65d4,0x7c002e77,0x24011235,0x607090d, + 0x1c4587bb,0xa050a4e5,0xff9fd8ff,0xffd4f0ff,0xffdcf3ff,0xffc2eaff,0xffc9ebfe,0xffb2ddfe,0xff52a9ff,0xff3691ff,0xfa0c6bef,0xcd0041ad,0x62001e59,0x19070c18, + 0x4c418cc4,0xe36bc1fa,0xffc2e9ff,0xffe4f5ff,0xffe9f7ff,0xffceeeff,0xfff6fbfd,0xffe5f1fd,0xff3397ff,0xfe177bfd,0xfe035eec,0xef0043bb,0xa7002570,0x3b070f22, + 0x9f1e96ea,0xfd87d1ff,0xffc6ecff,0xffd0efff,0xffd9f2ff,0xffc9eaff,0xffb5e0ff,0xff85c2ff,0xff338dfe,0xfe0e6bf6,0xfe0050e0,0xfc003fb6,0xd600287e,0x69081022, + 0xf317a4fe,0xff88d1ff,0xffb0e3ff,0xff9bdeff,0xffaae1ff,0xffe3f4fe,0xfff1f8fd,0xffd4e7fd,0xff2c82fc,0xfe0c5eed,0xfe0047d7,0xfe003bb4,0xf1002986,0x85081023, + 0xda0d96e0,0xff6ec3ff,0xff8dd3ff,0xff61c4ff,0xff6dc3ff,0xff6ebcff,0xffebf5fd,0xffe0ebfc,0xff186af8,0xfe014fe9,0xfe003dc8,0xff0034ac,0xf4002683,0x87080f23, + 0x860b81c1,0xfe3ba8fc,0xff60bcff,0xff3cacff,0xff3ba4ff,0xff3b9afe,0xffe4effc,0xffdee8fb,0xff0857ec,0xfe0045d3,0xfe0037b7,0xff002e9c,0xd0001e6b,0x6e080d1b, + 0x330c70ae,0xda0e87e1,0xfd2b9ffc,0xff1a93ff,0xff2e91f4,0xff64a8f7,0xffebf2fc,0xffe8effa,0xff4c7fe4,0xfe0d43be,0xfe0030a3,0xf0002588,0x9a021547,0x4b080b11, + 0x904507e,0x700265a5,0xec037ad9,0xff0474ec,0xff2675db,0xff6e9ae1,0xff7ea2e2,0xff7e9ddd,0xff6586ce,0xfe113fab,0xf2002788,0xbd00175b,0x6a060c21,0x2b0a0a0a, + 0x2121a20,0x23073d63,0x81014c8f,0xd100479f,0xf40046a9,0xfe0045b4,0xff003eb6,0xff0039ae,0xff00329b,0xf500298a,0xbe001b63,0x79030d2d,0x42080a12,0x120a0a0a, + 0xa0a0a,0x60a0a0a,0x2006172c,0x64011f4b,0xa9002663,0xd5002c7a,0xfa002f8a,0xe700297e,0xc9001f66,0xa7001851,0x71000d31,0x3f050712,0x1b0a0a0a,0x30a0a0a, + 0xa0a0a,0x10a0a0a,0x60a0a0a,0x19070c17,0x39070f1f,0x67081021,0x87081225,0x89080f1f,0x78070b19,0x4f02061a,0x24070911,0xb07070d,0x40a0a0a,0xa0a0a +}; + static const QRgb volume_data[] = { 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xff000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xff000000,0x6b000000,0x24000000,0xff000000,0x18000000,0xc000000,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xff000000,0xffffffff,0xffffffff,0xff000000,0x8f000000,0x30000000,0x18000000,0xff000000,0x30000000,0xc000000, 0xff000000,0xff000000,0xff000000,0xff000000,0xffffffff,0xffffffff,0xffffffff,0xff000000,0x8f000000,0xff000000,0x24000000,0x3c000000,0xff000000,0x30000000, - 0xff000000,0xffd5eaff,0xffd6eaff,0xffd6eaff,0xffd5e9ff,0xffd6e9ff,0xffd6e9ff,0xff000000,0x8f000000,0x48000000,0xff000000,0x3c000000,0xff000000,0x54000000, - 0xff000000,0xff9dceff,0xff9dceff,0xff9dceff,0xff9dceff,0xff9dcdff,0xff9dcdff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x54000000,0xff000000,0x60000000, - 0xff000000,0xff60b0ff,0xff60b1ff,0xff60b0ff,0xff61b1ff,0xff60b1ff,0xff60b1ff,0xff000000,0x8f000000,0x30000000,0xff000000,0x60000000,0xff000000,0x60000000, - 0xff000000,0xff000000,0xff000000,0xff000000,0xff2a9aff,0xff2a9aff,0xff2a9aff,0xff000000,0x8f000000,0xff000000,0x3c000000,0x54000000,0xff000000,0x60000000, - 0x24000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff2a9aff,0xff2a9aff,0xff000000,0x8f000000,0x48000000,0x3c000000,0xff000000,0x48000000,0x54000000, - 0xc000000,0x24000000,0x30000000,0x30000000,0x48000000,0xff000000,0xff2a9aff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x3c000000,0x48000000,0x30000000, + 0xff000000,0xffcde6ff,0xffcee6ff,0xffcee6ff,0xffcde5ff,0xffcee5ff,0xffcee5ff,0xff000000,0x8f000000,0x48000000,0xff000000,0x3c000000,0xff000000,0x54000000, + 0xff000000,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec5ff,0xff8ec4ff,0xff8ec4ff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x54000000,0xff000000,0x60000000, + 0xff000000,0xff4ea3ff,0xff4ea4ff,0xff4ea3ff,0xff4fa4ff,0xff4ea4ff,0xff4ea4ff,0xff000000,0x8f000000,0x30000000,0xff000000,0x60000000,0xff000000,0x60000000, + 0xff000000,0xff000000,0xff000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff1d8aff,0xff000000,0x8f000000,0xff000000,0x3c000000,0x54000000,0xff000000,0x60000000, + 0x24000000,0x6b000000,0x8f000000,0x8f000000,0xff000000,0xff1d8aff,0xff1d8aff,0xff000000,0x8f000000,0x48000000,0x3c000000,0xff000000,0x48000000,0x54000000, + 0xc000000,0x24000000,0x30000000,0x30000000,0x48000000,0xff000000,0xff1d8aff,0xff000000,0x8f000000,0x3c000000,0xff000000,0x3c000000,0x48000000,0x30000000, 0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0xff000000,0xff000000,0x8f000000,0x30000000,0x18000000,0x3c000000,0x30000000,0xc000000, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x3c000000,0x77000000,0x6b000000,0x24000000,0xc000000,0x18000000,0xc000000,0xffffff, 0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xffffff,0xc000000,0x24000000,0x24000000,0xc000000,0xffffff,0xffffff,0xffffff,0xffffff }; static const QRgb wait_data[] = { - 0x1000000,0x1d000000,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0x28000000,0xb000000,0x5000000, - 0x3000000,0x15000000,0x33000000,0xff888888,0xff8e8e8e,0xff949494,0xff9b9b9b,0xffa1a1a1,0xffa6a6a6,0xffababab,0x4b000000,0x29000000,0x12000000,0x9000000, - 0x4000000,0xc000000,0x19000000,0xff9a9a9a,0xffa1a1a1,0xffa6a6a6,0xffadadad,0xffb3b3b3,0xffb7b7b7,0xffbbbbbb,0x41000000,0x2b000000,0x19000000,0xc000000, - 0x4000000,0xe000000,0x1d000000,0xff888888,0xff8b8b8b,0xff8e8e8e,0xff919191,0xff929292,0xff949494,0xff929292,0x4d000000,0x32000000,0x1d000000,0xe000000, - 0x4000000,0xe000000,0x1e000000,0xcc515151,0xff7a7a7a,0xff7b7b7b,0xff7c7c7c,0xff7c7c7c,0xff7b7b7b,0xda4d4d4d,0x51000000,0x34000000,0x1e000000,0xe000000, - 0x4000000,0xc000000,0x1b000000,0x31000000,0xd24e4e4e,0xff7a7a7a,0xff7a7a7a,0xff7a7a7a,0xde4b4b4b,0x6a000000,0x4f000000,0x31000000,0x1b000000,0xc000000, - 0x2000000,0xa000000,0x17000000,0x2c000000,0x48000000,0xd74f4f4f,0xff838383,0xde4e4e4e,0x78000000,0x63000000,0x48000000,0x2c000000,0x17000000,0xa000000, - 0x2000000,0x7000000,0x13000000,0x28000000,0x41000000,0xd5595959,0xffa1a1a1,0xdc5b5b5b,0x70000000,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, - 0x2000000,0x7000000,0x13000000,0x28000000,0xce636363,0xffadadad,0xffb6b6b6,0xffbdbdbd,0xdb6f6f6f,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, - 0x2000000,0xa000000,0x17000000,0xca646464,0xffababab,0xffaeaeae,0xffadadad,0xffc2c2c2,0xffc7c7c7,0xd87b7b7b,0x48000000,0x2c000000,0x17000000,0xa000000, - 0x4000000,0xc000000,0x1b000000,0xffa3a3a3,0xffababab,0xffa4a4a4,0xff909090,0xffc2c2c2,0xffc8c8c8,0xffcecece,0x4f000000,0x31000000,0x1b000000,0xc000000, - 0x4000000,0xe000000,0x1e000000,0xffa0a0a0,0xff999999,0xff848484,0xff7b7b7b,0xff888888,0xff8e8e8e,0xff8d8d8d,0x51000000,0x34000000,0x1e000000,0xe000000, - 0x4000000,0x19000000,0x3d000000,0xff707070,0xff696969,0xff656565,0xff656565,0xff656565,0xff656565,0xff656565,0x66000000,0x3c000000,0x1d000000,0xe000000, - 0x4000000,0x23000000,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0xffa77843,0x3f000000,0x19000000,0xc000000 + 0x1000000,0x1d000000,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0x28000000,0xb000000,0x5000000, + 0x3000000,0x15000000,0x33000000,0xff777777,0xff7e7e7e,0xff848484,0xff8c8c8c,0xff929292,0xff989898,0xff9d9d9d,0x4b000000,0x29000000,0x12000000,0x9000000, + 0x4000000,0xc000000,0x19000000,0xff8a8a8a,0xff929292,0xff989898,0xff9f9f9f,0xffa6a6a6,0xffababab,0xffafafaf,0x41000000,0x2b000000,0x19000000,0xc000000, + 0x4000000,0xe000000,0x1d000000,0xff777777,0xff7a7a7a,0xff7e7e7e,0xff818181,0xff828282,0xff848484,0xff828282,0x4d000000,0x32000000,0x1d000000,0xe000000, + 0x4000000,0xe000000,0x1e000000,0xcc404040,0xff696969,0xff6a6a6a,0xff6b6b6b,0xff6b6b6b,0xff6a6a6a,0xda3c3c3c,0x51000000,0x34000000,0x1e000000,0xe000000, + 0x4000000,0xc000000,0x1b000000,0x31000000,0xd23d3d3d,0xff686868,0xff686868,0xff686868,0xde3a3a3a,0x6a000000,0x4f000000,0x31000000,0x1b000000,0xc000000, + 0x2000000,0xa000000,0x17000000,0x2c000000,0x48000000,0xd73e3e3e,0xff727272,0xde3d3d3d,0x78000000,0x63000000,0x48000000,0x2c000000,0x17000000,0xa000000, + 0x2000000,0x7000000,0x13000000,0x28000000,0x41000000,0xd5474747,0xff929292,0xdc494949,0x70000000,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, + 0x2000000,0x7000000,0x13000000,0x28000000,0xce515151,0xffa0a0a0,0xffa9a9a9,0xffb1b1b1,0xdb5d5d5d,0x5b000000,0x41000000,0x28000000,0x13000000,0x7000000, + 0x2000000,0xa000000,0x17000000,0xca525252,0xff9d9d9d,0xffa1a1a1,0xffa0a0a0,0xffb7b7b7,0xffbdbdbd,0xd86a6a6a,0x48000000,0x2c000000,0x17000000,0xa000000, + 0x4000000,0xc000000,0x1b000000,0xff949494,0xff9d9d9d,0xff969696,0xff808080,0xffb7b7b7,0xffbebebe,0xffc5c5c5,0x4f000000,0x31000000,0x1b000000,0xc000000, + 0x4000000,0xe000000,0x1e000000,0xff919191,0xff898989,0xff737373,0xff6a6a6a,0xff777777,0xff7e7e7e,0xff7c7c7c,0x51000000,0x34000000,0x1e000000,0xe000000, + 0x4000000,0x19000000,0x3d000000,0xff5e5e5e,0xff575757,0xff535353,0xff535353,0xff535353,0xff535353,0xff535353,0x66000000,0x3c000000,0x1d000000,0xe000000, + 0x4000000,0x23000000,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0xff996633,0x3f000000,0x19000000,0xc000000 }; static const QRgb week_data[] = { - 0xe483addd,0xf18cb5e6,0xf181b0e6,0xf175aae6,0xf169a4e6,0xf15c9ee6,0xf1549ae6,0xf15297e6,0xf15298e6,0xf15298e6,0xf15599e7,0xf14597e8,0xa315588d,0x17002741, - 0xf592b8e5,0xffafd4fd,0xff95c7fd,0xff77b9fd,0xff57a9fd,0xff389afd,0xff268efd,0xff2188fc,0xff2388fd,0xff2388fd,0xff2389fe,0xff1d8afb,0xc208518c,0x30001827, - 0xf19fbfe5,0xffd2e5f9,0xffb8d9f7,0xffb7d8f8,0xffb5d8f8,0xff9dccf7,0xffb2d7f9,0xff87c5f3,0xffa7d2f9,0xff96c9f7,0xffb1d7fb,0xff8bc6f6,0xc4255e89,0x34001525, - 0xf1a9c5e6,0xffdef0fb,0xffacd8f7,0xffbbdff8,0xffc7e5fa,0xff9dd1f5,0xffe0f3fd,0xff8ec9f4,0xffceeafb,0xffa6d6f7,0xffe6f6fe,0xffadd9f6,0xc42d6189,0x34001425, - 0xf1a8c5e6,0xffddf0fc,0xffabd8f7,0xffb9def9,0xffc3e4fa,0xff9bd0f5,0xffd8effd,0xff8dc9f4,0xffc7e7fc,0xffa2d4f7,0xffddf3ff,0xffa6d6f7,0xc42b6089,0x34001425, - 0xf1a7c5e6,0xffdaeffc,0xffaad7f7,0xffb7def9,0xffc1e3fa,0xff9ad0f5,0xffd5eefd,0xff8cc9f4,0xffc4e6fc,0xffa1d4f7,0xffd8f2ff,0xffa3d5f7,0xc42a6089,0x34001425, - 0xf1a6c4e6,0xffd8effc,0xffa8d7f7,0xffb5ddf9,0xffbee2fa,0xff9ad0f5,0xffd2edfd,0xff8cc9f4,0xffc1e5fc,0xffa0d4f7,0xffd5f1ff,0xffa1d5f7,0xc42a6089,0x34001425, - 0xf1a4c3e6,0xffd5edfc,0xffa7d6f7,0xffb4dcf8,0xffbde1fa,0xff99cff5,0xffcfebfd,0xff8bc8f4,0xffbee4fc,0xff9ed3f7,0xffd2eeff,0xff9ed3f7,0xc4296089,0x34001425, - 0xf1a3c3e6,0xffd2edfc,0xffa5d6f7,0xffb2dcf9,0xffbae0fa,0xff98cff5,0xffcbebfd,0xff8bc8f4,0xffbce3fc,0xff9dd2f7,0xffceeeff,0xff9cd3f7,0xc4285f89,0x34001425, - 0xf1a3c3e6,0xffd0ecfc,0xffa4d5f7,0xffb0dbf9,0xffb8e0fa,0xff97cef5,0xffc8eafd,0xff8ac8f4,0xffb9e2fc,0xff9bd2f7,0xffcbedff,0xff9ad2f7,0xc4285f89,0x34001525, - 0xf1a6c5e7,0xffd1edfc,0xffa5d6f7,0xffb1dcf9,0xffb9e0fa,0xff98cff5,0xffcbebfd,0xff8bc8f4,0xffbbe3fc,0xff9cd3f7,0xffcdeeff,0xff9dd3f8,0xc4296089,0x34001525, - 0xfa80b6e6,0xffa6d6f6,0xff92ccf4,0xff96cef4,0xff98cff5,0xff8ac8f3,0xff9dd2f6,0xff83c4f3,0xff95cef6,0xff8ac9f4,0xff9dd4f8,0xff7bc4f7,0xc7205f8d,0x34001728, - 0xa628618e,0xc12e628a,0xc42c6189,0xc42b6089,0xc42b6089,0xc42a6089,0xc42a6089,0xc4296089,0xc4295f89,0xc4296089,0xc4296089,0xc421608d,0x9e083656,0x30000d16, - 0x14002b4a,0x30001627,0x34001424,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001425,0x34001626,0x30000d16,0x16000204 + 0x343b98e5,0x7254a9e9,0x7b52a5e3,0x7b50a4e3,0x7b4fa4e3,0x7b4ea3e2,0x7b4da3e2,0x7b4ba2e2,0x7b4aa1e2,0x7b49a1e2,0x7b47a0e1,0x7a479fe1,0x492c7cbc,0xe00162b, + 0xc767bcf7,0xf766bef6,0xf94fb5f3,0xf94eb5f3,0xf94cb5f3,0xf94bb5f2,0xf94ab4f3,0xf948b4f3,0xf947b4f3,0xf946b4f3,0xf944b3f3,0xf94bb5f4,0xd352aae5,0x4b033c65, + 0xe94db4f6,0xff16a6e9,0xff04a1e4,0xff05a2e4,0xff07a3e5,0xff09a4e5,0xff0ba5e5,0xff0da6e6,0xff0fa8e6,0xff12a8e7,0xff14a9e7,0xff15a9e9,0xef34a1e4,0x74083858, + 0xe96cbff6,0xff84cdf6,0xff71c6f4,0xff71c6f5,0xff70c5f5,0xff6fc4f5,0xff6ec3f4,0xff6ec3f4,0xff6ec2f5,0xff6ec2f5,0xff6dc2f4,0xff71c2f5,0xf05fafe4,0x79013455, + 0xe96eb7e7,0xffd8dee3,0xffdbe0e4,0xffd3d8dd,0xffdae1e6,0xffced5da,0xffd8e0e6,0xffced6dc,0xffd4dde3,0xffced7de,0xffcfd8df,0xffd3dbe1,0xf07ab1d5,0x79003453, + 0xe96bb4e2,0xffeaeaea,0xfff2f0ee,0xffe5e3e1,0xfff7f5f3,0xffe1dfdd,0xfff7f6f3,0xffe6e4e2,0xfff2f0ee,0xffeae7e5,0xffeceae8,0xfff3efec,0xf080b3d2,0x79013454, + 0xe971afc7,0xffefd37b,0xfff7cd79,0xfff1cb71,0xfff9d379,0xfff0c772,0xfff9d777,0xfff2c774,0xfff6d475,0xfff3c876,0xfff4d272,0xfff8ce77,0xf08babb2,0x79003554, + 0xe976afb1,0xfff7cf26,0xffffb628,0xffffc71d,0xffffbe23,0xffffbe22,0xffffcd1b,0xffffb726,0xffffce1a,0xffffb428,0xffffd218,0xffffb924,0xf096a79d,0x79003554, + 0xe972aabc,0xfff3ba5b,0xfffbab5a,0xfff9b451,0xfffcb059,0xfff8af52,0xfffdb755,0xfff9ab56,0xfffbb853,0xfffaaa58,0xfffab950,0xfffbad58,0xf094a7a8,0x79003554, + 0xe963afe0,0xffeae9e7,0xfff3efea,0xffe7e3de,0xfff9f5f0,0xffe4dfdb,0xfff9f5f0,0xffe8e4df,0xfff3f0eb,0xffebe7e2,0xffede9e6,0xfff5efe9,0xf08ab7d2,0x79023554, + 0xea5eaee2,0xffd5dce1,0xffdde0e3,0xffd5d8da,0xffe2e5e7,0xffd3d6d8,0xffe4e6e7,0xffd9dadb,0xffe2e3e4,0xffdcddde,0xffdfdfe0,0xffe6e4e3,0xf08cb8d4,0x78023554, + 0xbb449edd,0xf87cbde9,0xfd81c0ea,0xfd84c2eb,0xfd88c3eb,0xfd8bc5ec,0xfd90c7ec,0xfd96caed,0xfd9acced,0xfd9fceee,0xfda4d0ee,0xfca8d2ee,0xdc649cc3,0x63001f36, + 0x360f466e,0x75164e74,0x89154769,0x8a154768,0x8a164768,0x8a164868,0x8a174868,0x8a184868,0x8a194968,0x8a1a4969,0x8a1b4969,0x891b4a68,0x6a0e2b41,0x28000306, + 0x4000000,0xf000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0x15000000,0xf000000,0x4000000 }; static const QRgb wordgame_data[] = { 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xffffff, 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffffffff,0xffaaaaaa,0xff727272,0xffaaaaaa,0xff8e8e8e,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffaaaaaa,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xff555555,0xffaaaaaa,0xffffffff,0xffffffff,0xff8e8e8e,0xff555555,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xff727272,0xff8e8e8e,0xffffffff,0xffffffff,0xffffffff,0xff555555,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffe3e3e3,0xff555555,0xffc7c7c7,0xffffffff,0xffc7c7c7,0xff1d1d1d,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffffffff,0xffe3e3e3,0xff727272,0xff8e8e8e,0xff8e8e8e,0xffc7c7c7,0xffffffff,0xff737373,0xffb6b6b6,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff747474,0xff525252,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffc7c7c7,0xff909090,0xffffffff,0xff000000,0xff000000, 0xff000000,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xff000000,0xff000000, 0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000, 0x0,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000,0xff000000 }; static const unsigned char xtopowerofy_data[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x01,0x01, 0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; static const QRgb xtopowerofy_ctable[] = { 0xc6c6c6,0xff000000 }; static const unsigned char ythrootofx_data[] = { 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01, 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00, 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; static const QRgb ythrootofx_ctable[] = { 0xc6c6c6,0xff000000 }; static const QRgb zoom_data[] = { 0x0,0x0,0x1c9191aa,0x7daeaec1,0xaabfbfcd,0xa3c5c5d3,0x63bfbfce,0x8b6b6c7,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x478c8ca6,0xeca3a9c1,0xf9bbd1e5,0xf7d0e5f5,0xf8d9e7f4,0xfbccd9ea,0xccc9cad8,0x19babaca,0x0,0x0,0x0,0x0,0x0, 0x1c747493,0xea8f95b4,0xf4a3d0f4,0xf5c6efff,0xf5d6f4ff,0xf5dbf5ff,0xf5d2f3ff,0xf5b9d8f2,0xbbc9cad8,0x1b8b8c9,0x0,0x0,0x0,0x0, 0x7d7e7e9a,0xf07a9ed4,0xf59cd1ff,0xf5b3e3ff,0xf5c2edff,0xf5c6efff,0xf5bfebff,0xf4abddff,0xf5b7c7e4,0x31b5b5c6,0x0,0x0,0x0,0x0, 0xab7b7b98,0xb62f70db,0xc766a9fb,0xdf92cafe,0xdea0d4ff,0xd19bd1fe,0xde9ad0fe,0xf494ccff,0xee9dbdeb,0x60b9b9c9,0x0,0x0,0x0,0x0, 0xa3717190,0xb33973d3,0x994e96f8,0x9974b3fd,0x998bc5ff,0x998cc5ff,0x9977b6fd,0xaa62a6fb,0xe299b7e6,0x56afafc2,0x0,0x0,0x0,0x0, 0x61636385,0xd66079b1,0x9973b3fd,0x99a4d7ff,0x99c4efff,0x99c6efff,0x99a8daff,0x9d7ab6fb,0xebadb6d0,0x1aa3a3b8,0x0,0x0,0x0,0x0, 0x857577b,0xc966678a,0xc07d9dca,0x9ac3edfe,0x99eafeff,0x99ecfeff,0x9dc6edfc,0xdca5b5d2,0xdfb2b2c4,0x3b7b7c8,0x0,0x0,0x0,0x0, 0x0,0x1958587c,0xb8696a8b,0xe5878faa,0xceb0b7c8,0xd3b6bbcb,0xeb9ea2b9,0xcd9595ad,0xeea3a3b7,0xb1cb9f58,0x4ee4991e,0x0,0x0,0x0, 0x0,0x0,0x5b5b7e,0x2f606083,0x5e6e6e8e,0x54747493,0x1a777795,0x0,0xb1a57239,0xfff7d37d,0xf7f7d46f,0x4fe4991e,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xf3dd921d,0xfffddc87,0xf7f7d36f,0x4fe4991e,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921d,0xfffddc87,0xf6f7d36f,0x4de4991e, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x459f5b0e,0xf3dd921c,0xfff0c975,0xa8cdab7a, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x449f5b0e,0xaa977354,0x4a8787a1 }; static struct EmbedImage { int width, height, depth; const unsigned char *data; int numColors; const QRgb *colorTable; bool alpha; const char *name; } embed_image_vec[] = { { 14, 14, 32, (const unsigned char*)_to1_data, 0, 0, TRUE, "1to1" }, - { 14, 14, 32, (const unsigned char*)AppsIcon_data, 0, 0, TRUE, "AppsIcon" }, - { 32, 32, 32, (const unsigned char*)Calibrate_data, 0, 0, TRUE, "Calibrate" }, - { 32, 32, 32, (const unsigned char*)Clock_data, 0, 0, TRUE, "Clock" }, - { 14, 14, 32, (const unsigned char*)CloseButton_data, 0, 0, TRUE, "CloseButton" }, - { 14, 14, 32, (const unsigned char*)DocsIcon_data, 0, 0, TRUE, "DocsIcon" }, - { 32, 32, 32, (const unsigned char*)DocumentTypeExcel_data, 0, 0, TRUE, "DocumentTypeExcel" }, - { 32, 32, 32, (const unsigned char*)DocumentTypeNone_data, 0, 0, TRUE, "DocumentTypeNone" }, - { 32, 32, 32, (const unsigned char*)DocumentTypePowerPoint_data, 0, 0, TRUE, "DocumentTypePowerPoint" }, - { 32, 32, 32, (const unsigned char*)DocumentTypeWord_data, 0, 0, TRUE, "DocumentTypeWord" }, - { 14, 14, 32, (const unsigned char*)Games_data, 0, 0, TRUE, "Games" }, - { 12, 12, 32, (const unsigned char*)Go_black_data, 0, 0, TRUE, "Go-black" }, - { 12, 12, 32, (const unsigned char*)Go_black_highlight_data, 0, 0, TRUE, "Go-black-highlight" }, - { 12, 12, 32, (const unsigned char*)Go_white_data, 0, 0, TRUE, "Go-white" }, - { 14, 14, 32, (const unsigned char*)HelpButton_data, 0, 0, TRUE, "HelpButton" }, - { 32, 32, 32, (const unsigned char*)Language_data, 0, 0, TRUE, "Language" }, - { 32, 32, 32, (const unsigned char*)MPEGPlayer_data, 0, 0, TRUE, "MPEGPlayer" }, - { 28, 14, 32, (const unsigned char*)OKButton_data, 0, 0, TRUE, "OKButton" }, - { 32, 32, 32, (const unsigned char*)Rotation_data, 0, 0, TRUE, "Rotation" }, - { 14, 14, 32, (const unsigned char*)SettingsIcon_data, 0, 0, TRUE, "SettingsIcon" }, - { 32, 32, 32, (const unsigned char*)Shutdown_data, 0, 0, TRUE, "Shutdown" }, - { 32, 32, 32, (const unsigned char*)Sound_data, 0, 0, TRUE, "Sound" }, - { 32, 32, 32, (const unsigned char*)SoundPlayer_data, 0, 0, TRUE, "SoundPlayer" }, - { 32, 32, 32, (const unsigned char*)Spreadsheet_data, 0, 0, TRUE, "Spreadsheet" }, - { 32, 32, 32, (const unsigned char*)Tux_data, 0, 0, TRUE, "Tux" }, - { 14, 14, 32, (const unsigned char*)UtilsIcon_data, 0, 0, TRUE, "UtilsIcon" }, { 14, 14, 32, (const unsigned char*)accessories_data, 0, 0, TRUE, "accessories" }, { 14, 14, 32, (const unsigned char*)appearance_data, 0, 0, TRUE, "appearance" }, - { 14, 14, 32, (const unsigned char*)back_data, 0, 0, TRUE, "back" }, + { 14, 14, 32, (const unsigned char*)AppsIcon_data, 0, 0, TRUE, "AppsIcon" }, { 14, 14, 32, (const unsigned char*)back_inactive_data, 0, 0, TRUE, "back_inactive" }, + { 14, 14, 32, (const unsigned char*)back_data, 0, 0, TRUE, "back" }, { 14, 14, 32, (const unsigned char*)beam_data, 0, 0, TRUE, "beam" }, { 14, 14, 32, (const unsigned char*)bell_data, 0, 0, TRUE, "bell" }, { 14, 14, 32, (const unsigned char*)binary_data, 0, 0, TRUE, "binary" }, { 14, 14, 32, (const unsigned char*)bold_data, 0, 0, TRUE, "bold" }, - { 14, 14, 32, (const unsigned char*)c_src_data, 0, 0, TRUE, "c_src" }, { 14, 14, 32, (const unsigned char*)calculator_data, 0, 0, TRUE, "calculator" }, + { 32, 32, 32, (const unsigned char*)Calibrate_data, 0, 0, TRUE, "Calibrate" }, { 14, 14, 32, (const unsigned char*)center_data, 0, 0, TRUE, "center" }, { 14, 14, 32, (const unsigned char*)citytime_icon_data, 0, 0, TRUE, "citytime_icon" }, + { 32, 32, 32, (const unsigned char*)Clock_data, 0, 0, TRUE, "Clock" }, + { 14, 14, 32, (const unsigned char*)CloseButton_data, 0, 0, TRUE, "CloseButton" }, { 14, 14, 32, (const unsigned char*)close_data, 0, 0, TRUE, "close" }, - { 14, 14, 32, (const unsigned char*)copy_data, 0, 0, TRUE, "copy" }, { 14, 14, 32, (const unsigned char*)copy_inactive_data, 0, 0, TRUE, "copy_inactive" }, - { 14, 14, 32, (const unsigned char*)cut_data, 0, 0, TRUE, "cut" }, + { 14, 14, 32, (const unsigned char*)copy_data, 0, 0, TRUE, "copy" }, + { 14, 14, 32, (const unsigned char*)c_src_data, 0, 0, TRUE, "c_src" }, { 14, 14, 32, (const unsigned char*)cut_inactive_data, 0, 0, TRUE, "cut_inactive" }, + { 14, 14, 32, (const unsigned char*)cut_data, 0, 0, TRUE, "cut" }, { 14, 14, 32, (const unsigned char*)datebook_icon_data, 0, 0, TRUE, "datebook_icon" }, { 14, 14, 32, (const unsigned char*)day_data, 0, 0, TRUE, "day" }, + { 14, 14, 32, (const unsigned char*)DocsIcon_data, 0, 0, TRUE, "DocsIcon" }, + { 32, 32, 32, (const unsigned char*)DocumentTypeExcel_data, 0, 0, TRUE, "DocumentTypeExcel" }, + { 32, 32, 32, (const unsigned char*)DocumentTypeNone_data, 0, 0, TRUE, "DocumentTypeNone" }, + { 32, 32, 32, (const unsigned char*)DocumentTypePowerPoint_data, 0, 0, TRUE, "DocumentTypePowerPoint" }, + { 32, 32, 32, (const unsigned char*)DocumentTypeWord_data, 0, 0, TRUE, "DocumentTypeWord" }, { 14, 14, 32, (const unsigned char*)done_data, 0, 0, TRUE, "done" }, { 14, 14, 32, (const unsigned char*)down_data, 0, 0, TRUE, "down" }, - { 14, 14, 32, (const unsigned char*)edit_data, 0, 0, TRUE, "edit" }, { 14, 14, 32, (const unsigned char*)editdelete_data, 0, 0, TRUE, "editdelete" }, + { 14, 14, 32, (const unsigned char*)edit_data, 0, 0, TRUE, "edit" }, { 14, 14, 32, (const unsigned char*)enter_data, 0, 0, TRUE, "enter" }, { 14, 14, 32, (const unsigned char*)exec_data, 0, 0, TRUE, "exec" }, { 14, 14, 32, (const unsigned char*)fastback_data, 0, 0, TRUE, "fastback" }, { 14, 14, 32, (const unsigned char*)fastforward_data, 0, 0, TRUE, "fastforward" }, { 14, 14, 32, (const unsigned char*)fileopen_data, 0, 0, TRUE, "fileopen" }, { 14, 14, 32, (const unsigned char*)find_data, 0, 0, TRUE, "find" }, { 14, 14, 32, (const unsigned char*)finish_data, 0, 0, TRUE, "finish" }, - { 14, 14, 32, (const unsigned char*)folder_data, 0, 0, TRUE, "folder" }, { 14, 14, 32, (const unsigned char*)folder_open_data, 0, 0, TRUE, "folder_open" }, + { 14, 14, 32, (const unsigned char*)folder_data, 0, 0, TRUE, "folder" }, { 14, 14, 32, (const unsigned char*)font_data, 0, 0, TRUE, "font" }, - { 14, 14, 32, (const unsigned char*)forward_data, 0, 0, TRUE, "forward" }, { 14, 14, 32, (const unsigned char*)forward_inactive_data, 0, 0, TRUE, "forward_inactive" }, + { 14, 14, 32, (const unsigned char*)forward_data, 0, 0, TRUE, "forward" }, { 14, 14, 32, (const unsigned char*)fullscreen_data, 0, 0, TRUE, "fullscreen" }, - { 18, 18, 32, (const unsigned char*)go_data, 0, 0, TRUE, "go" }, - { 14, 14, 32, (const unsigned char*)h_src_data, 0, 0, TRUE, "h_src" }, + { 14, 14, 32, (const unsigned char*)Games_data, 0, 0, TRUE, "Games" }, + { 12, 12, 32, (const unsigned char*)Go_black_highlight_data, 0, 0, TRUE, "Go-black-highlight" }, + { 12, 12, 32, (const unsigned char*)Go_black_data, 0, 0, TRUE, "Go-black" }, + { 16, 16, 32, (const unsigned char*)go_data, 0, 0, TRUE, "go" }, + { 12, 12, 32, (const unsigned char*)Go_white_data, 0, 0, TRUE, "Go-white" }, + { 14, 14, 32, (const unsigned char*)HelpButton_data, 0, 0, TRUE, "HelpButton" }, { 14, 14, 32, (const unsigned char*)help_icon_data, 0, 0, TRUE, "help_icon" }, { 14, 14, 32, (const unsigned char*)home_data, 0, 0, TRUE, "home" }, - { 14, 14, 32, (const unsigned char*)install_data, 0, 0, TRUE, "install" }, + { 14, 14, 32, (const unsigned char*)h_src_data, 0, 0, TRUE, "h_src" }, { 14, 14, 32, (const unsigned char*)installed_data, 0, 0, TRUE, "installed" }, + { 14, 14, 32, (const unsigned char*)install_data, 0, 0, TRUE, "install" }, { 14, 14, 32, (const unsigned char*)italic_data, 0, 0, TRUE, "italic" }, { 14, 14, 32, (const unsigned char*)konsole_data, 0, 0, TRUE, "konsole" }, { 14, 14, 32, (const unsigned char*)language_data, 0, 0, TRUE, "language" }, + { 32, 32, 32, (const unsigned char*)Language_data, 0, 0, TRUE, "Language" }, { 14, 14, 32, (const unsigned char*)left_data, 0, 0, TRUE, "left" }, { 14, 14, 32, (const unsigned char*)library_data, 0, 0, TRUE, "library" }, - { 14, 14, 32, (const unsigned char*)locked_data, 0, 0, TRUE, "locked" }, { 14, 14, 32, (const unsigned char*)lockedfolder_data, 0, 0, TRUE, "lockedfolder" }, + { 14, 14, 32, (const unsigned char*)locked_data, 0, 0, TRUE, "locked" }, { 14, 14, 32, (const unsigned char*)logout_data, 0, 0, TRUE, "logout" }, { 14, 14, 32, (const unsigned char*)mag_data, 0, 0, TRUE, "mag" }, { 14, 14, 32, (const unsigned char*)month_data, 0, 0, TRUE, "month" }, + { 32, 32, 32, (const unsigned char*)MPEGPlayer_data, 0, 0, TRUE, "MPEGPlayer" }, { 14, 14, 32, (const unsigned char*)mute_data, 0, 0, TRUE, "mute" }, - { 14, 14, 32, (const unsigned char*)new_data, 0, 0, TRUE, "new" }, { 14, 14, 32, (const unsigned char*)newfolder_data, 0, 0, TRUE, "newfolder" }, + { 14, 14, 32, (const unsigned char*)new_data, 0, 0, TRUE, "new" }, { 14, 14, 32, (const unsigned char*)next_data, 0, 0, TRUE, "next" }, + { 28, 14, 32, (const unsigned char*)OKButton_data, 0, 0, TRUE, "OKButton" }, { 13, 11, 8, (const unsigned char*)oneoverx_data, 2, oneoverx_ctable, TRUE, "oneoverx" }, { 16, 14, 8, (const unsigned char*)pass_data, 3, pass_ctable, TRUE, "pass" }, - { 14, 14, 32, (const unsigned char*)paste_data, 0, 0, TRUE, "paste" }, { 14, 14, 32, (const unsigned char*)paste_inactive_data, 0, 0, TRUE, "paste_inactive" }, + { 14, 14, 32, (const unsigned char*)paste_data, 0, 0, TRUE, "paste" }, { 14, 14, 32, (const unsigned char*)pixmap_data, 0, 0, TRUE, "pixmap" }, - { 14, 14, 32, (const unsigned char*)play_data, 0, 0, TRUE, "play" }, { 14, 14, 32, (const unsigned char*)play2_data, 0, 0, TRUE, "play2" }, + { 14, 14, 32, (const unsigned char*)play_data, 0, 0, TRUE, "play" }, { 14, 14, 32, (const unsigned char*)programs_data, 0, 0, TRUE, "programs" }, { 14, 14, 32, (const unsigned char*)quit_icon_data, 0, 0, TRUE, "quit_icon" }, { 14, 14, 32, (const unsigned char*)redo_data, 0, 0, TRUE, "redo" }, { 14, 14, 32, (const unsigned char*)repeat_data, 0, 0, TRUE, "repeat" }, { 14, 14, 8, (const unsigned char*)reset_data, 3, reset_ctable, TRUE, "reset" }, { 14, 14, 32, (const unsigned char*)right_data, 0, 0, TRUE, "right" }, { 14, 14, 32, (const unsigned char*)rotate_data, 0, 0, TRUE, "rotate" }, + { 32, 32, 32, (const unsigned char*)Rotation_data, 0, 0, TRUE, "Rotation" }, { 14, 14, 32, (const unsigned char*)save_data, 0, 0, TRUE, "save" }, + { 14, 14, 32, (const unsigned char*)SettingsIcon_data, 0, 0, TRUE, "SettingsIcon" }, + { 32, 32, 32, (const unsigned char*)Shutdown_data, 0, 0, TRUE, "Shutdown" }, + { 32, 32, 32, (const unsigned char*)SoundPlayer_data, 0, 0, TRUE, "SoundPlayer" }, + { 32, 32, 32, (const unsigned char*)Sound_data, 0, 0, TRUE, "Sound" }, + { 32, 32, 32, (const unsigned char*)Spreadsheet_data, 0, 0, TRUE, "Spreadsheet" }, { 14, 14, 32, (const unsigned char*)start_data, 0, 0, TRUE, "start" }, { 14, 14, 32, (const unsigned char*)stop_data, 0, 0, TRUE, "stop" }, { 14, 14, 32, (const unsigned char*)style_data, 0, 0, TRUE, "style" }, { 14, 14, 32, (const unsigned char*)suspend_data, 0, 0, TRUE, "suspend" }, - { 16, 16, 32, (const unsigned char*)table_pattern_data, 0, 0, TRUE, "table_pattern" }, + { 16, 16, 32, (const unsigned char*)table_pattern_data, 0, 0, FALSE, "table_pattern" }, { 14, 14, 32, (const unsigned char*)tgz_data, 0, 0, TRUE, "tgz" }, { 14, 14, 32, (const unsigned char*)toys_data, 0, 0, TRUE, "toys" }, { 14, 14, 32, (const unsigned char*)trash_data, 0, 0, TRUE, "trash" }, + { 32, 32, 32, (const unsigned char*)Tux_data, 0, 0, TRUE, "Tux" }, { 14, 14, 32, (const unsigned char*)txt_data, 0, 0, TRUE, "txt" }, { 14, 14, 32, (const unsigned char*)underline_data, 0, 0, TRUE, "underline" }, { 14, 14, 32, (const unsigned char*)undo_data, 0, 0, TRUE, "undo" }, - { 14, 14, 32, (const unsigned char*)uninstall_data, 0, 0, TRUE, "uninstall" }, { 14, 14, 32, (const unsigned char*)uninstalled_data, 0, 0, TRUE, "uninstalled" }, + { 14, 14, 32, (const unsigned char*)uninstall_data, 0, 0, TRUE, "uninstall" }, { 14, 14, 32, (const unsigned char*)up_data, 0, 0, TRUE, "up" }, + { 14, 14, 32, (const unsigned char*)UtilsIcon_data, 0, 0, TRUE, "UtilsIcon" }, { 14, 14, 32, (const unsigned char*)volume_data, 0, 0, TRUE, "volume" }, { 14, 14, 32, (const unsigned char*)wait_data, 0, 0, TRUE, "wait" }, { 14, 14, 32, (const unsigned char*)week_data, 0, 0, TRUE, "week" }, { 14, 14, 32, (const unsigned char*)wordgame_data, 0, 0, TRUE, "wordgame" }, { 9, 8, 8, (const unsigned char*)xtopowerofy_data, 2, xtopowerofy_ctable, TRUE, "xtopowerofy" }, { 13, 11, 8, (const unsigned char*)ythrootofx_data, 2, ythrootofx_ctable, TRUE, "ythrootofx" }, { 14, 14, 32, (const unsigned char*)zoom_data, 0, 0, TRUE, "zoom" }, + { 0, 0, 0, 0, 0, 0, 0, 0 } }; -static int cmpEmbedImage(const void *a, const void *b) -{ - const EmbedImage* ea = (const EmbedImage*)a; - const EmbedImage* eb = (const EmbedImage*)b; - return strcmp(ea->name,eb->name); -} -inline const QImage& qembed_findImage(const char* name) +static const QImage& qembed_findImage( const QString& name ) { - EmbedImage key; key.name = name; - EmbedImage* r = (EmbedImage*)bsearch( &key, embed_image_vec, - sizeof(embed_image_vec)/sizeof(EmbedImage), sizeof(EmbedImage), cmpEmbedImage ); - QImage* img; - if ( r ) { - img = new QImage((uchar*)r->data, - r->width, - r->height, - r->depth, -#ifdef _WS_QWS_ - (r->width*r->depth+31)/32*4, -#endif - (QRgb*)r->colorTable, - r->numColors, - QImage::BigEndian - ); - if ( r->alpha ) - img->setAlphaBuffer(TRUE); - } else { - static QImage dummy; - img = &dummy; + static QDict<QImage> dict; + QImage* img = dict.find( name ); + if ( !img ) { + for ( int i = 0; embed_image_vec[i].data; i++ ) { + if ( strcmp(embed_image_vec[i].name, name.latin1()) == 0 ) { + img = new QImage((uchar*)embed_image_vec[i].data, + embed_image_vec[i].width, + embed_image_vec[i].height, + embed_image_vec[i].depth, + (QRgb*)embed_image_vec[i].colorTable, + embed_image_vec[i].numColors, + QImage::BigEndian ); + if ( embed_image_vec[i].alpha ) + img->setAlphaBuffer( TRUE ); + dict.insert( name, img ); + break; + } + } + if ( !img ) { + static QImage dummy; + return dummy; + } } return *img; } #endif diff --git a/library/libqpe1.control b/library/libqpe1.control index 8aab9be..16fca0a 100644 --- a/library/libqpe1.control +++ b/library/libqpe1.control @@ -1,9 +1,9 @@ Package: libqpe1 Files: $OPIEDIR/lib/libqpe.so.1 $OPIEDIR/lib/libqpe.so.1.5 $OPIEDIR/lib/libqpe.so.1.5.0 Priority: required Section: opie/system Maintainer: Project Opie <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION.1 Depends: libqte2 (>=2.3.4-beta4), qte-fonts (>=$QTE_VERSION) Description: libqpe, base qtopia/opie library. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/lnkpropertiesbase_p.ui b/library/lnkpropertiesbase_p.ui index c2271f1..1bafab6 100644 --- a/library/lnkpropertiesbase_p.ui +++ b/library/lnkpropertiesbase_p.ui @@ -1,681 +1,689 @@ <!DOCTYPE UI><UI> <class>LnkPropertiesBase</class> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>Form1</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>267</width> + <width>263</width> <height>450</height> </rect> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>5</hsizetype> <vsizetype>5</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>font</name> <font> </font> </property> <property stdset="1"> <name>caption</name> <string>Details</string> </property> <property stdset="1"> <name>icon</name> <pixmap>image0</pixmap> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <vbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>0</number> </property> <widget> <class>QFrame</class> <property stdset="1"> <name>name</name> <cstring>Frame8</cstring> </property> <property stdset="1"> <name>focusPolicy</name> <enum>NoFocus</enum> </property> <property stdset="1"> <name>frameShape</name> <enum>NoFrame</enum> </property> <property stdset="1"> <name>frameShadow</name> <enum>Plain</enum> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <grid> <property stdset="1"> <name>margin</name> <number>3</number> </property> <property stdset="1"> <name>spacing</name> <number>3</number> </property> <widget row="8" column="0" rowspan="1" colspan="2" > <class>CategoryWidget</class> <property stdset="1"> <name>name</name> <cstring>categoryEdit</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>1</hsizetype> <vsizetype>7</vsizetype> </sizepolicy> </property> </widget> <widget row="5" column="0" rowspan="1" colspan="2" > <class>QCheckBox</class> <property stdset="1"> <name>name</name> <cstring>rotate</cstring> </property> <property stdset="1"> <name>text</name> <string>Use custom rotation</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <property> <name>whatsThis</name> <string>Preload this application so that it is available instantly.</string> </property> </widget> <widget row="0" column="1" > <class>QLineEdit</class> <property stdset="1"> <name>name</name> <cstring>docname</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>7</hsizetype> <vsizetype>0</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>text</name> <string></string> </property> <property> <name>whatsThis</name> <string>The name of this document.</string> </property> </widget> <widget row="1" column="1" > <class>QComboBox</class> <property stdset="1"> <name>name</name> <cstring>locationCombo</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>7</hsizetype> <vsizetype>0</vsizetype> </sizepolicy> </property> <property> <name>whatsThis</name> <string>The media the document resides on.</string> </property> </widget> <widget row="2" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>typeLabel</cstring> </property> <property stdset="1"> <name>focusPolicy</name> <enum>NoFocus</enum> </property> <property stdset="1"> <name>text</name> <string>Type:</string> </property> + <property stdset="1"> + <name>textFormat</name> + <enum>RichText</enum> + </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> </widget> <widget row="2" column="1" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>type</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> </widget> <widget row="1" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>locationLabel</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>1</hsizetype> <vsizetype>1</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>caption</name> <string></string> </property> <property stdset="1"> <name>text</name> <string>Location:</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> </widget> <widget row="0" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel1</cstring> </property> <property stdset="1"> <name>frameShadow</name> <enum>MShadow</enum> </property> <property stdset="1"> <name>text</name> <string>Name:</string> </property> </widget> <widget row="3" column="1" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>comment</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> </widget> <widget row="6" column="0" rowspan="1" colspan="2" > <class>QButtonGroup</class> <property stdset="1"> <name>name</name> <cstring>rotateButtons</cstring> </property> <property stdset="1"> <name>frameShape</name> <enum>NoFrame</enum> </property> <property stdset="1"> <name>title</name> <string></string> </property> <property stdset="1"> <name>exclusive</name> <bool>true</bool> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <hbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>3</number> </property> <spacer> <property> <name>name</name> <cstring>s1</cstring> </property> <property stdset="1"> <name>orientation</name> <enum>Horizontal</enum> </property> <property stdset="1"> <name>sizeType</name> <enum>Fixed</enum> </property> <property> <name>sizeHint</name> <size> <width>20</width> <height>28</height> </size> </property> </spacer> <widget> <class>QToolButton</class> <property stdset="1"> <name>name</name> <cstring>ToolButton1</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> <property stdset="1"> <name>pixmap</name> <pixmap>image0</pixmap> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>on</name> <bool>false</bool> </property> <property stdset="1"> <name>usesBigPixmap</name> <bool>true</bool> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>on</name> <bool>false</bool> </property> <property stdset="1"> <name>buttonGroupId</name> <number>0</number> </property> </widget> <widget> <class>QToolButton</class> <property stdset="1"> <name>name</name> <cstring>ToolButton2</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> <property stdset="1"> <name>pixmap</name> <pixmap>image1</pixmap> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>usesBigPixmap</name> <bool>true</bool> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>buttonGroupId</name> <number>1</number> </property> </widget> <widget> <class>QToolButton</class> <property stdset="1"> <name>name</name> <cstring>ToolButton3</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> <property stdset="1"> <name>pixmap</name> <pixmap>image2</pixmap> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>usesBigPixmap</name> <bool>true</bool> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>buttonGroupId</name> <number>2</number> </property> </widget> <widget> <class>QToolButton</class> <property stdset="1"> <name>name</name> <cstring>ToolButton4</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> <property stdset="1"> <name>pixmap</name> <pixmap>image3</pixmap> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>usesBigPixmap</name> <bool>true</bool> </property> <property stdset="1"> <name>toggleButton</name> <bool>true</bool> </property> <property stdset="1"> <name>buttonGroupId</name> <number>3</number> </property> </widget> <spacer> <property> <name>name</name> <cstring>s4</cstring> </property> <property stdset="1"> <name>orientation</name> <enum>Horizontal</enum> </property> <property stdset="1"> <name>sizeType</name> <enum>MinimumExpanding</enum> </property> <property> <name>sizeHint</name> <size> <width>20</width> <height>20</height> </size> </property> </spacer> </hbox> </widget> <widget row="7" column="0" rowspan="1" colspan="2" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>labelspacer</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>1</hsizetype> <vsizetype>7</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>text</name> <string></string> </property> </widget> <widget row="4" column="0" rowspan="1" colspan="2" > <class>QCheckBox</class> <property stdset="1"> <name>name</name> <cstring>preload</cstring> </property> <property stdset="1"> <name>text</name> <string>Fast load (consumes memory)</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <property> <name>whatsThis</name> <string>Preload this application so that it is available instantly.</string> </property> </widget> <widget row="3" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>commentLabel</cstring> </property> <property stdset="1"> <name>text</name> <string>Comment:</string> </property> + <property stdset="1"> + <name>textFormat</name> + <enum>RichText</enum> + </property> </widget> </grid> </widget> <widget> <class>Line</class> <property stdset="1"> <name>name</name> <cstring>hline</cstring> </property> <property stdset="1"> <name>frameShadow</name> <enum>Sunken</enum> </property> <property stdset="1"> <name>orientation</name> <enum>Horizontal</enum> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> </widget> <widget> <class>QFrame</class> <property stdset="1"> <name>name</name> <cstring>Frame9</cstring> </property> <property stdset="1"> <name>frameShape</name> <enum>NoFrame</enum> </property> <property stdset="1"> <name>frameShadow</name> <enum>Plain</enum> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <hbox> <property stdset="1"> <name>margin</name> <number>3</number> </property> <property stdset="1"> <name>spacing</name> <number>5</number> </property> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>unlink</cstring> </property> <property stdset="1"> <name>focusPolicy</name> <enum>TabFocus</enum> </property> <property stdset="1"> <name>text</name> <string>Delete</string> </property> <property stdset="1"> <name>autoDefault</name> <bool>false</bool> </property> <property> <name>whatsThis</name> <string>Delete this document.</string> </property> </widget> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>duplicate</cstring> </property> <property stdset="1"> <name>text</name> <string>Copy</string> </property> <property stdset="1"> <name>autoDefault</name> <bool>false</bool> </property> <property> <name>whatsThis</name> <string>Make a copy of this document.</string> </property> </widget> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>beam</cstring> </property> <property stdset="1"> <name>focusPolicy</name> <enum>TabFocus</enum> </property> <property stdset="1"> <name>text</name> <string>Beam</string> </property> <property stdset="1"> <name>autoDefault</name> <bool>false</bool> </property> <property> <name>whatsThis</name> <string>Beam this document to another device.</string> </property> </widget> </hbox> </widget> </vbox> </widget> <customwidgets> <customwidget> <class>CategoryWidget</class> <header location="global">qpe/categorywidget.h</header> <sizehint> <width>-1</width> <height>-1</height> </sizehint> <container>0</container> <sizepolicy> <hordata>7</hordata> <verdata>7</verdata> </sizepolicy> <pixmap>image4</pixmap> </customwidget> </customwidgets> <images> <image> <name>image0</name> <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014013032d4282b2b13366708a951067908240fa6a00a95612cb01a6528d04362e92158e0a40213830510c4546598dd103570b72098482ea3ae1ac2eec1ef2f6565d4f051c6123e3035f8c1a81a2aa8a9b5e60200f6abd263</data> </image> <image> <name>image1</name> <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b01416a0ac8c6053a2061960aa019b806c0ca61a65a81a7c764125e9a486b07b40d2cacaf8fd0555a4875f0d0620cf1c22dc33d8c2197fda504605e4ab41b5129f7b3001b630c46317f16a88cb17c814add5d02ecdd75a730100b509d263</data> </image> <image> <name>image2</name> <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b0140130aa863a6a9495f5f49441002c02664030840d53a3ac0c53a40c67c25950bb60d27a70857a08268a7b20164059082695d510e31e62fc85193e7aa8e1832568a1eaf1c6c5e053a34c500d0a18b66a6aadb9001be4d263</data> </image> <image> <name>image3</name> <data format="XPM.GZ" length="1226">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523236520022230543251d2e253d856405bffcbc54105b19c856360003b014125006013d5480a64659198b22543510697445e86a9029daaad183ba87809bb1788c7435d8019a392872cad8d5a002b2d510e777648ad66a08a70d62d2185169152b1819699ec870c634869cf48c1e7cc4aba9b5e602005d86d263</data> </image> <image> <name>image4</name> <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> </image> </images> <connections> <connection> <sender>rotate</sender> <signal>toggled(bool)</signal> <receiver>rotateButtons</receiver> <slot>setEnabled(bool)</slot> </connection> </connections> <tabstops> <tabstop>docname</tabstop> <tabstop>preload</tabstop> <tabstop>locationCombo</tabstop> <tabstop>unlink</tabstop> <tabstop>duplicate</tabstop> <tabstop>beam</tabstop> </tabstops> </UI> diff --git a/library/mimetype.cpp b/library/mimetype.cpp index ef5d619..d0a578e 100644 --- a/library/mimetype.cpp +++ b/library/mimetype.cpp @@ -1,306 +1,370 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_MIMEEXT #include "mimetype.h" #include "applnk.h" #include "resource.h" #include <qpe/qpeapplication.h> #include "config.h" #include <qfile.h> #include <qdict.h> #include <qregexp.h> #include <qstringlist.h> #include <qtextstream.h> #include <qmap.h> static void cleanupMime() { MimeType::clear(); } class MimeTypeData { public: MimeTypeData(const QString& i) : id(i) { apps.setAutoDelete(TRUE); } QString id; QString extension; QList<AppLnk> apps; QString description() { if ( desc.isEmpty() ) desc = QPEApplication::tr("%1 document").arg(apps.first()->name()); return desc; } QPixmap regIcon() { if ( regicon.isNull() ) loadPixmaps(); return regicon; } QPixmap bigIcon() { if ( bigicon.isNull() ) loadPixmaps(); return bigicon; } private: void loadPixmaps() { if ( apps.count() ) { QString icon; for (AppLnk* lnk = apps.first(); icon.isNull() && lnk; lnk=apps.next()) { QStringList icons = lnk->mimeTypeIcons(); if ( icons.count() ) { QStringList types = lnk->mimeTypes(); for (QStringList::ConstIterator t=types.begin(),i=icons.begin(); t!=types.end() && i!=icons.end(); ++i,++t) { if ( *t == id ) { icon = *i; break; } } } } if ( icon.isNull() ) { AppLnk* lnk = apps.first(); regicon = lnk->pixmap(); bigicon = lnk->bigPixmap(); } else { QImage unscaledIcon = Resource::loadImage( icon ); regicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) ); bigicon.convertFromImage( unscaledIcon.smoothScale( AppLnk::bigIconSize(), AppLnk::bigIconSize() ) ); } } } QPixmap regicon; QPixmap bigicon; QString desc; }; class MimeType::Private : public QDict<MimeTypeData> { public: Private() {} ~Private() {} // ... }; MimeType::Private* MimeType::d=0; static QMap<QString,QString> *typeFor = 0; static QMap<QString,QStringList> *extFor = 0; MimeType::Private& MimeType::data() { if ( !d ) { d = new Private; d->setAutoDelete(TRUE); static bool setCleanup = FALSE; if ( !setCleanup ) { qAddPostRoutine( cleanupMime ); setCleanup = TRUE; } } return *d; } +/*! + \class MimeType mimetype.h + \brief The MimeType class provides MIME type information. + + A MimeType object is a light-weight value which + provides information about a MIME type. + + \ingroup qtopiaemb +*/ + +/*! + Constructs a MimeType. + Normally, \a ext_or_id is a MIME type, + but if \a ext_or_id starts with / or contains no /, + it is interpretted as a filename and the + extension (eg. .txt) is used as the + MIME type. +*/ MimeType::MimeType( const QString& ext_or_id ) { init(ext_or_id); } +/*! + Constructs a MimeType from the type() of \a lnk. +*/ MimeType::MimeType( const DocLnk& lnk ) { init(lnk.type()); } +/*! + Returns the MIME type identifier. +*/ QString MimeType::id() const { return i; } +/*! + Returns a description of the MIME Type. This is usually based + on the application() associated with the type. +*/ QString MimeType::description() const { MimeTypeData* d = data(i); return d ? d->description() : QString::null; } +/*! + Returns a small QPixmap appropriate for the MIME type. +*/ QPixmap MimeType::pixmap() const { MimeTypeData* d = data(i); return d ? d->regIcon() : QPixmap(); } +/*! + \internal + This function is not generally available. +*/ QString MimeType::extension() const { return extensions().first(); } + +/*! + \internal + This function is not generally available. +*/ QStringList MimeType::extensions() const { loadExtensions(); return *(*extFor).find(i); } +/*! + Returns a larger QPixmap appropriate for the MIME type. +*/ QPixmap MimeType::bigPixmap() const { MimeTypeData* d = data(i); return d ? d->bigIcon() : QPixmap(); } +/*! + Returns the AppLnk defining the application associated + with this MIME type, or 0 if none is associated. + + The caller must not retain the pointer, + but of course you can dereference it to take a copy if needed. + + \sa Service::binding() +*/ const AppLnk* MimeType::application() const { MimeTypeData* d = data(i); return d ? d->apps.first() : 0; } static QString serviceBinding(const QString& service) { // Copied from qtopiaservices QString svrc = service; for (int i=0; i<(int)svrc.length(); i++) if ( svrc[i]=='/' ) svrc[i] = '-'; return "Service-"+svrc; } +/*! + \internal +*/ void MimeType::registerApp( const AppLnk& lnk ) { QStringList list = lnk.mimeTypes(); for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it) { MimeTypeData* cur = data()[*it]; AppLnk* l = new AppLnk(lnk); if ( !cur ) { cur = new MimeTypeData( *it ); data().insert( *it, cur ); cur->apps.append(l); } else if ( cur->apps.count() ) { Config binding(serviceBinding("Open/"+*it)); binding.setGroup("Service"); QString def = binding.readEntry("default"); if ( l->exec() == def ) cur->apps.prepend(l); else cur->apps.append(l); } else { cur->apps.append(l); } } } +/*! + \internal +*/ void MimeType::clear() { delete d; d = 0; } void MimeType::loadExtensions() { if ( !typeFor ) { extFor = new QMap<QString,QStringList>; typeFor = new QMap<QString,QString>; loadExtensions("/etc/mime.types"); loadExtensions(QPEApplication::qpeDir()+"etc/mime.types"); } } void MimeType::loadExtensions(const QString& filename) { QFile file(filename); if ( file.open(IO_ReadOnly) ) { QTextStream in(&file); QRegExp space("[ \t]+"); while (!in.atEnd()) { QStringList tokens = QStringList::split(space, in.readLine()); QStringList::ConstIterator it = tokens.begin(); if ( it != tokens.end() ) { QString id = *it; ++it; // new override old (though left overrides right) QStringList exts = (*extFor)[id]; QStringList newexts; while ( it != tokens.end() ) { exts.remove(*it); if ( !newexts.contains(*it) ) newexts.append(*it); (*typeFor)[*it] = id; ++it; } (*extFor)[id] = newexts + exts; } } } } void MimeType::init( const QString& ext_or_id ) { if ( ext_or_id[0] != '/' && ext_or_id.contains('/') ) { i = ext_or_id.lower(); } else { loadExtensions(); int dot = ext_or_id.findRev('.'); QString ext = dot >= 0 ? ext_or_id.mid(dot+1) : ext_or_id; i = (*typeFor)[ext.lower()]; if ( i.isNull() ) i = "application/octet-stream"; } static bool appsUpdated = FALSE; if ( !appsUpdated ) { appsUpdated = TRUE; updateApplications(); } } MimeTypeData* MimeType::data(const QString& id) { MimeTypeData* d = data()[id]; if ( !d ) { int s = id.find('/'); QString idw = id.left(s)+"/*"; d = data()[idw]; } return d; } +/*! + Returns a Qtopia folder containing application definitions. +*/ QString MimeType::appsFolderName() { return QPEApplication::qpeDir() + "apps"; } +/*! + Reloads application definitions. +*/ void MimeType::updateApplications() { clear(); AppLnkSet apps( appsFolderName() ); updateApplications(&apps); } void MimeType::updateApplications(AppLnkSet* folder) { for ( QListIterator<AppLnk> it( folder->children() ); it.current(); ++it ) { registerApp(*it.current()); } } diff --git a/library/opie-bootsplash.control b/library/opie-bootsplash.control index 838224d..fc03ecc 100644 --- a/library/opie-bootsplash.control +++ b/library/opie-bootsplash.control @@ -1,8 +1,8 @@ Package: opie-bootsplash Files: etc/init.d/bootsplash etc/rcS.d/S01bootsplash pics/bootsplash/bootlogo Priority: optinal Section: opie/system Maintainer: Project Opie <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION.2 Description: Splash screen aptempt +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/opie-common.control b/library/opie-common.control index 3330319..052d368 100644 --- a/library/opie-common.control +++ b/library/opie-common.control @@ -1,10 +1,10 @@ Package: opie-common Files: etc/colors bin/opie-reorgfiles apps/*/.directory etc/mime.types apps/Settings/quit.desktop pics/logo/* pics/opie-sh/opie-sh.png Priority: required Section: opie/system Maintainer: Project Opie <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION.3 Depends: libqpe1, qte-fonts, qpf-bitstream-vera Replaces: opie-base Description: Core opie files +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/opie-common.postinst b/library/opie-common.postinst index b049efc..1c0d5b2 100755 --- a/library/opie-common.postinst +++ b/library/opie-common.postinst @@ -1,5 +1,6 @@ #!/bin/sh [ "$1" = "configure" ] || exit 1 ln -sf /opt/QtPalmtop /home/QtPalmtop +ln -sf /opt/QtPalmtop /opt/Qtopia
\ No newline at end of file diff --git a/library/password.cpp b/library/password.cpp index 6d126c4..25fb1b8 100644 --- a/library/password.cpp +++ b/library/password.cpp @@ -1,353 +1,354 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "password.h" #include "config.h" #include "global.h" #include "backend/contact.h" #include <qlabel.h> #include <qlineedit.h> #include <qtextview.h> #include <qstring.h> #include <qapplication.h> #include <qfile.h> //#include <qwindowsystem_qws.h> #include <qdialog.h> #include <unistd.h> //for sleep #include "passwordbase_p.h" class PasswordDialog : public PasswordBase { Q_OBJECT public: PasswordDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~PasswordDialog(); void clear(); void setPrompt( const QString& ); signals: void passwordEntered( const QString& ); protected: bool eventFilter( QObject*, QEvent* ); void keyPressEvent( QKeyEvent * ); private: void input( QString ); friend class Password; QString text; }; extern "C" char *crypt(const char *key, const char *salt); static QString qcrypt(const QString& k, const char *salt) { return QString::fromUtf8(crypt(k.utf8(),salt)); } /* * Constructs a PasswordDialog which is a child of 'parent', with the * name 'name' and widget flags set to 'f' */ PasswordDialog::PasswordDialog( QWidget* parent, const char* name, WFlags fl ) : PasswordBase( parent, name, fl ) { QRect desk = qApp->desktop()->geometry(); if ( desk.width() < 220 ) { QFont f( font() ); f.setPointSize( 18 ); setFont( f ); f.setPointSize( 12 ); prompt->setFont( f ); } - + button_0->installEventFilter( this ); button_1->installEventFilter( this ); button_2->installEventFilter( this ); button_3->installEventFilter( this ); button_4->installEventFilter( this ); button_5->installEventFilter( this ); button_6->installEventFilter( this ); button_7->installEventFilter( this ); button_8->installEventFilter( this ); button_9->installEventFilter( this ); button_OK->installEventFilter( this ); setFocus(); } /* * Destroys the object and frees any allocated resources */ PasswordDialog::~PasswordDialog() { // no need to delete child widgets, Qt does it all for us } /*! \reimp */ bool PasswordDialog::eventFilter( QObject*o, QEvent*e ) { if ( e->type() == QEvent::MouseButtonRelease ) { if ( o == button_OK ) { emit passwordEntered( text ); } else { QLabel *l = (QLabel*)o; input(l->text()); } } return FALSE; } /*! \reimp */ void PasswordDialog::keyPressEvent( QKeyEvent * ) { #if 0 if ( e->key() == Key_Enter || e->key() == Key_Return ) emit passwordEntered( text ); else input( e->text() ); #endif } /*! */ void PasswordDialog::input( QString c ) { text += c; display->setText( text ); } /*! */ void PasswordDialog::setPrompt( const QString& s ) { prompt->setText( s ); } void PasswordDialog::clear() { text = ""; input(""); } class PasswdDlg : public QDialog { public: PasswdDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), modl(modal) { passw = new PasswordDialog( this ); if ( fullscreen ) { QRect desk = qApp->desktop()->geometry(); setGeometry( 0, 0, desk.width(), desk.height() ); } connect( passw, SIGNAL(passwordEntered(const QString&)), this, SLOT(accept()) ); } void resizeEvent( QResizeEvent * ) { passw->resize( size() ); } void reset() { passw->clear(); } void execNonModal() { if ( !modl ) { reset(); showFullScreen(); do { qApp->enter_loop(); } while (result()!=1); } } void accept() { if ( !modl ) qApp->exit_loop(); QDialog::accept(); } PasswordDialog *passw; bool modl; }; class OwnerDlg : public QDialog { + Q_OBJECT public: OwnerDlg( QWidget *parent, const char * name, Contact c, bool modal, bool fullscreen = FALSE ) - : QDialog( parent, name, modal, - fullscreen ? + : QDialog( parent, name, modal, + fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ) { if ( fullscreen ) { QRect desk = qApp->desktop()->geometry(); setGeometry( 0, 0, desk.width(), desk.height() ); } // set up contents. QString text = "<H1>" + tr("Owner Information") + "</H1>"; text += c.toRichText(); tv = new QTextView(this); tv->setText(text); tv->viewport()->installEventFilter(this); } void resizeEvent( QResizeEvent * ) { tv->resize( size() ); } - + bool eventFilter(QObject *o, QEvent *e) { if (e->type() == QEvent::KeyPress || e->type() == QEvent::MouseButtonPress ) { accept(); return TRUE; } return QWidget::eventFilter(o, e); } void mousePressEvent( QMouseEvent * ) { accept(); } private: QTextView *tv; }; /*! Returns a crypted password entered by the user when prompted with \a prompt The returned value is QString::null if the user cancels the operation, or the empty string if the user enters no password (but confirms the dialog). */ QString Password::getPassword( const QString& prompt ) { PasswdDlg pd(0,0,TRUE); pd.passw->setPrompt( prompt ); pd.showMaximized(); int r = pd.exec(); if ( r == QDialog::Accepted ) { if (pd.passw->text.isEmpty()) return ""; else return qcrypt(pd.passw->text,"a0"); } else { return QString::null; } } /*! Return if a prompt for the user's passcode is needed. If \a at_poweron is TRUE, the dialog is only used if the user's preference request it at poweron - + Opie extension to speed up suspend/resume. */ bool Password::needToAuthenticate(bool at_poweron) { Config cfg("Security"); cfg.setGroup("Passcode"); QString passcode = cfg.readEntry("passcode"); - + return ( !passcode.isEmpty() && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) ); } /*! Prompt, fullscreen, for the user's passcode until they get it right. If \a at_poweron is TRUE, the dialog is only used if the user's preference request it at poweron; either way, the screen is always repainted by this function. (this functionality may move to the caller of this function). */ void Password::authenticate(bool at_poweron) { Config cfg("Security"); cfg.setGroup("Passcode"); QString passcode = cfg.readEntry("passcode"); if ( !passcode.isEmpty() && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) ) { // Do it as a fullscreen modal dialog PasswdDlg pd(0,0,TRUE,TRUE); // see if there is contact information. OwnerDlg *oi = 0; - QString vfilename = Global::applicationFileName("addressbook", + QString vfilename = Global::applicationFileName("addressbook", "businesscard.vcf"); if (QFile::exists(vfilename)) { Contact c; c = Contact::readVCard( vfilename )[0]; oi = new OwnerDlg(0, 0, c, TRUE, TRUE); } pd.reset(); pd.exec(); while (qcrypt(pd.passw->text, "a0") != passcode) { if (oi) oi->exec(); pd.reset(); pd.exec(); } } else if ( at_poweron ) { // refresh screen #### should probably be in caller // Not needed (we took away the screen blacking) TT // Not needed (we have intelligent screen blacking) sandman //if ( qwsServer ) //qwsServer->refresh(); } } #include "password.moc" diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 619b4cb..4e08a1f 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -1,1825 +1,1839 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** ** $Id$ ** **********************************************************************/ #define QTOPIA_INTERNAL_LANGLIST #include <stdlib.h> #include <unistd.h> #include <linux/limits.h> // needed for some toolchains (PATH_MAX) #include <qfile.h> #ifdef Q_WS_QWS #ifndef QT_NO_COP #if QT_VERSION <= 231 #define private public #define sendLocally processEvent #include "qcopenvelope_qws.h" #undef private #else #include "qcopenvelope_qws.h" #endif #endif #include <qwindowsystem_qws.h> #endif #include <qtextstream.h> #include <qpalette.h> #include <qbuffer.h> #include <qptrdict.h> #include <qregexp.h> #include <qdir.h> #include <qlabel.h> #include <qdialog.h> #include <qdragobject.h> #include <qtextcodec.h> #include <qevent.h> #include <qtooltip.h> #include <qsignal.h> #include <qmainwindow.h> #include "qpeapplication.h" #include "qpestyle.h" #include "styleinterface.h" #if QT_VERSION >= 300 #include <qstylefactory.h> #else #include <qplatinumstyle.h> #include <qwindowsstyle.h> #include <qmotifstyle.h> #include <qmotifplusstyle.h> #include "lightstyle.h" #include <qpe/qlibrary.h> #endif #include "global.h" #include "resource.h" #if QT_VERSION <= 230 && defined(QT_NO_CODECS) #include "qutfcodec.h" #endif #include "config.h" #include "network.h" #ifdef QWS #include "fontmanager.h" #endif #include "alarmserver.h" #include "applnk.h" #include "qpemenubar.h" #include "textcodecinterface.h" #include "imagecodecinterface.h" #include <unistd.h> #include <sys/file.h> #include <sys/ioctl.h> #include <sys/soundcard.h> #include "qt_override_p.h" class QPEApplicationData { public: QPEApplicationData ( ) : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), keep_running( true ), qpe_main_widget( 0 ) { qcopq.setAutoDelete( TRUE ); } int presstimer; QWidget* presswidget; QPoint presspos; bool rightpressed : 1; bool kbgrabbed : 1; bool notbusysent : 1; bool preloaded : 1; bool forceshow : 1; bool nomaximize : 1; bool keep_running : 1; QString appName; struct QCopRec { QCopRec( const QCString &ch, const QCString &msg, const QByteArray &d ) : channel( ch ), message( msg ), data( d ) { } QCString channel; QCString message; QByteArray data; }; QWidget* qpe_main_widget; QList<QCopRec> qcopq; void enqueueQCop( const QCString &ch, const QCString &msg, const QByteArray &data ) { qcopq.append( new QCopRec( ch, msg, data ) ); } void sendQCopQ() { QCopRec * r; #ifndef QT_NO_COP for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it ) QCopChannel::sendLocally( r->channel, r->message, r->data ); #endif qcopq.clear(); } static void show_mx(QWidget* mw, bool nomaximize) { // ugly hack, remove that later after finding a sane solution // Addendum: Only Sharp currently has models with high resolution but (physically) small displays, // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has // a (physically) large enough display to use the small icons #ifndef QT_QWS_SIMPAD if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) { ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true ); } #endif if ( mw->layout() && mw->inherits("QDialog") ) { QPEApplication::showDialog((QDialog*)mw, nomaximize); } else { #ifdef Q_WS_QWS if ( !nomaximize ) mw->showMaximized(); else #endif mw->show(); } } static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) { /* // This works but disable it for now until it is safe to apply // What is does is scan the .desktop files of all the apps for // the applnk that has the corresponding argv[0] as this program // then it uses the name stored in the .desktop file as the caption // for the main widget. This saves duplicating translations for // the app name in the program and in the .desktop files. AppLnkSet apps( appsPath ); QList<AppLnk> appsList = apps.children(); for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { if ( (*it)->exec() == appName ) { mw->setCaption( (*it)->name() ); return TRUE; } } */ return FALSE; } void show(QWidget* mw, bool nomax) { setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); nomaximize = nomax; qpe_main_widget = mw; #ifndef QT_NO_COP sendQCopQ(); #endif if ( preloaded ) { if (forceshow) show_mx(mw, nomax); } else if ( keep_running ) { show_mx(mw, nomax); } } void loadTextCodecs() { QString path = QPEApplication::qpeDir() + "/plugins/textcodecs"; QDir dir( path, "lib*.so" ); QStringList list; if ( dir. exists ( )) list = dir.entryList(); QStringList::Iterator it; for ( it = list.begin(); it != list.end(); ++it ) { TextCodecInterface *iface = 0; QLibrary *lib = new QLibrary( path + "/" + *it ); if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { QValueList<int> mibs = iface->mibEnums(); for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) { (void)iface->createForMib(*i); // ### it exists now; need to remember if we can delete it } } else { lib->unload(); delete lib; } } } void loadImageCodecs() { QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs"; QDir dir( path, "lib*.so" ); QStringList list; if ( dir. exists ( )) list = dir.entryList(); QStringList::Iterator it; for ( it = list.begin(); it != list.end(); ++it ) { ImageCodecInterface *iface = 0; QLibrary *lib = new QLibrary( path + "/" + *it ); if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { QStringList formats = iface->keys(); for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) { (void)iface->installIOHandler(*i); // ### it exists now; need to remember if we can delete it } } else { lib->unload(); delete lib; } } } QString styleName; QString decorationName; }; class ResourceMimeFactory : public QMimeSourceFactory { public: - ResourceMimeFactory() + ResourceMimeFactory() : resImage( 0 ) { setFilePath( Global::helpPath() ); setExtensionType( "html", "text/html;charset=UTF-8" ); } + ~ResourceMimeFactory() { + delete resImage; + } const QMimeSource* data( const QString& abs_name ) const { const QMimeSource * r = QMimeSourceFactory::data( abs_name ); if ( !r ) { int sl = abs_name.length(); do { sl = abs_name.findRev( '/', sl - 1 ); QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; int dot = name.findRev( '.' ); if ( dot >= 0 ) name = name.left( dot ); QImage img = Resource::loadImage( name ); - if ( !img.isNull() ) - r = new QImageDrag( img ); + if ( !img.isNull() ) { + delete resImage; + resImage = new QImageDrag( img ); + r = resImage; + } } while ( !r && sl > 0 ); } return r; } +private: + mutable QImageDrag *resImage; }; static int muted = 0; static int micMuted = 0; static void setVolume( int t = 0, int percent = -1 ) { switch ( t ) { case 0: { Config cfg( "qpe" ); cfg.setGroup( "Volume" ); if ( percent < 0 ) percent = cfg.readNumEntry( "VolumePercent", 50 ); int fd = 0; if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { int vol = muted ? 0 : percent; // set both channels to same volume vol |= vol << 8; ioctl( fd, MIXER_WRITE( 0 ), &vol ); ::close( fd ); } } break; } } static void setMic( int t = 0, int percent = -1 ) { switch ( t ) { case 0: { Config cfg( "qpe" ); cfg.setGroup( "Volume" ); if ( percent < 0 ) percent = cfg.readNumEntry( "Mic", 50 ); int fd = 0; int mic = micMuted ? 0 : percent; if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic ); ::close( fd ); } } break; } } static void setBass( int t = 0, int percent = -1 ) { switch ( t ) { case 0: { Config cfg( "qpe" ); cfg.setGroup( "Volume" ); if ( percent < 0 ) percent = cfg.readNumEntry( "BassPercent", 50 ); int fd = 0; int bass = percent; if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass ); ::close( fd ); } } break; } } static void setTreble( int t = 0, int percent = -1 ) { switch ( t ) { case 0: { Config cfg( "qpe" ); cfg.setGroup( "Volume" ); if ( percent < 0 ) percent = cfg.readNumEntry( "TreblePercent", 50 ); int fd = 0; int treble = percent; if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble ); ::close( fd ); } } break; } } /*! \class QPEApplication qpeapplication.h \brief The QPEApplication class implements various system services that are available to all Qtopia applications. Simply by using QPEApplication instead of QApplication, a standard Qt application becomes a Qtopia application. It automatically follows style changes, quits and raises, and in the case of \link docwidget.html document-oriented\endlink applications, changes the currently displayed document in response to the environment. To create a \link docwidget.html document-oriented\endlink application use showMainDocumentWidget(); to create a non-document-oriented application use showMainWidget(). The keepRunning() function indicates whether the application will continue running after it's processed the last \link qcop.html QCop\endlink message. This can be changed using setKeepRunning(). A variety of signals are emitted when certain events occur, for example, timeChanged(), clockChanged(), weekChanged(), dateFormatChanged() and volumeChanged(). If the application receives a \link qcop.html QCop\endlink message on the application's QPE/Application/\e{appname} channel, the appMessage() signal is emitted. There are also flush() and reload() signals, which are emitted when synching begins and ends respectively - upon these signals, the application should save and reload any data files that are involved in synching. Most of these signals will initially be received and unfiltered through the appMessage() signal. This class also provides a set of useful static functions. The qpeDir() and documentDir() functions return the respective paths. The grabKeyboard() and ungrabKeyboard() functions are used to control whether the application takes control of the device's physical buttons (e.g. application launch keys). The stylus' mode of operation is set with setStylusOperation() and retrieved with stylusOperation(). There are also setInputMethodHint() and inputMethodHint() functions. \ingroup qtopiaemb */ /*! \fn void QPEApplication::clientMoused() \internal */ /*! \fn void QPEApplication::timeChanged(); This signal is emitted when the time changes outside the normal passage of time, i.e. if the time is set backwards or forwards. */ /*! \fn void QPEApplication::clockChanged( bool ampm ); This signal is emitted when the user changes the clock's style. If \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise, they want a 24-hour clock. */ /*! \fn void QPEApplication::volumeChanged( bool muted ) This signal is emitted whenever the mute state is changed. If \a muted is TRUE, then sound output has been muted. */ /*! \fn void QPEApplication::weekChanged( bool startOnMonday ) This signal is emitted if the week start day is changed. If \a startOnMonday is TRUE then the first day of the week is Monday; if \a startOnMonday is FALSE then the first day of the week is Sunday. */ /*! \fn void QPEApplication::dateFormatChanged(DateFormat) This signal is emitted whenever the date format is changed. */ /*! \fn void QPEApplication::flush() ### */ /*! \fn void QPEApplication::reload() */ /*! \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) This signal is emitted when a message is received on this application's QPE/Application/<i>appname</i> \link qcop.html QCop\endlink channel. The slot to which you connect this signal uses \a msg and \a data in the following way: \code void MyWidget::receive( const QCString& msg, const QByteArray& data ) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "someMessage(int,int,int)" ) { int a,b,c; stream >> a >> b >> c; ... } else if ( msg == "otherMessage(QString)" ) { ... } } \endcode \sa qcop.html Note that messages received here may be processed by qpe application and emitted as signals, such as flush() and reload(). */ /*! Constructs a QPEApplication just as you would construct a QApplication, passing \a argc, \a argv, and \a t. For applications, \a t should be the default, GuiClient. Only the Qtopia server passes GuiServer. */ QPEApplication::QPEApplication( int & argc, char **argv, Type t ) : QApplication( argc, argv, t ) { d = new QPEApplicationData; d->loadTextCodecs(); d->loadImageCodecs(); int dw = desktop() ->width(); if ( dw < 200 ) { setFont( QFont( "vera", 8 ) ); AppLnk::setSmallIconSize( 10 ); AppLnk::setBigIconSize( 28 ); } #ifndef QT_QWS_SIMPAD else if ( dw > 600 ) { setFont( QFont( "vera", 16 ) ); AppLnk::setSmallIconSize( 24 ); AppLnk::setBigIconSize( 48 ); } #endif else if ( dw > 200 ) { setFont( QFont( "vera", 10 ) ); AppLnk::setSmallIconSize( 14 ); AppLnk::setBigIconSize( 32 ); } QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); #if defined(Q_WS_QWS) && !defined(QT_NO_COP) QString qcopfn( "/tmp/qcop-msg-" ); qcopfn += QString( argv[ 0 ] ); // append command name QFile f( qcopfn ); if ( f.open( IO_ReadOnly ) ) { flock( f.handle(), LOCK_EX ); } sysChannel = new QCopChannel( "QPE/System", this ); connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); QCString channel = QCString( argv[ 0 ] ); channel.replace( QRegExp( ".*/" ), "" ); d->appName = channel; channel = "QPE/Application/" + channel; pidChannel = new QCopChannel( channel, this ); connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) ); if ( f.isOpen() ) { d->keep_running = FALSE; QDataStream ds( &f ); QCString channel, message; QByteArray data; while ( !ds.atEnd() ) { ds >> channel >> message >> data; d->enqueueQCop( channel, message, data ); } flock( f.handle(), LOCK_UN ); f.close(); f.remove(); } for ( int a = 0; a < argc; a++ ) { if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { argv[ a ] = argv[ a + 1 ]; a++; d->preloaded = TRUE; argc -= 1; } else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { argv[ a ] = argv[ a + 1 ]; a++; d->preloaded = TRUE; d->forceshow = TRUE; argc -= 1; } } /* overide stored arguments */ setArgs( argc, argv ); #endif // qwsSetDecoration( new QPEDecoration() ); #ifndef QT_NO_TRANSLATION QStringList langs = Global::languageList(); for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { QString lang = *it; installTranslation( lang + "/libopie.qm"); installTranslation( lang + "/libqpe.qm" ); installTranslation( lang + "/" + d->appName + ".qm" ); //###language/font hack; should look it up somewhere #ifdef QWS if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { QFont fn = FontManager::unicodeFont( FontManager::Proportional ); setFont( fn ); } #endif } #endif applyStyle(); if ( type() == GuiServer ) { setVolume(); } installEventFilter( this ); QPEMenuToolFocusManager::initialize(); #ifdef QT_NO_QWS_CURSOR // if we have no cursor, probably don't want tooltips QToolTip::setEnabled( FALSE ); #endif } static QPtrDict<void>* inputMethodDict = 0; static void createInputMethodDict() { if ( !inputMethodDict ) inputMethodDict = new QPtrDict<void>; } /*! Returns the currently set hint to the system as to whether widget \a w has any use for text input methods. \sa setInputMethodHint() InputMethodHint */ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) { if ( inputMethodDict && w ) return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); return Normal; } /*! \enum QPEApplication::InputMethodHint \value Normal the application sometimes needs text input (the default). \value AlwaysOff the application never needs text input. \value AlwaysOn the application always needs text input. */ /*! Hints to the system that widget \a w has use for text input methods as specified by \a mode. \sa inputMethodHint() InputMethodHint */ void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) { createInputMethodDict(); if ( mode == Normal ) { inputMethodDict->remove ( w ); } else { inputMethodDict->insert( w, ( void* ) mode ); } } class HackDialog : public QDialog { public: void acceptIt() { accept(); } void rejectIt() { reject(); } }; void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) { // specialised actions for certain widgets. May want to // add more stuff here. if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) && activePopupWidget() ->parentWidget() && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) key = Qt::Key_Return; if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) key = Qt::Key_Return; #ifdef QWS ke->simpleData.keycode = key; #endif } class HackWidget : public QWidget { public: bool needsOk() { return ( getWState() & WState_Reserved1 ); } }; /*! \internal */ #ifdef QWS bool QPEApplication::qwsEventFilter( QWSEvent * e ) { if ( !d->notbusysent && e->type == QWSEvent::Focus ) { if ( qApp->type() != QApplication::GuiServer ) { QCopEnvelope e( "QPE/System", "notBusy(QString)" ); e << d->appName; } d->notbusysent = TRUE; } if ( type() == GuiServer ) { switch ( e->type ) { case QWSEvent::Mouse: if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) emit clientMoused(); break; default: break; } } if ( e->type == QWSEvent::Key ) { QWSKeyEvent *ke = ( QWSKeyEvent * ) e; if ( ke->simpleData.keycode == Qt::Key_F33 ) { // Use special "OK" key to press "OK" on top level widgets QWidget * active = activeWindow(); QWidget *popup = 0; if ( active && active->isPopup() ) { popup = active; active = active->parentWidget(); } if ( active && ( int ) active->winId() == ke->simpleData.window && !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { if ( ke->simpleData.is_press ) { if ( popup ) popup->close(); if ( active->inherits( "QDialog" ) ) { HackDialog * d = ( HackDialog * ) active; d->acceptIt(); return TRUE; } else if ( ( ( HackWidget * ) active ) ->needsOk() ) { QSignal s; s.connect( active, SLOT( accept() ) ); s.activate(); } else { // do the same as with the select key: Map to the default action of the widget: mapToDefaultAction( ke, Qt::Key_Return ); } } } } else if ( ke->simpleData.keycode == Qt::Key_F30 ) { // Use special "select" key to do whatever default action a widget has mapToDefaultAction( ke, Qt::Key_Space ); } else if ( ke->simpleData.keycode == Qt::Key_Escape && ke->simpleData.is_press ) { // Escape key closes app if focus on toplevel QWidget * active = activeWindow(); if ( active && active->testWFlags( WType_TopLevel ) && ( int ) active->winId() == ke->simpleData.window && !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { if ( active->inherits( "QDialog" ) ) { HackDialog * d = ( HackDialog * ) active; d->rejectIt(); return TRUE; } else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { active->close(); } } } else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) { // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... )) // but we cannot access libopie function within libqpe :( QWidget * active = activeWindow ( ); if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) { if ( d-> kbgrabbed ) { // we grabbed the keyboard QChar ch ( ke-> simpleData.unicode ); QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease, ke-> simpleData.keycode, ch. latin1 ( ), ke-> simpleData.modifiers, QString ( ch ), ke-> simpleData.is_auto_repeat, 1 ); QObject *which = QWidget::keyboardGrabber ( ); if ( !which ) which = QApplication::focusWidget ( ); if ( !which ) which = QApplication::activeWindow ( ); if ( !which ) which = qApp; QApplication::sendEvent ( which, &qke ); } else { // we didn't grab the keyboard, so send the event to the launcher QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" ); e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat ); } } return true; } } if ( e->type == QWSEvent::Focus ) { QWSFocusEvent * fe = ( QWSFocusEvent* ) e; if ( !fe->simpleData.get_focus ) { QWidget * active = activeWindow(); while ( active && active->isPopup() ) { active->close(); active = activeWindow(); } } else { // make sure our modal widget is ALWAYS on top QWidget *topm = activeModalWidget(); if ( topm ) { topm->raise(); } } if ( fe->simpleData.get_focus && inputMethodDict ) { InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); if ( m == AlwaysOff ) Global::hideInputMethod(); if ( m == AlwaysOn ) Global::showInputMethod(); } } return QApplication::qwsEventFilter( e ); } #endif /*! Destroys the QPEApplication. */ QPEApplication::~QPEApplication() { ungrabKeyboard(); #if defined(Q_WS_QWS) && !defined(QT_NO_COP) // Need to delete QCopChannels early, since the display will // be gone by the time we get to ~QObject(). delete sysChannel; delete pidChannel; #endif delete d; } /*! Returns <tt>$OPIEDIR/</tt>. */ QString QPEApplication::qpeDir() { const char * base = getenv( "OPIEDIR" ); if ( base ) return QString( base ) + "/"; return QString( "../" ); } /*! Returns the user's current Document directory. There is a trailing "/". .. well, it does now,, and there's no trailing '/' */ QString QPEApplication::documentDir() { const char* base = getenv( "HOME"); if ( base ) return QString( base ) + "/Documents"; return QString( "../Documents" ); } static int deforient = -1; /*! \internal */ int QPEApplication::defaultRotation() { if ( deforient < 0 ) { QString d = getenv( "QWS_DISPLAY" ); if ( d.contains( "Rot90" ) ) { deforient = 90; } else if ( d.contains( "Rot180" ) ) { deforient = 180; } else if ( d.contains( "Rot270" ) ) { deforient = 270; } else { deforient = 0; } } return deforient; } /*! \internal */ void QPEApplication::setDefaultRotation( int r ) { if ( qApp->type() == GuiServer ) { deforient = r; setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); Config config("qpe"); config.setGroup( "Rotation" ); config.writeEntry( "Rot", r ); } else { #ifndef QT_NO_COP { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); e << r; } #endif } } /*! \internal */ void QPEApplication::applyStyle() { Config config( "qpe" ); config.setGroup( "Appearance" ); #if QT_VERSION > 233 // don't block ourselves ... Opie::force_appearance = 0; static QString appname = Opie::binaryName ( ); QStringList ex = config. readListEntry ( "NoStyle", ';' ); int nostyle = 0; for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); break; } } // Widget style - QString style = config.readEntry( "Style", "Light" ); + QString style = config.readEntry( "Style", "FlatStyle" ); // don't set a custom style if ( nostyle & Opie::Force_Style ) - style = "Light"; + style = "FlatStyle"; internalSetStyle ( style ); - // Colors - QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); - QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); + // Colors - from /etc/colors/Liquid.scheme + QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) ); + QColor btncolor( config.readEntry( "Button", "#96c8fa" ) ); QPalette pal( btncolor, bgcolor ); - QString color = config.readEntry( "Highlight", "#800000" ); + QString color = config.readEntry( "Highlight", "#73adef" ); pal.setColor( QColorGroup::Highlight, QColor( color ) ); color = config.readEntry( "HighlightedText", "#FFFFFF" ); pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); color = config.readEntry( "Text", "#000000" ); pal.setColor( QColorGroup::Text, QColor( color ) ); color = config.readEntry( "ButtonText", "#000000" ); pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); color = config.readEntry( "Base", "#FFFFFF" ); pal.setColor( QColorGroup::Base, QColor( color ) ); pal.setColor( QPalette::Disabled, QColorGroup::Text, pal.color( QPalette::Active, QColorGroup::Background ).dark() ); setPalette( pal, TRUE ); // Window Decoration - QString dec = config.readEntry( "Decoration", "Qtopia" ); + QString dec = config.readEntry( "Decoration", "Flat" ); // don't set a custom deco if ( nostyle & Opie::Force_Decoration ) dec = ""; //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); if ( dec != d->decorationName ) { qwsSetDecoration( new QPEDecoration( dec ) ); d->decorationName = dec; } // Font QString ff = config.readEntry( "FontFamily", font().family() ); int fs = config.readNumEntry( "FontSize", font().pointSize() ); // don't set a custom font if ( nostyle & Opie::Force_Font ) { ff = "Vera"; fs = 10; } setFont ( QFont ( ff, fs ), true ); // revert to global blocking policy ... Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None; Opie::force_appearance &= ~nostyle; #endif } void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) { #ifdef Q_WS_QWS QDataStream stream( data, IO_ReadOnly ); if ( msg == "applyStyle()" ) { applyStyle(); } else if ( msg == "toggleApplicationMenu()" ) { QWidget *active = activeWindow ( ); if ( active ) { QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( ); bool oldactive = man-> isActive ( ); man-> setActive( !man-> isActive() ); if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" ); } } } else if ( msg == "setDefaultRotation(int)" ) { if ( type() == GuiServer ) { int r; stream >> r; setDefaultRotation( r ); } } else if ( msg == "setCurrentRotation(int)" ) { int r; stream >> r; setCurrentRotation( r ); } else if ( msg == "shutdown()" ) { if ( type() == GuiServer ) shutdown(); } else if ( msg == "quit()" ) { if ( type() != GuiServer ) tryQuit(); } else if ( msg == "forceQuit()" ) { if ( type() != GuiServer ) quit(); } else if ( msg == "restart()" ) { if ( type() == GuiServer ) restart(); } else if ( msg == "language(QString)" ) { if ( type() == GuiServer ) { QString l; stream >> l; QString cl = getenv( "LANG" ); if ( cl != l ) { if ( l.isNull() ) unsetenv( "LANG" ); else setenv( "LANG", l.latin1(), 1 ); restart(); } } } else if ( msg == "timeChange(QString)" ) { QString t; stream >> t; if ( t.isNull() ) unsetenv( "TZ" ); else setenv( "TZ", t.latin1(), 1 ); // emit the signal so everyone else knows... emit timeChanged(); } else if ( msg == "execute(QString)" ) { if ( type() == GuiServer ) { QString t; stream >> t; Global::execute( t ); } } else if ( msg == "execute(QString,QString)" ) { if ( type() == GuiServer ) { QString t, d; stream >> t >> d; Global::execute( t, d ); } } else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { if ( type() == GuiServer ) { QDateTime when; QCString channel, message; int data; stream >> when >> channel >> message >> data; AlarmServer::addAlarm( when, channel, message, data ); } } else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { if ( type() == GuiServer ) { QDateTime when; QCString channel, message; int data; stream >> when >> channel >> message >> data; AlarmServer::deleteAlarm( when, channel, message, data ); } } else if ( msg == "clockChange(bool)" ) { int tmp; stream >> tmp; emit clockChanged( tmp ); } else if ( msg == "weekChange(bool)" ) { int tmp; stream >> tmp; emit weekChanged( tmp ); } else if ( msg == "setDateFormat(DateFormat)" ) { DateFormat tmp; stream >> tmp; emit dateFormatChanged( tmp ); } else if ( msg == "setVolume(int,int)" ) { int t, v; stream >> t >> v; setVolume( t, v ); emit volumeChanged( muted ); } else if ( msg == "volumeChange(bool)" ) { stream >> muted; setVolume(); emit volumeChanged( muted ); } else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> int t, v; stream >> t >> v; setMic( t, v ); emit micChanged( micMuted ); } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> stream >> micMuted; setMic(); emit micChanged( micMuted ); } else if ( msg == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> int t, v; stream >> t >> v; setBass( t, v ); } else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> setBass(); } else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> int t, v; stream >> t >> v; setTreble( t, v ); } else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org> setTreble(); } #endif } /*! \internal */ bool QPEApplication::raiseAppropriateWindow() { bool r = FALSE; // ########## raise()ing main window should raise and set active // ########## it and then all childen. This belongs in Qt/Embedded QWidget *top = d->qpe_main_widget; if ( !top ) top = mainWidget(); if ( top && d->keep_running ) { if ( top->isVisible() ) r = TRUE; else if (d->preloaded) { // We are preloaded and not visible.. pretend we just started.. QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); e << d->appName; } d->show_mx(top, d->nomaximize); top->raise(); top->setActiveWindow(); } QWidget *topm = activeModalWidget(); if ( topm && topm != top ) { topm->show(); topm->raise(); topm->setActiveWindow(); // If we haven't already handled the fastAppShowing message if (!top && d->preloaded) { QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); e << d->appName; } r = FALSE; } return r; } void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) { #ifdef Q_WS_QWS if ( msg == "quit()" ) { tryQuit(); } else if ( msg == "quitIfInvisible()" ) { if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) quit(); } else if ( msg == "close()" ) { hideOrQuit(); } else if ( msg == "disablePreload()" ) { d->preloaded = FALSE; d->keep_running = TRUE; /* so that quit will quit */ } else if ( msg == "enablePreload()" ) { if (d->qpe_main_widget) d->preloaded = TRUE; d->keep_running = TRUE; /* so next quit won't quit */ } else if ( msg == "raise()" ) { d->keep_running = TRUE; d->notbusysent = FALSE; raiseAppropriateWindow(); // Tell the system we're still chugging along... QCopEnvelope e("QPE/System", "appRaised(QString)"); e << d->appName; } else if ( msg == "flush()" ) { emit flush(); // we need to tell the desktop QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); e << d->appName; } else if ( msg == "reload()" ) { emit reload(); } else if ( msg == "setDocument(QString)" ) { d->keep_running = TRUE; QDataStream stream( data, IO_ReadOnly ); QString doc; stream >> doc; QWidget *mw = mainWidget(); if ( !mw ) mw = d->qpe_main_widget; if ( mw ) Global::setDocument( mw, doc ); + } else { + bool p = d->keep_running; + d->keep_running = FALSE; + emit appMessage( msg, data); + if ( d->keep_running ) { + d->notbusysent = FALSE; + raiseAppropriateWindow(); + if ( !p ) { + // Tell the system we're still chugging along... +#ifndef QT_NO_COP + QCopEnvelope e("QPE/System", "appRaised(QString)"); + e << d->appName; +#endif + } + } + if ( p ) + d->keep_running = p; } - else if ( msg == "nextView()" ) { - qDebug("got nextView()"); - /* - if ( raiseAppropriateWindow() ) - */ - emit appMessage( msg, data); - } - else { - emit appMessage( msg, data); - } - #endif } /*! Sets widget \a mw as the mainWidget() and shows it. For small windows, consider passing TRUE for \a nomaximize rather than the default FALSE. \sa showMainDocumentWidget() */ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) { d->show(mw, nomaximize ); } /*! Sets widget \a mw as the mainWidget() and shows it. For small windows, consider passing TRUE for \a nomaximize rather than the default FALSE. This calls designates the application as a \link docwidget.html document-oriented\endlink application. The \a mw widget \e must have this slot: setDocument(const QString&). \sa showMainWidget() */ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) { if ( mw && argc() == 2 ) Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); d->show(mw, nomaximize ); } /*! If an application is started via a \link qcop.html QCop\endlink message, the application will process the \link qcop.html QCop\endlink message and then quit. If the application calls this function while processing a \link qcop.html QCop\endlink message, after processing its outstanding \link qcop.html QCop\endlink messages the application will start 'properly' and show itself. \sa keepRunning() */ void QPEApplication::setKeepRunning() { if ( qApp && qApp->inherits( "QPEApplication" ) ) { QPEApplication * qpeApp = ( QPEApplication* ) qApp; qpeApp->d->keep_running = TRUE; } } /*! Returns TRUE if the application will quit after processing the current list of qcop messages; otherwise returns FALSE. \sa setKeepRunning() */ bool QPEApplication::keepRunning() const { return d->keep_running; } /*! \internal */ void QPEApplication::internalSetStyle( const QString &style ) { #if QT_VERSION >= 300 if ( style == "QPE" ) { setStyle( new QPEStyle ); } else { QStyle *s = QStyleFactory::create( style ); if ( s ) setStyle( s ); } #else if ( style == "Windows" ) { setStyle( new QWindowsStyle ); } else if ( style == "QPE" ) { setStyle( new QPEStyle ); } else if ( style == "Light" ) { setStyle( new LightStyle ); } #ifndef QT_NO_STYLE_PLATINUM else if ( style == "Platinum" ) { setStyle( new QPlatinumStyle ); } #endif #ifndef QT_NO_STYLE_MOTIF else if ( style == "Motif" ) { setStyle( new QMotifStyle ); } #endif #ifndef QT_NO_STYLE_MOTIFPLUS else if ( style == "MotifPlus" ) { setStyle( new QMotifPlusStyle ); } #endif else { QStyle *sty = 0; QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; if ( style. find ( ".so" ) > 0 ) path += style; else path = path + "lib" + style. lower ( ) + ".so"; // compatibility static QLibrary *lastlib = 0; static StyleInterface *lastiface = 0; QLibrary *lib = new QLibrary ( path ); StyleInterface *iface = 0; if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) sty = iface-> style ( ); if ( sty ) { setStyle ( sty ); if ( lastiface ) lastiface-> release ( ); lastiface = iface; if ( lastlib ) { lastlib-> unload ( ); delete lastlib; } lastlib = lib; } else { if ( iface ) iface-> release ( ); delete lib; setStyle ( new LightStyle ( )); } } #endif } /*! \internal */ void QPEApplication::prepareForTermination( bool willrestart ) { if ( willrestart ) { // Draw a big wait icon, the image can be altered in later revisions // QWidget *d = QApplication::desktop(); QImage img = Resource::loadImage( "launcher/new_wait" ); QPixmap pix; pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); lblWait->setPixmap( pix ); lblWait->setAlignment( QWidget::AlignCenter ); lblWait->show(); lblWait->showMaximized(); } #ifndef SINGLE_APP { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); } processEvents(); // ensure the message goes out. sleep( 1 ); // You have 1 second to comply. #endif } /*! \internal */ void QPEApplication::shutdown() { // Implement in server's QPEApplication subclass } /*! \internal */ void QPEApplication::restart() { // Implement in server's QPEApplication subclass } static QPtrDict<void>* stylusDict = 0; static void createDict() { if ( !stylusDict ) stylusDict = new QPtrDict<void>; } /*! Returns the current StylusMode for widget \a w. \sa setStylusOperation() StylusMode */ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) { if ( stylusDict ) return ( StylusMode ) ( int ) stylusDict->find( w ); return LeftOnly; } /*! \enum QPEApplication::StylusMode \value LeftOnly the stylus only generates LeftButton events (the default). \value RightOnHold the stylus generates RightButton events if the user uses the press-and-hold gesture. \sa setStylusOperation() stylusOperation() */ /*! Causes widget \a w to receive mouse events according to the stylus \a mode. \sa stylusOperation() StylusMode */ void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) { createDict(); if ( mode == LeftOnly ) { stylusDict->remove ( w ); w->removeEventFilter( qApp ); } else { stylusDict->insert( w, ( void* ) mode ); connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); w->installEventFilter( qApp ); } } /*! \reimp */ bool QPEApplication::eventFilter( QObject *o, QEvent *e ) { if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { QMouseEvent * me = ( QMouseEvent* ) e; StylusMode mode = (StylusMode)(int)stylusDict->find(o); switch (mode) { case RightOnHold: switch ( me->type() ) { case QEvent::MouseButtonPress: if ( me->button() == LeftButton ) { d->presstimer = startTimer(500); // #### pref. d->presswidget = (QWidget*)o; d->presspos = me->pos(); d->rightpressed = FALSE; } break; case QEvent::MouseMove: if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { killTimer(d->presstimer); d->presstimer = 0; } break; case QEvent::MouseButtonRelease: if ( me->button() == LeftButton ) { if ( d->presstimer ) { killTimer(d->presstimer); d->presstimer = 0; } if ( d->rightpressed && d->presswidget ) { // Right released postEvent( d->presswidget, new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), RightButton, LeftButton + RightButton ) ); // Left released, off-widget postEvent( d->presswidget, new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), LeftButton, LeftButton ) ); postEvent( d->presswidget, new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), LeftButton, LeftButton ) ); d->rightpressed = FALSE; return TRUE; // don't send the real Left release } } break; default: break; } break; default: ; } } else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { QKeyEvent *ke = (QKeyEvent *)e; if ( ke->key() == Key_Enter ) { if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); return TRUE; } } } return FALSE; } /*! \reimp */ void QPEApplication::timerEvent( QTimerEvent *e ) { if ( e->timerId() == d->presstimer && d->presswidget ) { // Right pressed postEvent( d->presswidget, new QMouseEvent( QEvent::MouseButtonPress, d->presspos, RightButton, LeftButton ) ); killTimer( d->presstimer ); d->presstimer = 0; d->rightpressed = TRUE; } } void QPEApplication::removeSenderFromStylusDict() { stylusDict->remove ( ( void* ) sender() ); if ( d->presswidget == sender() ) d->presswidget = 0; } /*! \internal */ bool QPEApplication::keyboardGrabbed() const { return d->kbgrabbed; } /*! Reverses the effect of grabKeyboard(). This is called automatically on program exit. */ void QPEApplication::ungrabKeyboard() { ((QPEApplication *) qApp )-> d-> kbgrabbed = false; } /*! Grabs the physical keyboard keys, e.g. the application's launching keys. Instead of launching applications when these keys are pressed the signals emitted are sent to this application instead. Some games programs take over the launch keys in this way to make interaction easier. \sa ungrabKeyboard() */ void QPEApplication::grabKeyboard() { ((QPEApplication *) qApp )-> d-> kbgrabbed = true; } /*! \reimp */ int QPEApplication::exec() { #ifndef QT_NO_COP d->sendQCopQ(); #endif if ( d->keep_running ) //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) return QApplication::exec(); #ifndef QT_NO_COP { QCopEnvelope e( "QPE/System", "closing(QString)" ); e << d->appName; } #endif processEvents(); return 0; } /*! \internal External request for application to quit. Quits if possible without loosing state. */ void QPEApplication::tryQuit() { if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) return ; // Inside modal loop or konsole. Too hard to save state. #ifndef QT_NO_COP { QCopEnvelope e( "QPE/System", "closing(QString)" ); e << d->appName; } #endif processEvents(); quit(); } /*! \internal */ void QPEApplication::installTranslation( const QString& baseName ) { QTranslator* trans = new QTranslator(this); QString tfn = qpeDir() + "/i18n/"+baseName; if ( trans->load( tfn ) ) installTranslator( trans ); else delete trans; } /*! \internal User initiated quit. Makes the window 'Go Away'. If preloaded this means hiding the window. If not it means quitting the application. As this is user initiated we don't need to check state. */ void QPEApplication::hideOrQuit() { processEvents(); // If we are a preloaded application we don't actually quit, so emit // a System message indicating we're quasi-closing. if ( d->preloaded && d->qpe_main_widget ) #ifndef QT_NO_COP { QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); e << d->appName; d->qpe_main_widget->hide(); } #endif else quit(); } #if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES) // The libraries with the skiff package (and possibly others) have // completely useless implementations of builtin new and delete that // use about 50% of your CPU. Here we revert to the simple libc // functions. void* operator new[]( size_t size ) { return malloc( size ); } void* operator new( size_t size ) { return malloc( size ); } void operator delete[]( void* p ) { free( p ); } void operator delete[]( void* p, size_t /*size*/ ) { free( p ); } void operator delete( void* p ) { free( p ); } void operator delete( void* p, size_t /*size*/ ) { free( p ); } #endif #if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) #include <qwidgetlist.h> #ifdef QWS #include <qgfx_qws.h> extern QRect qt_maxWindowRect; void qt_setMaxWindowRect(const QRect& r ) { qt_maxWindowRect = qt_screen->mapFromDevice( r, qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); // Re-resize any maximized windows QWidgetList* l = QApplication::topLevelWidgets(); if ( l ) { QWidget * w = l->first(); while ( w ) { if ( w->isVisible() && w->isMaximized() ) { w->showMaximized(); } w = l->next(); } delete l; } } #endif #endif diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp index 5e0c32a..933542d 100644 --- a/library/qpedecoration_qws.cpp +++ b/library/qpedecoration_qws.cpp @@ -1,910 +1,918 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_LANGLIST #include <qapplication.h> #include <qstyle.h> #include <qwidget.h> #include <qpainter.h> #include <qtimer.h> #include <qwhatsthis.h> #include "qcopenvelope_qws.h" #include "qpedecoration_qws.h" #include <qdialog.h> #include <qdrawutil.h> #include <qgfx_qws.h> #include "qpeapplication.h" #include "resource.h" #include "global.h" #include "qlibrary.h" #include "windowdecorationinterface.h" #include <qfile.h> #include <qsignal.h> #include <stdlib.h> extern QRect qt_maxWindowRect; #define WHATSTHIS_MODE #ifndef QT_NO_QWS_QPE_WM_STYLE #ifndef QT_NO_IMAGEIO_XPM /* XPM */ static const char * const qpe_close_xpm[] = { "16 16 3 1", " c None", ". c #FFFFFF", "+ c #000000", " ", " ", " ..... ", " ..+++++.. ", " .+++++++++. ", " .+..+++..+. ", " .++...+...++. ", " .+++.....+++. ", " .++++...++++. ", " .+++.....+++. ", " .++...+...++. ", " .+..+++..+. ", " .+++++++++. ", " ..+++++.. ", " ..... ", " "}; /* XPM */ static const char * const qpe_accept_xpm[] = { "16 16 3 1", " c None", ". c #FFFFFF", "+ c #000000", " ", " ", " ..... ", " ..+++++.. ", " .+++++++++. ", " .+++++++++. ", " .+++++++..++. ", " .++.+++...++. ", " .+...+...+++. ", " .+......++++. ", " .++....+++++. ", " .++..+++++. ", " .+++++++++. ", " ..+++++.. ", " ..... ", " "}; #endif // QT_NO_IMAGEIO_XPM class HackWidget : public QWidget { public: bool needsOk() { return (getWState() & WState_Reserved1 ) || (inherits( "QDialog" ) && !inherits( "QMessageBox" ) ); } }; static QImage scaleButton( const QImage &img, int height ) { if ( img.height() != 0 && img.height() != height ) { return img.smoothScale( img.width()*height/img.height(), height ); } else { return img; } } class TLWidget : public QWidget { public: QWSManager *manager() { return topData()->qwsManager; } QTLWExtra *topExtra() { return topData(); } void setWState( uint s ) { QWidget::setWState( s ); } void clearWState( uint s ) { QWidget::clearWState( s ); } }; QPEManager::QPEManager( QPEDecoration *d, QObject *parent ) : QObject( parent ), decoration( d ), helpState(0), inWhatsThis(FALSE) { wtTimer = new QTimer( this ); connect( wtTimer, SIGNAL(timeout()), this, SLOT(whatsThisTimeout()) ); } void QPEManager::updateActive() { QWidget *newActive = qApp->activeWindow(); if ( newActive && (QWidget*)active == newActive ) return; if ( active && (!newActive || ((TLWidget *)newActive)->manager()) ) { ((TLWidget *)(QWidget*)active)->manager()->removeEventFilter( this ); } if ( newActive && ((TLWidget *)newActive)->manager() ) { active = newActive; ((TLWidget *)(QWidget*)active)->manager()->installEventFilter( this ); } else if ( !newActive ) { active = 0; } } int QPEManager::pointInQpeRegion( QWidget *w, const QPoint &p ) { QRect rect(w->geometry()); if ( decoration->region( w, rect, (QWSDecoration::Region)QPEDecoration::Help ).contains(p) ) return QPEDecoration::Help; for (int i = QWSDecoration::LastRegion; i >= QWSDecoration::Title; i--) { if (decoration->region(w, rect, (QWSDecoration::Region)i).contains(p)) return (QWSDecoration::Region)i; } return QWSDecoration::None; } bool QPEManager::eventFilter( QObject *o, QEvent *e ) { QWSManager *mgr = (QWSManager *)o; QWidget *w = mgr->widget(); switch ( e->type() ) { case QEvent::MouseButtonPress: { pressTime = QTime::currentTime(); QPoint p = ((QMouseEvent*)e)->globalPos(); int inRegion = pointInQpeRegion( w, p ); #ifdef WHATSTHIS_MODE if ( !w->geometry().contains(p) && QWhatsThis::inWhatsThisMode() ) { QString text; switch ( inRegion ) { case QWSDecoration::Close: if ( ((HackWidget*)w)->needsOk() ) - text = tr("Click to close this window, discarding changes."); + text = QObject::tr("Click to close this window, discarding changes."); else - text = tr("Click to close this window."); + text = QObject::tr("Click to close this window."); break; case QWSDecoration::Minimize: - text = tr("Click to close this window and apply changes."); + text = QObject::tr("Click to close this window and apply changes."); break; case QWSDecoration::Maximize: if ( w->isMaximized() ) - text = tr("Click to make this window moveable."); + text = QObject::tr("Click to make this window moveable."); else - text = tr("Click to make this window use all available screen area."); + text = QObject::tr("Click to make this window use all available screen area."); break; default: break; } QWhatsThis::leaveWhatsThisMode( text ); whatsThisTimeout(); helpState = 0; return true; } #endif if ( inRegion == QPEDecoration::Help ) { #ifdef WHATSTHIS_MODE wtTimer->start( 400, TRUE ); #endif helpState = QWSButton::Clicked|QWSButton::MouseOver; drawButton( w, QPEDecoration::Help, helpState ); return true; } } break; case QEvent::MouseButtonRelease: if ( helpState & QWSButton::Clicked ) { wtTimer->stop(); helpState = 0; drawButton( w, QPEDecoration::Help, helpState ); QPoint p = ((QMouseEvent*)e)->globalPos(); if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { decoration->help( w ); } return true; } break; case QEvent::MouseMove: if ( helpState & QWSButton::Clicked ) { int oldState = helpState; QPoint p = ((QMouseEvent*)e)->globalPos(); if ( pointInQpeRegion( w, p ) == QPEDecoration::Help ) { helpState = QWSButton::Clicked|QWSButton::MouseOver; } else { helpState = 0; } if ( helpState != oldState ) drawButton( w, QPEDecoration::Help, helpState ); } break; default: break; } return QObject::eventFilter( o, e ); } void QPEManager::drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ) { QPainter painter(w); QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; painter.internalGfx()->setWidgetDeviceRegion( rgn ); painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); decoration->paintButton( &painter, w, (QWSDecoration::Region)r, state ); } void QPEManager::drawTitle( QWidget *w ) { QPainter painter(w); QRegion rgn = ((TLWidget *)w)->topExtra()->decor_allocated_region; painter.internalGfx()->setWidgetDeviceRegion( rgn ); painter.setClipRegion(decoration->region(w, w->rect(),QWSDecoration::All)); decoration->paint( &painter, w ); decoration->paintButton(&painter, w, QWSDecoration::Menu, 0); decoration->paintButton(&painter, w, QWSDecoration::Close, 0); decoration->paintButton(&painter, w, QWSDecoration::Minimize, 0); decoration->paintButton(&painter, w, QWSDecoration::Maximize, 0); } void QPEManager::whatsThisTimeout() { if ( !QWhatsThis::inWhatsThisMode() ) { if ( inWhatsThis ) { if ( whatsThis ) { QWidget *w = whatsThis; whatsThis = 0; drawTitle( w ); } wtTimer->stop(); } else { QWhatsThis::enterWhatsThisMode(); helpState = 0; updateActive(); if ( active ) { whatsThis = active; drawTitle( active ); // check periodically to see if we've left whats this mode wtTimer->start( 250 ); } } inWhatsThis = !inWhatsThis; } } //=========================================================================== static QImage *okImage( int th ) { static QImage *i = 0; if ( !i || i->height() != th ) { delete i; i = new QImage(scaleButton(Resource::loadImage("OKButton"),th)); } return i; } static QImage *closeImage( int th ) { static QImage *i = 0; if ( !i || i->height() != th ) { delete i; i = new QImage(scaleButton(Resource::loadImage("CloseButton"),th)); } return i; } static QImage *helpImage( int th ) { static QImage *i = 0; if ( !i || i->height() != th ) { delete i; i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th)); } return i; } static QImage *maximizeImage( int th ) { static QImage *i = 0; if ( !i || i->height() != th ) { delete i; i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th)); } return i; } int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const { switch ( m ) { case TitleHeight: if ( QApplication::desktop()->height() > 320 ) return 19; else return 15; case LeftBorder: case RightBorder: case TopBorder: case BottomBorder: return 4; case OKWidth: return okImage(metric(TitleHeight,wd))->width(); case CloseWidth: return closeImage(metric(TitleHeight,wd))->width(); case HelpWidth: return helpImage(metric(TitleHeight,wd))->width(); case MaximizeWidth: return maximizeImage(metric(TitleHeight,wd))->width(); case CornerGrabSize: return 16; } return 0; } void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const { int th = metric( TitleHeight, wd ); QRect r = wd->rect; switch ( a ) { case Border: { const QColorGroup &cg = wd->palette.active(); qDrawWinPanel(p, r.x()-metric(LeftBorder,wd), r.y()-th-metric(TopBorder,wd), r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd), r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd), cg, FALSE, &cg.brush(QColorGroup::Background)); } break; case Title: { const QColorGroup &cg = wd->palette.active(); QBrush titleBrush; QPen titleLines; if ( wd->flags & WindowData::Active ) { titleBrush = cg.brush(QColorGroup::Highlight); titleLines = titleBrush.color().dark(); } else { titleBrush = cg.brush(QColorGroup::Background); titleLines = titleBrush.color(); } p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush); p->setPen( titleLines ); for ( int i = r.y()-th; i < r.y(); i += 2 ) p->drawLine( r.left(), i, r.right(), i ); } break; case TitleText: p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th, r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd), th, QPainter::AlignVCenter, wd->caption); break; } } void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const { QImage *img = 0; switch ( b ) { case OK: img = okImage(metric(TitleHeight,wd)); break; case Close: img = closeImage(metric(TitleHeight,wd)); break; case Help: img = helpImage(metric(TitleHeight,wd)); break; case Maximize: img = maximizeImage(metric(TitleHeight,wd)); break; } if ( img ) { if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked)) p->drawImage(x+2, y+2, *img); else p->drawImage(x+1, y+1, *img); } } QRegion WindowDecorationInterface::mask( const WindowData *wd ) const { int th = metric(TitleHeight,wd); QRect rect( wd->rect ); QRect r(rect.left() - metric(LeftBorder,wd), rect.top() - th - metric(TopBorder,wd), rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd), rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd)); return QRegion(r) - rect; } class DefaultWindowDecoration : public WindowDecorationInterface { public: DefaultWindowDecoration() : ref(0) {} QString name() const { return "Default"; } QPixmap icon() const { return QPixmap(); } QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_WindowDecoration ) *iface = this; if ( *iface ) (*iface)->addRef(); return QS_OK; } Q_REFCOUNT private: ulong ref; }; static WindowDecorationInterface *wdiface = 0; static QLibrary *wdlib = 0; static QString libname; //=========================================================================== QPEDecoration::QPEDecoration() : QWSDefaultDecoration() { init ( libname ); } QPEDecoration::QPEDecoration( const QString &plugin ) : QWSDefaultDecoration() { init ( plugin ); } void QPEDecoration::init ( const QString &plugin ) { libname = plugin; if ( wdlib ) { wdiface->release(); wdlib->unload(); delete wdlib; wdlib = 0; } else { delete wdiface; } - + WindowDecorationInterface *iface = 0; - QString path = QPEApplication::qpeDir() + "/plugins/decorations"; - QLibrary *lib = new QLibrary( path + "/" + plugin ); + QString path = QPEApplication::qpeDir() + "/plugins/decorations/"; + + if ( plugin.find( ".so" ) > 0 ) { + // full library name supplied + path += plugin; + } else { + path += "lib" + plugin.lower() + ".so"; // compatibility + } + + QLibrary *lib = new QLibrary( path ); if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { wdiface = iface; wdlib = lib; } else { delete lib; wdiface = new DefaultWindowDecoration; } helpFile = QString(qApp->argv()[0]) + ".html"; QStringList helpPath = Global::helpPath(); helpExists = FALSE; for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { helpExists = QFile::exists( *it + "/" + helpFile ); - //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); + //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); } qpeManager = new QPEManager( this ); - + // Qtopia 1.5 compatibility imageOk = *okImage ( 15 ); imageClose = *closeImage ( 15 ); - imageHelp = *helpImage ( 15 ); + imageHelp = *helpImage ( 15 ); } QPEDecoration::~QPEDecoration() { delete qpeManager; } const char **QPEDecoration::menuPixmap() { return (const char **)0; } const char **QPEDecoration::closePixmap() { return (const char **)qpe_close_xpm; } const char **QPEDecoration::minimizePixmap() { return (const char **)qpe_accept_xpm; } const char **QPEDecoration::maximizePixmap() { return (const char **)0; } const char **QPEDecoration::normalizePixmap() { return (const char **)0; } int QPEDecoration::getTitleHeight( const QWidget *w ) { WindowDecorationInterface::WindowData wd; windowData( w, wd ); return wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); } /* If rect is empty, no frame is added. (a hack, really) */ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type) { qpeManager->updateActive(); WindowDecorationInterface::WindowData wd; windowData( widget, wd ); wd.rect = rect; int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); int okWidth = wdiface->metric(WindowDecorationInterface::OKWidth,&wd); int closeWidth = wdiface->metric(WindowDecorationInterface::CloseWidth,&wd); int helpWidth = wdiface->metric(WindowDecorationInterface::HelpWidth,&wd); int grab = wdiface->metric(WindowDecorationInterface::CornerGrabSize,&wd); QRegion region; switch ((int)type) { case Menu: break; case Maximize: if ( !widget->inherits( "QDialog" ) && qApp->desktop()->width() > 350 ) { int maximizeWidth = wdiface->metric(WindowDecorationInterface::MaximizeWidth,&wd); int left = rect.right() - maximizeWidth - closeWidth; if ( ((HackWidget *)widget)->needsOk() ) left -= okWidth; QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); region = r; } break; case Minimize: if ( ((HackWidget *)widget)->needsOk() ) { QRect r(rect.right() - okWidth, rect.top() - titleHeight, okWidth, titleHeight); if (r.left() > rect.left() + titleHeight) region = r; } break; case Close: { int left = rect.right() - closeWidth; if ( ((HackWidget *)widget)->needsOk() ) left -= okWidth; QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); region = r; } break; case Title: if ( !widget->isMaximized() ) { int width = rect.width() - helpWidth - closeWidth; if ( ((HackWidget *)widget)->needsOk() ) width -= okWidth; QRect r(rect.left()+helpWidth, rect.top() - titleHeight, width, titleHeight); if (r.width() > 0) region = r; } break; case Help: if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) { QRect r(rect.left(), rect.top() - titleHeight, helpWidth, titleHeight); region = r; } break; case Top: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int b = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); region = m & QRect( br.left()+grab, br.top(), br.width()-2*grab, b ); } break; case Left: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int b = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); region = m & QRect( br.left(), br.top()+grab, b, br.height()-2*grab ); } break; case Right: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int b = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); region = m & QRect( rect.right(), br.top()+grab, b, br.height()-2*grab ); } break; case Bottom: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int b = wdiface->metric(WindowDecorationInterface::BottomBorder,&wd); region = m & QRect( br.left()+grab, rect.bottom(), br.width()-2*grab, b ); } break; case TopLeft: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); int lb = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); QRegion crgn( br.left(), br.top(), grab, tb ); crgn |= QRect( br.left(), br.top(), lb, grab ); region = m & crgn; } break; case TopRight: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); int rb = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); QRegion crgn( br.right()-grab, br.top(), grab, tb ); crgn |= QRect( br.right()-rb, br.top(), rb, grab ); region = m & crgn; } break; case BottomLeft: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); region = m & QRect( br.left(), br.bottom()-grab, grab, grab ); } break; case BottomRight: if ( !widget->isMaximized() ) { QRegion m = wdiface->mask(&wd); QRect br = m.boundingRect(); region = m & QRect( br.right()-grab, br.bottom()-grab, grab, grab ); } break; case All: if ( widget->isMaximized() ) region = QWSDefaultDecoration::region(widget, rect, type); else region = wdiface->mask(&wd) - rect; break; default: region = QWSDefaultDecoration::region(widget, rect, type); break; } return region; } void QPEDecoration::paint(QPainter *painter, const QWidget *widget) { WindowDecorationInterface::WindowData wd; windowData( widget, wd ); int titleWidth = getTitleWidth(widget); int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); QRect rect(widget->rect()); // title bar rect QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); #ifndef QT_NO_PALETTE QRegion oldClip = painter->clipRegion(); painter->setClipRegion( oldClip - QRegion( tr ) ); // reduce flicker wdiface->drawArea( WindowDecorationInterface::Border, painter, &wd ); painter->setClipRegion( oldClip ); if (titleWidth > 0) { const QColorGroup &cg = widget->palette().active(); QBrush titleBrush; QPen titlePen; if ( wd.flags & WindowDecorationInterface::WindowData::Active ) { titleBrush = cg.brush(QColorGroup::Highlight); titlePen = cg.color(QColorGroup::HighlightedText); } else { titleBrush = cg.brush(QColorGroup::Background); titlePen = cg.color(QColorGroup::Text); } wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd ); // Draw caption painter->setPen(titlePen); QFont f( QApplication::font() ); f.setWeight( QFont::Bold ); painter->setFont(f); wdiface->drawArea( WindowDecorationInterface::TitleText, painter, &wd ); } #endif //QT_NO_PALETTE paintButton( painter, widget, (QWSDecoration::Region)Help, 0 ); } void QPEDecoration::paintButton(QPainter *painter, const QWidget *w, QWSDecoration::Region type, int state) { WindowDecorationInterface::Button b; switch ((int)type) { case Close: b = WindowDecorationInterface::Close; break; case Minimize: if ( ((HackWidget *)w)->needsOk() ) b = WindowDecorationInterface::OK; else if ( helpExists ) b = WindowDecorationInterface::Help; else return; break; case Help: b = WindowDecorationInterface::Help; break; case Maximize: b = WindowDecorationInterface::Maximize; break; default: return; } WindowDecorationInterface::WindowData wd; windowData( w, wd ); int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); QRect rect(w->rect()); QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); QRect brect(region(w, w->rect(), type).boundingRect()); const QColorGroup &cg = w->palette().active(); if ( wd.flags & WindowDecorationInterface::WindowData::Active ) painter->setPen( cg.color(QColorGroup::HighlightedText) ); else painter->setPen( cg.color(QColorGroup::Text) ); QRegion oldClip = painter->clipRegion(); painter->setClipRegion( QRect(brect.x(), tr.y(), brect.width(), tr.height()) ); // reduce flicker wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd ); wdiface->drawButton( b, painter, &wd, brect.x(), brect.y(), brect.width(), brect.height(), (QWSButton::State)state ); painter->setClipRegion( oldClip ); } //#define QPE_DONT_SHOW_TITLEBAR void QPEDecoration::maximize( QWidget *widget ) { #ifdef QPE_DONT_SHOW_TITLEBAR if ( !widget->inherits( "QDialog" ) ) { widget->setGeometry( qt_maxWindowRect ); } else #endif { QWSDecoration::maximize( widget ); } } #ifndef QT_NO_DIALOG class HackDialog : public QDialog { public: void acceptIt() { if ( isA( "QMessageBox" ) ) qApp->postEvent( this, new QKeyEvent( QEvent::KeyPress, Key_Enter, '\n', 0, "\n" ) ); else accept(); } }; #endif void QPEDecoration::minimize( QWidget *widget ) { #ifndef QT_NO_DIALOG // We use the minimize button as an "accept" button. if ( widget->inherits( "QDialog" ) ) { HackDialog *d = (HackDialog *)widget; d->acceptIt(); } #endif else if ( ((HackWidget *)widget)->needsOk() ) { QSignal s; s.connect( widget, SLOT( accept() ) ); s.activate(); } else { help( widget ); } } void QPEDecoration::help( QWidget *w ) { if ( helpExists ) { Global::execute( "helpbrowser", helpFile ); } else if ( w && w->testWFlags(Qt::WStyle_ContextHelp) ) { QWhatsThis::enterWhatsThisMode(); - QWhatsThis::leaveWhatsThisMode( qApp->tr( + QWhatsThis::leaveWhatsThisMode( QObject::tr( "<Qt>Comprehensive help is not available for this application, " "however there is context-sensitive help.<p>To use context-sensitive help:<p>" "<ol><li>click and hold the help button." "<li>when the title bar shows <b>What's this...</b>, " "click on any control.</ol></Qt>" ) ); } } void QPEDecoration::windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const { wd.rect = w->rect(); if ( qpeManager->whatsThisWidget() == w ) - wd.caption = qApp->tr("What's this..." ); + wd.caption = QObject::tr("What's this..." ); else wd.caption = w->caption(); wd.palette = qApp->palette(); wd.flags = 0; wd.flags |= w->isMaximized() ? WindowDecorationInterface::WindowData::Maximized : 0; wd.flags |= w->testWFlags(Qt::WStyle_Dialog) ? WindowDecorationInterface::WindowData::Dialog : 0; const QWidget *active = qpeManager->activeWidget(); wd.flags |= w == active ? WindowDecorationInterface::WindowData::Active : 0; wd.reserved = 1; } /* #ifndef QT_NO_POPUPMENU QPopupMenu *QPEDecoration::menu(QWSManager*, const QWidget*, const QPoint&) { return 0; } #endif */ #endif // QT_NO_QWS_QPE_WM_STYLE diff --git a/library/qpedecoration_qws.h b/library/qpedecoration_qws.h index 6628ba2..d0a2005 100644 --- a/library/qpedecoration_qws.h +++ b/library/qpedecoration_qws.h @@ -1,113 +1,113 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef QPE_DECORATION_QWS_H__ #define QPE_DECORATION_QWS_H__ #ifdef QWS #include <qwsdefaultdecoration_qws.h> #include <qimage.h> #include <qdatetime.h> #include <qguardedptr.h> #include "windowdecorationinterface.h" #ifndef QT_NO_QWS_QPE_WM_STYLE class QPEManager; class QTimer; class QPEDecoration : public QWSDefaultDecoration { public: QPEDecoration(); QPEDecoration( const QString &plugin ); virtual ~QPEDecoration(); virtual QRegion region(const QWidget *, const QRect &rect, Region); virtual void paint(QPainter *, const QWidget *); virtual void paintButton(QPainter *, const QWidget *, Region, int state); void maximize( QWidget * ); void minimize( QWidget * ); virtual void help( QWidget * ); enum QPERegion { Help=LastRegion+1 }; void buttonClicked( QPERegion r ); - + protected: virtual int getTitleHeight(const QWidget *); virtual const char **menuPixmap(); virtual const char **closePixmap(); virtual const char **minimizePixmap(); virtual const char **maximizePixmap(); virtual const char **normalizePixmap(); private: void windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const; void init ( const QString & ); protected: QImage imageOk; QImage imageClose; QImage imageHelp; QString helpFile; bool helpExists; QPEManager *qpeManager; }; class QPEManager : public QObject { Q_OBJECT friend class QPEDecoration; public: QPEManager( QPEDecoration *d, QObject *parent=0 ); void updateActive(); const QWidget *activeWidget() const { return (const QWidget *)active; } const QWidget *whatsThisWidget() const { return (const QWidget *)whatsThis; } protected: int pointInQpeRegion( QWidget *w, const QPoint &p ); virtual bool eventFilter( QObject *, QEvent * ); void drawButton( QWidget *w, QPEDecoration::QPERegion r, int state ); void drawTitle( QWidget *w ); protected slots: void whatsThisTimeout(); protected: QPEDecoration *decoration; QGuardedPtr<QWidget> active; int helpState; QTime pressTime; QTimer *wtTimer; bool inWhatsThis; QGuardedPtr<QWidget> whatsThis; }; #endif // QT_NO_QWS_QPE_WM_STYLE #endif // QPE_DECORATION_QWS_H__ #endif // QWS diff --git a/library/qpemessagebox.cpp b/library/qpemessagebox.cpp index 02db760..13c45f1 100644 --- a/library/qpemessagebox.cpp +++ b/library/qpemessagebox.cpp @@ -1,13 +1,33 @@ +#include "stringutil.h" + #include "qpemessagebox.h" #include <qmessagebox.h> +static void never_called_tr_function_um_libqpe_ts_etwas_unter_zu_jubeln() { +(void)QMessageBox::tr("Yes"); +(void)QMessageBox::tr("No"); +} + + +/*! + \class QPEMessageBox qpemessagebox.h + \brief A message box that provides yes, no and cancel options. + + \ingroup qtopiaemb + */ + +/*! + Displays a QMessageBox with parent \a parent and caption \a caption. + The message displayed is "Are you sure you want to delete: ", + followed by \a object. + */ bool QPEMessageBox::confirmDelete( QWidget *parent, const QString & caption, const QString & object ) { - QString msg = QObject::tr("Are you sure you want to delete\n %1?").arg( object ); + QString msg = QObject::tr("<qt>Are you sure you want to delete\n %1?</qt>").arg( Qtopia::escapeString( object ) ); // use <qt> an esacpe String.... int r = QMessageBox::warning( parent, caption, msg, QMessageBox::Yes, QMessageBox::No|QMessageBox::Default| QMessageBox::Escape, 0 ); return r == QMessageBox::Yes; } diff --git a/library/sound.cpp b/library/sound.cpp index 1ff3b3f..c8704f9 100644 --- a/library/sound.cpp +++ b/library/sound.cpp @@ -1,198 +1,221 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qpe/resource.h> #include <qpe/sound.h> #include <qpe/qcopenvelope_qws.h> #include <qsound.h> #include <qfile.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> #include <sys/soundcard.h> #include "config.h" #include <qmessagebox.h> #ifndef QT_NO_SOUND static int WAVsoundDuration(const QString& filename) { // bad solution // most of this is copied from qsoundqss.cpp QFile input(filename); if ( !input.open(IO_ReadOnly) ) return 0; struct QRiffChunk { char id[4]; Q_UINT32 size; char data[4/*size*/]; } chunk; struct { Q_INT16 formatTag; Q_INT16 channels; Q_INT32 samplesPerSec; Q_INT32 avgBytesPerSec; Q_INT16 blockAlign; Q_INT16 wBitsPerSample; } chunkdata; int total = 0; while(1) { // Keep reading chunks... const int n = sizeof(chunk)-sizeof(chunk.data); if ( input.readBlock((char*)&chunk,n) != n ) break; if ( qstrncmp(chunk.id,"data",4) == 0 ) { total += chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0; //qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0); input.at(input.at()+chunk.size-4); } else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) { char d[4]; if ( input.readBlock(d,4) != 4 ) return 0; if ( qstrncmp(d,"WAVE",4) != 0 ) { // skip //qDebug("skip %.4s RIFF chunk",d); if ( chunk.size < 10000000 ) (void)input.at(input.at()+chunk.size-4); } } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) { if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) ) return 0; #define WAVE_FORMAT_PCM 1 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) { //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag); return 0; } } else { //qDebug("skip %.4s chunk",chunk.id); // ignored chunk if ( chunk.size < 10000000 ) (void)input.at(input.at()+chunk.size); } } //qDebug("%dms",total); return total; } class SoundData : public QSound { public: SoundData ( const QString& name ) : QSound ( Resource::findSound ( name )), filename ( Resource::findSound ( name )) { - loopsleft=0; + loopsleft=0; ms = WAVsoundDuration(filename); } void playLoop ( int loopcnt = -1 ) { // needs server support loopsleft = loopcnt; if ( ms ) startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency play ( ); } void timerEvent ( QTimerEvent *e ) { if ( loopsleft >= 0 ) { if ( --loopsleft <= 0 ) { killTimer ( e-> timerId ( )); loopsleft = 0; return; } - } + } play(); } - + bool isFinished ( ) const { return ( loopsleft == 0 ); } private: QString filename; int loopsleft; int ms; }; #endif +/*! Opens a wave sound file \a name for playing + * Resource is used for finding the file + **/ Sound::Sound(const QString& name) { #ifndef QT_NO_SOUND d = new SoundData(name); #endif } +/*! Destroys the sound */ Sound::~Sound() { #ifndef QT_NO_SOUND delete d; #endif } +/*! Play the sound once */ void Sound::play() { #ifndef QT_NO_SOUND d->playLoop(1); #endif } +/*! Play the sound, repeatedly until stop() is called */ void Sound::playLoop() { #ifndef QT_NO_SOUND d->killTimers(); d->playLoop(); #endif } +/*! Do not repeat the sound after it finishes. This will end a playLoop() */ void Sound::stop() { #ifndef QT_NO_SOUND d->killTimers(); #endif } bool Sound::isFinished() const { #ifndef QT_NO_SOUND return d->isFinished(); #else return true; #endif } +/*! Sounds the audible system alarm. This is used for applications such + as Calendar when it needs to alarm the user of an event. +*/ void Sound::soundAlarm() { #ifndef QT_NO_COP QCopEnvelope( "QPE/TaskBar", "soundAlarm()" ); -#endif +#endif } + + +/*! \class Sound + \brief The Sound class plays WAVE sound files and can invoke the audible alarm. + + The Sound class is constructed with the .wav music file name. The Sound + class retrieves the sound file from the shared Resource class. This class + ties together QSound and the available sound resources. + + To sound an audible system alarm, call the static method soundAlarm() + + \ingroup qtopiaemb +*/ diff --git a/library/storage.cpp b/library/storage.cpp index 4e07ec6..1ce43bc 100644 --- a/library/storage.cpp +++ b/library/storage.cpp @@ -1,261 +1,346 @@ /********************************************************************** ** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> ** Copyright (C) Lorn Potter <llornkcor@handhelds.org> ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Opie Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qpe/storage.h> #if defined(QT_QWS_SL5XXX) #include <qpe/custom.h> #endif #include <qfile.h> #include <qtimer.h> #include <qcopchannel_qws.h> #include <stdio.h> #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) #include <sys/vfs.h> #include <mntent.h> #endif #include <qstringlist.h> #include <sys/vfs.h> #include <mntent.h> static bool isCF(const QString& m) { FILE* f = fopen("/var/run/stab", "r"); if (!f) f = fopen("/var/state/pcmcia/stab", "r"); if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); if ( f ) { char line[1024]; char devtype[80]; char devname[80]; while ( fgets( line, 1024, f ) ) { // 0 ide ide-cs 0 hda 3 0 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) { if ( QString(devtype) == "ide" && m.find(devname)>0 ) { fclose(f); return TRUE; } } } fclose(f); } return FALSE; } +/*! \class StorageInfo storage.h + \brief The StorageInfo class describes the disks mounted on the file system. + + This class provides access to the mount information for the Linux + filesystem. Each mount point is represented by the FileSystem class. + To ensure this class has the most up to date size information, call + the update() method. Note that this will automatically be signaled + by the operating system when a disk has been mounted or unmounted. + + \ingroup qtopiaemb +*/ + +/*! Constructor that determines the current mount points of the filesystem. + The standard \a parent parameters is passed on to QObject. + */ StorageInfo::StorageInfo( QObject *parent ) : QObject( parent ) { mFileSystems.setAutoDelete( TRUE ); channel = new QCopChannel( "QPE/Card", this ); connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); update(); } +/*! Returns the longest matching FileSystem that starts with the + same prefix as \a filename as its mount point. +*/ const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) { for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { if ( filename.startsWith( (*i)->path() ) ) return (*i); } return 0; } void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) { if ( msg == "mtabChanged()" ) update(); } + + +/*! Updates the mount and free space available information for each mount + point. This method is automatically called when a disk is mounted or + unmounted. +*/ // cause of the lack of a d pointer we need // to store informations in a config file :( void StorageInfo::update() { //qDebug("StorageInfo::updating"); #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) struct mntent *me; FILE *mntfp = setmntent( "/etc/mtab", "r" ); QStringList curdisks; QStringList curopts; QStringList curfs; bool rebuild = FALSE; int n=0; if ( mntfp ) { while ( (me = getmntent( mntfp )) != 0 ) { QString fs = me->mnt_fsname; if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" || fs.left( 14 ) == "/dev/mmc/part1" || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" ) { n++; curdisks.append(fs); curopts.append( me->mnt_opts ); //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); curfs.append( me->mnt_dir ); bool found = FALSE; for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { if ( (*i)->disk() == fs ) { found = TRUE; break; } } if ( !found ) rebuild = TRUE; } } endmntent( mntfp ); } if ( rebuild || n != (int)mFileSystems.count() ) { mFileSystems.clear(); QStringList::ConstIterator it=curdisks.begin(); QStringList::ConstIterator fsit=curfs.begin(); QStringList::ConstIterator optsIt=curopts.begin(); for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) { QString opts = *optsIt; QString disk = *it; QString humanname; bool removable = FALSE; if ( isCF(disk) ) { humanname = tr("CF Card"); removable = TRUE; } else if ( disk == "/dev/hda1" ) { humanname = tr("Hard Disk"); } else if ( disk.left(9) == "/dev/mmcd" ) { humanname = tr("SD Card"); removable = TRUE; } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) { humanname = tr("MMC Card"); removable = TRUE; } else if ( disk.left(7) == "/dev/hd" ) humanname = tr("Hard Disk") + " " + disk; else if ( disk.left(7) == "/dev/sd" ) humanname = tr("SCSI Hard Disk") + " " + disk; else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs humanname = tr("Internal Memory"); else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) humanname = tr("Internal Storage"); else if ( disk.left(14) == "/dev/mtdblock/" ) humanname = tr("Internal Storage") + " " + disk; else if ( disk.left(13) == "/dev/mtdblock" ) humanname = tr("Internal Storage") + " " + disk; else if ( disk.left(9) == "/dev/root" ) humanname = tr("Internal Storage") + " " + disk; else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs humanname = tr("Internal Memory"); FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts ); mFileSystems.append( fs ); } emit disksChanged(); } else { // just update them for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) i.current()->update(); } #endif } bool deviceTab( const char *device) { QString name = device; bool hasDevice=false; struct mntent *me; FILE *mntfp = setmntent( "/etc/mtab", "r" ); if ( mntfp ) { while ( (me = getmntent( mntfp )) != 0 ) { QString deviceName = me->mnt_fsname; // qDebug(deviceName); if( deviceName.left(name.length()) == name) { hasDevice = true; } } } endmntent( mntfp ); return hasDevice; } /*! * @fn static bool StorageInfo::hasCf() * @brief returns whether device has Cf mounted * */ bool StorageInfo::hasCf() { return deviceTab("/dev/hd"); } /*! * @fn static bool StorageInfo::hasSd() * @brief returns whether device has SD mounted * */ bool StorageInfo::hasSd() { return deviceTab("/dev/mmcd"); } /*! * @fn static bool StorageInfo::hasMmc() * @brief reutrns whether device has mmc mounted * */ bool StorageInfo::hasMmc() { bool hasMmc=false; if( deviceTab("/dev/mmc/part")) hasMmc=true; if( deviceTab("/dev/mmcd")) hasMmc=true; return hasMmc; } +/*! \fn const QList<FileSystem> &StorageInfo::fileSystems() const + Returns a list of all available mounted file systems. + + \warning This may change in Qtopia 3.x to return only relevant Qtopia file systems (and ignore mount points such as /tmp) +*/ +/*! \fn void StorageInfo::disksChanged() + Gets emitted when a disk has been mounted or unmounted, such as when + a CF c +*/ //--------------------------------------------------------------------------- FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o ) : fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o ) { update(); } void FileSystem::update() { #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) struct statfs fs; if ( !statfs( fspath.latin1(), &fs ) ) { blkSize = fs.f_bsize; totalBlks = fs.f_blocks; availBlks = fs.f_bavail; } else { blkSize = 0; totalBlks = 0; availBlks = 0; } #endif } +/*! \class FileSystem storage.h + \brief The FileSystem class describes a single mount point. + + This class simply returns information about a mount point, including + file system name, mount point, human readable name, size information + and mount options information. + \ingroup qtopiaemb + + \sa StorageInfo +*/ + +/*! \fn const QString &FileSystem::disk() const + Returns the file system name, such as /dev/hda3 +*/ + +/*! \fn const QString &FileSystem::path() const + Returns the mount path, such as /home +*/ + +/*! \fn const QString &FileSystem::name() const + Returns the translated, human readable name for the mount directory. +*/ + +/*! \fn const QString &FileSystem::options() const + Returns the mount options +*/ + +/*! \fn long FileSystem::blockSize() const + Returns the size of each block on the file system. +*/ + +/*! \fn long FileSystem::totalBlocks() const + Returns the total number of blocks on the file system +*/ + +/*! \fn long FileSystem::availBlocks() const + Returns the number of available blocks on the file system + */ + +/*! \fn bool FileSystem::isRemovable() const + Returns flag whether the file system can be removed, such as a CF card + would be removable, but the internal memory wouldn't +*/ + +/*! \fn bool FileSystem::isWritable() const + Returns flag whether the file system is mounted as writable or read-only. + Returns FALSE if read-only, TRUE if read and write. +*/ + +/*! \fn QStringList StorageInfo::fileSystemNames() const + Returns a list of filesystem names. +*/ diff --git a/library/task-opie-applets.control b/library/task-opie-applets.control index 6ab1bb0..4714321 100644 --- a/library/task-opie-applets.control +++ b/library/task-opie-applets.control @@ -1,10 +1,10 @@ Package: task-opie-applets Files: Priority: optional Section: opie/applications Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION Depends: task-opie-minimal, opie-batteryapplet, opie-clockapplet, opie-vmemo, opie-volumeapplet, opie-screenshotapplet, opie-pickboard, opie-multikey, opie-jumpx, opie-handwriting, opie-dvorak, opie-unikeyboard Description: Opie taskbar applets All applets for the taskbar +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-apps.control b/library/task-opie-apps.control index 567b50a..a9f00db 100644 --- a/library/task-opie-apps.control +++ b/library/task-opie-apps.control @@ -1,10 +1,10 @@ Package: task-opie-apps Files: Priority: optional Section: opie/applications Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-pim, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-filebrowser, opie-libmadplugin, opie-libmpeg3plugin, opie-mail2, opie-mediaplayer, opie-qpdf, opie-showimg, opie-sounds, opie-sheet, opie-sysinfo, opie-systemtime, opie-tableviewer, opie-textedit, opie-wavplugin, timezones +Depends: task-opie-pim, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-libmadplugin, opie-libmpeg3plugin, opie-mail2, opie-mediaplayer, opie-qpdf, opie-showimg, opie-sounds, opie-sheet, opie-sysinfo, opie-systemtime, opie-tableviewer, opie-textedit, opie-wavplugin, timezones Description: Opie apps Most applications. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-complete.control b/library/task-opie-complete.control index 74ed446..983f6fb 100644 --- a/library/task-opie-complete.control +++ b/library/task-opie-complete.control @@ -1,10 +1,10 @@ Package: task-opie-complete Files: Priority: optional Section: opie/applications Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION Depends: task-opie-apps, task-opie-settings, task-opie-games, task-opie-applets Description: All of Opie All apps that are in the feed. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-games.control b/library/task-opie-games.control index 4e40b8e..e2a0ade 100644 --- a/library/task-opie-games.control +++ b/library/task-opie-games.control @@ -1,10 +1,10 @@ Package: task-opie-games Files: Priority: optional Section: opie/games Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION Depends: task-opie-minimal, opie-fifteen, opie-go, opie-kbill, opie-kcheckers, opie-kpacman, opie-minesweep, opie-parashoot, opie-qasteroids, opie-snake, opie-solitaire, opie-tetrix, opie-tictac, opie-wordgame Description: Opie game pack The full load of Opie games. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-minimal.control b/library/task-opie-minimal.control index 6dec827..c629d51 100644 --- a/library/task-opie-minimal.control +++ b/library/task-opie-minimal.control @@ -1,13 +1,14 @@ Package: task-opie-minimal Files: Priority: required Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm Version: $QPE_VERSION-$SUB_VERSION -Depends: libqte2 (>=$QTE_VERSION), qte-fonts (>=$QTE_VERSION), opie-common, libqpe1, libopie1, opie-qcop, opie-sounds, apmd, opie-pics, timezones, opie-taskbar, opie-opiealarm +Depends: libqte2 (>=$QTE_VERSION), qte-fonts (>=$QTE_VERSION), opie-common, libqpe1, libopie1, opie-qcop, opie-sounds, apmd, opie-pics, timezones, opie-aqpkg, opie-taskbar, opie-opiealarm, opie-login Provides: opie-base, qpe-base Replaces: opie-base, qpe-base Description: Bootstrap Opie environment(minimal) A complete GUI environment for handhelds. This is the _minimal_ version. You will probably want to install one of the opie-i18n-* packages. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-pim.control b/library/task-opie-pim.control index addbab5..4ee4ede 100644 --- a/library/task-opie-pim.control +++ b/library/task-opie-pim.control @@ -1,10 +1,10 @@ Package: task-opie-pim Files: Priority: optional Section: opie/applications Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-minimal, opie-datebook, opie-todo, opie-addressbook, task-opie-today, opie-drawpad, opie-multikey +Depends: task-opie-minimal, opie-datebook, opie-todo, opie-addressbook, task-opie-today, opie-drawpad, opie-multikey, opie-osearch Description: Opie pim applications Base pack of opie pim applications. Also includes keyboard input. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie-settings.control b/library/task-opie-settings.control index 4944229..e8ffb45 100644 --- a/library/task-opie-settings.control +++ b/library/task-opie-settings.control @@ -1,10 +1,11 @@ Package: task-opie-settings Files: Priority: optional Section: opie/applications Maintainer: Maximilian Reiss <max.reiss@gmx.de> Architecture: arm Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-minimal, opie-citytime, opie-launcher-settings, opie-light-and-power, opie-security, opie-appearance, opie-backup, opie-language, opie-mediummount, opie-networksettings, opie-networksettingsplugin-wlan, opie-tabmanager +Depends: task-opie-minimal, opie-appearance, opie-security, opie-systemtime, opie-light-and-power Description: Opie settings app All settings apps +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/task-opie.control b/library/task-opie.control index 00841d3..57bb403 100644 --- a/library/task-opie.control +++ b/library/task-opie.control @@ -1,11 +1,11 @@ Package: task-opie Files: Priority: required Section: opie/system Maintainer: Opie Team <opie@handhelds.org> Architecture: arm -Version: $QPE_VERSION-$SUB_VERSION -Depends: task-opie-pim, opie-aqpkg, opie-multikey, opie-handwriting, opie-batteryapplet, opie-clockapplet, opie-volumeapplet, opie-clipboardapplet, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-irdaapplet, opie-launcher-settings, opie-light-and-power, opie-appearance, opie-login, opie-opiealarm, opie-qpdf, opie-showimg, opie-solitaire, opie-sysinfo, opie-textedit, opie-systemtime, opie-cardmon, opie-backup, opie-networksettings, opie-button-settings +Depends: task-opie-pim, opie-aqpkg, opie-multikey, opie-handwriting, opie-batteryapplet, opie-clockapplet, opie-volumeapplet, opie-clipboardapplet, opie-advancedfm, opie-calculator, opie-citytime, opie-clock, opie-embeddedkonsole, opie-irdaapplet, opie-launcher-settings, opie-light-and-power, opie-appearance, opie-login, opie-opiealarm, opie-qpdf, opie-showimg, opie-solitaire, opie-sysinfo, opie-textedit, opie-systemtime, opie-cardmon, opie-backup, opie-networksettings, opie-button-settings, opie-deco-flat, opie-style-flat Description: Bootstrap Opie environment A complete GUI environment for handhelds. You will probably want to install one of the opie-i18n-* packages. +Version: $QPE_VERSION$EXTRAVERSION diff --git a/library/timestring.cpp b/library/timestring.cpp index 6443b6b..8f60b72 100644 --- a/library/timestring.cpp +++ b/library/timestring.cpp @@ -1,365 +1,365 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "timestring.h" #include <qobject.h> #include <qpe/qpeapplication.h> //for qApp #include "config.h" class TimeStringFormatKeeper : public QObject { Q_OBJECT public: static DateFormat currentFormat() { if ( !self ) self = new TimeStringFormatKeeper; return self->format; } private slots: void formatChanged( DateFormat f ) { format = f; } private: static TimeStringFormatKeeper *self; DateFormat format; TimeStringFormatKeeper() : QObject( qApp ) { Config config("qpe"); config.setGroup( "Date" ); format = DateFormat(QChar(config.readEntry("Separator", "/")[0]), (DateFormat::Order)config .readNumEntry("ShortOrder", DateFormat::DayMonthYear), (DateFormat::Order)config.readNumEntry("LongOrder", DateFormat::DayMonthYear)); connect( qApp, SIGNAL( dateFormatChanged(DateFormat) ), this, SLOT( formatChanged( DateFormat ) ) ); } }; TimeStringFormatKeeper *TimeStringFormatKeeper::self = 0; QString DateFormat::toNumberString() const { QString buf = ""; // for each part of the order for (int i = 0; i < 3; i++) { // switch on the relavent 3 bits. switch((_shortOrder >> (i * 3)) & 0x0007) { case 0x0001: buf += QObject::tr( "D" ); break; case 0x0002: buf += QObject::tr( "M" ); break; case 0x0004: buf += QObject::tr( "Y" ); break; } if (i < 2) buf += _shortSeparator; } return buf; } QString DateFormat::toWordString() const { QString buf = ""; // for each part of the order for (int i = 0; i < 3; i++) { // switch on the relavent 3 bits. switch((_longOrder >> (i * 3)) & 0x0007) { case 0x0001: buf += QObject::tr( "day" ); if (i < 2) { if ((_shortOrder << ((i+1) * 3)) & 0x0007) buf += ", "; else buf += " "; } break; case 0x0002: buf += QObject::tr( "month" ); if (i < 2) buf += " "; break; case 0x0004: buf += QObject::tr( "year" ); if (i < 2) buf += ", "; break; } } return buf; } QString DateFormat::numberDate(const QDate &d, int v) const { QString buf = ""; int pad = 2; // for each part of the order for (int i = 0; i < 3; i++) { // switch on the relavent 3 bits. switch((_shortOrder >> (i * 3)) & 0x0007) { case 0x0001: if (pad==2) buf += QString().sprintf("%02d",d.day()); else buf += QString().sprintf("%d",d.day()); break; case 0x0002: if (i==0) { // no padding with only MM/DD/YY format pad=0; } if (pad==2) buf += QString().sprintf("%02d",d.month()); else buf += QString().sprintf("%d",d.month()); break; case 0x0004: { int year = d.year(); if (!(v & longNumber)) year = year % 100; buf += QString().sprintf("%02d",year); } break; } if (i < 2) buf += _shortSeparator; } return buf; } QString DateFormat::wordDate(const QDate &d, int v) const { QString buf = ""; // for each part of the order if (v & showWeekDay) { QString weekDay = d.dayName(d.dayOfWeek()); if (!(v & longWord)) { weekDay = weekDay.left(3); } buf += weekDay; if ((_longOrder & 0x0007) == 0x0002) buf += ' '; else buf += ", "; } for (int i = 0; i < 3; i++) { // switch on the relavent 3 bits. switch((_longOrder >> (i * 3)) & 0x0007) { case 0x0001: if (i==1) { buf += QString().sprintf("%02d, ",d.day()); } else { buf += QString().sprintf("%2d",d.day()); if (separator()=='.') // 2002/1/11 buf += ". "; else buf += " "; } break; case 0x0002: { QString monthName = d.monthName(d.month()); if (!(v & longWord)) { monthName = monthName.left(3); } buf += monthName; } if (i < 2) buf += " "; break; case 0x0004: { int year = d.year(); if (!(v & longNumber)) year = year % 100; if (year < 10) buf += "0"; buf += QString::number(year); } if (i < 2) buf += ", "; break; } } return buf; } #ifndef QT_NO_DATASTREAM void DateFormat::save(QDataStream &d) const { d << _shortSeparator.unicode(); uint v= _shortOrder; d << v; v = _longOrder; d << v; } void DateFormat::load(QDataStream &d) { ushort value; d >> value; _shortSeparator = QChar(value); uint v = 0; d >> v; _shortOrder = (Order)v; v = 0; d >> v; _longOrder = (Order)v; } QDataStream &operator<<(QDataStream &s, const DateFormat&df) { df.save(s); return s; } QDataStream &operator>>(QDataStream &s, DateFormat&df) { df.load(s); return s; } #endif QString TimeString::shortDate( const QDate &d, DateFormat dtf ) { return dtf.wordDate(d); } QString TimeString::dateString( const QDate &d, DateFormat dtf ) { - return dtf.wordDate(d, DateFormat::longNumber | DateFormat::longWord); + return QObject::tr( dtf.wordDate(d, DateFormat::longNumber | DateFormat::longWord) ); } QString TimeString::longDateString( const QDate &d, DateFormat dtf ) { - return dtf.wordDate(d, DateFormat::showWeekDay | DateFormat::longNumber - | DateFormat::longWord); + return QObject::tr( dtf.wordDate(d, DateFormat::showWeekDay | DateFormat::longNumber + | DateFormat::longWord) ); } DateFormat TimeString::currentDateFormat() { return TimeStringFormatKeeper::currentFormat(); } QString TimeString::dateString( const QDateTime &dt, bool ampm, bool seconds, DateFormat dtf ) { const QDate& d = dt.date(); const QTime& t = dt.time(); // based on QDateTime::toString() QString buf = timeString(t,ampm,seconds); buf += " "; buf += longDateString( d, dtf ); return buf; } QString TimeString::timeString( const QTime &t, bool ampm, bool seconds ) { if ( !ampm ) { if ( seconds ) return t.toString(); QString r = QString::number(t.hour()); if ( t.hour() < 10 ) r.prepend( "0" ); r.append( ":" ); if ( t.minute() < 10 ) r.append( "0" ); r.append(QString::number(t.minute())); return r; } // ### else the hard case that should disappear in Qt 3.0 QString argString = seconds ? "%4:%5:%6 %7" : "%4:%5 %7"; int hour = t.hour(); QString strMin = QString::number( t.minute() ); QString strSec = QString::number( t.second() ); if ( hour > 12 ) argString = argString.arg( hour - 12, 2 ); else { if ( hour == 0 ) argString = argString.arg( 12 ); else argString = argString.arg( hour, 2 ); } if ( t.minute() < 10 ) strMin.prepend( "0" ); if ( t.second() < 10 ) strSec.prepend( "0" ); argString = argString.arg( strMin ); if ( seconds ) argString = argString.arg( strSec ); if ( hour >= 12 ) argString = argString.arg( QObject::tr("PM") ); else argString = argString.arg( QObject::tr("AM") ); return argString; } QString TimeString::shortTime( bool ampm, bool seconds ) { static const char* const day[] = { QT_TRANSLATE_NOOP( "QObject", "Mon" ), QT_TRANSLATE_NOOP( "QObject", "Tue" ), QT_TRANSLATE_NOOP( "QObject", "Wed" ), QT_TRANSLATE_NOOP( "QObject", "Thu" ), QT_TRANSLATE_NOOP( "QObject", "Fri" ), QT_TRANSLATE_NOOP( "QObject", "Sat" ), QT_TRANSLATE_NOOP( "QObject", "Sun" ) }; // just create a shorter time String QDateTime dtTmp = QDateTime::currentDateTime(); QString strTime; strTime = QObject::tr( day[dtTmp.date().dayOfWeek()-1] ) + " " + timeString( dtTmp.time(), ampm, seconds ); return strTime; } QString TimeString::dateString( const QDateTime &t, bool ampm ) { return dateString(t,ampm,FALSE); } QString TimeString::timeString( const QTime &t, bool ampm) { return timeString(t,ampm,FALSE); } QString TimeString::shortTime( bool ampm ) { return shortTime(ampm,FALSE); } QString TimeString::numberDateString( const QDate &d, DateFormat dtf ) { return dtf.numberDate(d); } QString TimeString::longNumberDateString( const QDate &d, DateFormat dtf ) { return dtf.numberDate(d,DateFormat::longNumber); } #include "timestring.moc" diff --git a/library/tzselect.cpp b/library/tzselect.cpp index 335037e..4343eab 100644 --- a/library/tzselect.cpp +++ b/library/tzselect.cpp @@ -1,277 +1,303 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define QTOPIA_INTERNAL_TZSELECT_INC_LOCAL #include "tzselect.h" #include "resource.h" #include "global.h" #include "config.h" #include <qtoolbutton.h> #include <qfile.h> #include <stdlib.h> #include <qcopchannel_qws.h> #include <qpe/qpeapplication.h> #include <qmessagebox.h> +/*! + \class TimeZoneSelector + + \brief The TimeZoneSelector widget allows users to configure their time zone information. + + \ingroup qtopiaemb +*/ + class TimeZoneSelectorPrivate { public: TimeZoneSelectorPrivate() : includeLocal(FALSE) {} bool includeLocal; }; TZCombo::TZCombo( QWidget *p, const char* n ) : QComboBox( p, n ) { updateZones(); // check to see if TZ is set, if it is set the current item to that QString tz = getenv("TZ"); if (parent()->inherits("TimeZoneSelector")) { if ( ((TimeZoneSelector *)parent())->localIncluded() ) { // overide to the 'local' type. tz = "None"; } } if ( !tz.isNull() ) { int n = 0, index = 0; for ( QStringList::Iterator it=identifiers.begin(); it!=identifiers.end(); ++it) { if ( *it == tz ) index = n; n++; } setCurrentItem(index); } else { setCurrentItem(0); } // listen on QPE/System #if !defined(QT_NO_COP) QCopChannel *channel = new QCopChannel( "QPE/System", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(handleSystemChannel(const QCString&, const QByteArray&)) ); #endif } TZCombo::~TZCombo() { } void TZCombo::updateZones() { QString cur = currentText(); clear(); identifiers.clear(); int curix=0; QString tz = getenv("TZ"); bool tzFound = FALSE; Config cfg("CityTime"); cfg.setGroup("TimeZones"); int listIndex = 0; if (parent()->inherits("TimeZoneSelector")) { if ( ((TimeZoneSelector *)parent())->localIncluded() ) { // overide to the 'local' type. identifiers.append( "None" ); insertItem( tr("None") ); if ( cur == tr("None")) curix = 0; listIndex++; } } int cfgIndex = 0; while (1) { QString zn = cfg.readEntry("Zone"+QString::number(cfgIndex), QString::null); if ( zn.isNull() ) break; if ( zn == tz ) tzFound = TRUE; QString nm = cfg.readEntry("ZoneName"+QString::number(cfgIndex)); identifiers.append(zn); insertItem(nm); if ( nm == cur ) curix = listIndex; ++cfgIndex; ++listIndex; } if ( !listIndex ) { QStringList list = timezoneDefaults(); for ( QStringList::Iterator it = list.begin(); it!=list.end(); ++it ) { QString zn = *it; QString nm = *++it; if ( zn == tz ) tzFound = TRUE; if ( nm == cur ) curix = listIndex; identifiers.append(zn); insertItem(nm); ++listIndex; } } for (QStringList::Iterator it=extras.begin(); it!=extras.end(); ++it) { insertItem(*it); identifiers.append(*it); if ( *it == cur ) curix = listIndex; ++listIndex; } if ( !tzFound && !tz.isEmpty()) { int i = tz.find( '/' ); QString nm = tz.mid( i+1 ).replace(QRegExp("_"), " "); identifiers.append(tz); insertItem(nm); if ( nm == cur ) curix = listIndex; ++listIndex; } setCurrentItem(curix); } void TZCombo::keyPressEvent( QKeyEvent *e ) { // ### should popup() in Qt 3.0 (it's virtual there) // updateZones(); QComboBox::keyPressEvent(e); } void TZCombo::mousePressEvent(QMouseEvent*e) { // ### should popup() in Qt 3.0 (it's virtual there) // updateZones(); QComboBox::mousePressEvent(e); } QString TZCombo::currZone() const { return identifiers[currentItem()]; } void TZCombo::setCurrZone( const QString& id ) { for (int i=0; i< count(); i++) { if ( identifiers[i] == id ) { setCurrentItem(i); return; } } insertItem(id); setCurrentItem( count() - 1); identifiers.append(id); extras.append(id); } void TZCombo::handleSystemChannel(const QCString&msg, const QByteArray&) { if ( msg == "timeZoneListChange()" ) { updateZones(); } } +/*! + Creates a new TimeZoneSelector with parent \a p and name \a n. The combobox will be + populated with the available timezones. +*/ TimeZoneSelector::TimeZoneSelector(QWidget* p, const char* n) : QHBox(p,n) { d = new TimeZoneSelectorPrivate(); // build the combobox before we do any updates... cmbTz = new TZCombo( this, "timezone combo" ); cmdTz = new QToolButton( this, "timezone button" ); cmdTz->setIconSet( Resource::loadIconSet( "citytime_icon" ) ); cmdTz->setMaximumSize( cmdTz->sizeHint() ); // set up a connection to catch a newly selected item and throw our // signal QObject::connect( cmbTz, SIGNAL( activated( int ) ), this, SLOT( slotTzActive( int ) ) ); QObject::connect( cmdTz, SIGNAL( clicked() ), this, SLOT( slotExecute() ) ); } +/*! + Destroys a TimeZoneSelector. +*/ TimeZoneSelector::~TimeZoneSelector() { } void TimeZoneSelector::setLocalIncluded(bool b) { d->includeLocal = b; cmbTz->updateZones(); } bool TimeZoneSelector::localIncluded() const { return d->includeLocal; } - +/*! + Returns the currently selected timezone as a string in location format, e.g. + \code Australia/Brisbane \endcode +*/ QString TimeZoneSelector::currentZone() const { return cmbTz->currZone(); } +/*! + Sets the current timezone to \a id. +*/ void TimeZoneSelector::setCurrentZone( const QString& id ) { cmbTz->setCurrZone( id ); } +/*! \fn void TimeZoneSelector::signalNewTz( const QString& id ) + This signal is emitted when a timezone has been selected by the user. The id + is a \l QString in location format, eg \code Australia/Brisbane \endcode +*/ + void TimeZoneSelector::slotTzActive( int ) { emit signalNewTz( cmbTz->currZone() ); } void TimeZoneSelector::slotExecute( void ) { - // execute the world time application... + // execute the world time application... if (QFile::exists(QPEApplication::qpeDir()+"bin/citytime")) Global::execute( "citytime" ); else QMessageBox::warning(this,tr("citytime executable not found"), tr("In order to choose the time zones,\nplease install citytime.")); } QStringList timezoneDefaults( void ) { QStringList tzs; // load up the list just like the file format (citytime.cpp) tzs.append( "America/New_York" ); tzs.append( "New York" ); tzs.append( "America/Los_Angeles" ); tzs.append( "Los Angeles" ); tzs.append( "Australia/Brisbane" ); tzs.append( "Brisbane" ); tzs.append( "Europe/Berlin" ); tzs.append( "Berlin" ); tzs.append( "Asia/Tokyo" ); tzs.append( "Tokyo" ); tzs.append( "America/Denver" ); tzs.append( "Denver" ); - + return tzs; } diff --git a/library/version.h b/library/version.h index d72af53..bef9aa7 100644 --- a/library/version.h +++ b/library/version.h @@ -1,3 +1,3 @@ #define QPE_VENDOR "Project Opie" -#define QPE_VERSION "0.9.3-snapshot" +#define QPE_VERSION "1.0.1-snapshot" #define SUB_VERSION "" |