Index: /branches/gui/configure.ac
===================================================================
--- /branches/gui/configure.ac	(revision 8139)
+++ /branches/gui/configure.ac	(revision 8140)
@@ -526,7 +526,9 @@
   AX_CHECK_REQUIRED_HEADER_LIB([avformat.h ffmpeg/avformat.h] ,[avformat], [main],
    [AX_CHECK_REQUIRED_HEADER_LIB([avcodec.h ffmpeg/avcodec.h], [avcodec], [main],,, [http://ffmpeg.sourceforge.net]) LIBS="${LIBS} -lavformat -lavcodec"],
-   [AX_GET_INSTALL_NECESSARY_LIB([http://svn.orxonox.net/webdev/develop/ext_libs], [ffmpeg.tar.gz], [ffmpeg], [extern_libs/], [include/*.h lib/*.a])
+     [AX_GET_INSTALL_NECESSARY_LIB([http://svn.orxonox.net/webdev/develop/ext_libs], [ffmpeg.tar.gz], [ffmpeg], [extern_libs/], [include/*.h lib/*.a])
        LIBS="-llualib -llua"  CPPFLAGS="${CPPFLAGS} -I$(top_build_dir)/extern_libs" ],
   [http://ffmpeg.sourceforge.net])
+
+
 
 
@@ -625,7 +627,7 @@
                  src/lib/shell/Makefile
                  src/lib/gui/Makefile
-                 src/lib/gui/gtk_gui/Makefile
-                 src/lib/gui/gl_gui/Makefile
-                 src/lib/gui/qt_gui/Makefile
+                 src/lib/gui/gtk/Makefile
+                 src/lib/gui/gl/Makefile
+                 src/lib/gui/qt/Makefile
                  src/lib/script_engine/Makefile
                  src/lib/parser/Makefile
Index: /branches/gui/src/defs/include_paths.am
===================================================================
--- /branches/gui/src/defs/include_paths.am	(revision 8139)
+++ /branches/gui/src/defs/include_paths.am	(revision 8140)
@@ -12,7 +12,6 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/render2D
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/particles
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gtk_gui
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gl_gui
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gl_gui/glmenu
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gl
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gl/glmenu
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/lang
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/shell
Index: /branches/gui/src/lib/BuildLibs.am
===================================================================
--- /branches/gui/src/lib/BuildLibs.am	(revision 8139)
+++ /branches/gui/src/lib/BuildLibs.am	(revision 8140)
@@ -3,6 +3,6 @@
                 $(LIB_PREFIX)/libORXlibs.a \
                 $(LIB_PREFIX)/shell/libORXshell.a \
-                $(LIB_PREFIX)/gui/qt_gui/libORXqtgui.a \
-                $(LIB_PREFIX)/gui/gl_gui/libORXglgui.a \
+                $(LIB_PREFIX)/gui/qt/libORXqtgui.a \
+                $(LIB_PREFIX)/gui/gl/libORXglgui.a \
                 $(LIB_PREFIX)/gui/libORXbasegui.a \
                 $(LIB_PREFIX)/graphics/importer/libORXimporter.a \
Index: /branches/gui/src/lib/gui/Makefile.am
===================================================================
--- /branches/gui/src/lib/gui/Makefile.am	(revision 8139)
+++ /branches/gui/src/lib/gui/Makefile.am	(revision 8140)
@@ -23,6 +23,6 @@
 SUBDIRS = \
 	. \
-	gl_gui \
-	qt_gui
+	gl \
+	qt
 
 #	gtk_gui
Index: /branches/gui/src/lib/gui/gl/Makefile.am
===================================================================
--- /branches/gui/src/lib/gui/gl/Makefile.am	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/Makefile.am	(revision 8140)
@@ -0,0 +1,58 @@
+MAINSRCDIR=../../..
+include $(MAINSRCDIR)/defs/include_paths.am
+
+AM_LDFLAGS =
+
+noinst_LIBRARIES = libORXglgui.a
+
+libORXglgui_a_CPPFLAGS = -DBUILD_ORXONOX
+
+
+libORXglgui_a_SOURCES = \
+		glmenu/glmenu_imagescreen.cc \
+		glgui_handler.cc \
+		signal_connector.cc \
+		glgui_mainwidget.cc \
+		glgui_widget.cc \
+		glgui_button.cc \
+		glgui_pushbutton.cc \
+		glgui_checkbutton.cc \
+		glgui_slider.cc \
+		glgui_container.cc \
+		glgui_bar.cc \
+		glgui_box.cc \
+		glgui_frame.cc \
+		glgui_inputline.cc \
+		glgui_textfield.cc \
+		glgui_image.cc \
+		glgui_window.cc \
+		glgui_cursor.cc
+
+
+noinst_HEADERS= \
+		glmenu/glmenu_imagescreen.h \
+		signal_connector.h \
+		glgui.h \
+		glgui_defs.h \
+		glgui_handler.h \
+		glgui_mainwidget.h \
+		glgui_widget.h \
+		glgui_button.h \
+		glgui_pushbutton.h \
+		glgui_checkbutton.h \
+		glgui_slider.h \
+		glgui_container.h \
+		glgui_bar.h \
+		glgui_box.h \
+		glgui_frame.h \
+		glgui_inputline.h \
+		glgui_textfield.h \
+		glgui_image.h \
+		glgui_window.h \
+		glgui_cursor.h
+
+
+
+
+EXTRA_DIST =
+
Index: /branches/gui/src/lib/gui/gl/glgui.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui.h	(revision 8140)
@@ -0,0 +1,27 @@
+/*!
+ * @file glgui.h
+ * includes all the Files the GLGui knows.
+ */
+
+#ifndef _GLGUI_H
+#define _GLGUI_H
+
+#include "glgui_defs.h"
+#include "glgui_handler.h"
+
+#include "glgui_widget.h"
+
+#include "glgui_bar.h"
+#include "glgui_box.h"
+#include "glgui_button.h"
+#include "glgui_checkbutton.h"
+//#include "glgui_colorselector.h"
+#include "glgui_pushbutton.h"
+#include "glgui_slider.h"
+#include "glgui_cursor.h"
+#include "glgui_inputline.h"
+#include "glgui_textfield.h"
+#include "glgui_image.h"
+
+
+#endif /* _GLGUI_H */
Index: /branches/gui/src/lib/gui/gl/glgui_bar.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_bar.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_bar.cc	(revision 8140)
@@ -0,0 +1,81 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_bar.h"
+
+
+namespace OrxGui
+{
+
+  /**
+   * @brief standard constructor
+  */
+  GLGuiBar::GLGuiBar ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  GLGuiBar::~GLGuiBar()
+  {
+  }
+
+  /**
+   * @brief initializes the GUI-element
+   */
+  void GLGuiBar::init()
+  {
+    this->setClassID(CL_GLGUI_BAR, "GLGuiBar");
+
+    this->frontMaterial().setDiffuse(1,1,1);
+
+    this->setSize2D(50, 10);
+
+    this->value = 0.5f;
+    this->minimum = 0.0f;
+    this->maximum = 1.0f;
+  }
+
+  /**
+   * @brief draws the GLGuiBar
+   */
+  void GLGuiBar::draw() const
+  {
+    this->beginDraw();
+
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    glBegin(GL_QUADS);
+
+    glTexCoord2f(0,0);
+    glVertex2f(3.0, 3.0);
+    glTexCoord2f(0, value/maximum);
+    glVertex2f(3.0, (this->getSizeY2D()-3.0)* (value/maximum));
+    glTexCoord2f(1, value/maximum);
+    glVertex2f(this->getSizeX2D()-3.0, (this->getSizeY2D()-3.0) * (value/maximum));
+    glTexCoord2f(1,0);
+    glVertex2f(this->getSizeX2D()-3.0, 3.0);
+
+    glEnd();
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_bar.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_bar.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_bar.h	(revision 8140)
@@ -0,0 +1,49 @@
+/*!
+ * @file glgui_bar.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_BAR_H
+#define _GLGUI_BAR_H
+
+#include "glgui_widget.h"
+
+
+namespace OrxGui
+{
+
+
+  //! This is Bar part of the openglGUI class
+  /**
+   * The Bar shows the part value.
+   */
+  class GLGuiBar : public GLGuiWidget
+  {
+
+  public:
+    GLGuiBar();
+    virtual ~GLGuiBar();
+
+    void setValue(float value) { this->value = value; };
+    void setMinimum(float minimum) { this->minimum = minimum; };
+    void setMaximum(float maximum) { this->maximum = maximum; };
+
+    float getValue() const { return this->value; };
+    float getMinimum() const { return this->minimum; };
+    float getMaximum() const { return this->maximum; };
+
+    virtual void update() { };
+    virtual void draw() const;
+
+  private:
+    void init();
+
+  private:
+    float value;
+
+    float minimum;
+    float maximum;
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_box.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_box.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_box.cc	(revision 8140)
@@ -0,0 +1,165 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_box.h"
+
+namespace OrxGui
+{
+  /**
+   * standard constructor
+  */
+  GLGuiBox::GLGuiBox (OrxGui::Orientation orientation)
+  {
+    this->init();
+
+    this->setOrientation(orientation);
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiBox::~GLGuiBox()
+  {}
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiBox::init()
+  {
+    this->setClassID(CL_GLGUI_BOX, "GLGuiBox");
+  }
+
+  void GLGuiBox::pack(GLGuiWidget* widget)
+  {
+    assert (widget != NULL);
+
+    this->children.push_back(widget);
+    widget->setParentWidget(this);
+
+    this->resize();
+  }
+
+
+  void GLGuiBox::unpack(GLGuiWidget* widget)
+  {
+    assert(widget == NULL);
+
+    std::vector<GLGuiWidget*>::iterator delWidget = std::find(this->children.begin(), this->children.end(), widget);
+    if (delWidget != this->children.end())
+    {
+      (*delWidget)->setParentWidget(NULL);
+      this->children.erase(delWidget);
+    }
+    this->resize();
+  }
+
+  void GLGuiBox::clear()
+  {
+    this->children.clear();
+    this->resize();
+  }
+
+  void GLGuiBox::showAll()
+  {
+    std::vector<GLGuiWidget*>::iterator itC = this->children.begin();
+    while (itC != this->children.end())
+    {
+      if ((*itC)->isA(CL_GLGUI_CONTAINER))
+        static_cast<GLGuiContainer*>(*itC)->showAll();
+      else
+        (*itC)->show();
+      itC++;
+    }
+
+    this->show();
+  }
+
+  void GLGuiBox::hideAll()
+  {
+    std::vector<GLGuiWidget*>::iterator itC = this->children.begin();
+    while (itC != this->children.end())
+    {
+      if ((*itC)->isA(CL_GLGUI_CONTAINER))
+        static_cast<GLGuiContainer*>(*itC)->hideAll();
+      else
+        (*itC)->hide();
+      itC++;
+    }
+
+    this->hide();
+  }
+
+  void GLGuiBox::resize()
+  {
+    if (orientation() == OrxGui::Vertical)
+    {
+      float height = this->borderTop();
+      float width = 0.0f;
+      std::vector<GLGuiWidget*>::iterator widget;
+
+      // find out how big the Widgets are.
+      for (widget = this->children.begin(); widget != this->children.end(); ++widget)
+      {
+        (*widget)->setRelCoor2D(this->borderLeft(), height);
+        height += (*widget)->getSizeY2D();
+        width = fmax(width, (*widget)->getSizeX2D());
+      }
+
+      width += this->borderLeft() + this->borderRight();
+      height += this->borderBottom(); /* *2 done further up */
+
+      printf("%f %f\n", width, height);
+      this->setSize2D(width, height);
+    }
+    else
+    {
+      float height = this->borderTop();
+      float width = this->borderLeft();
+      std::vector<GLGuiWidget*>::iterator widget;
+
+      // find out how big the Widgets are.
+      for (widget = this->children.begin(); widget != this->children.end(); ++widget)
+      {
+        (*widget)->setRelCoor2D(width, this->borderTop());
+        height = fmax(height, (*widget)->getSizeY2D());
+        width += (*widget)->getSizeX2D();
+      }
+
+      width += this->borderRight() ;
+      height += this->borderBottom(); /* *2 done further up */
+
+      printf("%f %f\n", width, height);
+      this->setSize2D(width, height);
+    }
+    GLGuiWidget::resize();
+
+    // resize everything.
+    //for (widget = this->children.begin(); widget != this->children.end(); ++widget)
+    //{}
+  }
+
+  /**
+   * @brief draws the GLGuiBox
+   */
+  void GLGuiBox::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_box.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_box.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_box.h	(revision 8140)
@@ -0,0 +1,50 @@
+/*!
+ * @file glgui_.h
+ * The gl_box widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_BOX_H
+#define _GLGUI_BOX_H
+
+#include "glgui_container.h"
+#include "glgui_defs.h"
+
+namespace OrxGui
+{
+  //! This is BOX part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiBox : public GLGuiContainer
+  {
+
+  public:
+    GLGuiBox(OrxGui::Orientation orientation = OrxGui::Vertical);
+    virtual ~GLGuiBox();
+
+    /** @returns the Orientation of the Box */
+    OrxGui::Orientation orientation() const { return this->_orientation; };
+    /** @param orientation the Orientation of the Box */
+    void setOrientation(OrxGui::Orientation orientation) { this->_orientation = orientation; };
+
+    virtual void pack(GLGuiWidget* widget);
+    virtual void unpack(GLGuiWidget* widget);
+    virtual void clear();
+
+    virtual void showAll();
+    virtual void hideAll();
+
+    virtual void draw() const;
+
+  protected:
+    virtual void resize();
+
+  private:
+    void init();
+
+    Orientation                _orientation;
+    std::vector<GLGuiWidget*>  children;
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_button.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_button.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_button.cc	(revision 8140)
@@ -0,0 +1,99 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_button.h"
+
+#include "text.h"
+
+
+namespace OrxGui
+{
+  /**
+   * standard constructor
+  */
+  GLGuiButton::GLGuiButton (const std::string& label)
+  {
+    this->init();
+
+    this->_label.setText( label );
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiButton::~GLGuiButton()
+  {
+    /* this does not have to be done, since the Label is a child,
+     * and will be deleted by Element2D's deletion Process
+     * delete this->label;
+    */
+  }
+
+  /**
+   * @brief initializes the GUI-element
+   */
+  void GLGuiButton::init()
+  {
+    this->setClassID(CL_GLGUI_BUTTON, "GLGuiButton");
+    this->setFocusable(true);
+    this->setClickable(true);
+
+    this->_label.setFont("fonts/final_frontier.ttf", 20);
+    this->frontMaterial().setDiffuse(1, 0, 0);
+
+    this->_label.setParent2D(this);
+    this->_label.setVisibility(false);
+  }
+
+
+  void GLGuiButton::setLabel(const std::string& label)
+  {
+    this->_label.setText(label);
+    this->resize();
+  }
+
+
+
+  void GLGuiButton::clicking(const Vector2D& pos)
+  {
+    emit(clicked());
+  }
+  void GLGuiButton::releasing(const Vector2D& pos)
+  {
+    emit(released());
+  }
+
+  void GLGuiButton::hiding()
+  {
+    this->_label.setVisibility(false);
+  }
+
+  void GLGuiButton::showing()
+  {
+    this->_label.setVisibility(true);
+  }
+
+
+  /**
+   * @brief draws the GLGuiButton
+   */
+  void GLGuiButton::draw() const
+  {
+    GLGuiWidget::draw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_button.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_button.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_button.h	(revision 8140)
@@ -0,0 +1,66 @@
+/*!
+ * @file glgui_button.h
+ * The gl_BUTTON widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_BUTTON_H
+#define _GLGUI_BUTTON_H
+
+#include "glgui_widget.h"
+
+#include "text.h"
+
+namespace OrxGui
+{
+  typedef enum
+  {
+    Button_Active,
+    Button_Inactive,
+    Button_Pressed,
+    Button_Released,
+    Button_Activating,
+    Button_Deactivating,
+
+  } ButtonState;
+
+  //! This is part of the openglGUI class
+  /**
+   * The Button is an Abstract class, that can be pushed to Toggle its state.
+   */
+  class GLGuiButton : public GLGuiWidget
+  {
+
+    public:
+      GLGuiButton(const std::string& label);
+      virtual ~GLGuiButton();
+
+      const std::string& label() const { return this->_label.getText(); };
+      void setLabel(const std::string& label);
+
+      virtual void draw() const;
+
+      DeclareSignal0(released);
+      DeclareSignal0(clicked);
+
+    protected:
+      virtual void clicking(const Vector2D& pos);
+      virtual void releasing(const Vector2D& pos);
+      virtual void hiding();
+      virtual void showing();
+
+      /** @returns the Text. (the physical Text) */
+      Text& labelText() { return this->_label; }
+      /** @returns the constant Text. (the physical Text) */
+      const Text& labelText() const { return this->_label; }
+
+    private:
+      void init();
+
+
+    private:
+      Text                 _label;
+      ButtonState          state;
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_checkbutton.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_checkbutton.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_checkbutton.cc	(revision 8140)
@@ -0,0 +1,135 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_checkbutton.h"
+
+#include "text.h"
+
+namespace OrxGui
+{
+
+
+  /**
+   * standard constructor
+  */
+  GLGuiCheckButton::GLGuiCheckButton (const std::string& label, bool active)
+  : GLGuiButton(label)
+  {
+    this->init();
+    this->bActive = active;
+
+    this->resize();
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiCheckButton::~GLGuiCheckButton()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiCheckButton::init()
+  {
+    this->setClassID(CL_GLGUI_CHECKBUTTON, "GLGuiCheckButton");
+  }
+
+  void GLGuiCheckButton::setActivity(bool bActive)
+  {
+    this->bActive = bActive;
+    emit(this->toggled(this->bActive));
+  }
+
+  void GLGuiCheckButton::toggleActiveState()
+  {
+    this->setActivity(!this->isActive());
+  }
+
+  void GLGuiCheckButton::resize()
+  {
+    this->labelText().setRelCoor2D(borderLeft() + 25, borderTop() + 5);
+    this->setSize2D(this->labelText().getSizeX2D() + 30 + borderLeft() + borderRight(), this->labelText().getSizeY2D() + 10 + borderTop()+borderBottom());
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(borderLeft(), borderTop());
+    this->frontRect().setSize(this->getSizeX2D() - (borderLeft() + borderRight()) , this->getSizeY2D() - (borderTop() + borderBottom()));
+  }
+
+
+  void GLGuiCheckButton::releasing(const Vector2D& pos)
+  {
+    GLGuiButton::releasing(pos);
+    this->toggleActiveState();
+  }
+
+
+
+  /**
+   * @brief draws the GLGuiPushButton
+   */
+  void GLGuiCheckButton::draw() const
+  {
+    this->beginDraw();
+    GLGuiButton::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+
+    if (this->bActive)
+    {
+      glBegin(GL_QUADS);
+      glColor3f( 1, 1 ,1);
+      glTexCoord2i(0,0); glVertex2d(borderLeft()+8, borderTop()+8);
+      glTexCoord2i(0,1); glVertex2d(borderLeft() + 8, this->getSizeY2D()-8 - (borderTop() + borderBottom()));
+      glTexCoord2i(1,1); glVertex2d(this->getSizeY2D()-8 +borderLeft(), this->getSizeY2D()-8- (borderTop() + borderBottom()));
+      glTexCoord2i(1,0); glVertex2d(this->getSizeY2D()-8 +borderLeft(), borderTop()+8);
+      glEnd();
+
+
+      // DRAW a cross :)
+      glColor3f(0,0,0);
+      glLineWidth(3.0);
+      glBegin(GL_LINE_LOOP);
+      glVertex2d(borderLeft()+8,borderTop() +8);
+      glVertex2d(this->getSizeY2D()/2 + borderLeft(), this->getSizeY2D()/2 - 1);
+
+      glVertex2d(this->getSizeY2D()-8 + borderLeft(), borderTop()+8);
+      glVertex2d(this->getSizeY2D()/2 +1 + borderLeft(), this->getSizeY2D()/2);
+
+      glVertex2d(this->getSizeY2D()-8 + borderLeft(), this->getSizeY2D()-8- (borderTop() + borderBottom()));
+      glVertex2d(this->getSizeY2D()/2 + borderLeft(), this->getSizeY2D()/2+1);
+
+      glVertex2d(borderLeft() + 8, this->getSizeY2D()-8 - (borderTop() + borderBottom()));
+      glVertex2d(this->getSizeY2D()/2 -1 + borderLeft(), this->getSizeY2D()/2);
+      glEnd();
+    }
+    else
+    {
+      glBegin(GL_QUADS);
+      glColor3f(0, 0, 0);
+      glTexCoord2i(0,0); glVertex2d(borderLeft()+8, borderTop()+8);
+      glTexCoord2i(0,1); glVertex2d(borderLeft()+ 8, this->getSizeY2D()-8 - (borderTop() + borderBottom()));
+      glTexCoord2i(1,1); glVertex2d(this->getSizeY2D()-8 +borderLeft(), this->getSizeY2D()-8- (borderTop() + borderBottom()));
+      glTexCoord2i(1,0); glVertex2d(this->getSizeY2D()-8 +borderLeft(), borderTop()+8);
+      glEnd();
+    }
+
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_checkbutton.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_checkbutton.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_checkbutton.h	(revision 8140)
@@ -0,0 +1,52 @@
+/*!
+ * @file glgui_checkbutton.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_CHECKBUTTON_H
+#define _GLGUI_CHECKBUTTON_H
+
+#include "glgui_button.h"
+
+namespace OrxGui
+{
+
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiCheckButton : public GLGuiButton
+  {
+
+  public:
+    GLGuiCheckButton(const std::string& label = "", bool active = false);
+    virtual ~GLGuiCheckButton();
+
+
+    bool    isActive() { return this->bActive; };
+    void    setActivity(bool bActive);
+    void    toggleActiveState();
+
+    virtual void draw() const;
+    virtual void update() {};
+
+    DeclareSignal1(toggled, bool);
+
+  protected:
+    virtual void resize();
+    virtual void releasing(const Vector2D& pos);
+
+  private:
+    void init();
+
+
+  private:
+    bool             bActive;
+
+  };
+}
+
+#endif /* _GLGUI_CHECKBUTTON_H */
Index: /branches/gui/src/lib/gui/gl/glgui_colorselector.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_colorselector.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_colorselector.cc	(revision 8140)
@@ -0,0 +1,55 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGui::GLGui ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGui::~GLGui()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  GLGui::init()
+  {
+    this->setClassID(CL_GLGUI_, "GLGui");
+
+  }
+
+  /**
+   * draws the GLGui
+   */
+  void GLGui::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_colorselector.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_colorselector.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_colorselector.h	(revision 8140)
@@ -0,0 +1,36 @@
+/*!
+ * @file glgui_.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_COLORSELECTOR_H
+#define _GLGUI_COLORSELECTOR_H
+
+#include "glgui_widget.h"
+
+namespace OrxGui
+{
+
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGui : public GLGui
+  {
+
+  public:
+    GLGui();
+    virtual ~GLGui();
+
+    void init();
+
+    virtual void draw();
+
+  private:
+
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_container.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_container.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_container.cc	(revision 8140)
@@ -0,0 +1,54 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_container.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiContainer::GLGuiContainer ()
+  {
+    this->init();
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiContainer::~GLGuiContainer()
+  {}
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiContainer::init()
+  {
+    this->setClassID(CL_GLGUI_CONTAINER, "GLGuiContainer");
+
+  }
+
+
+  /**
+   * draws the GLGuiContainer
+   */
+  void GLGuiContainer::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_container.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_container.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_container.h	(revision 8140)
@@ -0,0 +1,44 @@
+/*!
+ * @file glgui_container.h
+ * The gl_container widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_CONTAINER_H
+#define _GLGUI_CONTAINER_H
+
+#include "glgui_widget.h"
+
+namespace OrxGui
+{
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiContainer : public GLGuiWidget
+  {
+
+  public:
+    GLGuiContainer();
+    virtual ~GLGuiContainer();
+
+    /** @brief packs a widget into this one. */
+    virtual void pack(GLGuiWidget* widget) = 0;
+    /** unpacks a Widget from this container. @param widget the GLGuiWidget to unpack, if NULL all subwidgets will be unpackt. */
+    virtual void unpack(GLGuiWidget* widget) = 0;
+    /** @brief clears all Widgets out. */
+    virtual void clear() = 0;
+
+    virtual void hideAll() = 0;
+    virtual void showAll() = 0;
+
+
+    virtual void draw();
+
+  private:
+    void init();
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_cursor.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_cursor.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_cursor.cc	(revision 8140)
@@ -0,0 +1,125 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_cursor.h"
+
+#include "glgui_handler.h"
+#include "color.h"
+
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiCursor::GLGuiCursor ()
+  {
+    this->init();
+
+    this->subscribeEvent(ES_MENU,  EV_MOUSE_MOTION);
+    this->subscribeEvent(ES_MENU, EV_WINDOW_FOCUS);
+
+
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  GLGuiCursor::~GLGuiCursor()
+  {
+    GLGuiHandler::getInstance()->deactivateCursor(false);
+  }
+
+  float GLGuiCursor::_mouseSensitivity = 1.0;
+
+
+  /**
+   * @brief initializes the GUI-element
+   */
+  void GLGuiCursor::init()
+  {
+    this->setClassID(CL_GLGUI_CURSOR, "GLGuiCursor");
+
+    this->backMaterial().setDiffuse(1.0,0.0,0.0);
+    this->backMaterial().setDiffuseMap("cursor.png");
+    this->backMaterial().setBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    this->setSize2D(20, 30);
+    this->setAbsCoor2D(100, 100);
+    this->setLayer(E2D_LAYER_ABOVE_ALL);
+    this->color = 0.0f;
+
+    this->resize();
+  }
+
+  void GLGuiCursor::tick(float dt)
+  {
+    this->color += dt*10.0;
+    if (this->color > 360.0)
+      this->color -= 360.0;
+    Vector color =  Color::HSVtoRGB(Vector(this->color, 1.0, 1.0));
+    this->backMaterial().setDiffuse(color.x, color.y, color.z);
+
+    //if (this->movement != Vector2D())
+    {
+      newPos += movement;
+      // reposition the cursor.
+      if (newPos.x < 0.0f )
+        newPos.x = 0.0f;
+      if (newPos.x > this->_maxBorders.x)
+        newPos.x = this->_maxBorders.x;
+      if (newPos.y < 0.0f )
+        newPos.y = 0.0f;
+      if (newPos.y > this->_maxBorders.y)
+        newPos.y = this->_maxBorders.y;
+
+
+      movement = Vector2D();
+    }
+    this->setAbsCoor2D(newPos);
+  }
+
+  /**
+   * @brief draws the GLGuiCursor
+   */
+  void GLGuiCursor::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+    this->endDraw();
+  }
+
+  void GLGuiCursor::process(const Event& event)
+  {
+    switch (event.type)
+    {
+      case EV_WINDOW_FOCUS:
+        if (event.bPressed)
+        {
+          int mouseX, mouseY;
+          SDL_GetMouseState(&mouseX, &mouseY);
+          newPos = Vector2D(mouseX, mouseY);
+        }
+        break;
+      case EV_MOUSE_MOTION:
+        movement += Vector2D((float)event.xRel * _mouseSensitivity, (float)event.yRel * _mouseSensitivity);
+        break;
+
+    }
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_cursor.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_cursor.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_cursor.h	(revision 8140)
@@ -0,0 +1,54 @@
+/*!
+ * @file glgui_cursor.h
+ * The gl_cursor widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_CURSOR_H
+#define _GLGUI_CURSOR_H
+
+#include "glgui_widget.h"
+#include "event_listener.h"
+#include "vector2D.h"
+
+namespace OrxGui
+{
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiCursor : public GLGuiWidget, public EventListener
+  {
+
+  public:
+    GLGuiCursor();
+    virtual ~GLGuiCursor();
+
+    static void setMouseSensitivity(float mouseSensitivity);
+    static float mouseSensitivity() { return GLGuiCursor::_mouseSensitivity; };
+
+    void setMaxBorders(const Vector2D& maxBorders) { this->_maxBorders = maxBorders; };
+
+    void init();
+    const Vector2D& position() const { return Element2D::getAbsCoor2D(); }
+
+
+    virtual void tick(float dt);
+    virtual void draw() const;
+    virtual void process(const Event& event);
+  private:
+
+    Vector2D      _maxBorders;
+
+    Vector2D      newPos;
+    Vector2D      movement;
+
+    float         color; // so f****ing temporary... ... ....
+
+    static float _mouseSensitivity;
+
+  };
+}
+#endif /* _GLGUI_CURSOR_H */
Index: /branches/gui/src/lib/gui/gl/glgui_defs.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_defs.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_defs.h	(revision 8140)
@@ -0,0 +1,20 @@
+/*!
+ * @file glgui_defs.h
+ * Definitions for the GLGui.
+ */
+
+#ifndef _GLGUI_DEFS_H
+#define _GLGUI_DEFS_H
+
+/// TODO MOVE TO ORXGUI_TYPES
+namespace OrxGui
+{
+  //! An enumeration for the Orientation of an Element.
+  typedef enum {
+    Horizontal,    //!< Horizontal Orientation.
+    Vertical       //!< Vertical Orientation.
+  } Orientation;
+};
+
+
+#endif /* _GLGUI_DEFS_H */
Index: /branches/gui/src/lib/gui/gl/glgui_element.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_element.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_element.cc	(revision 8140)
@@ -0,0 +1,55 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_.h"
+
+namespace OrxGui
+{
+
+  /**
+  * standard constructor
+  */
+  GLGui::GLGui ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGui::~GLGui()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  GLGui::init()
+  {
+    this->setClassID(CL_GLGUI_, "GLGui");
+
+  }
+
+  /**
+   * draws the GLGui
+   */
+  void GLGui::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_element.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_element.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_element.h	(revision 8140)
@@ -0,0 +1,35 @@
+/*!
+ * @file glgui_.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI__H
+#define _GLGUI__H
+
+#include "base_object.h"
+
+namespace OrxGui
+{
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGui : public GLGui
+  {
+
+  public:
+    GLGui();
+    virtual ~GLGui();
+
+    void init();
+
+    virtual void draw();
+
+  private:
+
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_frame.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_frame.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_frame.cc	(revision 8140)
@@ -0,0 +1,100 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_frame.h"
+
+#include "debug.h"
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiFrame::GLGuiFrame ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiFrame::~GLGuiFrame()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiFrame::init()
+  {
+    this->setClassID(CL_GLGUI_FRAME, "GLGuiFrame");
+    this->child = NULL;
+  }
+
+  void GLGuiFrame::pack(GLGuiWidget* widget)
+  {
+    if (widget == NULL)
+      return;
+
+    if (this->child == NULL)
+      this->child = widget;
+    else
+    {
+      PRINTF(2)("Frame %s is already filled, not filling with %s\n", this->getName(), widget->getName());
+    }
+  }
+
+  void GLGuiFrame::unpack(GLGuiWidget* widget)
+  {
+    if (widget == NULL || widget == this->child)
+      this->child = NULL;
+  }
+
+  void GLGuiFrame::showAll()
+  {
+    if (this->child != NULL)
+    {
+      if (this->child->isA(CL_GLGUI_CONTAINER))
+        static_cast<GLGuiContainer*>(this->child)->showAll();
+      else
+        this->child->show();
+    }
+    this->show();
+  }
+
+  void GLGuiFrame::hideAll()
+  {
+    if (this->child != NULL)
+    {
+      if (this->child->isA(CL_GLGUI_CONTAINER))
+        static_cast<GLGuiContainer*>(this->child)->hideAll();
+      else
+        this->child->hide();
+    }
+    this->hide();
+  }
+
+
+  /**
+   * draws the GLGuiFrame
+   */
+  void GLGuiFrame::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_frame.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_frame.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_frame.h	(revision 8140)
@@ -0,0 +1,41 @@
+/*!
+ * @file glgui_frame.h
+ * The gl_frame widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_FRAME_H
+#define _GLGUI_FRAME_H
+
+#include "glgui_container.h"
+
+namespace OrxGui
+{
+  // FORWARD DECLARATION
+
+  //! This is Frame part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiFrame : public GLGuiContainer
+  {
+
+  public:
+    GLGuiFrame();
+    virtual ~GLGuiFrame();
+
+    void init();
+
+    virtual void pack(GLGuiWidget* widget);
+    virtual void unpack(GLGuiWidget* widget);
+    virtual void showAll();
+    virtual void hideAll();
+
+    virtual void draw();
+
+  private:
+    GLGuiWidget*           child;
+
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_handler.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_handler.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_handler.cc	(revision 8140)
@@ -0,0 +1,203 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_handler.h"
+#include "event_handler.h"
+
+#include "glgui_mainwidget.h"
+#include "glgui_cursor.h"
+
+#include "class_list.h"
+
+
+/// TAKE THIS OUT OF HERE.
+#include "graphics_engine.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+   */
+  GLGuiHandler::GLGuiHandler ()
+  {
+    this->setClassID(CL_GLGUI_HANDLER, "GLGuiHandler");
+    this->setName("GLGuiHandler");
+
+
+    EventHandler::getInstance()->withUNICODE(ES_MENU, true );
+
+    this->cursor = NULL;
+    for (unsigned int i = 0; i < EV_NUMBER; i++)
+    {
+      this->subscribeEvent(ES_MENU, i);
+    }
+  }
+
+  /**
+   *  the singleton reference to this class
+   */
+  GLGuiHandler* GLGuiHandler::singletonRef = NULL;
+
+  /**
+     @brief standard deconstructor
+   */
+  GLGuiHandler::~GLGuiHandler ()
+  {
+    GLGuiHandler::singletonRef = NULL;
+  }
+
+  void GLGuiHandler::activateCursor()
+  {
+    if (this->cursor == NULL)
+      this->cursor = new GLGuiCursor();
+    this->cursor->show();
+    this->cursor->setMaxBorders(Vector2D(GraphicsEngine::getInstance()->getResolutionX(), GraphicsEngine::getInstance()->getResolutionY()));
+  }
+
+  void GLGuiHandler::deactivateCursor(bool deleteCursor)
+  {
+    if (this->cursor)
+    {
+      if (deleteCursor)
+        delete this->cursor;
+      this->cursor = NULL;
+    }
+  }
+
+
+  void GLGuiHandler::activate()
+  {
+    EventHandler::getInstance()->pushState(ES_MENU);
+
+
+
+  }
+
+  void GLGuiHandler::deactivate()
+  {
+    EventHandler::getInstance()->popState();
+
+
+  }
+
+
+  void GLGuiHandler::process(const Event &event)
+  {
+    switch (event.type)
+    {
+      case  EV_MOUSE_BUTTON_LEFT:
+        if (GLGuiWidget::focused() != NULL)
+        {
+          if (event.bPressed)
+          {
+            if (GLGuiWidget::focused()->clickable())
+            {
+              Vector2D cursorPos = (this->cursor != NULL) ? this->cursor->getAbsCoor2D() : Vector2D(event.x, event.y);
+              GLGuiWidget::focused()->click(cursorPos - GLGuiWidget::focused()->getAbsCoor2D());
+            }
+          }
+          else
+          {
+            if (GLGuiWidget::focused()->clickable())
+            {
+              Vector2D cursorPos = (this->cursor != NULL) ? this->cursor->getAbsCoor2D() : Vector2D(event.x, event.y);
+              GLGuiWidget::focused()->release(cursorPos - GLGuiWidget::focused()->getAbsCoor2D());
+            }
+          }
+        }
+        break;
+      case EV_LEAVE_STATE:
+        if (GLGuiWidget::focused() != NULL)
+          GLGuiWidget::focused()->breakFocus();
+        break;
+
+      case EV_VIDEO_RESIZE:
+        if (this->cursor != NULL)
+          this->cursor->setMaxBorders(Vector2D(event.resize.w, event.resize.h));
+        break;
+    }
+
+
+
+    if (GLGuiWidget::focused())
+    {
+      GLGuiWidget::focused()->processEvent(event);
+    }
+
+
+
+  }
+
+
+  Vector2D GLGuiHandler::cursorPositionOverFocusedWidget() const
+  {
+    return (this->cursor != NULL) ? this->cursor->getAbsCoor2D() : Vector2D(0,0);
+  }
+
+  const Vector2D& GLGuiHandler::cursorPositionAbs() const
+  {
+    if (this->cursor)
+      return this->cursor->getAbsCoor2D();
+    else
+      return Vector2D::nullVector();
+  }
+  Vector2D GLGuiHandler::cursorPositionRel(const GLGuiWidget* const widget) const
+  {
+    assert (widget != NULL);
+    if (this->cursor)
+      return  this->cursor->getAbsCoor2D() - widget->getAbsCoor2D();
+    else
+      return Vector2D::nullVector();
+  }
+
+
+  void GLGuiHandler::draw()
+  {
+    //    GLGuiMainWidget::getInstance()->draw2D(E2D_LAYER_TOP);
+  }
+
+
+  void GLGuiHandler::tick(float dt)
+  {
+
+    // CHECK THE COLLISIONS.
+    const std::list<BaseObject*>* objects = ClassList::getList(CL_GLGUI_WIDGET);
+
+    if (objects != NULL && this->cursor != NULL)
+    {
+      for (std::list<BaseObject*>::const_iterator it = objects->begin(); it != objects->end(); it++)
+      {
+        GLGuiWidget* widget = dynamic_cast<GLGuiWidget*>(*it);
+
+        if (widget->isVisible() &&
+            widget->focusable() &&
+            widget->focusOverWidget(this->cursor))
+        {
+          // receiving Focus
+          if (GLGuiWidget::focused() != widget)
+          {
+            widget->giveFocus();
+          }
+          return ;
+        }
+      }
+      if (GLGuiWidget::focused() != NULL)
+        GLGuiWidget::focused()->breakFocus();
+    }
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_handler.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_handler.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_handler.h	(revision 8140)
@@ -0,0 +1,55 @@
+/*!
+ * @file proto_singleton.h
+ * @brief Definition of the GLGuiHandler singleton Class
+*/
+
+#ifndef _GLGUI_HANDLER_H
+#define _GLGUI_HANDLER_H
+
+#include "event_listener.h"
+#include "glgui_widget.h"
+
+namespace OrxGui
+{
+
+  class GLGuiCursor;
+
+  // FORWARD DECLARATION
+
+  //! A singleton class for the GLGui-Handler
+  class GLGuiHandler : public EventListener
+  {
+
+  public:
+    virtual ~GLGuiHandler(void);
+    /** @returns a Pointer to the only object of this Class */
+    inline static GLGuiHandler* getInstance(void) { if (!GLGuiHandler::singletonRef) GLGuiHandler::singletonRef = new GLGuiHandler();  return GLGuiHandler::singletonRef; };
+
+    void activateCursor();
+    void deactivateCursor(/** ignore param */ bool deleteCursor = true);
+    GLGuiCursor* getCursor() const { return this->cursor; }
+
+    Vector2D cursorPositionOverFocusedWidget() const;
+    const Vector2D& cursorPositionAbs() const;
+    Vector2D cursorPositionRel(const GLGuiWidget* const widget) const;
+
+    void activate();
+    void deactivate();
+
+
+    virtual void process(const Event &event);
+    void draw();
+    void tick(float dt);
+
+  private:
+    GLGuiHandler(void);
+    static GLGuiHandler* singletonRef;
+
+
+    bool                 isActive;
+    GLGuiCursor*         cursor;
+
+  };
+}
+
+#endif /* _GLGUI_HANDLER_H */
Index: /branches/gui/src/lib/gui/gl/glgui_image.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_image.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_image.cc	(revision 8140)
@@ -0,0 +1,95 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_image.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiImage::GLGuiImage ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiImage::~GLGuiImage()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiImage::init()
+  {
+    this->setClassID(CL_GLGUI_IMAGE, "GLGuiImage");
+
+    this->frontMaterial().setDiffuseMap(this->texture);
+    this->frontMaterial().setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+    this->resize();
+  }
+
+
+  void GLGuiImage::loadImageFromTexture(const Texture& texture)
+  {
+    this->frontMaterial().setDiffuseMap(texture);
+    this->frontMaterial().setDiffuse(1,1,1);
+  }
+
+  void GLGuiImage::loadImageFromFile(const std::string& fileName)
+  {
+    this->texture.loadImage(fileName);
+  }
+
+  void GLGuiImage::loadImageFromSDLSurface(SDL_Surface* surface)
+  {
+    //this->texture.loadSurface(surface);
+  }
+
+  void GLGuiImage::loadImageFromDisplayList(GLuint texture)
+  {
+//    this->texture.setTexture(texture);
+  }
+
+  void GLGuiImage::resize()
+  {
+    this->frontRect().setTopLeft(this->borderLeft(), this->borderTop());
+    this->frontRect().setSize(this->getSizeX2D() - (borderLeft() + borderRight()), this->getSizeY2D() - (borderTop() + borderBottom()) );
+    GLGuiWidget::resize();
+  }
+
+
+  /**
+   * @brief draws the GLGuiImage
+   */
+  void GLGuiImage::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_image.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_image.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_image.h	(revision 8140)
@@ -0,0 +1,46 @@
+/*!
+ * @file glgui_image.h
+ * The gl_Image widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_IMAGE_H
+#define _GLGUI_IMAGE_H
+
+#include "glgui_widget.h"
+
+// FORWARD DECLARATION
+struct SDL_Surface;
+namespace OrxGui
+{
+
+  //! This is Image part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiImage : public GLGuiWidget
+  {
+
+  public:
+    GLGuiImage();
+    virtual ~GLGuiImage();
+
+    void loadImageFromTexture(const Texture& texture);
+
+    void loadImageFromFile(const std::string& fileName);
+    void loadImageFromSDLSurface(SDL_Surface* surface);
+    void loadImageFromDisplayList(GLuint texture);
+
+    virtual void draw() const;
+
+    DeclareSignal0(imageChanged);
+
+  private:
+    void init();
+    virtual void resize();
+
+  private:
+    Texture       texture;
+  };
+}
+#endif /* _GLGUI_IMAGE_H */
Index: /branches/gui/src/lib/gui/gl/glgui_inputline.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_inputline.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_inputline.cc	(revision 8140)
@@ -0,0 +1,225 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_inputline.h"
+
+namespace OrxGui
+{
+  /**
+   * @brief standard constructor
+  */
+  GLGuiInputLine::GLGuiInputLine ()
+  {
+    this->init();
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  GLGuiInputLine::~GLGuiInputLine()
+  {}
+
+  float GLGuiInputLine::repeatDelay = 0.3f;
+  float GLGuiInputLine::repeatRate  = 0.01f;
+
+
+  /**
+   * @brief initializes the GUI-element
+   */
+  void GLGuiInputLine::init()
+  {
+    this->setClassID(CL_GLGUI_INPUTLINE, "GLGuiInputLine");
+
+    this->setFocusable(true);
+
+    this->text.setParent2D(this);
+    this->text.setRelCoor2D(4,4);
+    this->text.setFont("fonts/final_frontier.ttf", 20);
+    this->text.setVisibility(false);
+    this->resize();
+
+  }
+
+
+  /**
+   * @brief sets the Text of the InputLine
+   * @param text The new Text.
+   */
+  void GLGuiInputLine::setText(const std::string& text)
+  {
+    this->text.setText(text);
+    this->resize();
+
+    emit(this->textChanged(this->getText()));
+  }
+
+  /**
+   * @brief appends text to the InputLine
+   * @param appendText the Text to append
+   */
+  void GLGuiInputLine::append(const std::string& appendText)
+  {
+    this->text.append(appendText);
+    this->resize();
+    emit(this->textChanged(this->text.getText()));
+  }
+
+
+  /**
+   * @brief appends a Character to the InputLine
+   * @param character the Character to append.
+   */
+  void GLGuiInputLine::appendCharacter(char character)
+  {
+    this->text.appendCharacter(character);
+    this->resize();
+    emit(this->textChanged(this->text.getText()));
+  }
+
+
+  /**
+   * @brief Removes Characters from the InputLine
+   * @param chars The count of characters to remove
+   */
+  void GLGuiInputLine::removeCharacters(unsigned int chars)
+  {
+    this->text.removeCharacters(chars);
+    this->resize();
+    emit(this->textChanged(this->text.getText()));
+  }
+
+
+  /**
+   * removes the focus from this Widget.
+   */
+  void GLGuiInputLine::removedFocus()
+  {
+    GLGuiWidget::removedFocus();
+    this->pressedKey = 0;
+    this->pressedKeyName = 0;
+  }
+
+
+  /**
+   * Processes an Event.
+   * @param event The event to be processed
+   * @return true if the event was catched.
+   */
+  bool GLGuiInputLine::processEvent(const Event& event)
+  {
+    if (event.bPressed)
+    {
+      if (event.type == SDLK_BACKSPACE)
+      {
+        this->delayNext = GLGuiInputLine::repeatDelay;
+        this->pressedKey = SDLK_BACKSPACE;
+        this->pressedKeyName = SDLK_BACKSPACE;
+        this->removeCharacters(1);
+        return true;
+      }
+      // any other keyboard key
+      else if (likely(event.type < 127))
+      {
+        this->delayNext = GLGuiInputLine::repeatDelay;
+
+        this->appendCharacter(event.x);
+        this->pressedKey = event.type;
+        this->pressedKeyName = event.x;
+        return true;
+      }
+    }
+    else // if(!event.bPressed)
+    {
+      if (this->pressedKey == event.type)
+      {
+        this->pressedKeyName = 0;
+        this->pressedKey = 0;
+        this->delayNext = 0.0;
+        return true;
+      }
+    }
+
+    return false;
+  }
+
+
+  /**
+   * @brief Resizes the Widget to the new Size-constraints.
+   */
+  void GLGuiInputLine::resize()
+  {
+    this->text.setRelCoor2D(this->borderLeft() + 2.0,this->borderTop() + 2.0);
+    this->setSize2D( this->text.getSize2D() + Vector2D(borderLeft() + borderRight() + 4.0, borderTop() + borderBottom() + 4.0));
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(borderLeft(), borderTop());
+    this->frontRect().setSize(this->getSize2D() - Vector2D(borderLeft() + borderRight(), borderTop() + borderBottom()));
+  }
+
+
+  void GLGuiInputLine::hiding()
+  {
+    this->text.setVisibility(false);
+  }
+
+  void GLGuiInputLine::showing()
+  {
+    this->text.setVisibility(true);
+  }
+
+
+  /**
+   * ticks the InputLine
+   * @param dt the time passed.
+   */
+  void GLGuiInputLine::tick(float dt)
+  {
+    if (this->delayNext > 0.0)
+      this->delayNext -= dt;
+        else if (this->pressedKey != SDLK_FIRST )
+    {
+      this->delayNext = GLGuiInputLine::repeatRate;
+      switch (this->pressedKey)
+      {
+        case SDLK_BACKSPACE:
+          this->removeCharacters(1);
+          break;
+        default:
+        {
+          if (likely(this->pressedKey < 127))
+            this->appendCharacter(this->pressedKeyName);
+        }
+      }
+    }
+
+
+  }
+
+  /**
+   * @brief draws the GLGuiInputLine
+   */
+  void GLGuiInputLine::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    GLGuiWidget::drawRect(this->frontRect());
+
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_inputline.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_inputline.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_inputline.h	(revision 8140)
@@ -0,0 +1,69 @@
+/*!
+ * @file glgui_inputline.h
+ * The gl_INPUTLINE widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_INPUTLINE_H
+#define _GLGUI_INPUTLINE_H
+
+#include "glgui_widget.h"
+#include "text.h"
+#include "event.h"
+
+// FORWARD DECLARATION
+namespace OrxGui
+{
+
+  //! This is InputLine part of the openglGUI class
+  /**
+   * The InputLine is a Widget, that displays a Line, that can be manipulated through
+   * Writing Text on it.
+   *
+   * Whenever the Text is changed the textChanged signal is emitted.
+   */
+  class GLGuiInputLine : public OrxGui::GLGuiWidget
+  {
+
+  public:
+    GLGuiInputLine();
+    virtual ~GLGuiInputLine();
+
+
+    /** @returns the text of the inputLine */
+    const std::string& getText() const { return this->text.getText(); };
+
+    void setText(const std::string& text);
+    void append(const std::string& appendText);
+    void appendCharacter(char character);
+    void removeCharacters(unsigned int chars);
+
+    virtual void removedFocus();
+
+    virtual void tick(float dt);
+    virtual void draw() const;
+
+    virtual bool processEvent(const Event& event);
+
+    DeclareSignal1(textChanged, const std::string&);
+
+  private:
+    void init();
+    void resize();
+    virtual void hiding();
+    virtual void showing();
+
+  private:
+    Text                    text;             //!< The Text to display inside of the InputLine.
+
+    Uint16                  pressedKey;       //!< the pressed key that will be repeated.
+    Uint16                  pressedKeyName;   //!< The Name of the Key, that was pressed.
+
+    float                   delayNext;        //!< How much time must pass before next output.
+
+    static float            repeatDelay;      //!< Repead Delay.
+    static float            repeatRate;       //!< Repeat Rate.
+  };
+}
+
+#endif /* _GLGUI_INPUTLINE_H */
Index: /branches/gui/src/lib/gui/gl/glgui_mainwidget.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_mainwidget.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_mainwidget.cc	(revision 8140)
@@ -0,0 +1,45 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_mainwidget.h"
+
+namespace OrxGui
+{
+
+
+  /**
+   * standard constructor
+   */
+  GLGuiMainWidget::GLGuiMainWidget()
+  {
+    this->setClassID(CL_GLGUI_MAIN_WIDGET, "GLGuiMainWidget");
+    this->setName("GLGuiMainWidget");
+  }
+
+  /**
+   *  the singleton reference to this class
+   */
+  GLGuiMainWidget* GLGuiMainWidget::singletonRef = NULL;
+
+  /**
+   * standard deconstructor
+   */
+  GLGuiMainWidget::~GLGuiMainWidget ()
+  {
+    GLGuiMainWidget::singletonRef = NULL;
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_mainwidget.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_mainwidget.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_mainwidget.h	(revision 8140)
@@ -0,0 +1,32 @@
+/*!
+ * @file glgui_mainwidget.h
+ * @brief Definition of the glGui singleton Class
+ */
+
+#ifndef _GLGUI_MAINWIDGET_H
+#define _GLGUI_MAINWIDGET_H
+
+#include "glgui_widget.h"
+
+namespace OrxGui
+{
+
+  //! A default singleton class.
+  class GLGuiMainWidget : public GLGuiWidget
+  {
+
+  public:
+    virtual ~GLGuiMainWidget(void);
+    /** @returns a Pointer to the only object of this Class */
+    inline static GLGuiMainWidget* getInstance(void) { if (!GLGuiMainWidget::singletonRef) GLGuiMainWidget::singletonRef = new GLGuiMainWidget();  return GLGuiMainWidget::singletonRef; };
+
+  virtual void update() {};
+    virtual void draw() const {};
+
+  private:
+    GLGuiMainWidget(void);
+    static GLGuiMainWidget*       singletonRef;
+  };
+}
+
+#endif /* _GLGUI_MAINWIDGET_H */
Index: /branches/gui/src/lib/gui/gl/glgui_menu.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_menu.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_menu.cc	(revision 8140)
@@ -0,0 +1,55 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiMenu::GLGuiMenu ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiMenu::~GLGuiMenu()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiMenu::init()
+  {
+    this->setClassID(CL_GLGUI_MENU, "GLGuiMenu");
+
+  }
+
+  /**
+   * draws the GLGuiMenu
+   */
+  void GLGuiMenu::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_menu.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_menu.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_menu.h	(revision 8140)
@@ -0,0 +1,41 @@
+/*!
+ * @file glgui_menu.h
+ * The gl_Menu widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_MENU_H
+#define _GLGUI_MENU_H
+
+#include "base_object.h"
+namespace OrxGui
+{
+
+  // FORWARD DECLARATION
+  //! This is Menu part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiMenu : public GLGuiMenu
+  {
+
+  public:
+    GLGuiMenu();
+    virtual ~GLGuiMenu();
+
+    void init();
+
+    void addItem(const std::string& itemName);
+    void removeItem(const std::string& itemName);
+    void removeItem(unsigned int itemNumber);
+    void selectItem(const std::string& itemName);
+    void selectItem(unsigned int itemNumber);
+
+    virtual void draw();
+
+  private:
+    std::list<std::string>         itemList;
+
+  };
+}
+#endif /* _GLGUI_MENU_H */
Index: /branches/gui/src/lib/gui/gl/glgui_pushbutton.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_pushbutton.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_pushbutton.cc	(revision 8140)
@@ -0,0 +1,113 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_pushbutton.h"
+
+#include "text.h"
+#include "material.h"
+
+namespace OrxGui
+{
+
+  /**
+   * @brief standard constructor
+   */
+  GLGuiPushButton::GLGuiPushButton (const std::string& label)
+  : GLGuiButton(label)
+  {
+    this->init();
+
+    this->resize();
+  }
+
+
+  /**
+   * @brief standard deconstructor
+  */
+  GLGuiPushButton::~GLGuiPushButton()
+  {
+  }
+
+  void GLGuiPushButton::resize()
+  {
+    this->labelText().setRelCoor2D(borderLeft() + 5, borderTop() + 5);
+    this->setSize2D(this->labelText().getSizeX2D() + 10 + borderLeft()+borderRight(), this->labelText().getSizeY2D() + 10 + borderTop() + borderBottom() );
+
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(borderLeft(), borderTop());
+    this->frontRect().setSize(this->getSizeX2D() - (borderLeft() + borderRight()), this->getSizeY2D() - (borderTop() + borderBottom()));
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiPushButton::init()
+  {
+    this->setClassID(CL_GLGUI_PUSHBUTTON, "GLGuiPushButton");
+  }
+
+  void GLGuiPushButton::receivedFocus()
+  {
+    printf("%s received focus\n", this->label().c_str());
+    GLGuiWidget::receivedFocus();
+  }
+
+  void GLGuiPushButton::removedFocus()
+  {
+    printf("%s removed focus\n", this->label().c_str());
+    GLGuiWidget::removedFocus();
+
+  }
+
+  void GLGuiPushButton::clicking(const Vector2D& pos)
+  {
+    printf("%s clicked\n", this->label().c_str());
+    GLGuiButton::clicking(pos);
+  }
+
+
+  void GLGuiPushButton::releasing(const Vector2D& pos)
+  {
+    printf("%s released\n", this->label().c_str());
+    GLGuiButton::releasing(pos);
+  }
+
+
+
+  /**
+   * @brief draws the GLGuiPushButton
+   */
+  void GLGuiPushButton::draw() const
+  {
+    this->beginDraw();
+    GLGuiButton::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+    this->endDraw();
+    //   this->label->draw();
+    //  printf("test");
+  }
+
+  /**
+   * updates the GLGuiPushButton
+   */
+  void GLGuiPushButton::update()
+  {
+
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_pushbutton.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_pushbutton.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_pushbutton.h	(revision 8140)
@@ -0,0 +1,47 @@
+/*!
+ * @file glgui_pushbutton.h
+ * The gl_pushbutton widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_PUSHBUTTON_H
+#define _GLGUI_PUSHBUTTON_H
+
+#include "glgui_button.h"
+
+namespace OrxGui
+{
+
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiPushButton : public GLGuiButton
+  {
+
+  public:
+    GLGuiPushButton(const std::string& label = "");
+    virtual ~GLGuiPushButton();
+
+
+
+
+    virtual void draw() const;
+    virtual void update();
+  protected:
+    virtual void resize();
+    virtual void clicking(const Vector2D& pos);
+    virtual void releasing(const Vector2D& pos);
+    virtual void receivedFocus();
+    virtual void removedFocus();
+
+
+
+  private:
+    void init();
+
+  };
+}
+#endif /* _GLGUI_PUSHBUTTON_H */
Index: /branches/gui/src/lib/gui/gl/glgui_slider.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_slider.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_slider.cc	(revision 8140)
@@ -0,0 +1,261 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_slider.h"
+#include "event_def.h"
+
+#include "glgui_handler.h"
+
+namespace OrxGui
+{
+
+  /**
+   * @brief standard constructor
+   */
+  GLGuiSlider::GLGuiSlider ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  GLGuiSlider::~GLGuiSlider()
+  {}
+
+  /**
+   * @brief initializes the GUI-element
+   */
+  void GLGuiSlider::init()
+  {
+
+    this->setClassID(CL_GLGUI_SLIDER, "GLGuiSlider");
+
+    this->setClickable( );
+    this->setFocusable( );
+
+    this->_value = 0.0;
+    this->_minValue = 0.0;
+    this->_maxValue = 1.0;
+    this->_step = 0.1;
+    this->_sliderWidth = 5.0;
+    this->grabbed = false;
+
+    this->setSize2D(100, 30);
+    this->resize();
+  }
+
+  /**
+   * @param value the new Value.
+   * @note will automatically be set between max() and min()
+   */
+  void GLGuiSlider::setValue(float value)
+  {
+    if (value < this->min())
+      this->_value = min();
+    else if (value > max())
+      this->_value = max();
+    else
+      this->_value = value;
+    emit(valueChanged(this->_value));
+  }
+
+  /**
+   * @param minimum the minumum of the range.
+   *
+   * @note will rearange value if necessary and will not be made bigger than max()
+   */
+  void GLGuiSlider::setMin(float minimum)
+  {
+    if (minimum <= max())
+    {
+      this->_minValue = minimum;
+      emit(rangeChanged(this->_minValue, this->_maxValue));
+    }
+    if (this->value() < this->min())
+      this->setValue(this->min());
+  }
+
+
+  /**
+   * @param maximum the maximum of the range.
+   *
+   * @note will rearange value if necessary and will not be made smaller than min()
+   */
+  void GLGuiSlider::setMax(float maximum)
+  {
+    if (maximum >= min())
+    {
+      this->_maxValue = maximum;
+      emit(rangeChanged(this->_minValue, this->_maxValue));
+    }
+    if (this->value() > this->max())
+      this->setValue(this->max());
+  }
+
+  /**
+   * @param minimum the minimum
+   * @param maximum the maximum
+   *
+   * @see setMax
+   * @see setMin
+   */
+  void GLGuiSlider::setRange(float minimum, float maximum)
+  {
+    if (minimum < maximum)
+    {
+      this->_minValue = minimum;
+      this->_maxValue = maximum;
+      emit(rangeChanged(this->_minValue, this->_maxValue));
+    }
+    if (this->value() < this->min())
+      this->setValue(this->min());
+    else if (this->value() > this->max())
+      this->setValue(this->max());
+  }
+
+  /**
+   * @brief sets the stepSize
+   */
+  void GLGuiSlider::setStep(float step)
+  {
+    this->_step = step;
+  }
+
+  /**
+   * @brief makes one step into the minus direction
+   */
+  void GLGuiSlider::stepMinus()
+  {
+    this->setValue(value() - step());
+  }
+
+  /**
+   * @brief makes one step into the minus direction
+   */
+  void GLGuiSlider::stepPlus()
+  {
+    this->setValue(value() + step());
+  }
+
+  /**
+   * @brief resizes the Slider, and through this Synchronizes the GUI-size.
+   */
+  void GLGuiSlider::resize()
+  {
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(this->borderLeft(), this->getSizeY2D()/2.0 - 2.0);
+    this->frontRect().setSize(this->getSizeX2D() - borderLeft() - borderRight(), 4.0);
+  }
+
+  /**
+   * @brief handle the clicked event.
+   * @param pos the position the Click occured (from the topleft corner out)
+   */
+  void GLGuiSlider::clicking(const Vector2D& pos)
+  {
+    GLGuiWidget::clicking(pos);
+
+    float sliderPosition = this->sliderPosition();
+    if (sliderPosition > pos.x + this->_sliderWidth)
+      this->setValue(this->value() - this->step());
+
+    else if (sliderPosition < pos.x - this->_sliderWidth)
+      this->setValue(this->value() + this->step());
+    else
+      this->grabbed = true;
+  }
+
+  void GLGuiSlider::releasing(const Vector2D& pos)
+  {
+    GLGuiWidget::releasing(pos);
+    this->grabbed = false;
+  }
+
+  void GLGuiSlider::removedFocus()
+  {
+    GLGuiWidget::removedFocus();
+    this->grabbed = false;
+  }
+
+  /**
+   * @returns the current SliderPosition calculated from the current value and the Silders' size.
+   */
+  float GLGuiSlider::sliderPosition() const
+  {
+    return (this->_value - this->_minValue)/( this->_maxValue - this->_minValue) *
+           (this->getSizeX2D() - (borderLeft() + borderRight() + 2.0*_sliderWidth)) +
+           (borderLeft() +_sliderWidth);
+  }
+
+  /**
+   * @param position the position relative from the left border.
+   * @returns the Value at the given position.
+   */
+  float GLGuiSlider::sliderValue(float position) const
+  {
+    return (position - (borderLeft()+_sliderWidth)) / (this->getSizeX2D() - (borderLeft() + borderRight() + 2.0*_sliderWidth))
+           *( this->_maxValue - this->_minValue) +
+           this->_minValue ;
+  }
+
+  void GLGuiSlider::tick(float dt)
+  {
+  }
+
+  /**
+   * @brief draws the GLGuiSlider
+   */
+  void GLGuiSlider::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+
+    this->drawRect(Rect2D(this->sliderPosition()-_sliderWidth/2.0, 0*this->borderTop(), _sliderWidth, this->getSizeY2D() - (borderTop() + borderBottom()) +20));
+
+    this->endDraw();
+  }
+
+
+  bool GLGuiSlider::processEvent( const Event& event )
+  {
+    if (this->grabbed && event.type == EV_MOUSE_MOTION)
+    {
+      this->setValue(sliderValue(GLGuiHandler::getInstance()->cursorPositionRel(this).x));
+      return true;
+    }
+    else if (event.bPressed)
+    {
+      if (event.type == SDLK_LEFT)
+      {
+        this->stepMinus();
+        return true;
+      }
+      else if (event.type == SDLK_RIGHT)
+      {
+        this->stepPlus();
+        return true;
+      }
+    }
+    return false;
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_slider.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_slider.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_slider.h	(revision 8140)
@@ -0,0 +1,83 @@
+/*!
+ * @file glgui_slider.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_SLIDER_H
+#define _GLGUI_SLIDER_H
+
+#include "glgui_widget.h"
+#include "glgui_defs.h"
+
+namespace OrxGui
+{
+  // FORWARD DECLARATION
+
+  //! This is part of the openglGUI class
+  /**
+   * The Slider is a Widget, with a Range and a Value.
+   */
+  class GLGuiSlider : public GLGuiWidget
+  {
+
+  public:
+    GLGuiSlider();
+    virtual ~GLGuiSlider();
+
+    /** @returns the Value of the Slider. */
+    float value() const { return this->_value; }
+    /** @returns the minimum of the sliders range */
+    float min() const { return this->_minValue; };
+    /** @returns the maximum of the sliders range */
+    float max() const { return this->_maxValue; };
+    /** @returns the step size */
+    float step() const { return this->_step; };
+
+    void setValue(float value);
+
+    void setMin(float minimum);
+    void setMax(float maximum);
+    void setRange(float minimum, float maximum);
+
+    void setStep(float step);
+
+    void stepPlus();
+    void stepMinus();
+
+
+    virtual void tick(float dt);
+    virtual bool processEvent(const Event& event);
+    virtual void draw() const;
+
+    DeclareSignal1(valueChanged, float);
+    DeclareSignal2(rangeChanged, float, float);
+
+  protected:
+    virtual void resize();
+
+    virtual void clicking(const Vector2D& pos);
+    virtual void releasing(const Vector2D& pos);
+    virtual void removedFocus();
+
+  private:
+    void init();
+    float sliderPosition() const;
+    float sliderValue(float position) const;
+
+  private:
+    Orientation      orientation;
+
+    float            _maxValue;
+    float            _minValue;
+    float            _step;
+
+    float            _value;
+
+    float            _sliderWidth;
+
+    bool             grabbed;
+
+  };
+}
+#endif /* _GLGUI_SLIDER_H */
Index: /branches/gui/src/lib/gui/gl/glgui_text.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_text.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_text.cc	(revision 8140)
@@ -0,0 +1,56 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_text.h"
+
+#include "text.h"
+
+namespace OrxGui
+{
+  /**
+   * standard constructor
+  */
+  GLGuiText::GLGuiText ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiText::~GLGuiText()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiText::init()
+  {
+    this->setClassID(CL_GLGUI_, "GLGuiText");
+
+  }
+
+  /**
+   * draws the GLGuiText
+   */
+  void GLGuiText::draw()
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_text.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_text.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_text.h	(revision 8140)
@@ -0,0 +1,41 @@
+/*!
+ * @file glgui_text.h
+ * The gl_TEXT widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_TEXT_H
+#define _GLGUI_TEXT_H
+
+#include "glgui_widget.h"
+
+// FORWARD DECLARATION
+class Text;
+namespace OrxGui
+{
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiText : public GLWidget
+  {
+
+  public:
+    GLGuiText();
+    virtual ~GLGuiText();
+
+    void setText();
+
+    virtual void draw();
+
+  private:
+    void init();
+
+
+  private:
+    Text*             text;
+  };
+}
+
+#endif /* _GLGUI_TEXT_H */
Index: /branches/gui/src/lib/gui/gl/glgui_textfield.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_textfield.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_textfield.cc	(revision 8140)
@@ -0,0 +1,59 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_textfield.h"
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiTextfield::GLGuiTextfield ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiTextfield::~GLGuiTextfield()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiTextfield::init()
+  {
+    this->setClassID(CL_GLGUI_TEXTFIELD, "GLGuiTextfield");
+  }
+
+  /**
+   * @brief draws the GLGuiTextfield
+   */
+  void GLGuiTextfield::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+    this->endDraw();
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_textfield.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_textfield.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_textfield.h	(revision 8140)
@@ -0,0 +1,42 @@
+/*!
+ * @file glgui_textfield.h
+ * The gl_ widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_TEXTFIELD_H
+#define _GLGUI_TEXTFIELD_H
+
+#include "glgui_widget.h"
+
+#include "text.h"
+#include <vector>
+
+// FORWARD DECLARATION
+class Text;
+namespace OrxGui
+{
+
+  //! This is part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiTextfield : public GLGuiWidget
+  {
+
+  public:
+    GLGuiTextfield();
+    virtual ~GLGuiTextfield();
+
+    void init();
+
+    void process(const Event& event);
+
+    virtual void draw() const;
+
+  private:
+    std::vector<Text>        textLines;
+
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glgui_widget.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_widget.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_widget.cc	(revision 8140)
@@ -0,0 +1,252 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_widget.h"
+
+#include "glgui_cursor.h"
+
+#include "material.h"
+
+#include "debug.h"
+
+namespace OrxGui
+{
+
+  /**
+   * @brief standard constructor
+  */
+  GLGuiWidget::GLGuiWidget (GLGuiWidget* parent)
+  {
+    this->init();
+
+    this->setParentWidget(parent);
+  }
+
+
+  /**
+   * @brief standard deconstructor
+   */
+  GLGuiWidget::~GLGuiWidget()
+  {
+    if (this == GLGuiWidget::_focused)
+      GLGuiWidget::_focused = NULL;
+  }
+
+  GLGuiWidget* GLGuiWidget::_selected = NULL;
+  GLGuiWidget* GLGuiWidget::_focused = NULL;
+  GLGuiWidget* GLGuiWidget::_inputGrabber = NULL;
+
+
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiWidget::init()
+  {
+    this->setClassID(CL_GLGUI_WIDGET, "GLGuiWidget");
+
+    this->_focusable = false;
+    this->_clickable = false;
+    this->_pushed = false;
+
+    this->setVisibility(GLGUI_WIDGET_DEFAULT_VISIBLE);
+
+    this->_backMat.setDiffuse(1.0, 1.0, 1.0);
+    this->_frontMat.setDiffuse(1.0, 0.0, 0.0);
+
+    this->_borderLeft = 1.0;
+    this->_borderRight = 1.0;
+    this->_borderTop = 20.0;
+    this->_borderBottom = 1.0;
+  }
+
+
+  void GLGuiWidget::setParentWidget(GLGuiWidget* parent)
+  {
+    this->_parent = parent;
+
+    if (parent != NULL)
+      parent->addChild2D(this);
+  }
+
+  /** @brief gives focus to this widget */
+  void GLGuiWidget::giveFocus()
+  {
+    if (GLGuiWidget::focused() != NULL)
+      GLGuiWidget::focused()->breakFocus();
+    GLGuiWidget::_focused = this;
+    this->receivedFocus();
+  };
+
+  void GLGuiWidget::breakFocus()
+  {
+    if (GLGuiWidget::_focused == this)
+    {
+      GLGuiWidget::_focused = NULL;
+      this->_pushed = false;
+      this->removedFocus();
+    }
+  };
+
+
+  bool GLGuiWidget::focusOverWidget(const Vector2D& position) const
+  {
+    return (this->getAbsCoor2D().x < position.x && this->getAbsCoor2D().x + this->getSizeX2D() > position.x &&
+            this->getAbsCoor2D().y < position.y && this->getAbsCoor2D().y + this->getSizeY2D() > position.y);
+  }
+
+  bool GLGuiWidget::focusOverWidget(const GLGuiCursor* const cursor) const
+  {
+    return this->focusOverWidget(cursor->getAbsCoor2D());
+  }
+
+
+  void GLGuiWidget::setBorderSize(float borderSize)
+  {
+    this->_borderLeft = borderSize;
+    this->_borderRight = borderSize;
+    this->_borderTop = borderSize;
+    this->_borderBottom = borderSize;
+    this->resize();
+  }
+
+  void GLGuiWidget::setBorderLeft(float borderLeft)
+  {
+    this->_borderLeft = borderLeft;
+    this->resize();
+  }
+  void GLGuiWidget::setBorderRight(float borderRight)
+  {
+    this->_borderRight = borderRight;
+    this->resize();
+  }
+  void GLGuiWidget::setBorderTop(float borderTop)
+  {
+    this->_borderTop = borderTop;
+    this->resize();
+  }
+  void GLGuiWidget::setBorderBottom(float borderBottom)
+  {
+    this->_borderBottom = borderBottom;
+    this->resize();
+  }
+
+
+
+  void GLGuiWidget::resize()
+  {
+    this->backRect().setSize(this->getSize2D());
+    if (this->parent() != NULL)
+      this->parent()->resize();
+  }
+
+
+  void GLGuiWidget::click(const Vector2D& pos)
+  {
+    assert (!this->_pushed);
+    this->_pushed = true;
+
+    this->clicking(pos);
+  }
+
+  void GLGuiWidget::release(const Vector2D& pos)
+  {
+    if (this->_pushed)
+    {
+      this->releasing(pos);
+      this->_pushed = false;
+    }
+  }
+
+
+  void GLGuiWidget::clicking(const Vector2D& pos)
+  {
+    this->frontMaterial().setDiffuse(0, 0, 1);
+
+  }
+
+  void GLGuiWidget::releasing(const Vector2D& pos)
+  {
+    this->frontMaterial().setDiffuse(0,1,0);
+
+  }
+
+  void GLGuiWidget::receivedFocus()
+  {
+    this->frontMaterial().setDiffuse(0, 1, 0);
+  }
+
+  void GLGuiWidget::removedFocus()
+  {
+    this->frontMaterial().setDiffuse(1, 0, 0);
+
+  }
+
+  void GLGuiWidget::destroyed()
+  {}
+  ;
+
+  void GLGuiWidget::setWidgetSize(const Vector2D& size)
+  {
+    this->setSize2D(size);
+    this->resize();
+
+  }
+
+
+  void GLGuiWidget::setWidgetSize(float x, float y)
+  {
+    this->setWidgetSize(Vector2D(x, y));
+  }
+
+
+
+  void GLGuiWidget::connect(GLGuiWidget* sender, Signal& signal, BaseObject* receiver, Slot executor)
+  {
+    sender->connect(signal, receiver, executor);
+  }
+
+  void GLGuiWidget::connect(Signal& signal, BaseObject* receiver, Slot executor)
+  {
+    signal.push_back(SignalConnector(receiver, executor));
+  }
+
+
+  void GLGuiWidget::show()
+  {
+    this->setVisibility(true);
+    this->showing();
+  }
+
+
+  void GLGuiWidget::hide()
+  {
+    this->setVisibility(false);
+    this->hiding();
+  }
+
+
+  /**
+   * USE THIS FUNCTION ONLY FROM DERIVED CLASS
+   */
+  void GLGuiWidget::draw() const
+  {
+    this->backMaterial().select();
+    this->drawRect(this->backRect());
+  }
+
+}
Index: /branches/gui/src/lib/gui/gl/glgui_widget.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_widget.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_widget.h	(revision 8140)
@@ -0,0 +1,177 @@
+/*!
+ * @file glgui_widget.h
+ * The gl_widget of the openglGUI
+ */
+
+#ifndef _GLGUI_WIDGET_H
+#define _GLGUI_WIDGET_H
+
+#include "element_2d.h"
+#include "rect2D.h"
+
+#include "material.h"
+
+#include "event.h"
+#include "signal_connector.h"
+
+#include "glincl.h"
+
+#include <vector>
+
+// FORWARD DECLARATION
+class Material;
+
+namespace OrxGui
+{
+
+  class GLGuiCursor;
+
+  //! if the Element should be visible by default.
+#define GLGUI_WIDGET_DEFAULT_VISIBLE       false
+
+  //! This is widget part of the openglGUI class
+  /**
+   * A widget is the main class of all the elements of th GUI.
+   */
+  class GLGuiWidget : public Element2D
+  {
+  public:
+    GLGuiWidget(GLGuiWidget* parent = NULL);
+    virtual ~GLGuiWidget();
+
+    void show();
+    void hide();
+
+
+    void setParentWidget(GLGuiWidget* parent);
+    GLGuiWidget* parent() const { return this->_parent; }
+
+    /// FOCUS
+    /** @brief gives focus to this widget */
+    void giveFocus();
+    void breakFocus();
+    /** @returns true if the widget is focusable */
+    bool focusable() const { return this->_focusable; };
+    /** @param focusable sets if the Widget should be focusable */
+    void setFocusable(bool focusable = true) { this->_focusable = focusable; };
+    /** @returns true if the position is inside of the Widget. @param position the position to check */
+    bool focusOverWidget(const Vector2D& position) const;
+    /** @brief overloaded function, that returns true if the cursor is on top of the Widget */
+    bool focusOverWidget(const OrxGui::GLGuiCursor* const cursor) const;
+
+    /** @returns the currently focused Widget (NULL if none is selected) */
+    static GLGuiWidget* focused() { return GLGuiWidget::_focused; };
+
+
+    /// CLICK
+    void click(const Vector2D& pos);
+    void release(const Vector2D& pos);
+    bool clickable() const { return this->_clickable; };
+    void setClickable(bool clickable = true) { this->_clickable = clickable; };
+
+    static void connect(GLGuiWidget* sender, Signal& signal, BaseObject* receiver, Slot executor);
+    void connect(Signal& signal, BaseObject* receiver, Slot executor);
+
+    void disconnect(GLGuiWidget* sender, Signal& signal, BaseObject* receiver);
+
+
+    /// MATERIAL (looks)
+    Material& backMaterial() { return this->_backMat; };
+    const Material& backMaterial() const { return this->_backMat; };
+    Rect2D& backRect() { return this->_backRect; };
+    const Rect2D& backRect() const { return this->_backRect; };
+
+    Material& frontMaterial() { return this->_frontMat; };
+    const Material& frontMaterial() const { return this->_frontMat; };
+    Rect2D& frontRect() { return this->_frontRect; };
+    const Rect2D& frontRect() const { return this->_frontRect; };
+
+    /** @brief sets all borders to the same value. */
+    void setBorderSize(float borderSize);
+    void setBorderLeft(float borderLeft);
+    void setBorderRight(float borderRight);
+    void setBorderTop(float borderTop);
+    void setBorderBottom(float borderBottom);
+
+    float borderLeft() const { return this->_borderLeft; };
+    float borderRight() const { return this->_borderRight; };
+    float borderTop() const { return this->_borderTop; };
+    float borderBottom() const { return this->_borderBottom; };
+
+
+    void setWidgetSize(const Vector2D& size);
+    void setWidgetSize(float x, float y);
+
+
+    void setBackgroundColor(float x, float y, float z) { this->backMaterial().setDiffuse(x,y,z); };
+
+    inline void drawRect(const Rect2D& rect) const {
+      glBegin(GL_QUADS);
+      glTexCoord2i(0,0); glVertex2d(rect.left(), rect.top());
+      glTexCoord2i(0,1); glVertex2d(rect.left(), rect.bottom());
+      glTexCoord2i(1,1); glVertex2d(rect.right(), rect.bottom());
+      glTexCoord2i(1,0); glVertex2d(rect.right(), rect.top());
+      glEnd();
+    }
+
+
+    virtual void update() {};
+    virtual void draw() const;
+
+    /** @param the Event to process. @returns true if the Event has been consumed*/
+    virtual bool processEvent(const Event& event) { };
+
+  protected:
+
+    /// LOOKS
+    virtual void resize();
+
+    virtual void hiding() {};
+    virtual void showing() {};
+    // if something was clickt on the GUI-widget.
+    virtual void clicking(const Vector2D& pos);
+    virtual void releasing(const Vector2D& pos);
+    virtual void receivedFocus();
+    virtual void removedFocus();
+
+    virtual void destroyed();
+
+
+    inline void beginDraw() const { glPushMatrix(); glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0); };
+    inline void endDraw() const { glPopMatrix(); };
+
+  private:
+    void init();
+
+
+  private:
+    GLGuiWidget*                   _parent;           //!< The parent of this Widget.
+
+    /// LOOKS
+    Material                       _backMat;
+    Rect2D                         _backRect;
+
+    Material                       _frontMat;
+    Rect2D                         _frontRect;
+
+    float                          _borderLeft;
+    float                          _borderRight;
+    float                          _borderTop;
+    float                          _borderBottom;
+
+    Vector2D                       _minSize;
+
+    /// EVENTS
+    bool                           _focusable;        //!< If this widget can receive focus.
+    bool                           _clickable;        //!< if this widget can be clicked upon.
+
+    bool                           _pushed;
+
+
+    static GLGuiWidget*            _selected;         //!< The currently selected Widget.
+    static GLGuiWidget*            _focused;          //!< The currently Focused Widget.
+
+    static GLGuiWidget*            _inputGrabber;     //!< The Widget that grabs input.
+  };
+}
+#endif /* _GLGUI_WIDGET_H */
Index: /branches/gui/src/lib/gui/gl/glgui_window.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_window.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_window.cc	(revision 8140)
@@ -0,0 +1,55 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
+
+#include "glgui_window.h"
+
+namespace OrxGui
+{
+
+  /**
+   * standard constructor
+  */
+  GLGuiWindow::GLGuiWindow ()
+  {
+    this->init();
+
+  }
+
+
+  /**
+   * standard deconstructor
+  */
+  GLGuiWindow::~GLGuiWindow()
+  {
+  }
+
+  /**
+   * initializes the GUI-element
+   */
+  void GLGuiWindow::init()
+  {
+    this->setClassID(CL_GLGUI_WINDOW, "GLGuiWindow");
+
+  }
+
+  /**
+   * draws the GLGuiWindow
+   */
+  void GLGuiWindow::draw() const
+  {
+  }
+}
Index: /branches/gui/src/lib/gui/gl/glgui_window.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glgui_window.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glgui_window.h	(revision 8140)
@@ -0,0 +1,35 @@
+/*!
+ * @file glgui_window.h
+ * The gl_WINDOW widget of th openglGUI
+ *
+ */
+
+#ifndef _GLGUI_WINDOW_H
+#define _GLGUI_WINDOW_H
+
+#include "glgui_container.h"
+
+// FORWARD DECLARATION
+namespace OrxGui
+{
+
+  //! This is window part of the openglGUI class
+  /**
+   *
+   */
+  class GLGuiWindow : public GLGuiContainer
+  {
+
+  public:
+    GLGuiWindow();
+    virtual ~GLGuiWindow();
+
+    void init();
+
+    virtual void draw() const;
+
+  private:
+
+  };
+}
+#endif /* _GLGUI__H */
Index: /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.cc	(revision 8140)
@@ -0,0 +1,286 @@
+
+
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer: Benjamin GRauer
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_LOAD
+
+#include "glmenu_imagescreen.h"
+
+#include "graphics_engine.h"
+#include "material.h"
+#include "util/loading/factory.h"
+#include "util/loading/load_param.h"
+
+CREATE_FACTORY(GLMenuImageScreen, CL_GLMENU_IMAGE_SCREEN);
+
+using namespace std;
+/**
+ * @param root The Element to load the GLMenu from
+ */
+GLMenuImageScreen::GLMenuImageScreen(const TiXmlElement* root)
+{
+  this->setClassID(CL_GLMENU_IMAGE_SCREEN, "GLMenuImageScreen");
+  this->setName("GLMenuLoadScreen");
+  // Select Our VU Meter Background Texture
+  this->backMat = new Material("load_screen");
+  this->barMat = new Material("bar");
+  this->barMat->setDiffuse(1,1,1);
+  this->backMat->setDiffuse(1,1,1);
+  this->maxValue = 10;
+  this->currentValue = 0;
+  this->setPosition(0,0);
+  this->setScale(1,1);
+  this->setBarPosScale( .6, .75, .3, .1);
+  // End of Background image code.
+
+  if (root != NULL)
+    this->loadParams(root);
+}
+
+/**
+ *  Loads a GLMenu from an inputElement
+ * @param root The Element to load the GLMenu from
+*/
+void GLMenuImageScreen::loadParams(const TiXmlElement* root)
+{
+  LoadParam(root, "BackgroundImage", this, GLMenuImageScreen, setBackgroundImage)
+    .describe("sets the image to load onto the loadscreen");
+
+  LoadParam(root, "BackgroundPS", this, GLMenuImageScreen, setPosScale)
+    .describe("The Position and Scale of the Background Image in %(0-1.0). PosX, PosY, SizeX, SizeY");
+
+  LoadParam(root, "BarImage", this, GLMenuImageScreen, setBarImage)
+    .describe("sets the image of the LoadingBar");
+
+  LoadParam(root, "BarPS", this, GLMenuImageScreen, setBarPosScale)
+    .describe("The Position and Scale of the Loading Bar in %(0-1.0). PosX, PosY, SizeX, SizeY");
+
+  LoadParam(root, "ElementCount", this, GLMenuImageScreen, setMaximum)
+    .describe("The Count of elements to load into the bar (this is only a maximum value)");
+}
+
+/**
+ *  standard deconstructor
+   @todo this deconstructor is not jet implemented - do it
+*/
+GLMenuImageScreen::~GLMenuImageScreen()
+{
+  delete this->backMat;
+  delete this->barMat;
+}
+
+/**
+  * @brief sets the background image name
+  * @param backImageName name of the backgroun-image
+ */
+void GLMenuImageScreen::setBackgroundImage (const std::string& backImageName)
+{
+  this->backMat->setDiffuseMap(backImageName);
+}
+
+/**
+ * @brief sets position of the ImageScreen
+ * @param offsetX offset from the top left corner in percent(0-1) of the screensize
+ * @param offsetY offset from the top left corner in percent(0-1) of the screensize
+*/
+void GLMenuImageScreen::setPosition(float offsetX, float offsetY)
+{
+  this->offsetX = offsetX;
+  this->offsetY = offsetY;
+}
+
+/**
+ * @brief sets size of the ImageScreen
+ * @param scaleX the scaleing of the image into the x-direction (in percent (0-1))
+ * @param scaleY the scaleing of the image into the y-direction (in percent (0-1))
+*/
+void GLMenuImageScreen::setScale(float scaleX, float scaleY)
+{
+  this->scaleX = scaleX;
+  this->scaleY = scaleY;
+}
+
+/**
+ * @brief sets position and size of the ImageScreen
+ * @param offsetX offset from the top left corner in percent(0-1) of the screensize
+ * @param offsetY offset from the top left corner in percent(0-1) of the screensize
+ * @param scaleX the scaleing of the image into the x-direction (in percent (0-1))
+ * @param scaleY the scaleing of the image into the y-direction (in percent (0-1))
+*/
+void GLMenuImageScreen::setPosScale(float offsetX, float offsetY, float scaleX, float scaleY)
+{
+  this->setPosition(offsetX, offsetY);
+  this->setScale(scaleX, scaleY);
+}
+
+/**
+ * @param barImage An image for the Bar
+*/
+void GLMenuImageScreen::setBarImage(const std::string& barImage)
+{
+  this->barMat->setDiffuseMap(barImage);
+}
+
+/**
+ * @brief sets the Position and the Size of the bar
+ * @param barX The Position in the x-direction in percent of the screen (0-1)
+ * @param barY The Position in the y-direction in percent of the screen (0-1)
+ * @param barW The Size in the x-direction in percent of the screen (0-1)
+ * @param barH The Size in the y-direction in percent of the screen (0-1)
+*/
+void GLMenuImageScreen::setBarPosScale(float barX, float barY, float barW, float barH)
+{
+  this->barX = barX;
+  this->barY = barY;
+  this->barW = barW;
+  this->barH = barH;
+}
+
+
+/**
+ * @brief set the maximum of countable steps
+ * @param maxValue of steps
+*/
+void GLMenuImageScreen::setMaximum(int maxValue)
+{
+  this->maxValue = maxValue;
+}
+
+/**
+ * @brief set current value
+ * @param currentValue value to set
+*/
+void GLMenuImageScreen::setValue(int currentValue)
+{
+  this->currentValue = currentValue;
+  this->draw();
+}
+
+
+/**
+ * @brief get the current value
+ */
+int GLMenuImageScreen::getValue()
+{
+  return this->currentValue;
+}
+
+
+/**
+ * @brief call this to trigger a progress event
+ *
+ * this has to redraw the progress bar and the whole image
+ */
+void GLMenuImageScreen::step ()
+{
+  if (this->currentValue < this->maxValue)
+  {
+    this->currentValue++;
+    this->draw();
+  }
+  else
+    PRINTF(2)("ImageScreen-loadbar exceeds maximum value %d\n", this->maxValue);
+}
+
+
+
+/**
+ * @brief draws the ImageScreen to the screenbuffer
+*/
+void GLMenuImageScreen::draw ()
+{
+  glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+
+  PRINTF(4)("GLMenuImagEscreen::draw() - drawing step %i/%i\n",
+            this->currentValue, this->maxValue);
+
+  /* screen size */
+  int screenWidth = GraphicsEngine::getInstance()->getResolutionX();
+  int screenHeight = GraphicsEngine::getInstance()->getResolutionY();
+
+  int imageWidth = (int)(screenWidth * this->scaleX);
+  int imageHeight = (int)(screenHeight * this->scaleY);
+
+  int offsetX = (int)(this->offsetX * screenWidth);
+  int offsetY = (int)(this->offsetY * screenHeight);
+
+  /* loadbar pos */
+  int barX = (int)(this->barX *screenWidth);
+  int barY = (int)(this->barY *screenHeight);
+  int barW = (int)(this->barW *screenWidth);
+  int barH = (int)(this->barH *screenHeight);
+
+  float val = (float)this->currentValue/(float)this->maxValue;
+
+  if( val > barW)
+    val = barW;
+
+  GraphicsEngine::enter2DMode();
+
+  /* draw the BackGround */
+  backMat->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2i(0, 1); glVertex2i(offsetX, offsetY + imageHeight);
+  glTexCoord2i(1, 1); glVertex2i(offsetX +imageWidth, offsetY + imageHeight);
+  glTexCoord2i(0, 0); glVertex2i(offsetX, offsetY);
+  glTexCoord2i(1, 0); glVertex2i(offsetX + imageWidth, offsetY);
+  glEnd();
+
+  /* draw white border */
+  glBegin(GL_LINE_LOOP);
+  glColor3f(1.0, 1.0, 1.0);
+  glVertex2i(barX - 2, barY - 2);
+  glVertex2i(barX + barW + 2, barY - 2);
+  glVertex2i(barX + barW + 2, barY + barH + 2);
+  glVertex2i(barX - 2, barY + barH + 2);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+
+  /* draw the progress bar */
+  barMat->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2f(0,   1); glVertex2i(barX, barY + barH);
+  glTexCoord2f(val, 1); glVertex2i(barX + (int)(val * this->barW * (float)screenWidth), barY + barH);
+  glTexCoord2f(0,   0); glVertex2i(barX, barY);
+  glTexCoord2f(val, 0); glVertex2i(barX + (int)(val * this->barW * (float)screenWidth), barY);
+  glEnd();
+
+  /*
+    glBegin(GL_QUADS);
+    glColor3f(0.0, 0.0, 0.0);
+    glVertex2i(barX, barY);
+    glVertex2i(barX + barWidth, barY);
+    glVertex2i(barX + barWidth, barY + barHeight);
+    glVertex2i(barX, barY + barHeight);
+    glColor3f(1.0, 1.0, 1.0);
+    glEnd();
+
+    /* draw black border
+    glBegin(GL_QUADS);
+    glColor3f(0.0, 0.0, 0.0);
+    glVertex2i(barX-1, barY-1);
+    glVertex2i(barX + barWidth +1, barY-1);
+    glVertex2i(barX + barWidth+1, barY + barHeight+1);
+    glVertex2i(barX - 1, barY + barHeight +1);
+    glColor3f(1.0, 1.0, 1.0);
+    glEnd();
+
+  */
+
+  GraphicsEngine::leave2DMode();
+
+  SDL_GL_SwapBuffers();
+}
Index: /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.h
===================================================================
--- /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/glmenu/glmenu_imagescreen.h	(revision 8140)
@@ -0,0 +1,64 @@
+/*!
+ * @file glmenu_imagescreen.h
+ * class to display a LoadScreen
+ */
+
+#ifndef _GLMENU_IMAGESCREEN_H
+#define _GLMENU_IMAGESCREEN_H
+
+#include "base_object.h"
+
+class Material;
+class TiXmlElement;
+
+//! A class to display a loadScreen
+class GLMenuImageScreen : public BaseObject
+{
+
+public:
+  GLMenuImageScreen (const TiXmlElement* root = NULL);
+  virtual void loadParams(const TiXmlElement* root);
+  virtual ~GLMenuImageScreen ();
+
+  void draw();
+
+  void setBackgroundImage(const std::string& backImageName);
+  void setPosition(float offsetX, float offsetY);
+  void setScale (float scaleX, float scaleY);
+  void setPosScale(float offsetX, float offsetY, float scaleX, float scaleY);
+
+  void setBarImage(const std::string& barImage);
+  void setBarPosScale(float barX, float barY, float barW, float barH);
+
+  void setMaximum (int maxValue);
+  /** @returns the maximum of countable steps*/
+  inline int GLMenuImageScreen::getMaximum() const { return this->maxValue; };
+
+  void setValue (int currentValue);
+  int  getValue ();
+  void step ();
+
+
+private:
+  // background image
+  std::string         backImageName;       //!< the name of the file of the background image
+  float         offsetX;             //!< X-offset of the the image from the left
+  float         offsetY;             //!< Y-offset of the image from the top
+  float         scaleX;              //!< width of the image
+  float         scaleY;              //!< height of the image
+  Material*     backMat;             //!< Background Material.
+
+  // Load-Bar
+  float         barX;                //!< X-position of the Bar
+  float         barY;                //!< Y-position of the Bar
+  float         barW;                //!< Width of the Bat
+  float         barH;                //!< Height of the Bar.
+  Material*     barMat;              //!< A Material for the Loading-Bar
+
+  /* progress bar values */
+  int           currentValue;        //!< the current count of step() calls fired yet
+  int           maxValue;            //!< total count of steps
+
+};
+
+#endif /* _GLMENU_IMAGESCREEN_H */
Index: /branches/gui/src/lib/gui/gl/signal_connector.cc
===================================================================
--- /branches/gui/src/lib/gui/gl/signal_connector.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/signal_connector.cc	(revision 8140)
@@ -0,0 +1,168 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "signal_connector.h"
+
+namespace OrxGui
+{
+
+  /**
+   * @brief creates a clean SignalConnector
+   */
+  SignalConnector::SignalConnector( )
+  {
+    this->object = NULL;
+    this->exec = NULL;
+  }
+
+  /**
+   * @brief Creates a SignalConnector out of an ObjectPointer, and an Executor.
+   * @param object the Object the Executor will apply to.
+   * @param executor the Executor that will be executed.
+   * @return a new SignalConnector.
+   */
+  SignalConnector::SignalConnector(BaseObject* object, const Executor* executor)
+  {
+    this->object = object;
+    this->exec = executor;
+  };
+
+  /**
+   * @brief Creates a SignalConnector as a copy of another one.
+   * @param signalConnector The SignalConnector to copy.
+   */
+  SignalConnector::SignalConnector(const SignalConnector& signalConnector)
+  {
+    this->object = signalConnector.object;
+    this->exec = (signalConnector.exec == NULL) ? NULL : signalConnector.exec->clone();
+  }
+
+  /**
+   * @brief deletes a SignalConnector.
+   *
+   * frees the stored executor
+   */
+  SignalConnector::~SignalConnector()
+  {
+    delete exec;
+  }
+
+  /**
+   * @brief assignes a SignalConnector to the current one
+   * @param signalConnector the SignalConnector to assign to this one
+   * @return A Reference to this SignalConnector.
+   */
+  SignalConnector& SignalConnector::operator=(const SignalConnector& signalConnector)
+  {
+    delete this->exec;
+    this->object = signalConnector.object;
+    this->exec = (signalConnector.exec == NULL) ? NULL : signalConnector.exec->clone();
+  }
+
+
+  /**
+   * @brief compares two SignalConnectors.
+   * @param signalConnector the SignalConnector to compare against this one.
+   * @return true if the Connectors are the same.
+   */
+  bool SignalConnector::operator==(const SignalConnector& signalConnector) const
+  {
+    return (this->object == signalConnector.object /* && this->exec == signalConnector.exec */ );
+  }
+
+
+  /**
+   * @brief Executes the SignalConnector.
+   */
+  void SignalConnector::operator()() const
+  {
+    if (this->isValid())
+      (*this->exec)(this->object, 0, NULL);
+  }
+
+  /**
+   * @brief Executes the SignalConnector.
+   * @param value0 First Value.
+   */
+  void SignalConnector::operator()(const MultiType& value0) const
+  {
+    if (exec != NULL && object != NULL)
+      (*this->exec)(this->object, 1, (void*)&value0);
+  }
+
+  /**
+   * @brief Executes the SignalConnector.
+   * @param value0 First Value
+   * @param value1 Second Value
+   */
+  void SignalConnector::operator()(const MultiType& value0, const MultiType& value1) const
+  {
+    if (exec != NULL && object != NULL)
+    {
+      MultiType mt[] = { value0, value1 };
+      (*this->exec)(this->object, 2, mt);
+    }
+  }
+
+  /**
+   * @brief Executes the SignalConnector.
+   * @param value0 First Value
+   * @param value1 Second Value
+   * @param value2 Third Value
+   */
+  void SignalConnector::operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2) const
+  {
+    if (exec != NULL && object != NULL)
+    {
+      MultiType mt[] = { value0, value1, value2 };
+      (*this->exec)(this->object, 3, mt);
+    }
+  }
+
+  /**
+   * @brief Executes the SignalConnector.
+   * @param value0 First Value
+   * @param value1 Second Value
+   * @param value2 Third Value
+   * @param value3 Fourth Value
+   */
+  void SignalConnector::operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2, const MultiType& value3) const
+  {
+    if (exec != NULL && object != NULL)
+    {
+      MultiType mt[] = { value0, value1, value2, value3 };
+      (*this->exec)(this->object, 4, mt);
+    }
+  }
+
+  /**
+   * @brief Executes the SignalConnector.
+   * @param value0 First Value
+   * @param value1 Second Value
+   * @param value2 Third Value
+   * @param value3 Fourth Value
+   * @param value3 Fifth Value
+   */
+  void SignalConnector::operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2, const MultiType& value3, const MultiType& value4) const
+  {
+    if (exec != NULL && object != NULL)
+    {
+      MultiType mt[] = { value0, value1, value2, value3, value4 };
+      (*this->exec)(this->object, 5, mt);
+    }
+  }
+}
Index: /branches/gui/src/lib/gui/gl/signal_connector.h
===================================================================
--- /branches/gui/src/lib/gui/gl/signal_connector.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gl/signal_connector.h	(revision 8140)
@@ -0,0 +1,186 @@
+/*!
+ * @file signal_connector.h
+ * @brief Definition of a SignalConnector class
+*/
+
+#ifndef _SIGNAL_CONNECTOR_H
+#define _SIGNAL_CONNECTOR_H
+
+#include "executor/executor.h"
+
+namespace OrxGui
+{
+
+  //////////////// TO BE IGNORED BY YOU /////
+#define DeclareSignalBegin(SignalName) \
+  public: \
+   void signal_ ## connect ## SignalName(const SignalConnector& connector) { \
+     SignalName ## connected.push_back(connector); \
+}\
+   Signal& getSignalVector_##SignalName () { return this->SignalName ## connected; }; \
+  private:
+
+#define DeclareSignalEnd(SignalName) \
+  Signal SignalName ## connected
+  /////////////////////////////////////////////
+
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   */
+#define DeclareSignal0(SignalName) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName () { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (); \
+   }\
+     DeclareSignalEnd(SignalName)
+
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   * @param param0 the first Parameter the Function takes
+   */
+#define DeclareSignal1(SignalName, param0) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName (param0 val0) { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (val0); \
+    }\
+    DeclareSignalEnd(SignalName)
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   * @param param0 the first Parameter the Function takes
+   * @param param1 the second Parameter the Function takes
+   */
+#define DeclareSignal2(SignalName, param0, param1) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName (param0 val0, param1 val1) { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (val0, val1); \
+}\
+    DeclareSignalEnd(SignalName)
+
+
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   * @param param0 the first Parameter the Function takes
+   * @param param1 the second Parameter the Function takes
+   * @param param2 the third Parameter the Function takes
+   */
+#define DeclareSignal3(SignalName, param0, param1, param2) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName (param0 val0, param1 val1, param2 val2) { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (val0, val1, val2); \
+}\
+    DeclareSignalEnd(SignalName)
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   * @param param0 the first Parameter the Function takes
+   * @param param1 the second Parameter the Function takes
+   * @param param2 the third Parameter the Function takes
+   * @param param3 the fourth Parameter the Function takes
+   */
+#define DeclareSignal4(SignalName, param0, param1, param2, param3) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName (param0 val0, param1 val1, param2 val2, param3 val3) { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (val0, val1, val2, val3); \
+}\
+    DeclareSignalEnd(SignalName)
+
+
+  /**
+   * @brief declares a new Signal.
+   * @param SignalName the Name of the Signal.
+   * @param param0 the first Parameter the Function takes
+   * @param param1 the second Parameter the Function takes
+   * @param param2 the third Parameter the Function takes
+   * @param param4 the fifth Parameter the Function takes
+   */
+#define DeclareSignal5(SignalName, param0, param1, param2, param3, param4) \
+  DeclareSignalBegin(SignalName) \
+   void  SignalName (param0 val0, param1 val1, param2 val2, param3 val3, param4 val4) { \
+     for (unsigned int i = 0; i < SignalName ## connected .size(); i++) \
+       SignalName ## connected[i] (val0, val1, val2, val3, val4); \
+}\
+    DeclareSignalEnd(SignalName)
+
+
+  /**
+   * @brief selects a Signal.
+   * @param SignalName the Signal to be retrieved.
+   */
+#define SIGNAL(Object, SignalName) \
+    Object->getSignalVector_##SignalName()
+
+  /**
+   * @brief defines a Slot, the sink of a Signal.
+   * @param Class the Class the Slot belongs to.
+   * @param function the Function to Connect to.
+   */
+#define SLOT(Class, function) \
+    createExecutor<Class>(&Class::function)
+
+  /**
+   * @brief emits function
+   */
+#define emit(function) function
+
+  //! A class for Conncting Signals to Objects, inside of the Graphical user interface.
+  /**
+   * The SignalConnector binds an Object to a Functional (Executor)
+   * The Usage is quite easy in the Widget for this:
+   *
+   * int the header (Class Definition) you can add a definition of a Signal with:
+   * @verbatim DeclareSignal3(my_signal, int, int, float)
+   * and a Signal with the the Parameters int,int and float will be created.
+   *
+   * now you can use the connect function of GLWidget to connect this Signal to a Slot.
+   * @see GLGuiWidget::connect
+   */
+  class SignalConnector
+  {
+  public:
+    SignalConnector();
+    SignalConnector(BaseObject* object, const Executor* exec);
+    SignalConnector(const SignalConnector& signalConnector);
+    ~SignalConnector();
+
+    SignalConnector& operator=(const SignalConnector& signalConnector);
+    bool operator==(const SignalConnector& signalConnector) const;
+
+    void operator()() const;
+    void operator()(const MultiType& value0) const;
+    void operator()(const MultiType& value0, const MultiType& value1) const;
+    void operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2) const;
+    void operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2, const MultiType& value3) const;
+    void operator()(const MultiType& value0, const MultiType& value1, const MultiType& value2, const MultiType& value3, const MultiType& value4) const;
+
+    /** checks wether the SignalConnector is valid @return true on valid. */
+    bool isValid() const { return (this->object && this->exec); };
+    /** @brief checks if the SignalConnector is clean, invalid @returns true if invalid */
+    bool isClean() const { return (this->object == NULL || this->exec == NULL); }
+
+
+  private:
+    BaseObject*          object;         //!< The object to call.
+    const Executor*      exec;           //!< The Executor, that will be called, on object.
+  };
+
+  //! TypeDefinition for SignalLists
+  typedef std::vector<SignalConnector> Signal;
+  //! TypeDefinition for a Slot.
+  typedef Executor*                    Slot;
+
+}
+#endif /* _SIGNAL_CONNECTOR_H */
Index: /branches/gui/src/lib/gui/gtk/Makefile.am
===================================================================
--- /branches/gui/src/lib/gui/gtk/Makefile.am	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/Makefile.am	(revision 8140)
@@ -0,0 +1,35 @@
+MAINSRCDIR=../../..
+include $(MAINSRCDIR)/defs/include_paths.am
+
+noinst_LIBRARIES = libORXgtkgui.a
+
+libORXgtkgui_a_CPPFLAGS = \
+		-DBUILD_ORXONOX \
+		$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+
+libORXgtkgui_a_SOURCES = \
+		gui.cc \
+		gui_gtk.cc \
+		gui_element.cc \
+		gui_video.cc \
+		gui_audio.cc \
+		gui_exec.cc \
+		gui_flags.cc \
+		gui_banner.cc \
+		gui_keys.cc \
+		gui_update.cc
+
+noinst_HEADERS= gui.h \
+		gui_gtk.h \
+		gui_element.h \
+		gui_video.h \
+		gui_audio.h \
+		gui_exec.h \
+		gui_flags.h \
+		gui_banner.h \
+		gui_keys.h \
+		gui_update.h
+
+EXTRA_DIST = rc \
+	     banner.xpm \
+	     logo.xpm
Index: /branches/gui/src/lib/gui/gtk/banner.xpm
===================================================================
--- /branches/gui/src/lib/gui/gtk/banner.xpm	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/banner.xpm	(revision 8140)
@@ -0,0 +1,526 @@
+/* XPM */
+static char * banner_xpm[] = {
+"127 382 141 2",
+"  	c None",
+". 	c #183016",
+"+ 	c #183316",
+"@ 	c #183416",
+"# 	c #193816",
+"$ 	c #193916",
+"% 	c #193B16",
+"& 	c #1A3E17",
+"* 	c #1B3F17",
+"= 	c #1B4318",
+"- 	c #1B4418",
+"; 	c #1B4818",
+"> 	c #1C4F18",
+", 	c #1A3D17",
+"' 	c #172D15",
+") 	c #162A15",
+"! 	c #1C4B18",
+"~ 	c #193716",
+"{ 	c #36AC2D",
+"] 	c #42B837",
+"^ 	c #4DC042",
+"/ 	c #53C447",
+"( 	c #60CC53",
+"_ 	c #69D05D",
+": 	c #6ED261",
+"< 	c #74D669",
+"[ 	c #7BD86E",
+"} 	c #80D972",
+"| 	c #54C549",
+"1 	c #58C84D",
+"2 	c #45BC3C",
+"3 	c #1F641B",
+"4 	c #2FA326",
+"5 	c #32A829",
+"6 	c #25921E",
+"7 	c #2B9D23",
+"8 	c #24871D",
+"9 	c #2A9C21",
+"0 	c #31A628",
+"a 	c #183116",
+"b 	c #162314",
+"c 	c #162915",
+"d 	c #216F1B",
+"e 	c #141F14",
+"f 	c #206A1B",
+"g 	c #23791C",
+"h 	c #1D5018",
+"i 	c #1E5719",
+"j 	c #258F1E",
+"k 	c #1E5B1A",
+"l 	c #27991F",
+"m 	c #162514",
+"n 	c #23801D",
+"o 	c #22741B",
+"p 	c #2EA225",
+"q 	c #9CE391",
+"r 	c #89DC7B",
+"s 	c #BDEDB5",
+"t 	c #F8FDF7",
+"u 	c #9DE494",
+"v 	c #183216",
+"w 	c #1D5119",
+"x 	c #182F16",
+"y 	c #172A15",
+"z 	c #1B4217",
+"A 	c #30A527",
+"B 	c #85DB79",
+"C 	c #44BA39",
+"D 	c #1D5419",
+"E 	c #20691B",
+"F 	c #248E1E",
+"G 	c #26971E",
+"H 	c #216E1B",
+"I 	c #20661B",
+"J 	c #162614",
+"K 	c #182E16",
+"L 	c #EEFBEB",
+"M 	c #72D566",
+"N 	c #1A3C17",
+"O 	c #39B030",
+"P 	c #23851D",
+"Q 	c #152114",
+"R 	c #237D1C",
+"S 	c #61CD55",
+"T 	c #B5EBAD",
+"U 	c #D7F5D2",
+"V 	c #183516",
+"W 	c #1C4C18",
+"X 	c #48BD3D",
+"Y 	c #4FC244",
+"Z 	c #8EDF82",
+"` 	c #3DB433",
+" .	c #1E601A",
+"..	c #22771C",
+"+.	c #248A1E",
+"@.	c #1E5A19",
+"#.	c #C3EFBD",
+"$.	c #1F611A",
+"%.	c #E3F8DF",
+"&.	c #94E087",
+"*.	c #2C9F23",
+"=.	c #3FB735",
+"-.	c #21721B",
+";.	c #FCFEFC",
+">.	c #2DA024",
+",.	c #152314",
+"'.	c #ADE8A5",
+").	c #F3FCF2",
+"!.	c #D9F5D4",
+"~.	c #289A20",
+"{.	c #162414",
+"].	c #1B4518",
+"^.	c #DEF6D9",
+"/.	c #FEFFFE",
+"(.	c #172C15",
+"_.	c #162814",
+":.	c #26961E",
+"<.	c #FFFFFF",
+"[.	c #162714",
+"}.	c #D0F3CB",
+"|.	c #152214",
+"1.	c #38AF2F",
+"2.	c #6AD15E",
+"3.	c #1E5519",
+"4.	c #33A92A",
+"5.	c #1E5E1A",
+"6.	c #35AB2C",
+"7.	c #152014",
+"8.	c #37AD2E",
+"9.	c #3EB534",
+"0.	c #23821D",
+"a.	c #F6FDF5",
+"b.	c #A6E69C",
+"c.	c #BAECB3",
+"d.	c #FCFEFB",
+"e.	c #91DF85",
+"f.	c #F1FCEF",
+"g.	c #3CB332",
+"h.	c #43B938",
+"i.	c #172B15",
+"j.	c #C0EFBA",
+". . . . . + + + @ @ @ # # $ $ $ % % & * * * * * = = = - ; ; > > > > > , = = + . ' ' ' ' . . . ' ' ' . ' ' ' ) . ! > > ! , @ . . ~ ! { ] ] ^ / ( _ : < [ } [ < < _ | 1 ( 2 > 3 4 5 6 7 3 8 9 . > 0 a b } [ c d e f g ! h i j f k j l l m ) 9 n o p q : r s t u ",
+". . . + v . + + @ @ @ @ $ # % % % % % & & = & & = = - = ; > ; ; ! w ! & & * . v ' ' ) ' . . ' ' v x v x ' # v ) . . ' ) y z o p A p 1 / ^ ^ ^ ( : : [ } B [ < : ( | ( ( C D E F G H 6 6 F * I o J @ K L M $ N e z O d h h d 8 j d P n Q m p G R C S r _ u T U ",
+"K . . . . . . . @ @ @ @ V # # # % % & * & * N * = = = - - ; > > > > ! & = = . . ' ' ' ' ' . x ' + ' ' x ' ' . ' J @ W o 7 { C X Y X 1 S ( | ^ ( : [ B Z B [ : _ ( ( : _ `  .o ..H G 6 +.3 @.a i j c e #.[ Q z Q R ! ! f $.j f j p { j ) @ { p G Y [ B [ u %.&.",
+". . . . @ @ @ + @ @ V V $ $ $ $ % % % & * * & * = = - = ; > ; > ! > ; , = = v v ' ' ) ' . . ' ' ' ) ' + ' J ' - *.A O ] =.=.` O 2 ] A 2 _ : ( : [ [ } B B < : ( ( S < : 2 @.H R *.-.6 P F D l k @ $ K ;.O a @ e > X i i f $.j { >.n k ,.' d I o / '.[ } ).!.t ",
+"' ' . . . + + + @ + # @ V $ $ # % % & & & * % * = = = = ; > ; > > w - $ & * . . ' ' y ' ' . ' ' ' ' ' @ . ) > A =.=.` ` ` ` =.X 1 / l { ( _ ( : < [ } } } < : _ : ( S < ^ ; @.6 G 7 6 ~. .. ,.i j J {.T M e N e n R i $.].N y ) b Q Q e ) @ e Q h S k s ^./.T ",
+". . . . . . + + + @ @ V # # $ $ % % % * * = * & = = - - - - > ; > > > , = = v . ' ' ' ' . . x ' v x (.. _.. n ^ ` ` ` { O ` X / ^ | j { ( ( ( ( } } [ } [ < : : [ S _ : X ; D :.P 7 P F H ' j g @ @ @ <.=.b c Q k f Q e e c c e e e e e J y e Q 7 8 N 1 t r %.",
+". . . . . . . @ + + # # V # $ # % % % & & & N N = = = = ; ; > ; > > > , & * v . ' ) ' ' ' . ' ' ' ' . v [.$ 7 2 ` ` =.` =.Y / | Y S P p ( S : [ } [ [ < < < < < _ : _ | ` ; D +.7 -.+.P H * y k j Q e }.C e z b j c e e e a J e e e Q |.@ a e e ! C K T %.}.M ",
+". . . + @ @ + + @ @ @ V $ $ $ $ % % & * * = & & = = = - ; ; ; > > ! > * & = @ . ' ' ' x v . . ' x ' ' ) ) + { =.=.` ` =.2 Y | / / 1 l A _ _ : < B Z [ < [ } [ B < : 1 1 1.;  .F 6 +.o P H J 0 $.$ @ z L S b e e d k Q e b K c e e b e e c y e e { R $ M ).2.%.",
+"' . . . . + . a @ @ @ @ # # $ # % % & & * * * N = = = = ; > ; > > ; ; & N * a . x ' ' ' . v v x . ' . ' ' @ { ] =.=.2 Y Y Y / / Y 1 l 0 1 1 _ _ : } Z } < : : B : _ / 1 1.- @.F ..6 6 P :.j J h l e e ^.0 b e K { J e e e K Q e Q e e e v c e e i C y !.%.T | ",
+". . . . . . @ @ @ V V V # $ $ $ % % % * & = & & = = = ; - ; > ; > ; > = & = V ' ' ' ' . . . x x x x ' x x $ { O ` 2 2 Y / / / Y 1 1 7 A _ ( _ _ : B Z Z B < _ : : S | 1 1.; D 8 6 $.n F n y R N z y h }.{ e e Q 8 ! Q e e e e e e e e e e c e Q 0 f N M t Z !.",
+"K K . . . @ + + + @ # V # # $ # # % % * & * * N = = = ; - ; > > > ; ; & N * @ . ' ' ' . . . . x ' . ' ' ' + { =.=.Y ^ / | Y / Y | / *.A _ : < : : [ [ [ Z Z < : _ / / _ ` = D P n H 7 +.*. .v 8 8 e b ;.j Q e @ 0 c e e e Q e a ].N ].e z $.i N h R ; s #.!.1 ",
+". . . + + . + + @ @ @ # V $ % $ % % & & * * & & = = = = ; ; ; ; w ; > = & * @ ' ' ' ' ' . . x x (.' . ' ) + { 2 Y Y / / Y / / 1 1 1 *.7 ] 2 ( : } B < < Z Z : / S | | _ ` ; 3.+.G +.+.A j @.>.K $.b 0 '.b e e J j $ e a z $.l 1 S _ j J y O 0 O 2.C O 2.M 1 [ ",
+". . . . . . . + @ @ @ # # # % % $ % % & & * * & = = = = ; > ; ; w ; ; & * = @ . ' ' ' . v . . x ' x . ' ) + ` ^ / / / ^ Y / | 1 / | :.I 3 H F 4.| : [ } q Z : / S 1 1 _ 1.- 5.+.6 6 *.6.P = ' 0 k Q e %.k Q e e ! 0 ! d >.R j l j 0 0 e v 8 >.0 { X 1 }.).L 1 ",
+". . . . v @ + + @ V V # V $ % $ % % & * * * & * = = ; ; ; ; > > > ; > * & * @ . ' ' ' ' . v x x x ' x ' . , =.| ^ Y Y / / / 1 | _ _ { o 3 i o F +.6.C ^ : [ } [ S | S | 9 = 3 6 >.6 ~.A 5 * Y y n b { %.b e e e 0 d f f i o $.$.g 0 j 7.; Y >.>.| R 0 u %.t ).",
+"K K . . . + . a @ @ @ # V # # # # * % & & * % & = = = ; ; ; ; ; > ; > & & = . . ' ' ' ' . v . x + . x x ~ ; Y | / ^ X Y / 1 | | ^ ^ 4.P R o o R :.*.9 F >.1.C | S S | / F % H ~.>.0 8.6.F * $ 0 f e J U $ e Q b ! 8 d i i j j R f { { Q f 2.O 0 X | 1 !.M %.T ",
+". . . . . . @ + @ @ V V # $ % % N % % * * * * * = = = = ; ; > > > ; ; & % * @ . ) ' . . . ' x ' x ' ) ~ W = 2 1 ^ Y ^ / 1 | | / 1 : p 3 3 F +.n 9 *.~.A A G 8 P :.:.j H > - H A 0 8.0 4.3 V P K f b 0 S c a ].Q { d i o o $.o o o 0 d e f Z >.O j O Z !.#.L s ",
+". . . . . @ @ + @ @ @ # # $ $ $ % & % & & & * * = = = = ; ; ; > > ; ; & % & . . x (.) ' x x x . ) + , = ; = 2 ^ ^ / / ^ Y / | 1 1 _ A o  .E o P 9 ~.:.9 A G F 8 o 3 @.> ; > -.>.8.6 8.^ :.v > n d e c ;.a N c c $.k ; h o j j l 0 { o 7.N C >.O | | M s u #.Z ",
+". . . + + . + + V @ V V # # # % # % & % % * & * = = ; ; ; ; > ; w > ; & % * @ . ' ) ) ' + ' x x (.$ = - , ; 2 ^ ^ / | 1 ^ ^ S : _ | j R 3 w D 3 3 3 o G 9 A G :.8 o  .3.> 3.P 0 8.8.>.*.H & j ' n Q *.| k {.h e 0 $.i o o R l 0 j O d 7.h Y j >.| [ [ [ !.t &.",
+"K . . . . . . . @ @ @ V # % # & # & % & & * & * = = = - ; ; > ; > ; ; & % * . . ' ' ' . + ' (.x & , , @ $ W ^ 2 | 1 1 _ 1 1 1 _ S 2 7 =.1 1.9 8 o 3 3 H 3 o P 8 o o o H w > n 6.8.>.4.4.*.% > 0 $.e z ;.c k y {.R *.$.; f j *.X Y p f J f 1 >.>.C [ Z [ T ).%.",
+". . . . + @ @ @ V @ V # $ V % V * % & * & & * * = = = = ; ; ; > > > ; , & & @ . ) ) ' v x (.v @ ; , , , = W 2 | ^ | ( _ < _ ( Y | p j ^ [ < < : ^ 1.G E = = @.E  .E R H D > o >.8.*.9.6.A P I J l e d }.O Q z J =.R f n $.k j O { C o 7.>.Z j 0 1 T 1 T Z %.&.",
+"' ' . . . + + . @ @ @ @ % # % V # & % * * * * * = = ; ; ; ; ; > > ; ; & % * . . ) ' ) ' ' . , ; , $ , , - - ` _ ( 1 | 1 1 ^ { p P n O _ } : : : q q < C G o @.@.@.3.3. . .3 P >.>.8.*.6.*._.k O z e $ <.Q h c e f o i h o o j X _ 7 > 7.W { { 0 Y Z #.T U T }.",
+". . . . . . + + V @ # # # % V % * % % & % & * * = = = = ; > > ; > > ; % & & @ . ' ' ' ) ' ~ = = v @ $ $ , @ 9 ] | 2 ` { 4.9 n  .n P _ [ : : : B [ B Z } : / =.4.F o  .@.@.@.R A 4.*.O 4 4 G I K 0 e X %.j e {.v | $.; d o o ` r O z 7.7.y K R >.1 u T %.Y U r ",
+". . . . . . @ a @ @ V V # % # # # & & & & & & * = = = - ; ; > > > ; > % % * @ x ' x ' (.@ * , v @ @ @ @ - x D i :.0.o H o ..n o ; k _ : _ < < } B B : | _ : : [ < ( ` 8 D = 5.:.*.4.*.9.:.' I 0 $ e k t y @ y J v e y R *.k $ z $ Q e Q 7.a '.[ l C Z j ; ).<.",
+"' ' . . . . . v # @ @ @ # @ & # * # # * * * * & = = * 3., ! ! > > 3.; $ & = x (.K b _., - , $ + $ x @ = @ , - $ D D D ..3 5.H o I  ./ _ < < < [ } } : _ S [ B } < [ Z 1 @.# D P 6 *.0 *.- = g @ >.e Y t f e a a 1 b e n j v e Q |.e @ T N N }.a.} X O b e }.0 ",
+". ' . . . @ . x @ @ # @ # # # # * N & # & & & & * > & , > 3.* ; = > > * & = v ' _.v , = , @ v . v & @ $ W * @ = $ = i o D D k o 3 3 | ( : < } [ Z } : : : [ } [ [ [ } S n % W P ~.*.G 0 :.) f 7 N e l ).z ; b b j z y ! o @ e e e c { ;.}.e t t 1 2.j 7.f ).h ",
+"' x . x x . @ @ V # @ # # # # # & # & * & & = = * , ; ; * & * > 3.> ; # # $ x ' J , - , $ v + + v @ $ , = = , = , 5.0. .= k 5.$.i d _ _ ( < } B Z < S [ B } [ } Z : : _ p - W ..6 -.*.0 * + % $ 0 e e a k l ! Q z {.e $.j a e e Q e e ;.Z N 2.L 2.M { 7.b !.*.",
+"' ' . . x . . . @ # # # @ # # V N # * N * & & & ; & > & = 3.3.; > ; = & * , v ' - - @ a @ a v + # @ - - $ $ $ $ 5.R 0.i ; 3 5.- D d : : ( _ < B Z B [ } Z B [ } } : _ _ ` ! = -.$.+.7 ~.*.[.j l $ J e K j *.J e e e c j n Q e Q e Q b ; >.b >.0 C } >.b i ;.).",
+". x x . . x @ @ @ @ @ @ # # N # # & & & & * * = * , * > 3.& $ > > 3.> = & + a $ - , a * , ' . v v $ = @ $ $ $ D R H ; , - - D W i  ._ < : : < B B Z q Z Z Z Z } : : : _ =.W ; 3 G -.n O 4.@.N z { j b $ $.O z b e Q e k >.N e e b $ }./.T /.s S r Z { J Q r %.",
+"' ' . . . . . @ @ @ # # # # # # * V * & % & * = * > = ; @ ; @.& > > - D 3 D ; - a y y , ' v I n 3 ~ $ # v = 5.o W @ ; 7 0 D $ ; > > ^ ( < < < < B q b.Z Z B Z } _ : : : =.- W H ..-.6 +.8 _.{ N K 8 z y C l |.e e e Q ! k J e Q e $ Y Z M Z &.r 2.| f J Q e e ",
+". x x . . . @ . @ # @ # V # # & # & % & & * * * * _ [ } [ c.[ @.:.S c.c.| 3 , = a y ' a @ 5 L d.e.- x = @ w o D = ; _ f.a.^ * ; $ # O / _ [ } } Z e.q q Z B [ [ : _ < _ =.- > o ..6 P 5 g.j T s Q e y $ j >.N Q J y K J b b J z ; f 1 u 0 } C N ; h ; @ @ b b ",
+"' ' . . . @ . @ @ # @ # # # # # # & & % & * * * * S > * 3.* E }.S ~.* , i D , ' ' a @ ' (.^ /.d.d.o J @ W -.3 = W i '.d.a.| x % ) @ 1.2 | _ B B q Z Z q q } : : [ ( : : 2 = D o +.+.~.A  .y )./.; e e a | S c e e e Q e Q e $ %.T $ >.%.!.Z !.R f c j T S N c ",
+"x . @ . . ' @ @ @ @ @ # @ # # # * V & % % & N N * G > = = * D S 3.; = D R @ $ ' ' ' ' a ' : d.t t H [.W o W $ ; W , b.a.d.M |.b J . =.X | [ [ } B e.e.Z } < : : : : _ _ ] - > P F ~.:.A 8 # { T z e e e b N J e e e e e e e i %.!.; K >.R J { >.; c v u <.<.O ",
+"' ' x ' . . @ @ @ @ @ @ # # # @ # & & % & * & * > S / / S : / _ S : S : ^ W ' y ' y ' $ @ : a.d.d.I ' w D w w ; - , T d.a.: Q b b . ` X / < } B B Z B } < < : : : _ ( S h.; D F *.A 5 6.3.7.Q Q e b Q e e Q @ O b Q e e $ v z L t v ; #.).&.Y >.R e e @ i ! l ",
+"' ' ' . . @ . @ @ @ # @ @ # # # % # & % % & * * % 3.= = > ; - > = n H = V @ a a y a @ & + _ d.d.t o ' @ $ W i W , , c.d.t 1 e ,.b . ` X / M [ e.Z } [ < : : : : ( ( ( _ 2 ; 3.:.7 :.~.*.> # @ Q J $ $ e y e $.r d y l k K $ h T '.i i B L @.j 8 c R C e P {.h ",
+"@ . ' . @ @ @ . @ @ @ # # # # V * # & & % & * N * & = = ; ; > ; H 3 * $ x $ y a y , - $ ) _ d.d.t j ) ) v * - 3., $ c.;.t 1 e b b a ] X Y _ [ Z B [ : : : : : : ( _ ( _ ^ W 5.~.4.A 6.O n 6.1.A @ $ c e Q e $ { Q e l l >.i $ s ^.- = 1.%.b.E z $ 0 _ i 7.e i ",
+"# @ @ ' ' . @ @ @ @ @ # @ # # # # & # & % & & & = $ ; = & = > 3.o w V $ V $ ' ' ~ = , a b _ d.d.d.n J . $ $ $ W ; % '.;.;.2.e b J . =.X ^ 1 _ } [ < : _ : : _ _ 1 ( : _ ^ > 3 A 0 >.4.8.8 >.A g.0 e e c | z y N c e y h o d [ s '.4 @.8.^.A _ ! 0 Z 2 D - e 0 ",
+"% @ @ . @ ' @ @ @ @ @ @ # # # # # & # & % & & & & > & > * = o n > = ~ K * a a ' ! $ (.x ) _ a.;.d.d ) = = , , & D % u d.;.2.e Q J . ] X X / S < : : < : : : _ _ 1 S : : / w 3 4 6.8.4.0 F G 9 =.% e e c M }.M =.e e *.f k l 1 s c.5 F S a.b.o @.j t >.A 1 - n ",
+". @ @ . @ . @ @ @ @ @ @ # @ # # & # * N & & & & ; ^ 3., = -.S ~.* @ , W =.$ a = , ' _.a x : d.;./.H ) , & = = $ D , '.t ;.2.e b J . =.Y / 1 S [ < [ [ < < : _ : _ : < < | D H >.>.*.0 >.*.+.8.4.> e b e i ! C Z z b z f R h | < c.q 8.} /.1.; J | ^.^ { G J C ",
+") ' . @ . . . @ @ @ @ @ # # # # # # # * # & & , & S v 3.k H : 6 $ $ V ' ^ = * - _.y y v ' [ d.;.;.n {.' % ; & & > $ '.;.t 2.e b J . ` / 1 ( _ [ < [ } < : : _ : S : < < | D H A >.>.8.*.~.+.9.A g.. Q e e J j 8 b e M l ; d 1 }.c.g.>.C '.S H N P !.=.@.N g l ",
+"(.(.x x @ @ @ . @ @ @ @ @ @ # # V * * & N N & % - q A O C 9 < S :.A F :.b.o x a ' y a , = [ ;.;.d.$._.v $ $ - W , @ '.t ;.2.e ,.,.+ C / 1 ( < [ B [ < < < < } < [ : } B / w H A 0 >.>.>.~.6 >.8.5 O 5.V |.e i P y c l C $.$.C q %.^ -.* ,.C ^ & _ S X E ! *.| ",
+"i.i.K K v v @ x # @ # @ @ @ @ # $ N N % & * = , ! ^ } } S ^ [ 2 S ^ | | S - (.a y ' $ = # S t /./.f b # + @ D $ - + q ;./._ Q |.) $ 2 | / ( < [ B B [ [ < < } } [ M } B 1 w H A A *.4.>.~.~.>.8.8.9.0 6.3 Q ) i b Q [ 0 z l 1 T }.} +.~ Q P g.E >.q { 8 A M f ",
+"i.(.x x x x v @ v V @ # # # # # % % & & N $ , , , n n ! V ~ V % + V 3.k > i.a ' K V * , a : /.;.;.f ,.~ - @ $ ; % x '.<.d.: |.|.{.+ X 1 / : [ [ Z B B } } } [ } [ : [ B | D H A A >.>.0 6 6 0 0 8.9.9.9.{ R z ! e Q { r k k | Z ^.} ^ -.Q H 3 N A } [ o h | $.",
+"i.i.(.(.x x v v @ @ V V # % $ # $ $ * & & # $ , H -.; v $ V V $ V ! w $ a @ K y $ , , ~ @ B <.;./.$.b Q ) = % $ $ b q /.d.2.e m J . =.( Y : : < B B B B B B } r [ [ } } 1 w H A A >.>.4.~.6 0 8.9.8.6.>.~. .J N a |.1 | d d [ s s c.5 -.$.5 n @ P } S b 8 | N ",
+"x ' i.(.(.x v v v V @ @ V V # $ # % % , V , ; 3.-., @ ~ $ , ! , ! > - ~ ~ K i., * v ~ * $ : ;.;.;.k 7.' ,.' = % ) Q './.;.: e J c ~ C S Y ( [ B Z Z e.q e.Z Z } } [ } Z ^ D 3 A A *.4.>.6 6 *.8.8.6.9.4.A P ) ].b e j | i R 1 }.L ^ *.! i.| A N 6._ _  .j S y ",
+"i.(.i.i.(.(.x x x v @ @ # # # % % , $ $ , ! 5.3 K = V V @ V v > ..w , v @ @ $ @ K $ > * (._ /.;.t O e ,.' 7._.y e ! %./.;.} Q m J $ 0 : S 1 : B q Z q e.q Z Z Z } < } Z | 3.H A A >.>.4.~.6 0 8.8.8.9.4 ~.G ' ].y b 2 n ! 8 2.s }.< 5.J Q :.A > 7 B } N | O J ",
+"(.(.(.(.i.' (.' v x v V v V V V $ % $ ~ ! $.$.! @ =.> v $ , * P - , V a = V = x J V ! V ,.( <.;./.L $.e |.m e |.$.} <./.;.1 b b _.. d X _ _ < } Z q q b.q e.Z B } } B Z | w H A >.*.4.>.~.6 >.0 9.>.6.6.~.o ) $.b c d C f 8 [ }.^._ { ! ,.:.n * G }.=.' >.=.e ",
+"y y (.' (.' x (.' ' . v V V # $ # $ $ , k -.> i., j.=.| S ^ Z ^ ^ | | | ^ , . x v _.x $ ) Y ;./././.L C y e b j t <.;.;.<.0 e J ' {.x G ( : B Z q q q b.b.q Z Z } [ [ Z | 3.3 A A >.>.>.~.6 0 8.0 8.9.5 4 g.$ $ N Q 0 n ].j 1 T }.u ^ n = j @.' A Z 1 7.C ; b ",
+"(.(.(.' ' ' (.' ' x V V ' V , V , K ; n k ~ @ v v ^ $ v @ * H $ * @ $ , v @ $ (.' v _.V @ $ T /./.;./.<.}.=.r ;.;./.;.;.t N e _.) ' ) + D F C : } q b.b.q q q } Z : [ q ^ 3.$.A A *.4.4.6 6 >.6.0 9.0 4.A E {.I J b n { k j O u ^.#.1.K , C G = ` Z ` > 8 h e ",
+"' K y (.' ' x ' ' (.x . v V V V x = $.3 ! v v ~ $ :.# $ * - k * a * , @ $ i ; v ) ' J ' & b @ T ;.<.;.;.<.;./.<./.t <.).8 e _.b ) ' (.' @ = 5.+.^ : } q q q q Z } : Z Z C 5.-.4.>.*.>.4.6 6 0 6.6.9.9.>.7 g.h ].].Q $.8 i O O u ).'.n 7.Q 9 > = | c.Y = 1 K e ",
+"(.(.' ' ' x (.' ' a K v v v v v , $.k , K @ @ x v & x V V @ > 3.* = @ $ w $., $ V v K V b # _.b ; &.;.;.<.<./.;.;.%.R b e y Q ) ) (.' + $ = 3.R +.>.8.C ^ ^ S : } Z q [ A 3 n A 4.~.4.A 6 6 >.0 6.0 0 6.~.3.{.k y b 8 { R j C #.L #.g.v & n o > A f.o { h b e ",
+"(.' (.(.(.' x x i.x i.' @ ' v * w > ~ i.i.$ $ x & (.$ V x V , w 3.~ ~ k H w y a V = K a a a (.) l ^.<.<./.;.<.<.<.;.O v e b _.' ' (.(.v $ - 3.n n *.>.*.~.~.6 +.4.8.^ 4.n 3.n >.4.~.4.A 6 6 A 0 6.6.h.4.+.{ I ].; e h C f M f &.).s A (.K 1 > # ^ j.1.* R e e ",
+"(.(.(.' ' x ' ' ) K ' K ' v ~ 3., v v @ @ V # v v v $ V V = V V $.> 5.3.- v v ) _.a ! ~ a |.D u <./.t /.<.<././.;.t /.%.d e . ) . _._.v $ = 3.H ~.*.4.4.>.*.+.n  . .o -.w k n 4.4.*.>.4.+.6 A 4.4.C 0 *.>.$.7.! $ Q k R j R >.s #.!.^ x ; 6.G > =.L ; ` ! e Q ",
+"(.(.(.(.(.(.(.K y a @ a K ' $ ! * K i.@ v x @ # (.8 8 F F *.:.:.~.0 h.G -._.@ ' ' Q , - @ $ '.<./.<.<.<.U M T /.<./././.!.W Q ' + J J . % = 3. .n :.~.*.>.~.~.+.-. .H o $.H n >.>.*.>.A +.6 A 4.O 4.*.0 4 6 @ h N Q N | ; 2.v T ).!.{ Q {.^ @.E S =.] 0.b Q e ",
+"' ' (.' ' ' K ' a @ @ K i.v ~ , > * @ x v @ x . ; } *.*.F 8 P G 4 g.=.{ _ $ . ' N ) 7., D { d.<./.<.L [ z e @ X ;.<.<./.<.0 7.) ' ) # D 3.3.3.5. .H n n F ~.F o -. .H R $.H n *.4.~.>.A 6 6 7 4.~.^ 9.>.*. .Q $.k Q h 8 8 l $.#.%.!.=.b V E * D S j.> D {.e v ",
+"' (.' (.' x x ' (.y ' i.i.V , @ ~ ! , x v # v @ x S V $ , $ = ; 3 -.~ ' | $ + @ + x x b b e.<./.<.'.W |.|.) Q {.i 2.;.<.<._ Q _.J @ P 1 : ( ^ ^ g.4 F -.H o n H 3 3.H -.$.H n *.>.~.4.>.6 6 A A 4.6.A >.>.R ' i N Q ; 1 8 | K Z ).!.O ' > =.; o b.[ G I Q e e ",
+"x (.) x ' i.) (.(.x K ' ~ ! , K K @ 3.- v v ' $ $ c.S | ^ 9 4.] 9.:.6 ^ j.= $ & y ) v # Q : <.<.<.d Q ' . . @ @ c J }.<.<.M e J m @ X ( ( : [ Z b.q [ S =.j 5.> 3 W  .H  .5.n 4.>.*.>.4.6 6 >.4.A 4.8.>.~.-.' ; f Q h f | >.; r ).L : _.$ :.G 9 | #./ % e e y ",
+". (.(.x ' ' (.' ' x ' (.v , $ v K ~ v 3.> _.@ v v $.o :.F g.^ 5 6 *.:.6 3.$ - J _._.$ ; ,.S /.<.<.d Q ' . ~ % % @ c s <.<.[ Q b J a C 1 1 _ < Z Z b.'.c.q } ^ ] n  .i i 5.E o ~.>.*.0 0 6 6 *.4.A 4.8.A 7 n @ - $ Q h 1 f | Q !.).%.2._.b 6.3.3 ] ^./ @ Q |.Q ",
+"(.. (.(.' ' ' ' (.v x (.i.v V V V i.v ; 3.= K v @ K @ $ - H > = $ - - $ - @ V y ) V ; , e 1 <.<./.o {.' ' * ; z @ c T ;.<.} e b J + 2 1 ( : : } q q b.b.'.q q Z < 1 *.i D 5.o 4.*.~.*.0 6 6 >.>.6.4.8.>.~.6 D n o e f i Z R i Z ).%.&.b v 3.*.-.C U 1 |.b e a ",
+") x x ' (.x x ' x x K x x K v V V v V K = 5., $ v , v , H 3.~ @ $ , , V  .@ ,.(.v $ % . e 2.<.<.<.o |.' v - ; % b b s <.<.} Q {.J @ X 1 ( : < B q q q b.b.q q Z q q : p 5.> H 8.>.*.0 0 6 6 >.A 6.4.8.*.6 P = k ; e f X *.1 e %.L d.X _., ^ 3.=.B <.p Q D - e ",
+"J ' x ) ) (.x (.x ' K K K v K v @ > v (.@ & w , @ , > -.5.w ! @ $ - - - b # v a ; v ) . e S /.<.<.o |.+ # , # ) Q Q s <.<.M e m J . C 1 1 : : } q q b.b.b.b.q q < B Z : :.> 3 *.*.6 *.0 6 6 >.>.A 4.4.4.~.F w  .k Q K R &.n $ 2.).%.}.b > H ~.6.q ^.P e ]._.z ",
+"{._.(.(.(.(.' ' x ' ' x x v K K ~ ; = V K ' , - , 6 O 9.+.7 *.9.:.8 G R W ' % + $ . ) ' e 2./.<.<.I |.$ $ . _.Q b b s <.<.M e ,.J @ 2 1 1 : < B q q q q q q Z Z Z [ Z e.g.@.H *.0 *.*.0 6 6 *.>.A 4.A >.6 F  .o ! Q h =.C Y Q t }.t | m ) A 6 5 g.f.n {.|.e e ",
+") ) ) (.x (.' (.(.K x v v x v x V K w ! ~ v _.- H '.^ A F F ..4.C 7 4 :.B $ , % (.x ) J e [ <./.<.f ,.~ ' [.,.Q J e T <.<.[ e ,.{.. =.1 ( _ : } q q b.b.b.q q Z } _ < q ^ 3 5.~.*.6 0 *.+.6 >.>.A 8.4.>.+.R ; ; $.e K $.&.R J 2.t f.%.7.J 5.-.H / ^.o Q b e $ ",
+") J ) ' v x K x (.v v K (.K v v K K ~ 3 3.v v K $ [ $ v V $ & a $ , ' # ^ z $ J ' [.|.J e [ <.<.<.o {.. b Q ,._.,.e T <.<.[ e b J @ =./ ( : < B q q q q q q q Z Z B } q ^ 3.w 4.>.~.0 0 6 6 *.A A 4.4.>.6 G o n $.Q ! 0 2.Y J ).}.).r J > 5 +.F ^ a.D b ' |.Q ",
+") ) x $ @ ) ) V v x (.' v v v v K @ i.@ $.5.$ i.$ '.[ S ^ ] F :.F :.F ^ '.; J |.b |.b ) J 2./.<.<.n Q Q ,.Q |.b Q e '.<.<.M e |.b . ^ 1 1 _ : } q q b.b.q q Z Z [ < } Z ( D $.~.*.6 *.*.6 +.*.>.*.4.4.>.G o ! v k e c n '.$.e M t ).^.Q , 3.A 6.e.s ].Q m e b ",
+"(.V % v (.x V $ v v x K (.i.i.K v K v v * 3.3.@ K 5.P 5 9 +.~.F *.~.F F n ) |.m Q 7.,.) _.M <.<.<.g Q |.J Q Q Q Q b T <.<.[ Q {.b a X 1 1 _ < B q q q b.b.q q Z } < [ B | D $.*.*.*.*.*.6 +.~.>.A A *.~.*.F i + $.b y l T *.K %.L ).'.z $ o >.6.^ a.].J $ Q e ",
+"% N v ) (.$ $ v _.x $ $ v ' x v K v v K _.; H 5.@ i.$ * ! V - * ~ $ 3.= {.) ,.,.Q b ) ' _.2.<.<./.I e e Q Q |.Q Q e T <.<.: e |.J . 2 | | _ : } q q q b.q q Z Z B [ } B | w $.~.*.6 *.*.6 +.*.A A 4.8.*.n P ..D h e c n s z _.[ ).).}.7.v x 6.3 X %.d e @ e b ",
+"- v _.) x v x ' i.(.x v v v K x (.$ x (.V , = 3.$.* V K * - > 3.- , ! a |.' J |.) ' ' ) J _ <.<.<.d Q Q |.Q ,.b b e s <.<.[ e {.b a C 1 1 S : B q q q b.b.q q } [ < } B | D 5.~.*.*.*.*.6 +.~.>.A *.A *.6 F D Q j e Q l r R K %.!./.u @ J F C A 1./.i @ z c Q ",
+"' ) _.(.(._.(.V (.i.i.x v v (._.v v (.V w , i., A 3.@ @ v > 3.3.k w 3.v , J b {.) ) ) ' ) _ <./.<.$.Q Q ,.,.Q 7.b e #.;./.} e J {.. X / | _ : } q q b.q q q Z Z } < } Z | > $.6 *.6 *.*.6 +.~.*.~.A 8.~.n 6 :.d z K e o %.@ e Z ).).T J * F 1.~.B }.0 Q ) m J ",
+"_.) (.(.' K x x x (.i.' $ , $ V x i.v * & v @ - , R n ~.6 O 0 6 *.0 5 :.*.. b [.) [.) v ~ [ <.<.<.$.Q e Q b Q e e b s /./.} Q e b . 2 | 1 _ : B q q q q b.q Z Z [ < [ B | > $.~.*.6 *.6 +.+.6 >.>.>.>.*.~.+.; Q n e Q ` } ; a !.L L M 7.# =.C 7 =.t d c $ c e ",
+"K x ) ) (.x x ) $ V K ) ) V > 3 * K @ $ i.v ! 3.K 6 ~.F 9 5 [ | 6 7 0 5 F * ) ) ) (.+ ~ + Y <.<.<.k |.,.|.,.b Q Q J Z <.<.1 J Q {.. =.| | ( : } Z q q q q q Z B } : } B | w 5.6 6 6 *.*.6 n ~.>.>.A >.6 n F F o ! a Q 0 ^.c e T ).;.2.J i.6.A 5.=.%.>.J N y b ",
+") ) ) ) ) (.K v ) V , $ i._.v = $.& v v @ ; ! v V K $ = & V | ~.$ @ *  ., - x (.) x , + Q G a./.u J e Q Q Q Q b b e 0 ;.;.j e e b a C / 1 ( : B Z q q q q q Z Z [ : [ Z / w 5.~.*.6 6 6 6 n 6 *.~.A >.*.~.R = (.n Q Q Y u @ @ #.;.;.1 c ) F C F j L o c @ e e ",
+"x ) ) (.' i.(.' K ' , = @ K K i.= ! v K ! * i.V v ^ ^ S | S j.Z | | ^ ^ | W @ v # * ' b b {._.~ |.Q e e _.e Q ,.J b e @ @ b e J b . ] / 1 ( : } q q q q q q Z B } < } B | w 5.~.6 6 *.6 6 +.~.>.A 0 >.6 6 P o  .; $ J =.U e b #.).<.1 7.3 C A 8.^ L O Q c c e ",
+"i.(.x (.(.K ' _.(._.K , * a K @ ' ' i.@ > k * i.v *.:.F :.F >.+.6 :.:.:.F * , , = (.b |.|.Q e |.|.e J e e e b e e b e b e e Q {.m a =.| 1 ( : } Z q q q q q } B } : < B 1 w 3.6 ~.6 *.*.+.n 6 *.*.>.>.G 6 n ; J g Q e u &.J @ T t L 2._.F >.8.*.| a.>.K ; Q e ",
+") v v (.) (.(.(.' x i.' = * K y (.x ' @ ! 3.- $ K V @ & ; @ x & v $ $ $ (.' % = (.b |.|.J _.,.e e c 7 [ T }.T } R a e e b b b b b K 2 / 1 S : [ Z Z q q q Z Z B [ < } B | D  .G 6 6 6 6 6 +.~.~.G *.4.~.n P H - I z Q 2.u e e }.%.;.{ ,.= 9.~.A =.L C e J y |.",
+") ) x v x _._.K i.a a K , w , _.y V $ * 3.* ~ > $ i.a a , w $ v , @ x V y V V y a ) {.Q m e e b 7 }.<.<./.;.<.<.<.L 0 e e Q b c b K =.| | S : [ Z q q q q q Z B } : [ } / D 3.6 ~.6 6 6 6 n ~.~.A *.*.G n 6 o + f y e T =.b a &.;.L M 7.-.6 ^ -.A %.>.v z e e ",
+"J J (.V V x i.) i.y a $ , , - ! x v @ - k > ~ * * , v = 3.* ' $ $ @ v @ . J _.' # x J J [.e ~ 1 ;.<.<./.<.<././.<.;.<.e.@ e @ e b K =./ 1 ( _ B Z Z Z q q Z Z B [ < [ B | >  .F 6 6 6 *.n n G ~.*.*.>.G n n i ) j @ J Z }.e {.}.L <.G ,.H ^ +.^ ~.f.=.y N J J ",
+"' i.) ) v V v i.v v * $ y a ! w @.V v , ! k k * K ^ : : O , H ( ( | | g.g.x _.K ) v x ' ) _.S <.<.<.<.t %.%.U /./.<.<.<.'.c e y b K =.Y 1 S _ [ Z q q q q Z Z B < < < B 1 > 3.F 6 6 6 6 6 -.6 ~.G *.A *.n n  .$ h b c #.C Q a 2.t ).1 Q 6.>.9.6 S L =.b v |.e ",
+"x v ' i.i.v V V $ = , a ' $ , a -.= @ @ @ > $.k ~ : 3.' v $ ] A V @ , 3.< & y b |.@ # ' {.> L <.<.<.r h Q b ) ~ }.<./.<.;.I e Q b K =.| / _ _ } B Z Z Z q e.B } } : < } / w 3.G 6 +.6 6 n +.6 ~.*.*.~.G F R w ' l $ e Z u Q b %.t ;.p 7.! 8.*.*.=.).0 e @ e e ",
+"i.v , & v _.' , , a _.' - & (._.a V , - ~ K ~ -.k ^ ~ - $ x 1 :., # a ' ( J ) a ) J (.+ ' j <.;.<.L . e ,.e Q e b #.<.<.<.o ,.m b K =.| / ( _ } B Z q q q Z Z B [ : < } / D 3.F 6 6 6 6 n n +.~.~.A *.~.+.o 3.- $ c c !.j e c 2./.^.0 |.3.+.8.+.*.^.| J v Q e ",
+"v $ (.y * V b = , x ' ' V , a ' ) $ V v * ~ @ * -.j.j.c.j.^.j.> $ { ^ ( '.& J _._.J ) ' m : <.<.<.C Q e 7.e ,.e Q > <.<.<.O e Q J y 0 1 Y _ : } Z q q Z Z q B [ _ [ [ < | 3.5.+.+.+.6 6 +.n G ~.~.*.~.6 F n  .- 0 y e M [ e N %.L <.f {.~.9.0 8.+.L O v K b e ",
+"3.$ ' (.i.v i.(.- V a y ' V v a V $ ' y $ ~ @ * * -.> * ~ _.$ a @ = v ) - Q . x ) ) ) ) b : <.<./.l e e b e Q Q e @ )./.<.C e ,.e b *._ 1 S _ [ B Z q Z Z q Z B : [ } [ / > 3.+.+.+.6 6 n -.+.~.6 ~.~.6 +.o 3.; o e y T f Q e M ;.L =.e 6.~.0 9.^ L Y b N Q Q ",
+"$ v i.b a $ ' K V ' (.y ' V V $ + v ) J i.a ~ * @ > k > $ $ $ V $ v $ x @ ' V ,._.J ) (.m 2.<.<./.g e Q m Q e Q e b #./.<.S e b c e @ n 2 : < } } B q q Z Z B } < _ : [ ^ > 3.n 6 +.6 6 +.n +.G *.~.G n n n o I P c b M X Q a ^.L <.h e 3.^ *.>.=.d.>.$ J Q e ",
+"b i.K J V = V $ y y (.) i.' V $ ' ) ) ) ) ) a @ ~ @ * 3.k - @ $ $ v $ ' (.a y ) _._.) (.{._ <.<.<.o e Q e Q Q Q Q Q u <.<.M e e m e e x D F ^ [ q q b.q Z Z Z [ B _ : B / D 3.+.+.+.6 6 n n +.G 6 6 *.G n o 5.> @ e N M o e b [ <.).Y e = *.8.-.5 ^.u e @ e e ",
+"K _.@ $ @ ! - v J i.x v . (.(.' [.) ' ' ) ) ' (.w @ a * 3.- $ ,  .v $ v x v b a ) ) ) ) J : <.<.<.d Q b e |.,.b ,.Q '.<.<.} e e |.J b b [.. 3.F ^ S } q b.q } [ : _ < B ] 3.@.+.6 +.6 6 n n +.G ~.>.~.+.n R o H k $ e Z { e z T t <.~ ) >.9.0 ~.5.a.O @ e Q e ",
+"a ' ~ $ , ! V i.) ' V $ V (.' ) ) _._.c y y ' ) _., * ~ * > 3.@ ^ @ @ V y ' J ) _.) ) ) m _ <.<.<.f e y b e e Q e Q '.<./.M e e Q |.Q b ' V = w 3 F 4.^ S } Z q < < Z } p > @.F +.n 6 +.n -.+.~.n G ~.G n H D = {.e ; C $ e e r <.L j b h.*.0 8.^ %.&.e $ e Q ",
+"J y i.a - $ b y K V v V @ x x (.) ) c c y K y ) . $ ~ ~ @ * > > | a @ @ v v ' J ) ) y ' m : /.<.<.d Q a ' b Q e e Q T <.<.: e 7.Q |.{.J ' , ; 3 o n n n n ~.6.g.S _ [ ( 8 > $.n +.n 6 6 n n n G ~.~.~.n n o 3 i J { e &.>.b a #.t <.@ b 3.^ *.>.C d.| v b Q e ",
+"a _.K @ ' i.J K $ $ v v x ) ) J _.) y y y y y K ' ) V , , ~ ~ > _ $ $ ' x (.(.J J _.) (.m : <.<.<.n Q ' . @ ' Q Q Q T <.<.2.e Q J Q {.) ' V &  .H n :.F n o H  . . .n n ; ; H n 6 n 6 6 n n +.6 6 6 ~.n n o 3 D @ @ @ f K e |.s ;.U j e * *.C +.4.%.r c y e Q ",
+"_._.(.y J i.@ @ 3., v J ,.) ) ) ) ) ) ) y K K . a + v (.' , $ , : 3.$ y a ' ' J ) ) ) _.b M <.<./.n Q J @ , . ,.e Q T <.<.M e 7.b 7.m m v & >  .H n 8 F 8 o 3 5.D * D 3.> > $.6 +.n n 6 -.-.n 6 +.~.+.+.+.n i ; @ }.y C h e z &.<.).@ ,.P *.9.n o ^.Z c b e Q ",
+"V y J _._.K * k * -.@ _.' {._._.) ) _.) ) K . . a . . . @ # $ V - - - a a @ _.) ) ) ) ) ,.2.<.<.<.H |.. @ $ ' b Q Q T <.<.M 7.7._.e J ' N = ; > 3. .o R P R o 3 i = D 3.w > 3.n +.+.n 6 n -.+.6 +.~.~.+.n -.o n @ o k K N e e %.t L f @ ~.8.*.9.7 f.2.K b e Q ",
+", v J ,.) @ * * k ! $., J (.m ) _._.) ) ' . . + # @ % @ @ (.% % . = ; - ' y ,.' ) ) (._.b : <.<.<.H |.@ + + x ,.e Q T <.<.M e e e e H { ^ g.*.n  . . .5. . . .3 D w i 3.w > k n 6 -.+.+.-.n n 6 ~.6 n 6 6 o 3.D z /.b C v e $ S <.!.J 7.A 8.8.*.: L u Q c e e ",
+"K @ @ a $ $ ' J 3.* > k v b ' [._.) ) ' . v v v # . # x @ @ # # = , @ D v $ ' J _.) ) ) ,.: <.<.<.o {.' v ~ ' Q e Q T <.<.M e 7.m c 0 / S _ < [ S ^ A P 3 3.3.D W ; D D 3.3.k +.+.n n 6 -.-.n 6 6 ~.6 +.n H 5. .8 2.j J c e e ^.t %.f 7., 8.9.*.7 f.Y y e e Q ",
+"_._.v w 5.$ _.) ~ * * k 3.v [.) ) _.) ' x . @ @ V V % % E j P n R n $ v $ $ . ) ) ) ) _.{.: <.<.<.0.b ' @ $ ) e e 7.T <.<.M e e e c ` 1 / | : < Z Z q } ( 1.j o @.D ; = > 3.3.n +.n +.n -.-.+.+.+.6 6 +.n 3 w $ ; t e R c e c 1 /.}.Q J 6 *.^ n F ^.}.b b e e ",
+"K _.J $ 3.> a J i.K > > > 3.K ) ) ' ) ' v v V V x ^ q q ( ` j p ( | '.b.:.) ; ) ) y y _.,.: <.<.<.o Q . $ ' Q e e e T /.<.M e e Q ' X Y Y ( : < B B Z Z Z B [ < ^ A n D - w k n +.n +.+.-.-.n 6 6 +.6 +.n 3 & ,.j !.{ e J e J '.;.L k N 4.8.0 9.5.f.[ y e e _.",
+"@ i.J J @ w - _._.i.i.! > > k v y ) . v v v v V & ^ = v + % @ ' . . ' W < $ b ' J ) ) ) b : <.<.<.o |.. ' b e Q e Q T <.<.[ e e Q c X / ( S S < [ } Z Z q Z B B e.< / :.3.- 3.n n n n +.-.-.n +.+.+.G +.n 3 3.D o /.e N e Q e | ;.}.7.7.4.0 6 6 g.f.T b e e e ",
+"K a v K i.$ w > ' i.J _.* 3.! $.i.(.x . v v v V a b.0.G j j *.n 9 j P R q a v x _.) ) _.b : <.<.<.o J ) e e Q Q e e T <.<.M e Q b _.C X 1 ( ( [ B Z q Z q B [ [ S < q / o - 3.n +.n n +.-.-.n +.6 n 6 6 -.3 D > l t 0 Q e Q J }.).%.> 7.5.9.8.6 6 L [ K Q e Q ",
+"_.i.@ v _._.V w $ J i.i.@ k > > 3.* i.$ 3.- (.@ % P 7 F 9 9 j p j G ..o A H v ) (.(.y x ) B <.<.<.d e Q Q 7.Q e e Q T <.<.[ e e e K =./ / 1 _ [ B B Z q Z Z B [ : ( _ < 4.* 3.+.-.-.n n -.-.n +.+.n +.6 +.$.> m { %.e e e e e S /.T 7.' 4.*.9.H +.%.T b e Q Q ",
+"i.K K _._.i.K v R = b i.i.@ k > > 3.! $ x V & $ v * ' @ & @ , ' $ . = @ @ ) , V ' {.) = # e.<./.<.d e 7.Q e Q e e e u <.<.M e e e y =.Y / ( _ [ B B Z Z Z B B } : S < B =.- 3.n n -.+.n -.-.n +.*.+.n n 6 H ; {.*.<.j e e e K s ;.U $ z *.8.0 6 > j.T c e e e ",
+"~ ~ K _._.v ~ v @ $.w i._._.K ! k - $ K y @ = = $ # + * $ v & & v ; = v a ' (.$ ' ,.v > + : <.<.<.f e Q 7.e Q e e Q T /.<.[ e e e K =./ / S S [ B Z Z q Z Z } } < _ : B 2 > 3.n n -.n n -.-.n +.n 6 6 n n H H i *.t ; b e e e [ <.M 7._.^ 0 0 0 ] L u J e e e ",
+"~ K _._.' @ a ' b i.H 3.i.K K i.! ! @ _.@ , , = @ v = $ $ = @ , , ; ; W b (.a V x _.. % m ( /.<./.$.e e 7.e e e e Q T <.<.M e Q e K =.Y Y S _ < } B Z Z Z B } [ < _ : B ^ D 3.n n -.n n H -.n n n +.+.n o $.> {.` <.$.e Q e K r %.%.z Q ! 9.8.+.5 f.!.$ Q e e ",
+"~ @ v $ $ ' y ' i._.a $.- _.v i.K * - K ' $ @ ) ' ..F R j :.:.F *.:.*.~.o y a @ V . ) [.b [ <.<./.f e e Q e Q e e e T /.<.M e e e y =.Y / ( _ [ B B B q B B } [ : : : } C > 3.-.n -.n n -.$.n +.+.n +.n n H 3.7.=.;.=.e e e e u <.[ 7.) O 6 0 *.+.}.u J e e e ",
+"w * $ * $ _.i.v _.a {.a 5.$ ,.K K K * * @ $ , _., B *.:.p j r 1 *.0.:.P c.$ (.b y . ' y J } <././.$.e e 7.e Q e e e T <.<.M e e e K C | Y 1 _ < } B B Z Z B } [ : 2._ } ^ > w o -.-.n n -.H n n 6 n 6 -.3.5.3 [.X ;.v e e e K 2.;.s c = A 9.8.n ! }.^.N e e e ",
+"$ & * @ i._._.' @ {.(._.$ 3 @ b ~ y ~ > > > 3.* y : @ ' $ x _ A 3 V ' y : ' D , {.(.V # m _ <.<./.f e e Q 7.Q Q e Q T <.<.[ e Q e y =.Y | ( _ [ B B Z e.Z B } } _ : : } C w > n n -.n n H 3 n +.+.n n n n n o ) | t M Q e e b e./.1 7.@ C 6 *.9...#.#.v e Q e ",
+"m ~ - ~ @ @ K _.' % (.(.@ & w ! _._.y a * > w > a '.7 ~.R ~ 2 H $ ( ^ h.j.! v $ (.,.) + Q / <.<./.f e Q Q e Q e e e T <.<.M e Q e K =.Y Y 1 _ [ } B Z e.Z } [ [ _ : : B Y w > n o H n n -.H n n n -.-.-.$.! ; ' U ;.; e Q e J 1 /.u J 7.n 8.*.*.| d.%.v e e e ",
+"|.{.$ > * @ K i.) J @ & V _.' H * i.y a K ~ > > k k o :.-., v , , o *.:.5.a J ' - a J v b [ <.<./.o e e e e Q Q Q e T <.<.} e e e y C Y / S _ < B } B Z e.B B } 2._ : [ ^ w 3.o -.-.H n H $.n n +.6 n -.3.H  .) u <.M Q e e e u <.X 7.' H *.9.*.G ^.}.N e e |.",
+"[.Q {.$ = = V i.(.(.v v y J _.* P ! y i.@ @ ~ > ! ! , a ' x @ + # + W W ' b ) b = & J ) |.: <.<.<.$.e e Q e e e e b './.<.M e b e y =.Y Y 1 S [ B B B Z Z B [ < _ S : [ / > D R o H -.-.H 3 n n n -.n -.3 @.. ; t t j 7.Q Q y X <.M c > O >.0 -.$.T %.v e e Q ",
+") ,.{.) $ ; * K v ' v ) J K $ , W 3., J i.v @ ~ > 3.! x i.$ * $ $ & @ x (.y y x V ; J J |._ <.<.<.k e e b Q Q b e {.T /.<.S e e e c C Y | ( _ : } B Z Z Z B } } _ _ : [ ^ w 3.o -.H H n H H -.n +.H -.-.5.> ' k }./.S Q Q e e }.<.0 7.> 8.8.0 8.H %.}.; e e {.",
+"J _.) {._.V - $ V K K ) ) V , V b V ! $ i._.K K * ! $.3.& v @ $ , W $ ) ' x x & ' % . (.,._ <.<.<.k b e Q Q b e e e T /.<.[ e e e y O Y Y 1 _ < } } B Z B B [ [ _ S : [ / W w o n H -.-.H H -.n n n $.H 3.3.> ! <.).O J e Q J 0 ;.u 7.7.*.6 *.6 9.#.).c e e e ",
+"_.) J b {.(.$ ! ~ K K v v v v ' ) (.& ! , i.i.@ @ , ! 5.> V a $ & V V (._.$ - a b b $ + b : /.<.<.$.e e e e Q e Q e %.<.;.M e Q e y C Y / S _ [ } B Z Z Z B } [ _ ( _ < ^ w w o o H -.n H H -.n n -.$.H 5.3.; h u /.| e ,.e e T <.j 7.* 9 0 8.8.5 f.#.! e Q b ",
+"$ ' b _.) ,.J V - ~ v @ ' ) K @ @ x (.$ w * K K K K ~ ! w w = V V v v V , - V ,.) 7.J y c r <.<.<.j e Q Q e Q Q e K t <.;.Y e e e c C Y Y 1 S < } } B Z B } [ < 2.S : < ^ W w o o 3 H -.$.H -.n n $.-.$.3 = J j <.L 2.J e ,.e | /.| c  .C >.9.-.R '.%.c e Q Q ",
+"N v ) J _.b b _.- ! * ~ v _.' x ' . ) ) , w , i.K K v $ - w = v i.V v V = x Q b . ,.7.,.c S <.;./.} e e Q e Q Q e 0 ;.<.<.0 e Q e y C Y | ( _ < } } B B Z B [ < _ ( : < ^ w w -.-.H -.-.H $.-.n n H -.$.5.> J >.L ;.C e ,.e e } <.j 7.D =.0 9.8.= j.).i e e e ",
+",.# # J m _.) J i.* * ~ @ K (.) v (.' (._.$ w * K v v v V , $ x @ (.& > x ,.i.& ' # Q Q 7.{ /.<.<.t z Q e e e e N ^.<.<.<.R e e e c O Y | 1 S < } } B B B B } < _ S : < Y W w H -.3 -.-.H $.-.n n n 5.k 3. .> 8 /.;.u ) e e e 1 /.1 7.,.4.~.*.9.O }.}.y e e Q ",
+"b ' # . J J c J b K = ; , v K ) ) ' v v ) _.v - K v K @ @ V = ~ V v = v J $ ' J b v @ b e $ t <.<.<.#.0 ; c @ j t <./.<.;.$ e Q 7.J =.| | S _ [ } B Z Z Z B < : _ S _ [ ^ w D n o H H -.$.H -.n n -.H 3 w 3.7.=.L /.>.e e e c } t j 7.J n 0 0 *.8 f./.i e e e ",
+"J J ' @ a ) c J _.b i.$ = , $ v (.' (.v ' (.K $ > K i.i.v $ v v $ $ & (.J 3.= ,.) ,.. ' Q Q 2.<./.<.;.;.<./.t /.<.<.<.;.u J e e e c C | Y 1 _ : } } B B } } [ : _ _ _ [ / > w o o H -.n $.$.-.-.H -.H 5.3 _.b C t ;.}.e m J e 1 <.0 J ].8.8.0 n P j.}.v e Q e ",
+"i.b J v @ a y _._.{._.' $ , , v v x (.' x v x i.i.3 w _._.V V , , ; * K J i.$ ' J J . [.@ Q _.Y /.<.<.<.<././.<.<.<.t =.y e e e 7.y O Y C 1 : ( B B B B B B < < _ ( : < ^ > w -.-.3 H -.$.H -.n -.n $.3.3.3 ) | ).;.f e e e y S t i 7.o C 4.C 6 V }.t h e e e ",
+"_._.J _.) @ @ K J ) ) _.(.V , $ v x (.(.x x v x (.< : : 6.V :.B ^ S B : S i._.V a b (.x ' . e e g &.<.<./.;.<.<.<.r $.e e Q Q e Q y O 1 Y | : < < < B Z Z B < : 2.( : < ^ W D o -.3 H -.$.$.-.-.H n -.H 5.j J 1 /.).Y b ,.b e M <.{ 7.@ C 8.0 ^ 6 j.#.$ e e e ",
+"J i.) J _.' @ N J c _._.) a $ = V v K (.(.x x v x ^ > 3.= ) ( ~.$ a @ w } K _.v , y b (.m @ # Q e ) $.O : r S 0 $ e e Q J e e J 7.7.j _ S / S } } } B Z Z Z } < _ S _ [ ^ > w -.H 3 H -.$.$.-.-.H H k 3.5.(.# s <.t d e Q e y 2.t d 7.' -.4.9.*.~.L ).N e Q Q ",
+"b _.) ) _.J ) N @ y J ) y ) ) $ $ $ V K i.' v v _.: v . 3 $ ] n a , $ , [ , a J ' ! _.J x (.(.) e e e e e e e Q Q Q e e e e b e b 7.h C _ S S : Z B B B } [ < : S S _ < ^ > w o H $.$.H $.5.-.-.-.-.H $.w (.7.&.<.}.O e ) Q e u ;.j J W =.9.*.~.:.j.}.N e e e ",
+"{._.) i.i.J J ' # @ K y ' J {.' ~ $ ~ V K ' ' ' $ ( q U j.j.c.a $ 5 | ^ S ! $ ' y y , v y b y + ' $ k 8 n d d g d $.$.k $.J e Q e 7.J $.O 1 _ } < } Z e.B [ < < _ ( _ < ^ ; D H H 3 H -.5.k -.-.-.H k $.3.R + ^.t /.$ |.b {.c X t ! 7.o ^ 0 *.+.w s L ; e e e ",
+"{.) J b _.i._.{.' $ # c _._._._.v V V V V v x i.(.x V x x # @ v y , y ~ ' y , , ' b , ' $ b a Y %.t <.<.;./.<.<.<.<.<.<.<.0 e Q e b 7.b . W d 7 | _ B Z Z } < : S ( : < ^ ; w o 3 $.$.H $.5.-.-.H -.$.5.5.[._.#.<.}.o e @ Q e u ;.>.7.* C 4.9.9.= q L k b e e ",
+"_.) _.J _._._.) J ' @ # . ) _.) J (., $ V V V (.i.V v v V ' . $ a @ @ y m ' y * , m b ) ) Q q <.<.d.<.<.<.<.<.<./.<.<.;.<.1 Q e b 7.,.) . @ # ; D R *.] S } B < : / ( [ 4.> > H 3 $.H H $.k H -.$.5.$.> - (.! a.;.t @ e K Q b X %.].Q . *.4.0 >.h.^.t $ e e e ",
+"_.J _._._.) ) ) (.J ' # V ) {.(.' _.a , $ V v K ' i.x V (.v & (.V ' y a ' J b ' * $ a _.) k L <./.<.<./.<.<.<./.<.<.<.<.;.0 e Q Q Q Q ,.) v * D 3. . . .H ~.1.=./ _ B _ R = 3.H 3 $.H H $.$.H H -.5.3 5.E x ~ T <.u b b a e e &./.k 7.o >.4.4.*.7 U /.i e e e ",
+"J _._.J _.) _.) ) _.J x @ v (.) ' J ) @ $ $ V v ' x _.' V x x a ' @ y ) v b y b v * $ ' b { <.<.<.d.Y p 0 0 0 l j 0 l l n ) e e e {.b {.' v - 3.3.3 o 3 5.@.3.> D P 9 8 ; = 5.5.$.$.H H k $.H H $.5.5.5.o , n /.%.}.y e K J c 1 !.; 7.j 8.=.9.-.R '.a.v e e b ",
+"_.J _.) J ) ) ) J ) ) _.(.# @ ) ) ) ) ) a , & V ! =.| C ^ ^ ^ 2 ^ ^ | : b.(.J ) {.@ = = {.^ <./.<.< |.e e e Q |.e Q e Q Q e |.,.e Q Q ,.. @ & = 3.3 H 3 E @.> ; @ @ N = = ; 3 3 5.$.$.H k $.H H H 3 3 3.D |.i }.<.Y Q J K e e Z /.! 7.> ^ *.8.6.* '.d.j e Q e ",
+"J _.J _._.) _.) ) (.(.J _.V # . ' ' ) J ) v $ $ (.V V v ' @ & ' a a ' _.( ) y J b _.$ D (.S <.<.;.j e m m ) ) ) ) m ,.a ' Q Q e J e Q [.% & ; ; @.@.3 E 3 3.3.= * @ & D > ; 3.H $.5.H $.k k H 3 H 5.5.3. .@ { t !.#.e e N Q v M !.h 7._.9 =.9.>.O c.f.@ e e Q ",
+"J _.J ) _.) _.) (.) ) y ) (.. @ # . ) (.(.) (.$ , , a ' a y a V $ i.v D q . Q b J b ) $ ) r <./.<.I b . ) ) ' @ % # # % @ ~ . e e e > j O A F 3 D D 3.3.5.@.3.> N @ % = ; ; >  .$.5.H 3 5.5.H H $.5.H @.; b { ^.;.=.e y N e Q M ).; 7.3.>.C *.:.~.j.a.o e b e ",
+") [._._.) ) ) ) ) _.) ) ) _.) x # + (.) ' ) _.x $ ^ : | | | ^ | ^ S | 4.~.(.|.y J b b [.J } <.<.<.H ,.[.@ x . $ x , , ~ $ $.* e Q |.7 2 ( _ _ S =.A 8  .> > W > * $ * = W 3.3.3.5.$.3 H k 5.H 3 H 5.3 ; + e | %.).Z b e K J N 1 #.N b F =.: ^ ..6 q L ].e e e ",
+"_.[.[._._.) _.) J ) ' ) ) ) ) {.. # x ) (.' ) ) V $ a $ ~ y ' a @ a ) , |.(.b _.J J y [.b : ;.<.<.$.7.(.d = . v $ @ @ # = I @ e Q ) X | X | _ [ B B < | 6.o 3.* * * ! ; ; ; 3.3 5.5.3 3 5.5.H 3 $.3.H @.> ' S #.t *.e y @ ,.a } ).- Q 3 C 4.^ 6 ! b./.n e Q e ",
+") ) _.[.[.) ) ) ) ) ) ) ) ) ) (.) ' + + . (.(.' (.' @ $ @ $ a ' ' V x (.(.b [.J J ) ) [.Q S <.<.<.H Q = o R W x @ $ + $ D ; y e e c =.Y | 1 : : < < } B B : 2 1.f W N ; > @.= 5.5.5.5.5.3.5.3 $.H 3.3. .I {.| %.!.[ e e z % E #.#.$ ,.x 1.C C G :.q ^.f e e e ",
+") [.J ) [._.) ) _._.) ) ) ) ) ) ) (.. @ @ . (._.) v (.@ @ @ (.@ v a x ' [.) ) b J ) ) ) b : <.<.<.I _.= # ;  .; v @ ;  .k & _.Q e ) X Y | 1 _ < [ [ } } Z B < _ S Y 9  .* ; 3.H 5.3.3 3 3.5.H 3 3 H 3 ; = K Z #.t 8 e J b ) n 1 ;.@ 7.; A ^ : 4.g.^./.$.e e Q ",
+"b J _.) ) ) ) _.) ) _.) ) i.) i._.) (.. # V . ) ) + J , ' $ $ ' a x a ) x [._.) _.J _.) m M <.<.<.n J ' ) @ W D ; , ;  .* _.|.e e c =.Y / | : : < < < [ } B < < _ [ _ O  .> > 3 @.5.5.5.3.5.3 $.5.3 5.; _.e u #.#.2.e b % |.' Z '.N ' G =.: C -.P '.^.n e J e ",
+"b m J ) ) ) J ) ) ) _.i.) i.) ) (._._.) . V @ + # q ] 2 / ^ ] _ ^ ^ ( ] ^ . b J J _.) ) m M <.<.<.j ,.) + v v = i $ ' x [.e e e e c C Y Y 1 _ : < < < < < < _ S | | : _ G ; =  .5.3.5.3 3.5.3 $.-.3.3.H > ].#.s ).h b b . . i S ;.) 7.:.C S : n @.c.<.i e e c ",
+"m m m J [.[.) _.) ) ) ) ) ) i.i.i.) y y (.. @ # ) ] ' ) ) . $ x $ a ) # ( b b ' [.y (.) Q _ /.<.<.f ) z x ' a x = x Q e |.Q e e e c =.X / / : : : < B B } < : _ _ 1 S [ 1.> > 3 3.3.5.5.3.3.3 5.5.5.3 * |.v u s #.X e Q D D D ^.q ' 7.V 4.S S *.3 c.t O Q e e ",
+"b b {.J _.[.J _.) ) _.) ) ) ) ) _._.i.y ) (.. + . q l n P N [.* $ @ x > } ' b {.[.) ) ) e S <.<./.d ,.$ % # x v $ v b e Q e e e e c C X Y | _ : < < [ [ [ < < : 1 | 1 [ 2 @.3. . .3.5.$.5.3.3 5.H 3 5.* _.i T T ).y b e e $ F < L J 7.= A 8.[ 8.A }.<.f Q e {.",
+"b b b b J [.[.) ) _.) i._._.i.i.i.i.y (.y (.' . z 0 { X / X C 2 C 1 / g.p {.|.) _.) ) _.b 2.<.<.<.g e ) ! = x $ % , v b e e e e e J C X / | _ _ [ } < [ < < _ S 1 _ 1 [ 2 > ; 3.3.5.5.5.3.5.3 3 $.$.3.> b $ s #.T R Q |.~ x # j.q . N *.C ^ S 8 6 j.d.0 e e e ",
+"m b b b b [.[.) _.) _.i.i.) ) _.K y y y ) y ) ' . + z . ) . ) ' v v + $ |.) [.{.) ) [.) _.[ <.<.<.I e ' # = , V @ # * @ ,.e e e e J C Y Y | _ _ : < [ } } } : _ 1 1 | [ ^ ; ; H 3.3.3.3.3.3.5.3 $.$.3.n N f %.s s Q e _.$ $ = < %.e 7.A 6.S [ 3 o q a.o e e Q ",
+"m m m ,.,.b {.[.) _.) ) ) i._._.y y y ) y (.y (.. . , $ (.x . ) ) ' ' ' [.x [.) b J y . ) } <.<.<.d Q . . . $ ; @ ; $ @ & ) e Q 7.c O | | 1 S : : < [ [ [ < _ _ S | S [ Y > > @. .3.5.$.3.3.$.$.$.$.- @.e R u }.[ ! e e ' % > }._ @ 7.; 4.4.}.:.; e./.| e Q {.",
+"_.m m m ,.m {.{.) ) ) ) ) ) ) ) y _.y (.y (.(.y ) (.' @ # ' ' @ ' ' ) ) @ Q ) . ' (.y (.b : <.<.<.o e _.' # = ; @ + v = D x e Q e J O | | 1 S : < < [ [ [ [ _ _ S 1 1 _ X > > @.3.3.3.5.3.3.5.5.$.> H N 7.>.).u T e e (.. @ n #.U 7.@ @ A S C ~.A }.d.l e e e ",
+"J [.J m J b b b [._._.) ) ) (.y ) (.) y (.(.y (.) R :.F :.F 8 o P P o E P |.[.) a x (.) Q S /.<.<.o e _.+ = = % # v $ D  .. 7.e 7.c O | Y 1 S : < < [ [ [ < _ _ S Y _ : Y W > @. .> 3.5.3.3.$.$.$.3. .H J 0 }.!.C . |.W z J R L Y Q J E A C j.*.F U /.7 _.e e ",
+"J _.J J J J b {.J J _._.) ) ) ) ) y ) ) y (.(.(.+ ` ^ ] ^ ( : 2 ^ Y Y ` 4.@ [.b (.) ) ) |.: <.<.<.d Q ' ~ * % @ # % W i D # {.e 7.c O | | 1 S _ : < [ [ } < _ _ 1 | _ : 2 > > @. .3.3. .3.3.$.$.H 3.3.@.7.1 !.[ O e e a J b Q O T 7.J ` 1.4.G x o c.t { b Q b ",
+"m m J J [.m {.,.{.b J ) ) _.) _.y ) y y y (.(.(.b v ) ) . ' # . . ' _.) ,.Q |._.J ) ) ) b _ <.<.<.d Q + ~ $ v v & ; > ; - & @ _.Q c =.| Y 1 _ < < [ < [ [ [ _ _ 1 Y _ _ Y > > 3.3.> 3.3.3.3.5.5.5.w  .(.y 2.u h e Q e 7.c y { 7.i y Q * i _.A ~ > _ ;.| e c e ",
+"m [._._.[.J J b b ,.{.J ) _.) ) y ) (.(.) y y (.. ' J x v ) + # v @ y _.Q m e 7.J ) [.J |.: <.<.<.d ,.. . . . # = & , & - ; z N J y C Y X | S : : < [ [ < < _ _ 1 Y _ _ 2 > > 3.3.> 3.3.w 3.5.$.5.5.> ' ,.! @ K f e Q K 7.1 Y k Q Q v $ 7.` ] ^ j { u z c s 0 ",
+"m m m J J _.J J {.J J J J ) (.y ) y ) ) y (.(.(.) x v + . ' x (.% * ) Q m Q e |.b [._.b Q _ <.<.<.o Q ' ' . @ = * $ @ % ; W W > @ N | 1 | 1 _ [ : < < [ [ : _ _ 1 | S _ X W > @.3.w 3. .3.3. .3 3. .o P ' j ; Q J e Q K Q ; L ; J @ J 7.N _ }.|. .0 L [ { R y ",
+"b m m [.m _.[._.[.[.J {.J ) x a ) y y (.) (.(.(.) ) ) J x v ' . (.% . ) $.J 7.e e b [.[.b < <.<.<.n ,.) ' ~ % * v % $ # - W ! > h k M [ | 1 S : : < < < [ : _ _ 1 Y _ : 2 ; > 3.D > w 3.3.3. .3 n E N e f }.| v e b e b b { [ ; Q J ' N 7.P $.. ~ C t ).).h e ",
+"m m [.J J m [.[.J ) _.|._.= = v _._.) ) y y ) ) ) | / : ( b./ = H ] u #.` _.e e e e b m Q : <.<.<.f e ) . ~ $ @ $ @ # & = = = =  .g _ _ M _ S [ : < [ [ [ < _ _ S | S : Y D > 3.5.= D > D > 3.7 g h v c ! M u Q b e e j >.j T z b J v a e N l v N { %.L ).>.e ",
+"m m m J J m [._.' {.,.' V # x (.) ) i.) ) y (.) @ 1.V ) . b z j.` R @ J b e ,.e e e e |.e : <.<.<.d e ' v # # + @ @ $ # ~ - D $.@. .1 [ [ 2.S 1 : : [ [ < : _ S S Y 1 : ^ > > i - 5.>  .D ;  .D c Y M e h =.n v e b e h O S T ; Q ' J b Q K f i c O <.%.t N r ",
+"_.J m m J _.[._.) b J @ & ' J J ) y ) y y (.y (.) j ) ) $ ' . ^ # . {.b ) e Q e Q Q e e Q _ <.<.<.d Q ' . + @ @ + % % @ $ = D 3.D > 1 r [ M [ : : < [ [ } < 2._ 1 | ( : X D W D D ; i > D * @ ,.{ y Q $ k 2.O e b e e 7.7.> Y E c z N h h @ z N c | %./.s Y ; ",
+"J m m m [._.[.[.|.' ~ $ x ) _.y ) _.) ) ) (.y (.x ] ^ ^ g.^ 2 ^ ] Y / C l K e e e Q Q Q Q : <.<.<.o ,.. . . . @ # @ # % ; > ! = * 3.: B _ 1 S 2._ : < < [ : _ S S Y 1 : X > > D w 3.i 3.I Q D @ ; R Q Q =.1 0 b e e c y b 7.].7 g I $.d ].v k N a M <.t ).$ T ",
+"b m m _.m m m b {.@ & . J J ) ) _.) _.y y ) (.) b + J . . + ) {.' ) {.J c e e e e Q b J Q _ <.<.<.o Q y ' v v @ V . . , W W ; * V  .< _ 1 | 1 S : : : < : : 2._ 1 | ( : ^ W > D D - i & = # . K T v b Q j u 7 J Q 7.7.N z J % A n h f d @ @ 8 @ $.S }.#.^.Z 8 ",
+"b m _._.m b {.[.$ # x ) J _._._.y y ) ) y ) (.) ' ) {.v ' ) x @ _.) _.Q b e b Q e m _.) Q _ <.<.<.o |.' ' . + # @ @ % ; > , N * > o : Y Y 1 1 S _ M < < < : _ S 1 Y S _ Y W > D = 5.7.$ > $.N J i j Q { S $.+ @ j z 7.K b _.k A d W $.k K $ 0 ! o r '.T u R ].",
+"m J _.m b m ) ' % (.b [.(.) ) _.) ) ) y ) (.y y ) (.v ' J x + |.J _.) ,.Q e Q e ,.J ) _.,._ <.<.<.o Q y ' v v v + * W > - $ , = o o / ^ Y Y 1 S S _ : < : : _ S 1 | 1 : 2 W W D 3.= |.> G D Q c } b &.#.I $ ' ! h h b J K v D =.0.i o f @ N >.; *.&.^.U /.L &.",
+"J m _.J {.{.' # ' J b J y _.) (.) ) ) (.y (.(.) x 3 n H :.n 3 n 8 o n $.$ Q Q e _._.J b Q _ <.<.<.I Q ' . + + v # ; W & @ $ > $.; $ 4./ | X 1 S _ _ 2.< : 2._ S 1 Y 1 : ^ W W D w v v / a.! e e j { P X $.- I ! o N 7.y b a f O j ].i i v v j @ j u '.^.).;.%.",
+"J {.,.b _.+ + ' ) _.J ) J ) ) ) ) ) ) ) ) ) _.i.v H P P G R d o o d n P s e ,.[.[.{.J [.Q _ <.<.<.o Q ) . + v # w @ , % . > P & 7._.G < _ ^ 1 1 S S _ : [ : S S | 1 1 ( 2 - w w > > J > j a e c l y K D o g ! h k i Q z $ K o =.I > i f c N j $ n s '.%.d.^.s ",
+"J b |.) x a ' ) J _.J ) _._.) ) ) _._.) ) ) ) i.b $ ' b J b J ) {.' ,.e X m ) b J J _.) Q : <.<.<.d e _.' @ $ $ @ x v = D , . Q v x  .] : < < ( _ S _ _ 2.[ 2.S 1 1 ( : ^ - W w W # m Q e c e e =.0 ].0 j ! ! @ f ; b y c a h =.n i i d N N O z =.!.}.L t }.T ",
+"b |.J ' a x J J ) [._._._.) _._._.) ) ) ) (.) ) x H P o o o d d F I n 4.'.@ |.) _.J [.[.Q _ <.<./.o ,.' ' ' # = & $ @ % i . e Q ; - W H 9 4.g.C | : } [ [ 2.S | / 2 / : ^ w - ; w - . e z ~ e $ } [ =.P f $ k i f $.e @ K Q n { o ! i $.{.k *.z 0 U &.s ).}.u ",
+"b J (.. (._.{.J _.[.[.) ) ) ) ) ) ) ) ) ) (.) ) x 3 o o n H o o 3 n j D W b ) Q [.J _.) Q : <.<.<.f e m @ + + . $ % W = , [.7.,.; H o 3  .W W H F { / _ [ [ [ [ S / _ : g.W - ; W 3 I e j ).K Q [ u 0 j @ N h h f a y y c N ! Y f ].! ; @ @ Y z 0 T &.%.t !.#.",
+"b ) ' y J {._._.[._._.) J ) ) _.J ) ) (.' ) ) ) ,.) {.|.J J m m ) b a x ) e m (.J J J ) Q _ <.<.;.0 K @ % ; W > = -  .i > ' ) , - 3 3  .H  . .o = ;  .P A { ] Y / 1 : | :.= - 3.; > |.e &.u c $ 2.f j z z ].$ ! i k e $ y e k *.I ].> k Q ! *.! j #.u #.;.%.&.",
+"y y ) b J [.) J [.[.J ) ) _.) ) _.) ) ) (.) ) _.b c b _.) _._.) J v x {.m [.|.b J J J ) Q : <.<.<.t t ;.t t t t d.d./.d.L ` . , $.H D ; 5.H o R H 3.= = > = = * H I n ..D = ! w ; I - _.m n e Q 2.{ z f $ N h ; h c y c Q @ N X $.h i i z y { $ O #.#.%.%.#.'.",
+"' (.J b J _.) J _._._._._.) ) ) _._.) y ) ) [.J b y c J J ,.) . ' , ' b J ) b [.[.m ) J |._ <.<./.<.<.<.<.<.<.<.<.<.<.<.<.| ) ! W ; W w 3.3 H -.F o 3.> ; ; % @ . {.(.# , - W - W = _.7.].k b N | >.k $ $ N ! z ].].Q @ c _.f Y n k f d $ ].j ].*.}.#.!.;.}.} ",
+") J J J ) J J ) J [.[.[.) ) _.) ) ) ) ) _.J J b y @ c J J c . . V ' _._.m b b b J J [.[.Q : <.<.<.<.<.<.<.<./.<.<.<.<.<.<.S . ; = = W D w  .o R o o 3 3.* = & $ . {.v = = = ; > ; % $ e o T b e &.{ N v $ ! z ].].v K ~ c a h 1 o i ! > z @ j N O }.#.!.L #.[ ",
+"J J J J J J J J ) _._._._._.) _.) y ) [.[.J m J J Y b c _.' 1 j i.a y b J b ) J [.b y J Q S <.;.;././.;.<.;.;./.<.;.d.<./.l ) @ = = W k 3 H -.o R +.R 3 w = , # ' ) . & = ! > ; W % ,.Q O M y z X 8 K K $ ; ; z $.z b @ J K i C l i h h N N $.z j u s !.t %.'.",
+"b J J J J _.J J J [.[.[.[._.) _.) ) ) J m m J J Q X c b _.N ^ j _.i.y _.) 7.|.J b ' m ) |.~ ; h > z ! ; a y @ $ % $ ! $ . |.. . , = W D 5.3 -...R F F o  .> , V ) ) @ & = - w ; = $ y ,.7 %.Q e r 0 N $ ].N @ z y b J a y K $.| l h h i ].z i N j &.u #.L L !.",
+"J {.J J J J _.J J _._._._.) ) ) ) ) {.b {.J [.J . &.Y ^ / / c.[ ^ ^ ^ ^ 4 @ b ,.b y |.) ) J |.J b e {.~ ! f k K b e e e Q ' @ + , - ! D i 3 H o R P F F R 3 ; @ ) ) @ = = - > > D . 7.7.U M c z | 0 h @ N $.N b e e J N e v N O *.! ].i ! N ! $ n &.#.%./.%.u ",
+"J b J J J J _._.J J ) ) ) _.) ) [.[.{.m b ,.{.{.Q 8 o G G R j R P P P R I ) b m [.b J b _.~ x J ' =.%./.<.<.<./.s l . _.@ @ {.! z ; W 3.5.3 H o R P P F F ..i = ' _.. & = - > > & 8 E 7.| %.7.N }.8 J e b $ % $ Q e $ K c c N 0 { ! z h z a N N l r T !.;.%.u ",
+"J J J J J J J [.J _.J ) ) ) ) _.m m m {.b ,.,.,._.% V V x J _.' K a y m (.|.m [.m |.y m ) ' . H ^.;.<.<.<.<.<.<.<.<.}.o b = W $ , - D D 5.3 o o ....0.+.6 F o 3.@ ' ' # = > > = D @ 7._.C @ J j r ! ,.e Q z N J e e K N e @ K 0 { ].].i ! y @ N 8 } u %.;.).T ",
+"J {.J J J J J J J _._.) ) J _.[.b b b ,.b ,.,.J v # $ v i.) (.a _.a y b m b b e [.{.J _., _.H L <.<.<.<.<././.<./.;.<.L j ,.$ W - - W D i  .o o P P ..R F F 0.H ; # x $ = w > = = @.d 7.v N e $ #.z e e e v $ a e e z K b b ' j { ].].k i a a N l } u !.t %.T ",
+"J J J J J J J _.J [.) J J J b b Q b J J ,.{.) (.$ v J J (.' y _.y ' y b ) b ) m m y J x @ y _ <.d.<.<./.).U %.;.<./.<.<.'.$ @ ; - ; W D i 3 H ......P P 0.F 0.R E ; * & * ; ! = & * 7.' > b 7.8 S a b e Q N y e e Q v z e K y *.X h ].$.i @ @ N n M u !.;.).T ",
+"J {.{.J J J J J J [.) ) ) J b b ,.b b ,.,.J ' $ @ v _._.x ) ) a ' (._.b [.Q {.J |.y @ , y 5././.<./._ z {.e b > q <.<.<.;.d . $ ; W W D i 5.H o ..P +.0.0.F 0.R n @.; = & = > = = ,.,.Q ].f y v }.v e e v K e y e e c K e J _.o M I ].i i $ $ z *.r T L ;.L T ",
+"J {.J J J J J J [.J ) _.{.b ,.,.7.J J Q J V = $ i._._.K _.i.y ' y ' ' ) J J b b ' @ $ a e X <.<.<.e.J e Q |.[.Q Q C <.<.<.{ {.~ - ; W D i H o o ....R 0.0.0.0.R o o d 3 3.; ; ; = = 7.@.T K 7.o =.@ e b K K Q y N b K d @ e y d Y d z ! i z a K C u X X #.u &.",
+"J m {.J J J J J [.J [.[.b b |.b J ,.Q [.@ $ @ i._.i._.i.K _.(.) (.' ) _.b b J _.@ V v y e Y <.<.<.O e e [.x . ' |.o d.<./.C {.@ , ].W D 5.3 H H o ..0.P 8 P n o E R n n 3 > - = *  .' @ o 8 7.! }.7.Q @ v v z h D K $ l h J c i 1 n ].! i z N N { u u Z &.M 1 ",
+"{.J J J J J J J [.J m ,.b ,.b |.[.|.J @ = $ i.J i.K i.i.' _.' (.) ) y J ,.b _.' , x ) ,.Q 1 <./.<.I e [.x # . . _.~ %.<./.S |.. $ W D D 5. . .R ....P F 8 n n R H o F j 8 H > * W E _.@ / - Q R >.K Q ; ].].N $ k y y j D b b z | *.! ! ! N @ $ 1 2.} s %.^.}.",
+"b J J J J J J [.b b b ,.,.,.|.|.|._.V * V ' _.i._.J i._.' J y x y ' (.J b _.@ , V ) Q e e S <./.<.k Q ' x a ' . @ K }.<.<.M b ' $ W W D  .5.3 R ....R 8 8 8 8 R o d R j 9 F 3 ; N ,.= b { O 7.].u b y y $ $ N ; h y y *.g . Q $ { l z ].h N $ N 0 2.} T }.%.!.",
+"J b J _.J _.J m b b b Q ,.|.|.Q J @ N V (.J ) i._._.a ' ' ' m y x a i.J _.v V x J Q Q e e 1 <././.d |.' ' ' v @ ~ ~ #.<.<.} |.a $ = W W 3 H 3 o o R P P 8 P n o n o H 8 9 *.P H V ; ' # P J J $.X ; c ; v $ ].! j N y j d K Q @ =.{ h ! h z $ z 1 u T %.!.r } ",
+"J J J _.J {.J m Q b b |.Q ,.{.J # , @ ) b _.i.J J @ b b _.a ) (.(.) i.i.~ , V ) Q e e e e 1 <.<./.n Q [.. . # + . N s <.<.[ b K ~ z i i  .H o o o R 8 F 8 P 8 o H o R n :.9 G G E * ; ,.n i e R T b K v ; z ! ; h y Q 8 l ].b ' { O ! ].h ].z i 2.#.T u r T u ",
+"b b J J J m b Q b b b Q ,.|.) v = @ ) J ) ) ) _.y *.a ' ' a y a _.i.a * = V [.Q e e e e e | <./.<.g |.[.+ . v . . ~ T <./.} Q a $ ; i i ; i ..o ....P 8 8 n R P H o n F j :.~.9 ] H [.' ) J e j O ! y $ ; i z $ i K {.P *.D {.y 0 C z $ ; N @ z Y T T u u T | ",
+"b b J J J b b Q Q b b Q |.J v , , (.{.i.) J J v ) Z H R n o o ..-.R 7 4 H . 7.e 7.e e e e 1 <./.<.k Q _.+ v ' @ ~ @ s <./.e.Q a $ - ! $ ) , H o o ..P 8 8 8 R R H o 8 j ~.9 :.j 9 @ = 7.> y e *.[ e b N v $ ! z $ c c l { $.J c l O N z ! z @ z Y #.#.u #.!.0 ",
+"J J J b ,.m b Q Q m m 7.{.$ = V J _._._.) _.) ) (.[ R ....0.H +.R G 5 9 o |.e e e e e Q e 1 <.<.<.d Q (.x . + + + . j.<.<.[ Q K N W ~ {.m ) , o P n 8 F F P R R o o n j :.G 9 9 ] D _.. . J 7.0 =.y J v $ @ z ! ; Q y =.Y n ) Q n C f ! ! z K ; | s !.T }.2.$ ",
+"b [.[.,.e Q Q Q J Q Q b a , $ K _._._.) ) i.) _._.4.' m a a b y * 3.* b ,.Q Q e e Q 7.7.7.} <./.<.d e ) . v + @ @ v s <.<.} b a N N c Q b _.x = o R R o ..F 8 o o H o P :.9 :.G E (. .c N c b { M J 7.$ v $ i ! $.a J O j 0 N c n | n ! ! z @ z O }.s } T *.c ",
+"b b ,.Q Q e b ,.Q |._.V , $ K J _.J J _.) ) ) ) ) a b @ J J , ~ ! > x ,.e b e e 7.e 7.[.) [ <.<.<.d Q ) ' + v + ~ + s <.<.} b K y c Q e J ) (.. W o F P o 0.+.o H o R j :.9 9 G ` H _.' ) J e { Y ; c J $ @ $ h f b % n C 0 $.{.i O h N N $ @ N [ #.}.!.u i h ",
+") b Q Q m Q Q {.7._.& > , i._._._.) ) _.) y ) y ) J y y i.i., 3.! a |.,.e e e e 7.|.y $ ) _ ;.<.<.d Q (.' + + + @ @ #.<.<.} b y Q e e ,.m ) ' . x W R 6 0.o R R o o R j :.9 ~.:. .Q = Q C N b >.2.J e v v v j [ Y h b *.k C $ |.i 0 z @ N K @ z 0 #.}.#.r e u ",
+") _.J |.7.|.|.Q b $ w , i.J J _._._.J ) ) ) ) ) ) x v Q (.- w w v J |.,.e b Q e e ' , x Q S <.<.<.d Q ) x v v @ v @ s <.<.[ e Q e e b b J c ' x (.@ W R F 0.o 0.H o o 8 :.~.9 9 p > ) ! b.q 7.o { J e v k O S 1 %.y J b {.> o e ! 0 ! $ z v $ ! *.'.Z #.k y r ",
+",.x . b e Q b Q , - , i.b J ) J _.) _.) _.) ) ) ) J J ' - ! > _._.,.J e b e Q ,.' . x J 7.: <./.<.f 7.) ' v v @ . @ #.<.<.M e e e e Q Q J ) ' x # ' x W 0.F ....H o n P G 9 :.G d @ v @ L 0 e k | >.C X | X 1 u S h e J Q 0 @ b z =.o N z z ; ! 0 }./.%.u u <.",
+"b y V ' b Q b i.- $ i.b J ) ) J _._.) _.) ) ) ) _.( 2 | h.w O [ 2 ] Y ` 1 Q e Q $ (.,.b b _ <.<.<.d Q ) x v + + @ + #.<.<.[ e e e e e Q J ) . + $ v a $ w ..F R o o n F :.G 9 ~.*.@ ) E ^.r e r L Z &.Z } %.t }.M v K Q b l n {.i Y *.! i h h ].0 &.;.| >.}.T ",
+"J b ' & @ |.J = , i.J _.i.J J (._._.) ) ) ) ) y _.h.* w w a g.H ,.|.J _.X e m # ) ) J b Q : <./.<.d Q ) ' + v + @ ~ #.<.<.[ e e e b b b c ) . $ . & = a $ i R R o o n P :.9 G G p ; . $ } j 7.Z %.M M Z T Z { h g a e Q K 0 @ ) ! { n z $.k z $ O L u v $.).[ ",
+"J b b b a 3.D V J J J J J _.) _.) _.J J [._.y _.J } k w ' Q / I b (.|.|.^ v = [.J J [._.Q _ <.<.<.o Q ) (.. + @ $ . j.<.<.M e e e e Q ,.[.' + # , , , , @ x - 0.d E o j :.:.:.:.F . ; @ >.k b '.).1 Z } f >.X e e b . e . n h K N C *.z ! ; $ h 2.).u Q T ^.h ",
+"_.i.J y ' V > (.b b J ) i._.J _.) _.{.) (._._.i.> [ b.j.j.c.r y y p 2 p < # ) J J [._.) Q : <.<./.H Q ) ' . + ~ . ' s <.<.: e e e e Q ,._.' V # $ & & = , . + ; I P n o 9 *.:.*.9 d y N >.! b >.Z 2.Z 0 i [ %.! Q b J e c i $ b $ O *.h $.h $ ].M ;.{ n t S e ",
+"J @ , , b Q V , ) {.b _.) ) J J (.{.[.' y J y ~ > ! * J ) J b b b |.b . ; J |.b [.m [._.Q _ <.<.<.d Q ' ' . @ ~ _.,.T /.<.M e e e Q Q ,._.x @ & & * = = = + (.) z d P 8 :.9 :.9 G n . ! 8 f y >.Z 2.O ; N 2.}.].e e J Q {.@ z z ; 0 j z ; ; $ ! } Z Q ; %.8 h ",
+"y ' W @ J _.,.V v ) ,.b _.) ) J J _.) ) J _.~ w ! a b 7._._.b ) ' |.. ; ) ) J _.J J [.[.Q : <.<.<.H e ) ' + . . Q Q './.<.M e e e e Q ,.) . # N = = * * = $ x ) [.$ o *.:.F 9 ~.:.; y $.r N v { ; h N 7.v S r @ J e y h o 8 n f N >.8 ! ! ].z i | l e l j {.{ ",
+"_.' * y y a 7._.V v (.{.b ) (._._.) _.J y $ ! w ' Q [.) ,.Q y Q 7.@ , ' Q J Q b [.{.[.) Q _ <.<.<.d e ) . . ) m e e '.<.<.[ e e e e Q m ) @ # & * = - = * % # x ,.J W j ~.:.~.:.P @.* ; !.}.j $.C j R $ N j R N z b y 8 0 l j k @ j R z z N h R X N K 1 ! c 0 ",
+"$ D a y ' J J J ) ' v x _.b _._._._.J i.* 3.- x Q [.Q b b _.J _.% # x |.) b [.) _.J [.[.Q : <.<.<.H Q ' + ' |.e e Q T <.<.M e e e e Q J ) @ $ * N * = - * $ + ' _.m (.D :.9 :.*.G D 7.R %.C $.| f b z ! ; N N g f J y R j 8 8 $.K l l h ! N ! o { N M &.K i s ",
+"$.; b J (.i.(.b J _.x V x J b ) _.J i., D - v b J q | =.=.X O / _ ] / ` 2 {.J [.J {.[.[.Q _ <.<.<.f Q ' c m e e e e T <.<.M e e e Q |.J ) @ # & = $ = ; = $ @ (.) J {.v  .F 9 9 H > N _.}.2.N k k y ! ! z i k n f e c R >.j o ; ! O 0 i h h i j i e f =.k u }.",
+"= J |.J J y ) ) _.,.b V v _.b _._._.$ k w ' |.b Q C Q J {.,.V D + ' ) ) ^ b b ) J {._.[.Q : <.<.<.d Q m Q e e Q e e '.<.<.2.e e e Q ,._.) @ # & ; & * ; = & $ . {.J ' ' ' 5.*.:.p n J N S Z b C $ b ; i N N ; ! d c ! { { 0 j o K >.>.h k h ! f y b ].y j T [ ",
+"J ,.,.J _.J J _.J b v = $ J b (.|.' w D ' Q b m J &.g k j % ; v ) ) . ; Z ,.[.{.[.J J [.Q _ <./.<.I Q e e e e e e e T <./.r e e e Q ,.J ' @ % * = = = = = % @ + ) m ) $ $ v D *.*.= z b | %.f k =.y z ! ! z ! f z 7.$ l h >.f ! ! l j h ! ! z h K > ; i T T X ",
+"|.J b J (.(.J _.b x , @ ) i.) b ' 3.D (.b b b b J g 0 =.2 ^ ^ C ^ ^ { C 8 ,.|.J [.{.J [.Q : <.<.<.g Q e e e e e e Q T <./.M e e e e ,.J ) @ # * * = = = = & @ + ) _.y # $ V * i P D J 7.; [ { 1 f b a v z z $ ; h e $ R 1 Z { k $ l 8 ! ; ! i ! v O j | s T Y ",
+"J Q ) . i.) ) ,.= $ v i.b b ' a D D a |.|.J b b b b J . ' @ ' b |.' x J Q J b {.J J [.[.Q _ <.<./.o e e e e Q e e Q './.<.M e e e Q ,.J ' . $ * = = = - = % @ . _._.x @ = & $ V 8 G = ; 0 i ; C { b v ! ].N i $.@ y h { j %.C ; N >.o ; ; ! h K e K j | T } C ",
+"J b (.@ _.Q b (.3.V J J J J V 3.W (.Q b |.{.[.,.b J ) N (.,.J $ ' ) ) J ) [.|.) J J [.[.Q : <.<./.$.e Q e e 7.e e e T <.<.M Q e e e ,.J ' . # * * = = = = N @ . _._.' @ - ; , @ ) D c >.!.k b 2.h a $ a ].! ; ; k e >.>.{ O l h N 8 k $ N h i a Q N =.[ T [ } ",
+",.$ v b {.,._.5.(._.J _.@ , - ! y _.y b 7.,._.,.J J ~ ) 7.$ (.{.' ' Q ' 7._.) Q [.J [.) Q _ <.<.<.$.e b e e e e |.e }.<.<.M e e e Q ,.J ) @ % * = = = = = , ~ v ) ) x $ = - = = @. .k 8 L R b f 8 _.N k N @ ! i v 7.z O | %.j ; v k f ; $ ; h i ! o | T &.u M ",
+"# V ' ,.,.@ ; - Q J _.y , , a y _.@ ' b |.b ,.J ,.z _.{.) _._.. ) + (.b (.7.(.{.{.{.[.[.e _ <.<./.I e Q e e e e e e ^.<.<.1 e e e e ,._.' @ # * * * = = z , @ . _._.. & = = = D P # 7.| /.Z 7.o ! z ! ; z N $ z N b j ! 2.%.2.z v k $.N @ z ; k i ; X [ r u S ",
+"= J {.) ) ; D ,._.J J ' a y m y a a _.J ) b Q J % d.a.}.#.'.}.T '.c.U '.b.x Q ) b b [.[.e S <.<./.0 e e e e e e e z )./.<.X e Q e Q ,.J ) . % & = = = = = % ~ v ) ) ' % = ; i o j > J ; L ).; i f K v ; v y ; k h Q h >.>.Y $.; K f i $ $ z ].; @ n C Y u 2.M ",
+"{.J ,.(.> = ) J {._.J b J _.y , y y _.(.b b _.J {.G 1 c.u { ].y + ' _.) _.Q {.[.{.b [.[.e S <./.<.M b ,.J e e e Q >.<.<.<.0 e e e e ,.J ' . # * = = = = = % @ . _.) ' @ - 5.8 4 G - ,.7.M %.R l f z z h ! z h f ; y ! ! Z ).M $.b R f v @ $ ! z k 0 C } u &.S ",
+"J b $ > v ,.b [.J ) J b y $ ~ y _._._.) ' [.,.J b K J _.> { e.u 1 P ) J + 7.J _.|._.) |.b  .<.<.<.;.0 J J e e e C <.<.<.<.$.e e e Q ,.[.) @ % N * * * ; = # . . _.[.[.% H *.*.G A = 7.N 1 O $ }.0 c h $.! z h $ Q K v Q { u t Z @ $.h $ @ h h k k ! 0 &.u 2.2.",
+",._.V x J b _.) J J b b ' @ ' _.|.i.' y ) b ,.) c b c K _.J ) (.k ` } r ` @ m Q (.|.J ' ,.+ }.<.;.<.;.}.[ / [ #.<./.;.<.%.v e e e e ,._.(.+ $ * * = * * * N # . y ,..  .j G 9 G P @ K 2.t 2.; &.y c j ; b y N 7.Q e N c r Y o j c f ! @ $ ! i ! ].$.} %.%.&.Z ",
+"a - V |.|.y ) b J y b _.$ y Q y J ' a ' ) {.J ) _._.. m {.. y c $ 7 [ '.` ,.7.x ,._.J b b e 7 <.<.;.<.<.<.<./.<././.<.t 0 e Q e e Q |.J ) . % * % * = * * * @ . _.{.= G 9 :.G G ` $.b =.t Z @ #.j J K Q Q y $ Q e c b h #.L T z y h ].J N o z $ $ k X %.^.Z s ",
+"@ - , m |._.(.J J |.' = a J J b ' V a ) (.' ) ) . ) J _.a $.2 #.: 0 @ e _._.+ m |.(.) {.+ J ,.{ <./.<./.;.<.<.<.<.<.a.{ e e J e e e |._.' v $ & * * = = * * @ ' J @  .G j :.9 9 d y 2.^.s j R %.! 7.K K c 7.J e e Q z Q 0 [ %.=.J f ~ K N $ i ! i 0 u }.%.S #.",
+"m ) @ $ y |.b _.|.a $ a ' b b x @ + y J y . x (.) ; A u c.=.f c _.' {.Q b e c ) x Q ) b |.. e b n [ ^.t <./.d.a.#._ k Q e Q e Q e Q ,.m ) @ $ * & = * ; = @ @ . # D n j j G 9 G A > f }.L U y [ k c K b b y @ c Q e 7.O t [ f N v i ! a N N v i o 1 } !.#.Z '.",
+"Q e ) = , _.b b @ - a Q J ) a W y ) J b ) (.(.x (.d.d./ 1 2 O X X =.C Y 7 ) Q J x b ' J Q ' ' c 7.y ) _.% - , . J {.e e Q b e Q e Q ,.[.' @ $ * = = = ; * N * = E g n F 9 *.G G P Q R [ !.0 j O b 7.@ y Q e Q Q e e $ $ T %.u h N f ' $ h K ].; ; O &.#.%.| #.",
+"J Q Q ' , $ ' y w _.' i.e $ H @ b J J J _.J _.' ' V J (.' _.. ' c K J e e e Q Q [.x (.[.) b c J J Q b J e Q Q e m ) _.m b e Q Q Q e |.J ) @ $ & & ; * ; * = > E P o o j 9 G G G # J 0 !.U #.y &.z @ $ b e Q J e e J c j | O | Q @ ! $ . N K z i e C u %.}.[ }.",
+"Q J Q Q x $ $ - y _.b b $ D @ Q [._.) ) (.J b y a a x (.' ' ) _.c K c Q Q e e e b ) ' ) {., [ s *.) _.' |.) ) ' ' |. .u '.% e e Q Q |.[.) @ $ & $ = ; * * > o j H E n F 8 :.A j 9 J ; T }.8 h 0 $ Q ,.b J Q b J Q e k [ %.n J 7.! d @ ) a {.z N i O =.| M =.}.",
+"{.Q ,.,.Q x w $ b _.b y = v b y ) J {.) ) J J J i.$ $ x (.. ' _.' y c J e e e e e |.x . J ( /.<.d.k Q a y ' . ' ' + './.;._ e e e Q |.{.. x @ = = = & $ > o P o o o o 8 G 9 G G { $ j 0 8 n # t z Q ; $.y J a a K e k &.[ $ J _.! N K ; a K k ! o [ 1 X 0 j X ",
+"b |.,.|.e [.$ _.m b y $ @ (.) b ) J ) J b _.' i.J i.V V (.' ' ' ) y J Q e e e Q e Q _.) J _ <.<.;.f Q . ) ' . . . ~ j.<.<.[ e b e Q b ) ' V % = = & ; ; E 8 n o E o n 8 G 9 9 G o ' 0 %.L X =.j @ e $ ! m J $ ! ) b h s 0 @ e c ].$ y N @ z h b o X { | u Z | ",
+"{.b ,.Q Q Q b Q y , , ' y _.b _._.J J ) ' $ = = i.J y v @ v a ) . ' c Q e e e e e e Q |.m : <.<.<.d ,.' ' . v v @ + j.<.<.} m y b 7.Q _.) @ = & $ = 3.o 8 8 n o o o g P :.~.G G ] N z T ).=.Q }.a e $ ].y y $ ].y 7.l '.| K Q Q h ].' c Q @ ; b k Y C 2.r r 2.",
+"{.{.b b b |.|.|.' 3.- _._.J b y _.) b y , @ i., $ _.J _.' @ v J ) ) _.e e e e e e e e e Q 2.<.<.<.d 7.) ' v + @ @ @ j.<.<.B m ' @ {.Q _.' v $ & = 3.o 8 F n o o o o n P G 9 G G  .$ | u u z =.Y N b K v J J y $ K e R } f Q e K N z % @ J @ N e j 2.| 2.1 Y =.",
+",.,.b b J b |.b |.(., * y _.K J _._.' V $ ) b J = $ ' _._.$ , a ' x ) |.e Q Q e e e e e e S <.<.<.d 7.) ' a + @ v @ c.<.<.} b ' ; % ) {.(.v $ = 3.o :.F n P 8 n H H n j :.9 9 G { @ E !.;.| J }.J e a z K c Q b e Q 1 }.8 e e ) k N K c Q $ $ y O [ | 1 M | >.",
+"m ,.m b b {.|.{.Q Q ' = , _.J _.J _.= = ) _.a b v V x J J K $ $ a ' ) |.e e e Q e e Q e e 1 <.<./.d 7.) x v x @ @ @ j.<./.} ,.K N > * _._.x $ > R 8 F R o 8 R d o o o P G 9 G G E _.{ X =.; =.` c b $ z y b Q c b K Y q K e e ].h a y c J N @ K C r Y X X =.*.",
+"b |.m ,.|.m |.b Q m m ' - @ b i._.K $ ' |.J (.b J ' v @ K _.i.- & % V ' ,.e e e e e Q e e 1 <.<.<.d 7._.' . . @ @ @ }.<.<.} ,.. + W D # i.v ; 3...P R R 8 8 P o E o n j :.G 9 G D y 0 s %.1 a #.b Q N z c Q e b e b [ C $ e J K $ c y J b ; $ K >.1 { >.O O 0 ",
+"m |._.{.|.c J b b |.) a V ! - J ~ * ' b i.) J x ) ; o 0.3.i.v +.>.*.:.n - J e e e e Q e e 2.<./.<.o Q ) ' x . @ + + j.<./.} ,.. , z i  .= ,  .R -.o R P F R R R H o o P :.9 G G E b ; &.#.0 l k c Q $ N c b J K Q z [ | e Q Q ~ $ c ) b J i N y =.[ C 0 0 0 0 ",
+",.,.b ,.b b b b c J J J y K * -.v ' J J _.x x [.[.e.d o 3 _.| g.5 :.F F c.~ c e e e e e e | <.<.<.i y . J @ x a v @ j.<.<.} Q . # W W D o R H o o R ..R R n R o o E n G G G 9 j ' _.7 1 &.>.h }.e K N J Q e e Q Q K T h Q e _.$ @ a v c b N $ k 1 | O =.| Y C ",
+",.,.,.b J J b b c Q [.) J @ > , J b J v a J J x . X + _.) J | 9.$ _.7.J ] x . b e e e e e 1 <.<.<.n e N % J v @ ' . #.<.;.[ m ' ~ ; ; > H o H o o R R R 8 n n o f g n n 8 A G @.@ 7.j !.L X ; f a . $ J Q e Q y Q { &.! e b b . ) ' a J b ; ; f | Y 0 O C O O ",
+"b b {.m b b J J b ) J Q y * ~ i._._.' $ @ ) J ) # '.` ] ^ ^ j.$.b 3 H :.q ; e {.Q Q e e e | <.<./.f e ) - , . . ~ . c.<.<.} |.' ~ ; ; W 5.H 3 ..o o R P R R o o H o n j 9 9 H # $.y ! C r f $.&.J K ! ' Q m a ) e D | _.e e ) $ K y y b b k $ $ C X 0 O | C 0 ",
+",.,.,.,.m b b m J @ ) J = , _.b ,.v $ x _.y i.J J  .j n 3 0.H _.y i 8 ~.8 (.(.[.|.Q e e e 1 <.<./.$.e e ' D ~ . ~ $ T <.<.} Q . ~ ; W ; i 3 E R o o o n n n n o g E o A G  .N @ ,.y =.L s ! n r k J J b Q e y $ b M j Q e Q a v c c y Q y 8 ; @ >.O 0 X 1 C { ",
+"b b ,.{.b m J b J ,.. = V y J b ) & w $ J b _.y J J = $ ) _.J ) b v $ x J V W J _.[.Q e e 1 <.<.<.o e Q e (.- , . ~ j././.} {.. $ - W D i 3 H o R R R R n R n n o d o j H # (.@ f Q N &.!.! $.[ @ J c Q Q J c e h '.> ,.Q Q $ y b c c e e k @ v 0 C Y Z S 0 O ",
+",.b ,.b b b J J b J ' $ ' Q J $ W % $ > = i.J _.b ' b $ , [.v Q (.& J 7.b i.K , a (.,.e e 1 <.<.<.D e Q e Q ) z z K T <./.[ {.) $ - D D i 3 H H o R R R 8 R o o E n E = V x . @ J K =.T X c { U e.n y e Q Q 7.b 0 0 K e Q e % y b c c Q v j N z l 0 | }.u j j ",
+",.b ,.b b J b b {.) {.b ) _.y W $ J ,.' - - K _.K J b ) $ V b ' @ J y a b Q J V , @ J 7.e 1 <.<.<.o e e Q |.e (.].].U <.<.} |.' $ - W D  .3 H o o o R P n n n R f E = ' (.v V v Q b >.}.}.N $.u &.&./ - m e c N M S Q Q Q J ' Q b b Q e ! 0 $ $ *.O | !.u h y ",
+",.b b {.b m J b J Q ,.[.[.& w @ Q b |.,.' w - i.b +.^ h.h.*.& ) (.' J ,.J _.b J - $ _.7.e 1 <.<.<.M m e Q e Q e ' 0 <./.;.r |.. , - W > i 3 H o o o o R R R o n 8 ; J _.V V ' x . _.{ 2.R e >.'.&.&.C N J e e K #.i e e e b _.b b J b e ; j K $ l X 1 s [ $ Q ",
+"|.b ,.,.b b b J [._.{.Q x - # |.J m ,.Q b a * > b ! R R ..W ; y ) J (._.Q v Q b _.- = b Q Y <./.<.<.1 ) e e e _.S <.<.;.<.2 Q . $ = D 3.i  .H H R n P 8 n R n n ; J _.' @ x (.W % b l X v e $ o 1 s S h Q Q Q 0 }.j J e Q ) c e b J e e $ o y h =.C =.u &.c e ",
+",.b ,.{.m m b b |.,.{.|.b ) m Q |.b ,.b ,._.v * = ,._.i.i._.(.' _.J y _.J 7.K J ,.v = D |.i t <.;.<.<.%.7 e D T <.;.<.<.t l e ' ~ , W D D  .H o H R o R 8 j H D _.7.) . x v & 8 * ,.b ) 7.K v Q Q K N e ,.,.y 1 O a Q Q e c m Q Q a J e h R e ; R 0 Y } u $.e ",
+"b b {.,.b b m m ,.J [.J b |.|.|.|.|.b m b |.J x - * v J J ) x (.(.. {.Q _.Q _.J _.b ' $ + _.d #.<./.;.<.<.f.t <.;.<./.t C m ) ~ , - W D 5. .H o R o R n j o ; ) [.,._._.v D :./ ' ) _.J y N ) m b c e b y e $.r l ,.Q J b K b Q b b b Q $ h e z j O 1 u u | { ",
+"b ,.,.b b ,.,.b [.J _._.J b b [.,.|.|.,.b ,.|.,.& , $ @ ' _.b (.J . ' v ,._.Q _._.,.J J > = 7.' 0 L <././.<.<./.<.;.[ N e a ' ' $ z ; W 3. .3 o +.o R 8 o = ) ,.{.Q {.) w A C C D N b y f j @ ,.J e ) ,.e ) j }.8 J e Q ,._.e e c e e J ].z J n >.8 R 0 f l [ ",
+"b b b b b m J {.,.m b b m m m b b ,.,.,.b m ,.|.|.H : b.Z Z h.^ j.c.[ p i.b _.b b J J Q m > > e b } /.<.<.<.<.<./.#.; e e c > , = ; W D 3. .H o o o n 8 3.. J ) {.7.J > G ^ ] A ] p . k Y [ Y k m c Q c 1 { } 0 @ Q e b J e e Q Q b e b o z e R d y . ! $ b e ",
+"b {.,.m b b b J ,.J _.,.,.m m ,.|.J _.b |.J J m ) _ 8 > * ' (.y _.b v g.q ) Q b {.) (.' [.m ; *.^./.<.<.<.<././.<.<.%.>.Q e z $.- ; W D 3.3 H o o 8 n @.# (.) ' J Q % :.g.=.4.A j p ' n Y C S g b ! Q % =.u | 0 Q Q e c y e e J Q Q e J d N b z J e e c O r j ",
+"{.b b b ,.m J b {.[.c _.m {._.J |.b m J b J J J m | y V 3 x y ' x $ b J ^ b ) ,._.b |.b ) ) 7 <.<.<.<.<.<.;.<.<././.<./.M 7.7.$ W W W W i 3 H o o R 5.$ x (.) J 7.) H =.g.4 *.9 0 n + n Y X P ,.k n z ! r Y S ~ Q Q Q b m e e e b e Q z k @ z v Q e b v @ y z ",
+",.b b m ,.b m m J b ,.m m J J _._.,.,.J J c J J _.] ^ ^ ^ [ C ^ C C ^ ` 2 J b _.[.b {.+ e H d./.<.<.t U { @ n T <././.<.<.o 7.Q D > D D i 3 H o o > v ) ' x (.{.(.D A 1.9 *.1.5 ; ' @ N O s j [.y K b *.S M X Q Q e J Q e e e Q e e b h f b y _.e y =.{ ].e Q ",
+"b ,.,.b m b b b m m m m m J J J J J J J _.J m b # @ y _._.@ 3.- a _.y b _.7.) |._.J [.[.Q _ <.<.<.;.n e b Q e e o }.<./.<.S Q e e .  . .>  .H H # v (.v v ) _.# o 4.9 8 9 j 9 { n ' @ ] 1 H $ > a ) P O j } f c Q Q |.b Q e e Q e Q e v N ) N e $ k { D e e e ",
+",.,.,.,.m b m m m m m _.[.J J _.c J c c _.b ) @ + ) J K i._., k ~ v _._.|.{.b ,.[.m [.[.Q : <.<./.O {.,.Q e b e e $.%.<.<.r c m e 7.z H E H H D . . x v x ) , H A P j j j O X O Y _ 8 r T D ~ $ @ ; 1 =.[ C a e Q Q |.Q Q e e e Q e e z y ~ z e Q b 1 | y e e ",
+"{.b b m b m b ,.m m m m m J [.J _.J _.c m J . , ' _.b J y _.y ~ > ! i.J b [.,.J [.J ) ) Q _ <.<.<. .e $ * {.7.e Q b #.<.<.r ) $ [.7._.D I E > @ ' . x ' ) , o A A n 8 P 7 A p O ( 1 : q p ' $ , - j l g 2.*.J |.e ,.|.|.Q Q Q Q ,.e ,.@ c y *.Q e > O } j e e ",
+"b b ,.b m m m m m m m J m J J J m c _.m _.+ ~ v {.y v x ' y J _.* 3.V Q @.Q |.[.[.{.[.) Q : <.<.<.$.e @  .; J x ~ ) #.<.<.} 7.$ ; ' 7._.; > @ (.. @ x ) @ o A *.F o n j A l P 0 S ` : l @ ~ % i n S j =./ ].b Q Q Q Q |.Q e e Q e e z h e ! j N b ! 0 2.{ . e ",
+",.,.,.b ,.b m b m m m m J [.J J [.) _.,.(.@ + [.. {.m _.) y ' (._.= w @ '.|.J |.J J [.[.Q _ <.<.<. .Q [.+ o  .= + @ j.<.<.} e . > = _.7.' % @ ' v (.' # 3.*.5 8 d 3 n 7 n P 1.0 Y Y | P . N D ' p 0 *.r X Q b e Q Q Q Q Q Q Q e Q m @ K J @ p J e e n r l Q e ",
+",.b ,.m m m m m m m m J m [._.J _.{.{.) ' ' ) ) m x ' ) ) x @ (.J x & N ^.e b ) J J [.[.Q : <.<.<.H Q b a H 3 = + @ j.<./.[ ) ' N ; ; + |._.# ' (.' = o 9 p F o H H o 7 n = P Y O C Y ` j =.e.X 0 I 0 2.i b ,.b b |.Q Q Q Q Q Q Q e Q b Q g k K h 0 0 2.X ' e ",
+"b b b ,.,.,.b m m m m m J J m J ) J [.) ) {.J ) ) { ^ 2 2 h.( ^ ( ^ / ^ %.* ) Q J J _.) Q _ <.<./.n 7.J , - V @ (.x s <.<.} ) ) @ ;  .@.V ) v (.x = o A A F o n H n H G G # @ O ` Y S 1 } } / _ 0 =.[ Y J ) e ,.b Q e e Q Q Q e e Q J Q ,.e _.e e I 7 l | j e ",
+",.b ,.m m m b m m m m J m _._.J ) _.J J J J ) ) ) F o o G H ..:.A F  .3 :.* a (.J J J [.Q 2.<.<./.o e # = x x v # & }.<.<.} [.~ @ z ; I  .$ ' v $ R 5 { G o H n o H n j G @.# @.Y 4./ S 7 o { Y 0 O S h K Q J e b |.Q e e Q Q e Q ,.a N a c e Q e Q @ N c Q b ",
+",.,.m ,.,.b b m m m m m m m m J J J c _._.) _.[._.. ) ) (.) a |.J ,.|.,.Q . - ' |.J ) J Q : <.<.<.H b @ v ' (.@ W D U <.<.} b , > ; ; = o R % ' R *.5 j R n 8 o H o F 9 { n . $ 0 { 7 j j ` 0 P 0 | 0 @ b b ,.,.Q Q Q Q |.Q Q Q e c . ].~ e Q Q e e $ i y c ].",
+",.,.b m {.m b ,.b b b m m m [.J _.J _._.J c _.) b ) ' ) ) ) _.(.[.) b Q e 7.+ ; a J J ) e _ <.<.<.o J (.(.a V $ & ; }.<.<.[ Q @ > > D >  .R H H F :.:.8 P o R R H n j G 2 Y P D j l j *.{ { j n 0 1 O N b ,.Q ,.b ,.|.Q Q Q Q e Q Q ) h ! J Q b e Q y z . _.$ ",
+"m ,.b ,.,.m b m m b b m m _.m [.J J J J c _.) [.' ) (.x _.(.y v ' . ,.Q ,.e e ) - ' _.[.e : <./.<.n |.[.) V = & x # j.<.<.B b ~ ; -  .D ; 3 o :.7 8 n P R R o n o 3 P 9 A G G C j 0 0 O O 7 f P 0 Y 7 $ ,.Q b J Q Q Q Q Q Q e Q Q e v f $.v Q e Q e e y ! ! a ",
+",.,.m m b m m b m m m m m m J J _.J _._._._._.) ,.b @ :.F D y ) + [.' o 7 ) e |.v * v |.7.: <.<.<.d 7.[.+ = = # . @ #.<.<.} Q . > ;  .E 3. .H F ~.P o R R R o o H P 9 d E 7 { 0 p 1.O 4.p j o G Y O $.y b Q Q Q b ,.|.Q Q Q Q e Q e _.J e e e Q Q e e e ,.@ @ ",
+"m ,.,.,.b m m m m m b m m J m [._._.J _._._.) _.) } ^ o P : S 0./ q '.2 $.b e e Q $ , x |._ <.<.<.I e v & % @ v + @ #.<.<.r [.~ D - W  .H H 5.R +.6 F P R n 8 o 8 :.1.` 1.` =.0 =.1.0 0 7 G 0 O X R a Q ,.m Q Q Q Q Q |.Q Q Q Q e b v _.e e e e e e ,.e e _.].",
+"{.,.b b b ,.m b b m m m m m m m [._.J _._._._.) (.7 m _.' |.; q W + _._.c e e Q e ,.@ = ) _ /.<.<.I Q $ , . x + . + s <.<.&.K z - N = 3 8 R 5.H n 6 :.+.R R P o o 9 / ^ 0 { =.O 2 { A l o  .j =.n N b Q J m b m b |.Q Q |.Q Q Q Q J y Q e e e Q e e e e Q e b ",
+",.,.b b b m b m m b b m m J m m [._.[.[._.[.[.J ) 1 n o o o P } R R P o d c e e e e b # v [ /.<./.g [.@ v . . + ~ @ s <.<.r c @ ~ =  .o 8 :.F -.o n :.:.F P R R F R ` q B 1.7 =.{ 0 G h @ J * d ! y Q c c b b Q Q Q |.|.Q Q Q e Q _.J e e e e Q e e e e e e e ",
+"m ,.b b b b b b m b ,.{.m m m m [.[._._._.) _._.|.j I P d P I l j F n I o K Q e Q Q e Q @ b.<././.n J ) ) . @ + . + #.<.<.} J . ~ = 3 3 w H :.o R H R :.:.o o P :.F 7 *.G 0 ^ _ ` O o y _.J ' % @ J b _.[.b _.m ,.Q Q Q Q Q Q Q e a ) e Q e e e b e e e e Q ,.",
+"Q b b b {.{.b ,.|.J @ @ {.|.) ) J J J _._.c c _._.. {.J J ' b |.' , ' J ) [.' ' 7.7.Q 7.|.C <.;.t z Q ' ' a x @ @ ~ [ <./.` Q . = ..F D D H H F R ..o R F 6 0.o H H o P 9 C A C | 0 z J b N  .j D & y ) ' |.|.(.|.m |.Q Q Q e Q {.' b e e e e e e e e e e e e ",
+"b ,.b J J J m ,.b & W v J {.[.m J J J c J c c _.) |.' ) J _.J b Q . @ b Q {.) (.J |.|.7.e a | u n Q Q ) . v v ~ ' x H } : - Q ' i H 8 3 w 3.H R 8 R P R 8 0.R o E o ..4 ] *.# . y J y $ 8 p S F > W = i W y m Q Q ,.,.|.Q Q e e b c Q e e e e e e e e e e e Q ",
+"m Q b J J b ,.J v D > K J ) [.{._.c c J _.) ) ) ) [.) b . . J + ) ) + ~ 7.|.{.V x b 7.|.,.e e b b Q ' x a a a ' , , ; x {.) (.D w =  .o  .5.3 o F F P P R R 0.0.6  .+.{ H v b ,.b J b >.=.C *.! x ; - i 5.5.3 y Q b b |.e e Q e b J e e Q e e e e e e e e e Q ",
+"J Q Q b b Q b (.D - x J y x ) [.[.J [._.J c c c b > $.j k E j E o f $.n z _.Q b $ v b 7.7.Q z i ! J ) ) (.@ v v v d W ' |.. D $ - $ D 8 8 8 8 P o R 8 8 0.P F j F H :.*., |.) _._.b J k 1 O W x m # @ $ W F A ..' b Q ,.e e b Q J Q e e Q e e e e e e e e e e ",
+",.,.,.,.Q b y % ; (.,.J ) (.x ) ) ) _._.[.J c c a u d o P j d o j f f P _ ) Q b _.a @ b 7.p t /.j.- . @ ' (.' $ D D . ~ , $ D = , = i ..8 o o o H o P P ....+.6 3 *.F W $ ) b {.,.Q b m p _ - _.(.(.. (.$ ; D p ; ) Q |.Q e Q b _.Q e Q Q e e e e e e e e e e ",
+"|.,.b m J . # = ) b J J ,.J . (.(.y ) [._.J c c 7.1 K y ) . ' _.,.. . e | b @ b {.J @ ' J | <.;.<.D . = $ a @ W = (.@ ; D ; + , , D D  . .i 5.o o R P P P 0.+.F G R ; J m b b ) _._.c J z 1 $ ) ) ) x ) , W v i i . Q |.b e Q b J e e e e e e e e e e e e e e ",
+",.,.,.b . # $ . |.J _._.J {.) ) x ' (.) _._._.c a u Y C X 9 $.j j f R 0 '.c b @ J 7.) (.) _ <./.<.D b @ , $ a @ ' , , D - @ W $ D  .i D i @.o o o R R P +.P F 6 :.x b J x x ) [.J 7.) Q . D N . ' . . ) i p i v D $ J Q ,.Q Q b Q e Q e e e e e e e e e e e e ",
+"m ,.,.,.+ $ x Q J ) b J (.[.{.(.V v a (.(.) ) y J z o o g o o o R R $.o c e ,.) ) ,.J J ) : <.<.<.d e J - ! , y @ $ D W $ - , =  .i ; W 5. .o 3 o o R R +.6 ~.~.) [.# x = $ [.) b ' Q . m @ ) c ' . ) (. .A I ) ; , ' Q ,.Q Q b e e Q e e e e e e e e e e e e ",
+",.,.[.v . (.J b J J J J [.J [.) _.@ V ' ) ' c ,.m @ Q . . ' ' _._.K b b Q e e e $ . _.b Q : <.<.<.I Q _., 3 w ' = W - v $ , W i W - ; i i @.3 P R R P R -.4 6 @ ) @ $ , - ; = ; % b [.b ) (.' . ) @ ' J I p ; $ + . m ,.Q Q e e Q e J K Q e e e e e e e e e e ",
+"|.m ) x (._.J J J J J J [._.J J J _.v V v ' ) [.) |.a ,.) _.@ ' y ' y 7.e e Q e |.' + ) 7.2.<.<.<.$.Q v a ~ - 3 , $ , @ $ = W W ; - ; i  .E 3 H R -.o P 6 7 ..a b |.) v @ - D D i @ [.) W = @ ' ) ' ' K H 9 ~ ~ , . |.e e e b % $.$ d ! e Q e e e e e e e e e ",
+"|.[.(.) J J J _.J J J J J [.[._._._.) @ , # (.) ) J ) _._.' b J ' J y b e Q e e e |.) . J _ <.<.<.H b a y (.! ..= @ @ $ $ - ; $ , ; D i H R o 3 R H 0.>.5 5 P 5.' Q Q [._.~ = # D ; ) . I - ' ' v @ y + d G $ v ; ' ) J {.. ! d k $ j d e e e Q e e e e Q e e ",
+"b [.J b b _.J b J J J [._._.[.J J _._.y V = , ' ' I ' ) _.' y . K ) c Q Q e Q e Q e 7.' ' [ /.<.<.n Q m ' - D - W $ ~ ~ , = - $ = D i i 3 P 8 o H R 9 5 ~.+.....w ' ,.b J ' . J ; w @ i :.$ ' @ K @ y _.> P ~ J m e J ,.b > g k J b ! n @ e b y e e e e e e e ",
+"J [._.b b _._.b J J J [.[.) _._.) y J J ' $ , $ a h.Z } '.Y { d J @ c 7.b e e e Q e e 7.b } <./.<.d Q ) = 5.= ' = = $ $ z = $ = - D  .w i H F 8 R 7 5 :.0...o R  ., ) ,.J ) v $ W W , 0.{ = @ . v N K _.D j $ b b |.J e b ].$ Q e Q c i k J e Q e e e e e e e ",
+",.[.) _.b J _._.J J J J J _.[._.) J J _._._.a - $ $ @ b ) % d O Y _ X C 0 b e e Q e Q 7.7.2.<.<.<.I Q $ ; , x @ v $ + @ , , ~ ; - W i > > 3.o 8 9 A *.P o 0.R H i ; ~ ) [.c N 3 $ - - :.4.$ . y @ z v v E l z J m _.Q ,., ~ b Q K J b K k h e e e e Q e e e e ",
+"|.b ) i.i.J b J J J [.[.[._.J [.) m _.y _.b ' , $ = a @ ' d j X / Y Y Y 0 J e e e e e ,.e 1 ;.<.<.d b $ $ (.' ; @ + @ ~ z , = ; ; W W D 3.5.H 8 4 *.F o H o ..H D ; , @ y ' ; H @ i 3 *.4.= @ v K N ' ' i 7 - ,.|.b e z $.' e J J Q e e a ! c e e b J Q e e e ",
+",.,.J (.i.i.J b J J J [.[.) [.) J [.) _._._.i.i.> q j.S 2 *.n ) ' ) ' 7.Q e Q Q e 7.e e e M <.;./.j J ) ) x @ = ; ~ ~ ~ ~ $ ! D D W D H H 3 3 ..:.F :.:.8 F *.{ ; % - ! + @ > i @ o ..9 { D @ ' $ i N ' @.{ $._.m Q ' P g {.Q Q e J e e Q y N c e b y J Q e e ",
+"Q b b ,.) x i.J J J J J [.[.[.[.[.) [.[._._.J J _.5 h.| : ^ ( ^ A n c J e e e e e e Q e e 1 <.<.<.d Q (.$ ; $ a W W $ $ - W i - $ - W D o R 3 R 3 P F +.:.A 9 H % - > ; . . d W W P I H 4.j = ' ' g g y ' P j ~ m ,.].i ~ m e Q e e e e e b J b e Q a @ Q e Q ",
+"b b b b ,._.(.K b J _.y [.b b ) [.) ) ) ) _._._.' m - w $ @ $ J  .E s T T Q Q e e e Q e e S <.<.<.o Q x $ = @ ' @ ; H @ , H , @ - i 3.3.0.4 P H ....P 4 g.4 o W W $ W ' ,.%  .i - o 4.7 { 0 N ' @ 8 G = . D P o . . k h Q e b J Q e e e e Q Q e e Q v N c e e ",
+"b b b Q Q b ) v J J J ) _.J m ) ) [.J [._.) ) ) J y $ 7 ^ S '.^ < X O f b e e e Q e e e e S <.<.<.o Q ) @ , + v @ @ D H = ; 3 , = ; 3.H :.F 3 H H ..5 ^ 4.F H i > = ) . ' ) o - . j Y ` ^ A # @ @ h E ].) . i j - z h a e Q _.b b J Q e e e e e e Q @ ! a e e ",
+"Q Q b J b Q {.(.V ' b ,.J ) J J ) ) ) _._._._.J @ q | { h.w , V $ ) ,.m e J b e ,.e e e e _ <.<.<.o e _.. ~ @ $ ' , x D H = W o = ; 5.0.:.o 5.o o 4 ^ { R o R H W ' _.' . . > D ' p ` ] ^ o @ . x @ $ N ) J # D k D $ ,.,.b 7.b J J Q e e e e e e Q a i N b e ",
+"b Q b J J ,.,.,.% v y J b ) ) b _.) J _.[.[._._.Q ' a J y w w @ - _.x Q Q e e Q e e Q Q |.: <.<.<.d e m ' @ @ = @ a $ v W i $ D D 5.i  .H o o o *.5 *.0.o P 0.i . ,.J ' @ ) % * ' H p X A % ' # # @ . . K ) _.) N i ].v v ' m ,.Q e e e e e e e e e a k z Q Q ",
+"c Q Q Q b b ,.Q _.. $ V J b J _.J ) ) ) ) _._._.y y J y ' x & W $ $ v b Q Q e e e 7.[.) _.M <./.<.o Q ) x . . $ W ' $ , . W  ., i 5.w D w 5.P ~.4 :.o o F P i # # = . * = b % ) ) . p 1 G * . N # # @ ' y ) _.{._.N W W N ].! K b e e e e e e e e e y i N e Q ",
+"b b b Q b b b b ,.[.@ $ v b b ) _._.J _._.) ) _.) ) J V ) Q = w k - $ b |.e {.) e b (.) _._ <.<.<.o Q ' . x a $ , D a $ = ~ D D 5.i D 5. .3 :.{ R o o :.j i z D o > D D > @ ) # @ ) o 1.o * @ @ . @ @ ' ) _._._.' ' y v @ z f > K c b Q e e e e e e c ; @ e e ",
+"7.,.b Q b J b Q b e {.$ , i.J _.) ) ) ) _.J ) _._.J x b _.x ,.a ! w $ $ |.{.) b ,.) . ) ,.1 /.<.<.o e _.' ' v - $ = D , @ = $ - ; W = - i 0.*.6 o 0.0.F 3 @ ; 0 > ; W p A ~ ' ' # # ' W ].' N @ @ @ @ . ' ) _.J J y b K $ K N ! $ a K y J e e e e e {.z @ e Q ",
+",.b b J b b J J ,.,.,.J V = v Q _.J J ) _.) ) _.J x J ) x _.' ) ' ! k a b _.b {._.) J ,.Q 2./.<.<. .|.x (., W v , $ = W , $ = = ; ; W  .3 D 5.F ..H 0.F > (.+ H i D D  .E ; . ) . # * N V @ @ N # $ # @ # $ ' Q b J J J Q ,.c ' N z $ K y K J e e e b b Q e e ",
+",.{.b b b b b b J J ,.,.) V , v ,.J y i.J J ) _.b ) _.y (.[.y y i.@ w ! y m b J _.J J ) ) [ <.<.<.P e b ; W . v a , = - D ; $ = , - > i & [.+ o 0.o R :.o = ' _.d  .N y * @.; ) ' ) @ = ; N @ % @ # . . @ N , % J _.J J b Q Q Q Q a z N @ K c b e e Q e e e e ",
+",.,.,.b m b b m _.J ,.,.b ' V = K i.J J _._.J ) y b ) ) ) _.J y _.J @ w = V _.b J J {.' . r <.<./.j {.) ~ W , (.$ = $ = i D = , - ; , x {.b y , o R 0.0.8 o = J @ + . + W H $.= ' . @ N - = = N % # @ ' ' + N ! % a ) J Q Q 7.e e Q b c $ ].a e e e e e e e e ",
+",.,.b b {.m b b m J J J Q ,.) V > $ J b _.) J (.i.J _.y v x ) (._.$ a y , D , b J b b _.) [ <.<.<.$._.$ (.~ D , , , , = ; D i ; ! % c Q |.. ' _.= o :.0.0.:.8 D Q Q # E o  .@.E # + + @ % * ; ; = * # @ ' _.) @ z N @ a ) c ,.Q Q e e e b c b e e e e e e e e ",
+",.,.b b b m m m J ,.b J {.Q Q J = * v J J _._.) J v _.[.) _.(.J ' 3.! b . * W b J J J b Q M <.<.<.I Q $ , v v i v @ W - $ - i i % c e ,.) [.(.v _.= H P P F 8 ..% J ' k H k  .H # + + & N + # ; z # @ @ . ) ) ) _.a N ].z a c J e |.Q e e e e e e e e e e e e ",
+"b ,.b b b b m ,._.J J J _.{.,.{.b , - v J _.y _.) H y J J |.i W , ' $ , H ' , ) J ) (.{.e : <.<.<.o e ) = - + $ @ = = , = , v $ y Q e b _.[.' + (.y $ o :.+.o R o % J ' i P d = + - W $ + ~ N # * # @ @ @ ' ' ' ,.) a @ a . K a K c Q e e e e e e e e e e e e ",
+",.,.,.,.b m ,.J b b b J J b b J 7.i.- * ' _._.) x g.x ) . ) 2 1.$ Q _.& ^ v . ) b J ) _.Q M <.<.<.o |.) ' ; - (.= = $ $ = + |.e Q e e Q b ' . ) V (.' = o P +.P P E N . = d  .N @.o E * . N * @ = * N # @ ' ) ) _.J J b b J y . @ K J Q e e e e e e e e e e e ",
+"b ,.,.,.,.m b J ,.b J J J J b ,.J ,.@ 3.; (.J y J ^ ) J x J 1 4.) v ) 7.1 = a b J b {.m e _ <.<.<.d e ) ' v @ , , @ , = x b Q e Q e e J J J ' v + $ V ' & o +...H P H ; # @ > o 4.G o H > # @ * # % N % + ' c _._.[.J J b ,.7.e J Q e e Q e e e e e e e e e e ",
+",.,.b b b b {.b b b b b J J J J ,.{.|._.; D V J _.L ^.u j.j.%.%.c.j.}.j.^.' $ = b ,.b b e 2.<./.<.d Q ) (.(.. @ , = ~ ) Q e Q e e e Q m _.) . . # $ $ # v @ D P H H F G H & &  .p 9 1.1.H % % = & $ * = * . ) ) _.J J J m b b Q Q Q e Q Q Q e e e e e e e e e ",
+",.,.,.b m b J J J J J b J J J b J J ) J (.; D V b K b @ ' J . ) ' @ ' Q ' 7.V = _._.J (.' r <.<.<.H Q . . x x @ @ $ . |.e e Q e e e Q b J ) ' ' ' . ' ' ) [.(.+ % N * = ; % + + o 9 A j o P o * & $ & = = @ ) ) c _.J b b b b Q Q Q Q e e e e e e e e e e e Q ",
+",.,.,.b b J b b b b b J b J J J y m J {.,.x - 3.J i._.{.,.) _.K (.) ' x J ,.|.J > y |.' ~ } ;.<.<.o b v + x ' . @ ~ y e e e Q e e Q Q Q b J _.) ) _.) y ) [.,.b . @ $ # % ; $ [.(.- W , i A ] G i ; # @ . (.) ' [._._.J b Q Q Q Q Q e Q Q e e e e e e e e e e ",
+",.b ,.,.b m m J J J J J J J J J c [.Q ,.{.b (.D > J y x _.) ' c [.' . ) Q ' [.Q v & @ b Q } <./.<.d Q . + + . + @ v ) e e e Q e e Q |.,.b m _._.' ) ) ' ' ) {.|.b K $ % N z * @ J J J y N D n 7 7 8 k = ~ . ) ) J J J J m b b Q Q Q e e Q Q e e e e e e Q e e ",
+"b ,.b b b b b b b b b J b J J J ,.' ' J J ,.J K  .= ) {.. J ' _.(.(.x ) ' Q |.|.Q @ W + e _ <./.<. .e ) @ @ + . . c ,.e e Q e Q Q Q Q Q m _.c ) ' ' ' ) ) (._._.7.J a N z z z z @ _.J @ N @ # ! E $.$.I @.z K _._._._.m b ,.Q Q Q Q Q Q e e e e e e e Q e e e ",
+"b b b J m J J J J J b J J J J J {._.@ % (.b b b V S < =.: ^ } _ | g.] ] { ' Q |.J 7.(.* ' S /.<.<.$.e ) a ' _.|.|.e e e Q Q e Q e e b b m _.y ) ) ' . ' ) ) [.[.J ,.J v * z z N N K _.y a $ # a ) ' a N N # K ) J J J J b ,.,.,.Q Q e Q e e e e e e e Q e e c ",
+"b b b b b b b b b ,.J J b J J J ) ,.(.= V _.b b Q , H D ) x g.P _.x ' b J Q [.m b b b [.{.Z <./.<.d e y _.b e e e e e e e e Q Q Q Q Q Q m [.) y _.) ' ) ) ) J |.b Q Q _.v N N N ].* @ J ,.@ $ c c c _.J _.c c c c _.J b b b Q Q Q Q Q e Q e e e e e e e e J N ",
+",.b b b b J J J J ,.b {.J _.[.[.[.) {.) $ , J ,.i.@ w = ) . ] n _.) ) ) |._.|.Q e _.) |.Q < <.<.<.d e J Q e e Q 7.Q Q Q Q Q Q e Q Q b ,.m m J _.) ' . . + $ ~ @ ) ' ) _.) @ N $ $ N ].@ J ' # ) c c c c c J b ,.J c _.J b b Q ,.Q Q Q e Q e e e e e e e b $ i ",
+"b ,.,.b m b b b b J J J {.{.[._.J ) _.J i.V ~ ' - j.^.'.j.c.j.j.j.'.j.c.'.. Q ~ [.,.|.|.) < <.<./.j e K Q e Q e e e Q e e e 7.b ,.e e Q m ' $ W H H n j G G G j n o o o d E $.E = N % N @ _._.K J c c c b b J b J J J m m b b Q Q e e Q Q Q Q e e e e e y ! k ",
+"b b b b m m b {.J {.b {.J _._.) {._.) ) {.) V % -  ., ) ,.Q Q y (.a _.,.x Q J -  .7.b v _.1 <.<.<.2.c b b J Q e e e e e J b e Q Q m K z k P 9 p 0 A p p *.G G j P P j G 9 9 G 9 1.9 R i = # (.,._.c J c _.b J m b b b b b ,.Q Q e Q b Q e e e e e e e K ! k k ",
+"b b b b b b b b J ,.{.{.) _._.J J {.) ) b b x V ; (._._.b & (.7.J J (.- . ' b i n $ e ) |.H <.<.<./.}.u s T u T T T T T s O c @ ! i o P j 9 j n H 3  .D - & $ $ , , & D  .H F 9 p 2 2 A F o i % ' _.J _.c _.,.b b ,.,.b b Q b ,.e b Q e e e e e e Q a h i i h ",
+"b b b b b J J {.{.,.{._.) ) _._.) b {.) _._.) J V (.(._.Q 3 i J J b @ ; |.7.,.F n 9 [.7.m ) u <.<.<.<.;./.<.<./.<.<.<./.<.q z H d n 0.o D ; @ x |.b J ) y y ) J ,.Q Q ,.J J (.a = o *.A 5 5 4 j D $ [.,.{.J J _.,.,.b ,.b Q Q ,.Q Q e e Q Q e e b N i k h h i ",
+"b b ,.b J ,.{.J ,.J ) ) _.{._.) ) _._._._.(.) {.b # ,.) ,.E P i Q [.* ) e Q , o F o w 7.b Q i U ;.<.<.<.<.<.<./.<.<./.;.<.r @ W E W + J |.b (.@ W D  .o R ......H 3 5. .D = a (.|.J $ i R 9 A 4.0 o = . J ,.b J ,.,.Q Q Q Q Q Q b e e Q Q e e Q ].i k h h i i ",
+"b b b b b b b m J ) ) _.J b J ) ,.) ) b ,.b _.) . p v [.Q D j 0.; ' ) 7.{.Q i 8 :.o R . Q e e z S }.;.;./.;.;.;././.<.<.<.} + x J Q 7.J @ > o :.~.~.*.*.*.~.:.F R 0.F 9 *.9 F 8 D $ ' (.v , 3 *.1.A G E * ) |.7.b b ,.,.,.,.Q Q b e Q Q e e Q y k i i i k i i ",
+"b b b b b J b b ) _.) _.J J J J ) ) {.Q ,.Q b ' ) < n E E 1./ C : 0  .I 3 ) 3 F H F 0.D ,.J y e e c $ @ ; $ N $ k h D k  .$ e |.Q (.- o :.~.:.:.:.:.:.6 F F +.P F n 8 :.9 9 9 9 9 F n o W @ v # E 8 :.F o D # ) {.b ,.Q Q Q Q b Q Q e Q e e K ! h i i k i h h ",
+"b b b b ,.b b ,.. ) J J ) ) _.b , @ _._.V y ,.) ) } n E d 1./ : ^ ( :.o w @ F P ..o o  .b Q Q c |.e b y $ @ ! ; @ K ) {.e 7.|.a w H F F R R F ~.:.:.~.7 ~.:.6 8 R o n :.9 9 :.:.:.:.j :.j R  .W # ;  .o P F H ; J {.,.|.Q Q Q Q ,.Q Q e b K h o h k k h h k k ",
+"b m ,.,.Q J ) x ) J {.i.' b J > V b ,.b $.8 = ,.{.p ' e _.E :.G 0...P - ,.5.~.H R :.= J Q _.J e Q { !.;.;.<.<.;.}.C J e ' W W 3 R -.H ..+.F F F ~.~.~.:.~.:.F +.R 8 F j 9 ~.9 :.j F :.F R o F 9 G H % . w o o o o % ,.Q b Q e m ,.m e |.z I $.k k $.k i i i i ",
+",.m |.Q b x . ) _._.) ' ) ,._.> * i.b ,.> G n  .Q ) 7.[.,. .:.P ~...6 -.~ H :.0.j @ [.7.J _.e ].}.;.<.<./.;.<.<.<.;.U n 3 d H H o o o P +.8 F :.:.:.~.:.:.:.F F ..R +.F ~.~.~.~.:.:.:.:.F ..P :.p A 8 ; @ v ; H 3 o W [.7.,.m Q e e Q ) z $.I i k k k i i i i ",
+"m ,.Q ,.' @ x |.b _.(._._._.@ , ; v ) {.$ j n F 3 x 7.[.(.n :.:.R 6 +.R n R ..:.> Q c Q J 7.* }.<.<.;.<.<.<.<.<.<.<.<.L 0 o H H H -...P 0.+.6 :.~.~.:.~.~.:.F 8 R R 8 :.:.~.:.:.:.F :.~.F P ....j 4.1.:.i $ v $ R 0.E = (.7.e ,.Q 7.) @ ~ ! k k k i i k i h h ",
+"{.Q J . + ) b |.b _.) ,._.$ > = v x ' J ) o o 8 F H D . J 3.R 7 - 3 6 6 ..R -...) ,.Q J Q b : <.;.<.<.t L L U <.<.<.;.<.}.i j 0.o o o ..R 8 6 :.:.:.:.:.:.:.F 8 P P +.:.~.*.~.:.:.F :.~.:.P R ..R :.p 5 4.F - _.$ 3 0.d ; ) Q e b J . ~ . @ ! I k h h k $.i k ",
+"|.b (.+ ' |.Q y ) J ,.,._.$ * , J ) ) ,.b o 8 8 o P :.5.$ $.+...$ ' ..7 o ..R N |.) Q ) Q z t <.<.<.e.d . |.b D j.<./.<.<.F H 0.F P o o P 6 :.:.~.~.:.~.~.:.6 F ..R 8 :.~.~.:.:.:.6 F ~.:.F 8 P R R F 9 5 A 8  .b . i j n ~ b ' ' @ + a . . $ i $.k k k k i i ",
+"{.' . ) ,.b ) a J b b _.v i.,.,.{._.J ,.Q W n R F :.:.R P 6 G +.= ) $ 5.~.F = |.m _.J ) 7.*.<.<.<.#.@ e e m % ~ - r /.<.;.^ % o F +.....0.F :.F :.~.:.:.~.:.F P R P P F ~.7 ~.~.:.6 F ~.~.F F :.+.R P F ~.5 A *. .' b - i K J N . @ + . ~ @ K N k k $.k k i k ",
+". . (.|.,.) x (.J _.J K , $ _.,.J Q ,.,.,.+ 0.8 R ..F R G ..+.{ - ' e ) n  .m e ) J m e e S <.<.<.X e Q , D H D % R <.<.<.Y , $.F F :.P R F 6 :.~.:.:.~.:.6 F +.P ..F :.:.9 ~.:.:.F :.~.~.:.~.~.F +.P 0.8 9 5 9 A o . e |.a @ a @ @ . @ @ @ a a ! k $.k i i i ",
+"= . b b ' v ' J _.@ ) J ! P H ; ' {.,.{.{._.F *.3.J $.:.P +.0 4 ~ |.Q |._.) m Q e c y Q Q [ ;.<./.f Q % i 0.H R I $.L <.<.[ . D 8 :.~.:.P 0.6 :.~.~.:.~.:.:.F P R R F :.~.~.~.:.:.:.:.~.~.:.:.9 6 +.+...o 8 *.*.*.{ d . ,.) @ ~ . K ~ ~ ' ' @ @ $ h $.k i $.$.",
+") |.|.y . y J b v & = J ' o P ..P 3 , ' Q _.3 ~...J |., R g.4 P v ,.b ,.e e |.e e |._.Q c } <.<./.I ) I n R n j n o ^.<.<.r . D ..:.~.:.:.:.+.F ~.~.~.:.~.~.:.F R P P :.:.9 :.:.6 6 :.:.9 ~.~.~.~.6 F F ..H 0.9 { o - @ . @ @ K . D ~ . @ $ K a K N k $.i k $.",
+"J b ) V v b b ' > - v ,.J w :.F P ..o o D = 3 o 6 ' e ) , 3 F ~.' ,.,.b e e Q e b e e ' ! '.<.;.<.o + H n +.F :.0.o U <.<.e.. > o :.7 ~.*.~.6 :.:.6 ~.~.~.6 +.+...P P :.~.7 ~.:.F :.~.~.~.9 ~.~.*.~.6 F F n P j P ; @ % % . @ z n l > + K ~ . a a $ ! k $.$.$.",
+"Q _.v a J b y , $ v {.b 7.(.o R ..+.F ~.8 ..P 6 :.w J J . . = k ) Q ,.b e e Q e |.e |.> d '.<.<.<.P ~ o 0.0.F :.P o U <.<.r . > o :.9 *.4 *.~.~.F F :.*.*.:.8 F R ..+.:.~.~.~.:.:.6 :.:.~.~.~.~.~.7 *.F F :.0.H , ' . , ~ . @ $ G { n N ' @ a @ a @ $ h $.k i ",
+"J ' ' b ,.x = - [.J J y |.|.W P ..P 0.~.~.F P P P H + ' ' Q b ) m Q ,.Q e e Q e e ,.$ P d q <.<.<.j ~ 3 R 0.P 8 P R ^./.<.r . W H +.~.~.4 A *.4 :.~.*.5 4 ~.8 +.R R P F ~.~.~.:.F 6 ~.:.~.~.~.~.6 ~.~.F :.G  .+ |.+ N @ + > > ' > 7 { $.. . a @ v @ v N k $.k ",
+"a . J Q J $ $ . J b ) [.b Q ) 3 0.R 3 D H ..P 6 +.0.v ,.J e ,.Q ,.Q Q b e Q Q e e ~ I G W [ <.<./.j $  .o 0.P F F R U <.<.r K ! o F ~.9 4 5 5 5 *.*.4 { 5 *.F P P P F :.:.~.~.:.:.F :.~.~.~.~.~.*.:.6 9 :.3 + Q ' , - ' z 9 G - . d O o $ ~ @ K a v K @ h k k ",
+"x J Q {.' ) {.Q [.|.b |.J b Q = :.0.W m ' = 5.+.{ A $ Q Q |._.m b b Q 7.e e e e Q i *.:.v _ /.<.<.j $ 3 ..+.0.F F R ^.<.<.r K ! o F ~.:.*.4 5 { 5 { { g.5 5 ~.P ..R +.:.~.~.~.:.:.6 :.~.9 ~.~.~.4 :.9 A H . |.) - ~ + , o g.{ P + - P h . @ ~ a a @ v v z i $.",
+"J |.b (.) ,.|.(.b Q 7.7.{.Q e b 0.*.o x |.m m @ o .., |.|.|.b ,.Q b b Q Q e Q Q @ d 7 I |.S /.<.<.G #  .P P P 6 0...U <.<.r . W o F :.~.*.4 4 5 5 { { 5 { 5 *.F R P 8 :.~.~.~.:.F F :.:.~.~.~.~.~.*.*...$ |.J % , + , o p { { 4.$.@ ; ~ . ~ @ @ a ~ @ K @ ! $.",
+",.y V a J b $ I D W $ $ V v $ v - F :.= (._.b ' Q ) b Q b b ,.b b J b e e Q e Q H R H $ Q [ <.<.<.j +  .P P ..F 8 R ^.<.<.r . W H F ~.~.4 4 *.4 5 { { 5 { O 4 F ..P 0.F ~.~.~.~.:.:.~.~.9 ~.~.~.~.*.o + |.' % N @ z R { g.4.5 { p v ~ @ @ @ + @ v @ $ v v ; $.",
+"i.- ~ J y J ) W :.9 6 P P F :.....0.0.F = ) @ b |.|.,.,.,.b b b Q b J e b Q e ~ o n $ e ' q <.<.<.F $ H 8 8 F :.P R U <.<.e.x D o F :.7 4 5 4 5 4.5 5 5 4 A { g.6 ..R ~.*.9 :.:.~.0.F *.F :.*.F *...@ |.@ z ~ ~ k 4.] { 4.g.{ *.].% @ ~ $ ~ + . @ @ a $ @ $ k ",
+"~ , y b $ $ _._.H :.~.G 6 P R R R ..+.5 R v b |.|.|.,.,.,.,.b ,.,.b b e b e e ; n  .m |.- u <.<.<.F ~ H R R P F P R U /.<.Z x W -.F :.~.4 5 4 5 5 4.4.4.{ 4 4 4 *.F R F :.9 *.A 8 9 :.:.p G :.{ 0.% ) ~ ; N ~ ! p *.4.{ 4 { *.W @ K $ % ) a ! - @ @ a $ @ @ h ",
+"* a b b ' @ (.Q $ o 6 ~.7 +.P 7 6 +.+.*.9 * 7.|.,.,.,.b b b b b b J b Q e e ) $.P , e + I q <.<.<.j $ 3 R ..R +.P o ^.<.<.r x w H F ~.*.4 5 *.4 5 4.5 { 5 5 4 4 { A :.8 F ~.5 { 9 :.:.9 :.*.9 n % ) x ; z . ! F ] 4.*.4.] 9 > . @ @ z ~ . D P n + @ v v v @ ].",
+"y b J m m ) x ) |.= o G ~.H - - o 8 :.F :. .m b ,.b Q b b ,.b b b J Q b e e % P d {.Q D o q <.<.<.j ~  .d o o R 8 o ^./.<.Z ' W -.F :.*.4 5 *.4 A 4 5 { { { A *.{ 5 4 ~.~.A O O =.9 j G j p n @ [.@ - $ ' , 0.g.{ { 5 g.g.i ' ~ $ z @ ' > l p j @ a @ @ v K N ",
+"|.b _.(.|.{.) (.|._.- 0.~...$ Q |.y a _.. + b 7.Q b b b b b {.b m J Q b e b i j W e . o I e.<./.<.P @ k H H H n P R U <.<.B . w H F ~.~.*.*.*.4 5 5 A 5 { { { 5 4 5 5 A { =.g.{ ] 1.*.:.7 o z ) . z % @ W 0.{ g.{ 4 g.{ k ~ ~ $ N @ @ W j { A p , a @ @ @ @ @ ",
+"' [.{.{.b J _.m (.|.b , -.~.o * v J J 7.e ,.b J b b b b b b b b m J Q Q Q @ d o (.e D n D q <.<.<.F + i E H o P P R ^.<.<.e.x W H :.9 7 A A *.A A 5 A 5 { { g.{ *.A { { =.h.=.6.=.1.g.1.n N @ N z N N i *.9.O O h.g.9 i @ v N N $ K > p { { A 0 i @ ~ $ @ @ a ",
+". (.|.Q b ,.|.{.x J |.m - +.6 F $ J Q |.|.Q Q |.b b b b {.b {.m J ,.b 7.b h P $.e x d R i q <.<.<.n @ i 3 H o P F o U <.<.r a w H F 7 9 *.*.*.*.5 4 { 5 5 5 5 { 5 5 5 { =.h.h.g.=.4 ` A ; . z ].z N  .5 h.{ 5 9.{ A i . ~ % a $ @ ! P { 4.9 A A P @ @ @ v $ . ",
+"Q ) J ,.,.7.7.[._.$ , ~ w o o :.I $ m m m b b Q b b b b b b b b J ,.m e J d G D e W o H  .u <.<.<.n . i 3 H o 8 P o U <.<.r x D H F 7 *.*.*.*.4 4 4 { 5 5 5 A 4.g.5 4 5 6.=.h.h.{ =.p @., N - z N > 9 2 O 0 O O 5 D + $ % % ~ . z 7 g.p A { 4.4.0 ~ @ $ K $ . ",
+"b ,.) @ v = 3 3 o -.+.G +.....0.:.$.x e m J e b b b b b {.J J J ,.,.b 7.$ d P - b I ..H I Z <.<./.j @ D E o R F P ..U <.<.e.~ = 3 F ~.~.4 *.*.*.5 5 4 A 4.4.{ 5 A 5 { 5 5 { g.h.C :.> ~ N ; ; N - l ] g.5 g.g.4 - ~ @ % $ @ @ , 4.0 { 4.4.A A p 4.$.. $ @ v K ",
+"{._.# E j 9 :.....n R +.*.6 P P 9 n - _.b Q e J b b b b b b b b c _.m ,.! j P v J H 0.d 3 q <.<.<.l ~ D  .E R ~.F n U <.<.} v D o F ~.:.7 *.4 4 *.4 5 5 5 4 4 4 4 5 O O { { g.C *.5.& N - N N ; F ` h.{ O ^ 1.H ~ + % - $ v W :.4.A 4.A 5 4.4 p 4.o . @ @ @ a ",
+",.Q _.& E n 8 P H +.+.6 6 R $.W ; - ~ _.b Q e {.b b {.b J J {.m Q b b m > j H [., 0.0.o d q <.<.<.j @ D E H o 9 R o }.<.<.} x W 3 8 :.7 A 5 4 5 5 5 5 4 5 5 { { A 5 4.1.=.C g.9 > % # * - z i P ` ^ ` h.] 4.R , + - - @ + D 7 ` A A A 5 A 4 A 4.A :.% a $ $ $ ",
+"J b ,.{.v , 5.~.G +.n ! _.|.J {.|.|.|.Q m b Q b {.b b b b J b m Q _.J ,.a - , b E 0.o o H q <.<./.o . k o o H 8 :.n U <.<.r . D o 6 ~.7 4 4 7 *.5 5 5 4 5 { { 4 *.5 A A ] C 9 D + % * ~ % $.p ] g.{ 1.^ A D % ~ $ - $ ' ; *.] 4 4.4.5 5 5 5 4 4.A p ! @ $ . @ ",
+"b J b b {.{.v w 6 G ~.H a Q b ) J m Q ,.m _.b {.b b {.J J m m m J ) Q Q e e ,.b 3 0.0...I q <.<.<.l @ i $.@.3.H j 8 ^./.<.e.+ W o F ~.~.4 4 4 5 4 5 5 4 5 { 5 *.A 4 5 O g.p  .@ $ - z # > 9 ] 2 { g.{ A I ~ @ % - a . D ~.{ 5 A 5 4.4 5 5 5 4 A 4.{ D @ $ y a ",
+") _.{._.(.J ) a -.7 ~.o 3.' Q _.{.[.m m b b b {.J b b b m m m J J _.7.J b 7.7.Q $ H :.0. .q <./.<.P c ' J Q Q J * ; U <.<.r v ; 3 +.7 *.5 5 4 4 5 { 5 5 5 { { 4 4 5 1.g.G D % N z ~ @ - P g.] { g.^ *.D @ N ! % . v > *.g.5 9 4.4.4.4 4 7 0 4 A *.l ; ) $ @ @ ",
+". (.b |.,.J J ) ) ; H 8 G E @ _.,.,.b ,.,.b J J b {.{.m m m [.J b ) {.- D , [.Q b , o F 3 q <./.<.P Q Q e 7.7.Q Q _.#.<.<.r . ; o :.~.+...H D 5.~.5 g.5 4 5 5 5 4 4 5 j i # $ - N ~ - P g.] g.g.2 g.H ~ @ z h % + i 9 4.{ A 5 5 { { 5 5 5 7 4 *.F R ].Q ' $ $ ",
+". . ) J b {.) y _.) > R n G F ; # a ' J |.,.c y b b b m m m m J ,.[.|.> j P W ' Q m - 0...q <.<.<.d e Q ) V V v {.,.T <.<.B + D o R 3 = ' y y ' @ H 4 { 4.5 5 5 4 5 F ; @ * ].N N ].n ` 2 4.4.^ 1.n = , z ~ N % i ~.g.5 *.4 4.A { { 5 5 5 4 4 *.R R > e {.@ a ",
+") + v {.Q Q b v n 8 8 R R P F *.0.' Q m c ' _.,.m ,.,.,.m J J J _.Q {. .....0.3 b Q ) 3 I './.<.<.d e * 3 o H :.o [.u <.<.q ) W o o @ b @ w W , @ (.; A { { 5 4 { F ; @ N z N N @.A h.g.1.h.g.4.D - N N ! N . i ` 5 4 5 5 5 { { A { { 4 A 5 :.H d o  .Q e e Q ",
+"Q Q |.J ' , 3...F G :.F 8 P H w . e Q _._.m ,.|.b b ,.m [._.J b m ,.J  .R R 0.H ' J |.5.o Z <.<./.$.) E H R o R R  .#./.<.} @ W I ; J v o 4 4 9 - x $ n 4.5 5 4 P D + @ - % ~ ].p 1.1.{ C ^ ~.D , $ - ; N + ! *.{ 5 4 5 { 5 4.4.5 4.5 4.*.F ..H o o k Q Q Q b ",
+"7.{.$ i ..P +.R o ~.A n w @ _.|.Q Q ) ' _.m Q ,.b b _._._.m b m J ,.[.3 P o ..R & |.e W H e./.<.<.$.) E H ..o n l j %.<.<._ + W d + b D 4 4.{ O o @ v i { 4.{ 5 3.~ . , ].z > 8 ` =.{ { h.5  .@ $ z ].z N i *.` { 5 5 5 { 5 4 A 4.p A { p ..3 o H R  .Q e e Q ",
+") = ..:.6 ~.6 -.P H ; (.J _.J |.|.J ) m b b Q b m m _._.m b b m J J [.3 0.H o 8 w e |.= H q /.<./.l . d R H o 8 o P t <.<.| ) D  .) b  .5 *.*.{ p , v ; { 4 { 4 @ @ $ z z - n ^ 1.4.O ^ { H , , - ! z $ z d ` ` 5 5 6.5 5 5 A 4.5 A A 5 9 0.H H H o  .Q Q e b ",
+"|.' D o o ..6 6 n 5.$ i._.m b {._.J ) ,.|.m Q ,.J _._.m m m m m _.J J 5.0.o R P > Q |.; 3 Z <./.<.M @ - n o H o o S <.<.<.=.c D I + J 3 A 4.4.O :., + W g.4.5 4 $ ~ @ $ % N $.4.1.g.g.^ ] :.D = z ! N z z ].R g.5 O 5 5 5 4.A 5 4 4.4.A A 9 F H H R k Q e Q Q ",
+"x b |._.' @ 5.6 P +.F R D # b e ) b _.J b b Q Q _.J J m ,.m m J b b b i R R 0.o ' ,.7.D H =.<.<.<.t 0 $.3  .d F r t <.<.<.7 . k o , b $ ..*.A ~.W v = H g.{ { 4.o ; . ~ - , z  .4.g.g.O h.h.*.o $ z z z % . - d 5 O 5 5 5 4 +.0.:.A 4.A 4 A :.H H R  .Q e e b ",
+"@ ' m ,.|.Q Q _.H -.P 6 ~.P 3 w @ Q Q |.Q Q ,.J _.J b ,.b b m m m ,.{.i ..8 0.5.|.,.J H ....U <.;.<.d.#.q < q %.<.<.;.<.%.> $ k F H . m @ W W , @ @  .A g.5 { { { n - % - N % z I A ` 4.g.^ 2 g.$.! z N $ , ~ $ n 4.O 5 5 F H H ..:.*.4.A ~.+.o H o k Q Q Q Q ",
+"(.@ ' ,.Q ,.Q Q |.$ k -.-.8 :.:.d ' ,.b ,.b _.) m m ,.b J m b ,.J m _. ...8 o = |.Q ; R R W ^ /.<./.<.<.<.<.d.<.<./.<./.C {.- $.0.9 D ) b ) a ' a - 6 ^ g.5 5 5 ` A 3 ~ ~ z z z @ o { g.g.O O g.] i , z % , ~ $ , n 4.{ 7 +.o ..H ..~.{ 4.0.o o d R  .Q e e b ",
+"|.) . ' b Q Q |.J ' w R :.6 P H ) Q b Q Q ) c m m b m m ,.m m m _.,.|.> ~. .$ Q Q ) H +...3 i ^ <.<.<.<./.<.<.<./.<.;.{ c @ D H P 0.0.3 , _.y , H 7 g.{ 5 { 5 5 *.{ A $.@ @ ].].- % I { g.O h.^ g.4. .~ $ z % % @ $ o p 6 ..R H 0.o n 7 F H H o o n W e Q Q e ",
+"J J _.' [.Q Q [.& 3 6 P P F W 7.,.e ,.b b [.m ,.m m b m m b b m Q J b ' $ b b Q [.W F o o R W W { c.<.<.<./.<./.<.q P . _.W I P 9 9 *.9 R 3 o ~.*.{ g.5 4 5 5 5 5 4 { 4 H z N N N ].z I { g.5 g.O ] :.W ~ ~ ~ z ].+ @ D 0...-...o 3 H R ..d o o H n z e Q e Q ",
+"{.,.J _.J ,.(.= F ..P :.3 v ,.Q m Q m ) _.J m _.m m m m m m b m Q J ,.Q Q 7.|.Q  .8 F -.P F H i + D 9 ^ _ : S /  .' ) + W I H F F :.9 *.j n :.A g.O 5 4 4 4 4 4 5 7 5 ^ 4.H z $ ].N $ z I 5 h.O { ^ g.:. ., @ $ a y Q {.= o ..H o o o o H o R ..o R @ e Q e e ",
+"' J Q Q _.= H F P P ..; [.e e _.,.{.c _.m ,.,.,.,.m m ,.m m m b m [.|.|.v $ $ b  .n o o +.o ..0...; . v + ' ) ) ~ $ W D i o 0.~.F 6 :.9 :.o ..:.g.{ 5 7 { { { 5 5 7 4 =.] 1.n W z $ z - , I 4.h.g.] ] ] A H , ~ ' {.|.e |.= 0...o ....o H H H o o d _.e b e Q ",
+"' [.|.(.D P 0.-.o F H # {._._.Q e ,.,.,.,.,.,.,.m b ,.m b m ,.m J b Q J  .P E [.~ 0.0...-.o 0.H o ..H W = ; W > ; i ..H ..:.F F ~.:.9 *.:.0.R 8 7 5 0 5 5 O 5 4 5 5 5 5 { ^ g.P N z N $ ]., I g.` g.g.g.g.*. ., $ _.m J e |.W F H H d o o o o o R  .b e b e e ",
+"7.,.+  .F 6 0.o F o E H o I i i ! - ' ,.,.,._._.b m m b b m b m {.,.|.{.i j d ) @ 0.F ....-.+...R ....H H H  .5.H o F :.:.+.P 7 6 F :.9 j R R :.7 { 6.0 7 5 5 5 5 5 5 { 5 g.C g.$.% K z ! N z I { ] h.{ { g.5 o $ . _.m |.e J - 0.0.o o R ..o d n W Q e Q e e ",
+"Q J ~ D 5.i H F 8 :.8 n F F 0...A P % m ,.,.m m m {.m m m m m m b b m Q $ H o $ [.k 0.R P ....o +.n o P 0.o ..F 0...0.~.4 G P 6 ~.:.~.9 j n F ~.4 5 5 7 4 5 5 { 5 *.{ O 8.{ =.g.A D ].].N z ! $ R 4.g.{ 6.h.9.4 W , ' J J Q e e W H 0.R R R o o ..$ 7.Q e e e ",
+"Q Q ,.Q Q |.) ) ~ N N > 3 -.+.4 F k ) Q m ,.,.,.m ,.m b {.m m ,.b m [.7.. I 0.! Q i 8 o o R P R -.+.+.R P :.F o P :.F P 6 7 :.+.6 F :.~.F 0.:.5 5 0 5 6.5 5 5 { 4.*.5 O O 8.O 5 C { I $ $ z z ; N d 4.g.O O 8.O ~.W # @ _.e b b Q = o o d H o o o . e Q e Q Q ",
+",.m _.Q Q J |.Q 7.,.7.Q D :.6 +.W |.e [.|.Q Q [.,.m m m m b ,.m Q c b e b W n  .e + o 0.o R R ....n P P P P P +.+.+.+.+.6 6 7 7 +.F ~.*.*.~.*.5 4 5 7 5 5 5 4 4 5 5 5 { { O { { 5 { { j W @ $ z , $ 3 O h.{ 6.{ O 5 E ~ K y Q b e Q ~ d R o o o D ,.e Q e b e ",
+"Q ,.' ) {.b Q Q m e Q , 0.7 6 H (.Q ,._.b [.,.,.m b m b b m ,.,.b J ,.e e % n H m b  .F H o R ..R P ..n P +.P P P +.+.+.6 6 ~.~.~.:.~.9 *.*.*.4 4 5 5 5 4 4 4 4 5 5 0 { 6.{ { 1.{ g.] ` F ! $ - , ~ ; o *.g.h.4 5 g.4 I % y Q e Q Q b - n o H n % e e Q e Q e ",
+"Q Q . @ J Q e ,.,.e ~ 0.:.F 5.' |.b {.Q Q |.,.|.b b m b m ,.J J J ,.b Q e ' I n $ e , j o 8 8 o R ..R +.P P +.+.F +.P 8 +.F 6 ~.*.~.:.7 *.*.7 A 4 4 4 4 5 5 4 4 4 5 5 5 { { O { { g.O ] ` o , $ - ]., $  .5 g.5 5 { ] A $.~ ' J e Q e {.- ..R o ) e e Q e Q e ",
+"|.e _.) |.Q Q b e v o A 0.5.@ e Q b b |.) ) b ,.b ,.m m m b m m _.,.Q Q e ,.W P  .e {.3 8 R n R P P R P n P P +.P F +.8 +.F F 6 *.7 *.4 4 *.4 4 4 4 5 4 4 5 4 4 4 5 5 { { { { { A { { { ` 4.I $ $ ].; $ , 3 *.g.O *.5 g.p i @ . J |.b e ,.! R $.Q e Q Q e Q e ",
+"b e |.,.Q b Q Q )  .:.0.o D $ @ - W 3.H R > ' {.b b ,.,.b m J J b b ,.Q e Q v d n + Q % 8 R P P R P n P P P P P F +.+.+.+.F +.6 :.:.*.4 4 7 ~.*.4 5 4 5 5 4 4 4 4 4 5 5 { { { O { O O 4.O ] 5 H z % N , $ $  .{ { { *.{ g.F = + . Q Q ,.e b , ! e e b Q e e Q ",
+",.Q |.Q Q b Q J o 9 F ..F 0.H j F 0.0.:.0.$ |.Q b b m m J {.J b Q m ,.Q ,.e {.D 0.i |.{. .o R 8 P +.P R P n P P P +.+.P +.6 F F +.6 *.4 A 7 7 4 4 4 4 A 4 4 4 4 A 4 A 5 4.{ { O ` 4.g.g.4.` ] { P W ~ z z + ~ i A ] 1.4 1.{ +.3 % K J ,.Q e |._.e e b e e e e ",
+"Q Q ,.|.b |._.W A ~.0.R 0.P 0.F R 0.0.R > ) |.{.,.b m _.J b b ,.,.Q Q e Q e e + o n , Q @ H H ..P ..P P P P P P +.P 8 F F F 6 6 :.F ~.4 5 4 4 *.4 4 4 5 5 5 5 4 *.A 4.4.{ { { { { { { { { O g.h.` j ; # , ~ . ~ $.A { *.4 g.O 1. .; K ,.Q Q e e e Q Q Q e e e ",
+"e ,.b |.b b v :.3 D  .i = z % J ; H F .., |.Q b |.b m _._.{.Q Q J Q Q Q Q Q e ) d n H Q |.H H H P P P R P ..P R 8 +.+.F F F F F ~.F F 7 { { 5 *.A 4 4 4 4 A 4 4 *.*.A 4.{ { { O 4.{ O g.] ] g.g.2 { o ~ ~ - z $ @ I { g.4 *.5 4.0 W @ . Q e b Q Q e e Q Q e e ",
+"|.e ,.m e m $ (.m |.m |.Q b Q Q 5.P :.; J b Q |.Q ) _.,.b e e J Q Q b e Q Q Q e ; o j $ Q = n o -.0.6 +...+.P R P P 8 F F :.6 :.F F :.~.7 A 5 { 7 4 5 5 5 4 4 5 A 4.A 4.{ g.{ 4.{ O { 5 A g.h.O 5 2 4. .$ $ - $ % . i { { *.A 4.F % ~ ~ ' _.e Q e |.b Q e e e ",
+"Q ,.|.|.b J m Q b b m b b |.|.@ ..F ..v Q |.|._.z o ; Q e y y e Q b b Q Q Q Q Q ' I o 3 . _. .n H o ..P P R P F P +.+.+.+.F F 6 6 6 :.:.~.4 5 4.4 4 5 5 5 4.4 4 *.A 4.{ 4.{ { { g.{ A ~.~.4.] g.O g.g.4.H + ' , . N -  .p g.4.4.$ ~ D > @ y Q Q e e e Q Q e e ",
+"|.|.b (.x y J b |.J b b m Q (. .8 ..3.y J , W H :.P a ,.J Q ,.b b Q b Q e Q |.e e $ 3 l D Q . E ..H H 0.:.8 o +.8 8 8 F P F :.F :.:.6 ~.9 7 4 5 5 A 4 4 5 5 5 5 *.A 5 4.4.4.{ g.{ *.~.F 0.9 g.h.=.O =.^ 4.3 $ $ $ % $ @ D p A k .  .{ j z @ a c c e e e Q e e ",
+"J |.x = y |.J J m ) J J b |., 0.H R E 5.o P n P F H |.e ,.e Q e J Q Q Q Q Q |.e e ,.- R o @ 7.. ..R o o F :.n R R 0.0.+.8 F :.F F F :.~.~.~.4 5 5 5 4 5 4 A 4 A 7 A 5 4.{ { { { *.F F F :.*.{ g.g.h.O { g.g.0., % ~ ~ a @ k  .. D p ` g $ @ $ a a J Q e e e Q ",
+"J J @ a |.|.J b J y m m |.) 3 j +.F 0.R F :.:.:.n D |.Q [.e b ) J Q |.b Q Q |.Q Q e ) - F H {.Q = o R 3 H F ~.6 8 P 0.8 +.F F :.:.:.6 :.~.*.7 *.4 5 { 5 5 4 4 5 5 4 4 5 { O 5 A :.0.0.:.:.p g.g.O ^ ^ 4 A 2 { P x % ~ + ~ . . - 9 { *.! K v N @ $ @ ) Q e e b ",
+"_.$ x |.|.) J b b m J |.|.= F 0.R F F 8 H i H 0.P % 7.Q |.|.$ d y Q Q Q e Q |.e e Q e . H P D b 7.= P P H o F :.8 8 8 8 0.F F :.6 F ~.~.~.*.*.4 7 5 { { 5 4 4 4 5 5 5 5 { { A 6 0.R n F l A ` g.{ g.h.g.{ { 1.{ i % ' ~ z a v ! { O o % @ $ N @ v $ $ m e e b ",
+"$ $ y |.J ) b |.b b {.Q y 3 8 H F o D W x (. .o H # |.e [.; n P y b Q b e e Q e Q |.e |.~ H n = 7.J w R o o R ..:.F F 8 8 8 F F F :.:.~.*.7 4 4 *.4 5 { { 5 A 7 5 7 5 5 { 4 :.0.F 0.0.n :.4.] ` g.O g.h.g.4.4.] 4. .# ~ ~ $ z ~ o 0.- @ @ v @ v @ ].i z Q e Q ",
+", b Q J [.{.m m J J J Q # 0.R i - @ J ) |.J 3 8 H b Q @ i n 8 P . b Q ,.e e |.e |.e b e Q  .R R - b ' 3 ..H o o :.F F +.F F F 6 F 6 :.~.9 *.*.4 4 4 7 A 5 { 5 7 7 4 5 5 5 7 0...0.0.F 0.j { ] { g.g.g.g.g.g.{ { g.A i + ~ @ . ~ ' W @ a $ $ $ @ $ h g k _.e Q ",
+"b b ,.b b {.{.{.m |.|.J ' ' b b e J . |.e + R ..D $ i n n o o +.x ,.,.e $ > e e Q e Q e e J h j n D b |.D R 3 o H 6 9 F ..P :.:.6 :.6 ~.7 7 7 7 4 5 4 7 5 5 { 5 4 7 5 7 6 P 0.F R 0.R o F A { { 1.{ 1.g.g.g.{ { O P - @ . @ % @ ~ @ ~ $ $ @ @ @ h f d d k ' e ",
+"b b b {.b m J J m |.|.b m b |.b J a # b |.W 0.H ..3 0.F o n 0.+.$ Q Q . $.o @ e Q Q e Q b e c k n o ; Q 7.; 8 0.E 0.:.F +.F F +.6 G 6 ~.7 7 4 7 7 7 5 4 0 5 5 6.5 4 7 6 0.+.P P 0.F F 8 F 4 { { g.{ g.g.1.5 g.g.0.~ x 0.G % ' z % @ a @ $ @ $ N f d f d o ! c ",
+",.{.{.{.{.{.J {.{.|.Q b b b b ) W , ) e e 3 0...H ..G d ; H 0.0.a |.) $.g n  .) e b Q Q Q e e _. .0.H & b e + n ..F :.9 ~.:.:.F 6 :.~.~.~.4 7 4 4 7 5 5 7 7 4 O 5 7 F P +.8 F 0.8 8 0.0.0.9 { h.5 O g.g.5 ] g.7 + , I 0 { I ~ ' $ @ @ $ v a N h R g f f R o - ",
+"b b b {.b b b {.b b b b b b ) v $ (.|.Q _.o o ..F R i + |.> R 0.' ) > j o d n > e e Q b Q e b e _.k P H W {.7.' :.F F :.7 ~.:.F 6 6 6 ~.~.7 7 7 7 4 5 5 5 7 5 5 *.:.P R P 8 P R P R R 8 R F *.{ ` O 4 { h.] n $ = n { 2 A D @ @ ~ @ @ ~ a v ! d d d o d f o f ",
+"{.{.{.b {.{.{.b b b {.J J J (.+ _.J {.b . n d R H ; ) e Q  .F n & $ o P I o H I # e e b Q e e Q e ) D j n i @ |., i F *.9 6 F 6 :.:.~.~.~.*.*.4 4 4 4 5 5 { 4 7 P +.8 P P P 8 8 R 8 F j F F j ~.{ g.g.{ *.i , ; p ` { 7 $.@ . % @ $ @ v ~ ].k g $.f o d k $.g ",
+"{.b {.b b b b b b {.J [.J {.[.) _.J ,.Q ; G H W ) m Q |.J I 8 R E H j k N @.H n I , Q e Q Q e Q Q e J ! o P H i b (.; 3 P 6 :.6 6 :.:.~.~.7 *.7 4 4 4 7 4 5 ~.F H R 8 F 8 8 8 8 8 j F P P j G G *.1.~.D , , 3 A ` =.n - @ ~ % @ $ @ @ $ ! $.f d f $.f o f I d ",
+"b {.J {.b b b b J J b J J b m _._.,.,.J $.I - b |.,.,.,.7.h R P 8 P d ' Q , o 0...o z b e b Q Q e _.Q e , P j j H = b b % ..:.8 :.:.:.~.9 *.*.A *.4 *.4 *.~.F ..o o R 8 8 P 8 P n 8 P P j 9 G F n  .% + D 9 ` O *.I $ ~ @ . ~ ~ ~ @ @ ].$.d d $.g $.$.d o f f ",
+"J {.{.{.b b b b J b |.J _.J J J _.,._._.> J |.Q {.{.,.J ,.k R R P P - Q 7.$ 0.5.o ..H z e e Q Q ,.e e b {.+  .n A 9  .' Q y w ..F :.:.~.9 *.*.A *.*.*.A *.F ..o ..R o R 8 P F 8 n P j :.l 9 o 3.v |.# F { { { 0 i z . $ $ ~ % a a @ - $.g d f $.o d f f f f d ",
+"_.J b b {.{.b J b b J b b J b J b b ,.b ,.J |.|.J ) Q Q Q D n n *.W ,.Q Q b ..o ..E n k Q e m e Q e Q J m Q ) D p j F P D ) |.(.- H 9 *.~.:.~.9 *.A A *.j R R P o o o R n F 8 8 j F :.l n ; (.,._.= o 7 ` =.G W ~ % , % ~ ~ $ $ @ ].$.g d f f d f f f f f f f ",
+"b {.{.J J b {.J m b J m b J b J b b ,.b ,.J J J J b ,._.,.> P :.i + Q e 7.Q i o o R H N 7.e Q e e Q b {.b m ) . ; I :.9 G H = ' |.) ,  .0.9 A 4.A A A ~.:.0.R R H o n j :.j P P P d D $ _.,.' = o P l G P I D % + ~ ~ $ % ~ @ . ].i f d f f f d f f I f I f f ",
+"7.Q J [.[.J b b b b b b J J J J J {.{.,.J _.) x ,.J ) _.7.i 0.D ) {.Q e e e $ ..H n z Q Q 7.e Q e ,.m b m c _.Q |.@ > k o A 7 H  .= . x + $ W  .0...d H H H H H H o o o E  .D > ' _.J ' z  .P l p l d ! @ y K ~ ~ ~ % % ~ $ z ! f f d d f f d o f f f f f f f ",
+"7.Q ,.J _.[.[.b b b J b J J J J b b {.{.b [.) ' _.) J |.Q D D b |.b {.Q e e ) o R  .) 7.7.7.7.|.J Q ,._._.J _.m |.b J ) + i j p G :.F 0.H W , @ ) b |.Q |.b b ,.Q ,.,.,.,.b {.[.z @.n j j l l l k z . J |.Q _.@ N $ @ . @ ! I n n R g d f f f o I $.f $.$.f f ",
+"Q 7.Q |.J ) [.b m m b m b m J J b b J J J {._.(.@ ) |.,.[.. _.Q b J J e Q e Q $.o @ Q 7.e 7.|.,.[.|.m ) J b _._.) J ,.b {.c ~ W j G p 7 G ~.9 7 D W , $ # @ ' (.(.. # * >  .o j G j j j 9 P i ~ ' ) J J J J J J $ ~ K K - I P P P n o o o d f $.$.f $.f f I I ",
+",.7.e Q ,._._.{.{.J b b b b J J b b {.J [.{.b J ' a ' b |.|.|.b J J b e e Q Q ; i b e Q e e [.J |.[.' c m b m Q _.c _.c J {.J _.' , H :.A { *.:.F F P 8 0.8 8 n o R P j j G j j j l l f - a _.c J c ) c _.{.{.,.c @ z > $.o n o g o o f f o f $.f f I f $.$.f ",
+",.Q 7.Q Q ,.[.) ) J b b b b b b J J J m [.J J b J @ @ [.e b _.J [._.Q e e e e v . e e Q e ,.) b b . . [.,.J m Q b b J b _.y y _.J ) ' @ - i d o n n F P P 0.n n n P j j :.P o H > z . _._.c y J y y c J b Q b c Q ' h d g I I n g o f f f f f f $.$.$.$.f f $.",
+"Q b Q Q Q e b ) [.[.J b b b b J _.J J m [.) J m J b x . m b _.J ) _.Q Q e e e J e Q e e Q J J J (.+ x [.[._.J _._.m m J c c J _.) m _.(.) b b b + ~ ; W ! ; ! D ! ; ; ! - N . c m ,.b J c ) y c c c c c c b b J b J $ $.n d I d n g f $.$.$.f f f f f $.$.f f ",
+"Q Q Q Q Q ,.Q Q ) (.[.b b b m J J J J b m m [.J J b b ) ) _.J J [.[._.Q e Q |.Q e e Q ,.b ,._.' a y ) [.) ) ) [.m m {._.c y ) c c ) ) _.m b b {.|.,.,.|.|.,.|.Q 7.Q b b m J J _.J J c c ) c c _.y c c J J m J J J _.e {.i o $.$.$.d g f k $.$.$.$.k k $.$.$.I ",
+"Q Q Q Q Q Q Q Q [.) ) [.b b b J J b J J {.J [.[.b [._.b ) v x b ) J ,.{.,.e e ,.e ,.[.m {.[.' . ) J J J ) ) (.' ' ' ) J m J J ) y c J b b ,.b b b Q ,.b b b b ,.Q b m J ) c c _._._.c c c c c c c _._.c c c c c c ,.b b y ! g f f $.$.$.I $.$.d $.$.$.$.$.$.f ",
+"Q Q Q Q Q |.Q |.,.[.(.(.[.b b J b m J J J J m m b ) [.b m @ V y b J J |.|.b b m |.m _.{.J ) ' ' J J J ) (.' ' ' ' . . ' _._._._.y c b ,.|.b b m ,.b b b b b ,.b b b J y c ) c J c c J J J {.c c c ) y ' K y y c c Q J Q e K $.d I k i f k $ $ $.f $.$.$.$.$.$.",
+"Q Q Q Q Q ,.Q Q Q ,.J (.) ) {.b b b b J J {.{.b ) ) J J {._.x $ _.J _.|.7._.. ,.b |.|.|.J ' (.J J _._.) ) ) ) ' ' ' . . K ' K y c m Q 7.Q b J b b b m m m b b b Q b b c c J _.b J J J J c c c y K a a a . y c J J J b Q Q Q a i f f $.k $ e e ! $.$.$.$.$.$.$.",
+"Q Q Q Q Q Q Q Q Q Q |.J (.(.[.b b b b b J J m m ) b J ) m |._.@ % (.J b |.|.m [.{.|.Q J ) _.b b b [.(.y ) ) ) ) ' ) ) ' + ~ @ @ b b Q Q ,.m m m ,.b b J J J ,.|.b b {.{.J c J c b {.c c y K @ @ $ ~ v . ' y c J J J b ,.c e e a k I k $ Q e y i $.k k k k k $.",
+"Q Q Q Q Q Q |.Q |.Q Q |.) ' (.J J J m b b J J {.m m J _._.[.J J v # _.|.J {.b ) b b {.) ) J b J b J [.) ) ) ) (.. ' ' . @ ~ K _.e e Q Q b b J J m m J J J J b b b b c y y ' y ' K K a a @ @ $ $ @ ~ a K ' ) ) c c J b Q Q Q Q e K z $ e e a i $.$.k k k k k $.",
+"Q Q Q Q Q Q Q |.,.Q 7.Q |.[.) ' ) _.b b b b J J {.{.J J [._.b b b a @ b Q ) x ) b J y ) {.|.b ) b {.) ) ) ) ' ) ' ' . @ ~ K b e e e Q b b m J J J c c y ) c _.J Q {.c a @ v a K @ @ @ @ @ @ a a @ a a K y y c c _.J m b e Q b e e b b e e % $.i i k i i k k k "};
Index: /branches/gui/src/lib/gui/gtk/gui.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui.cc	(revision 8140)
@@ -0,0 +1,156 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include <unistd.h>
+
+#include "gui_gtk.h"
+#include "gui.h"
+#include "gui_video.h"
+#include "gui_audio.h"
+#include "gui_exec.h"
+#include "gui_flags.h"
+#include "gui_banner.h"
+#include "gui_keys.h"
+#include "gui_update.h"
+
+// GUI-modules
+GuiFlags* flags   = NULL;
+GuiVideo* video   = NULL;
+GuiAudio* audio   = NULL;
+GuiExec* exec     = NULL;
+GuiBanner* banner = NULL;
+GuiKeys* keys     = NULL;
+GuiUpdate* update = NULL;
+
+/* ORXONOXGUI */
+
+/**
+ *  Initializes the Gui
+*/
+Gui::Gui(int argc, char *argv[])
+{
+  Window* orxonoxGUI = NULL;
+  executable = NULL;
+  
+  initGUI(argc, argv);
+
+  orxonoxGUI = new Window( "grafical " PACKAGE_NAME " loader, "PACKAGE_VERSION);
+  {
+    Box* windowBox = new Box ('h');
+    {
+      banner = new GuiBanner();
+      windowBox->fill (banner->getWidget());
+      
+      Box* optionBoxL = new Box('v');
+      {
+	Box* avBox = new Box('h');
+	
+	video = new GuiVideo();
+	avBox->fill(video->getWidget());
+	audio = new GuiAudio();
+	avBox->fill(audio->getWidget());
+      
+	optionBoxL->fill(avBox);
+
+	keys = new GuiKeys();
+	optionBoxL->fill(keys->getWidget());
+	windowBox->fill(optionBoxL);
+      }
+      Box* optionBoxR = new Box('v');
+      {
+	flags = new GuiFlags();
+	optionBoxR->fill(flags->getWidget());
+	
+	update = new GuiUpdate();
+	optionBoxR->fill(update->getWidget());
+
+	exec = new GuiExec();
+	optionBoxR->fill(exec->getWidget());
+      }
+      windowBox->fill(optionBoxR);
+    }
+    orxonoxGUI->fill(windowBox);
+  }
+
+
+  // Reading Values from File
+  exec->setConfDir(GUI_DEFAULT_CONF_DIR);
+  exec->setConfFile(GUI_DEFAULT_CONF_FILE);
+  exec->readFromFile(Window::mainWindow);
+  // Merging changes to the Options from appended flags.
+  for (int optCount = 1; optCount < argc; optCount++)
+    Window::mainWindow->walkThrough(Widget::flagCheck, argv[optCount], 0);
+
+  flags->setTextFromFlags(Window::mainWindow);
+  Window::mainWindow->showall();
+  
+  Window::mainWindow->walkThrough(Widget::redrawOptions, 1);
+
+  //// Handling special Cases. ///
+
+  // case update //
+#ifdef HAVE_CURL
+  if (static_cast<Option*>(Window::mainWindow->findWidgetByName(CONFIG_NAME_AUTO_UPDATE, 0))->value == 1)
+    {
+      update->checkForUpdates();
+    }
+#endif /* HAVE_CURL */
+}
+
+/**
+ *  starts the OrxonoxGUI
+*/
+void Gui::startGui()
+{
+  mainloopGUI();
+  
+#ifndef HAVE_GTK2
+  GuiExec::startOrxonox(NULL, exec);
+#endif /* HAVE_GTK2 */
+}
+
+void Gui::printHelp()
+{
+  Window::mainWindow->walkThrough(Widget::printHelp, 1);
+}
+
+/**
+ *  a bool that knows if orxonox should be started
+*/
+bool Gui::startOrxonox = false;
+
+/**
+ *  Destructor.
+*/
+Gui::~Gui()
+{
+  delete video;
+  delete audio;
+  delete exec;
+  delete flags;
+  delete banner;
+  delete keys;
+  delete update;
+}
Index: /branches/gui/src/lib/gui/gtk/gui.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui.h	(revision 8140)
@@ -0,0 +1,34 @@
+/*!
+ \file gui.h
+ \brief Creation of the Gui
+
+ @todo way to start gui without GTK (textmode) AND IMPROOVE
+ @todo curl interface to Download cool stuff
+
+ @todo widgets save themselves
+ @todo good way to step through all the Widgets
+ @todo label -> protected : getlabel function
+*/
+
+#ifndef _GUI_H
+#define _GUI_H
+
+using namespace std;
+
+#define GUI_DEFAULT_CONF_DIR "~/.orxonox"
+#define GUI_DEFAULT_CONF_FILE "orxonox.conf"
+
+//! Class that creates the Gui
+class Gui
+{
+ public:
+  Gui(int argc, char *argv[]);
+  virtual ~Gui();
+
+  void startGui();
+  void printHelp();
+
+  static bool startOrxonox;
+};
+
+#endif /* _GUI_H */
Index: /branches/gui/src/lib/gui/gtk/gui_audio.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_audio.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_audio.cc	(revision 8140)
@@ -0,0 +1,91 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_audio.h"
+
+#include "gui_gtk.h"
+
+/**
+ *  Creates an Audio-Frame
+*/
+GuiAudio::GuiAudio()
+{
+  Frame* audioFrame;        //!< The Frame that holds the audio Options.
+
+  audioFrame = new Frame("Audio-Options:");
+  audioFrame->setGroupName(CONFIG_SECTION_AUDIO);
+  {
+    Box* audioBox;            //!< The Box that holds the audio Options.
+    audioBox = new Box('v');
+    {
+      CheckButton* enableSound; //!< A Ckeckbutton for enabling Sound.
+      Slider* audioChannels;    //!< A Slider for the count of audio-channels.
+      Slider* musicVolume;      //!< A Slider for music volume.
+      Slider* effectsVolume;    //!< A Slider for effects volume.
+
+      enableSound = new CheckButton(CONFIG_NAME_DISABLE_AUDIO);
+      enableSound->setFlagName ("no-sound", 0);
+      enableSound->setDescription("Disables Sound", "Check this to disable Sound in Orxonox");
+      enableSound->setDefaultValue(0);
+      enableSound->saveability();
+      audioBox->fill(enableSound);
+
+      Label* audioChannelsLabel = new Label(CONFIG_NAME_AUDIO_CHANNELS);
+      audioBox->fill(audioChannelsLabel);
+      audioChannels = new Slider(CONFIG_NAME_AUDIO_CHANNELS, 0, 32);
+      audioChannels->setFlagName("channels", "c", 32);
+      audioChannels->setDescription("Sets the count of channels in the game");
+      audioChannels->saveability();
+      audioBox->fill (audioChannels);
+
+
+      Label* musicVolumeLabel = new Label(CONFIG_NAME_MUSIC_VOLUME);
+      audioBox->fill(musicVolumeLabel);
+      musicVolume = new Slider(CONFIG_NAME_MUSIC_VOLUME, 0, 100);
+      musicVolume->setFlagName("music-volume", "m", 80);
+      musicVolume->setDescription("Sets the volume of the ingame music");
+      musicVolume->saveability();
+      audioBox->fill (musicVolume);
+
+      Label* effectsVolumeLabel = new Label (CONFIG_NAME_EFFECTS_VOLUME);
+      audioBox->fill (effectsVolumeLabel);
+      effectsVolume = new Slider (CONFIG_NAME_EFFECTS_VOLUME, 0, 100);
+      effectsVolume->setFlagName ("effects-volume", "e", 80);
+      effectsVolume->setDescription("Sets the volune of the ingame SoundEffects");
+      effectsVolume->saveability();
+      audioBox->fill (effectsVolume);
+    }
+    audioFrame->fill(audioBox);
+  }
+  setMainWidget(audioFrame);
+}
+
+/**
+  *  Destructs the Audio-Stuff
+*/
+GuiAudio::~GuiAudio()
+{
+  // nothing to do here.
+}
Index: /branches/gui/src/lib/gui/gtk/gui_audio.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_audio.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_audio.h	(revision 8140)
@@ -0,0 +1,18 @@
+/*!
+  \file gui_audio.h
+  \brief File that holds the class that creates the Audio-Options.
+*/
+
+#ifndef _GUI_AUDIO_H
+#define _GUI_AUDIO_H
+
+#include "gui_element.h"
+
+//! Class that creates the Audio-Options.
+class GuiAudio : public GuiElement
+{
+ public:
+  GuiAudio();
+  virtual ~GuiAudio();
+};
+#endif /* _GUI_AUDIO_H */
Index: /branches/gui/src/lib/gui/gtk/gui_banner.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_banner.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_banner.cc	(revision 8140)
@@ -0,0 +1,97 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_banner.h"
+
+#include "gui_gtk.h"
+
+#include "banner.xpm"
+#include "logo.xpm"
+
+/**
+ *  Creates a new BannerEventBox and its content.
+*/
+GuiBanner::GuiBanner()
+{
+  // the banner Frame
+  Frame* bannerFrame;       //!< The frame that holds the Banner.
+  Box* bannerBox;           //!< The box that holds the Banner.
+  EventBox* bannerEventBox; //!< an Image needs an EventBox to catch klicks.
+  Label* bannerLabel;       //!< The Label of the Banner.
+
+  // the logo Window
+  Window* logoWindow;       //!< The Window that holds the Orxonox-CrewLogo.
+  Box* logoBox;             //!< The Box that holds the Orxonox-CrewLogo
+  Image* logoImage;         //!< The Orxonox-CrewLogo-Image
+  Label* logoLabel;         //!< The Label for the Orxonox-CrewLogo
+  Label* orxIsLabel;        //!< Some text about us.
+
+
+  // Banner Itself //
+  bannerEventBox = new EventBox("BannerEventBox");
+  {
+    Image* bannerImage;       //!< The Image for the Banner.
+
+    bannerImage = new Image(banner_xpm);
+    bannerEventBox->fill(bannerImage);
+  }
+  // Banner Window //
+  logoWindow = new Window(PACKAGE_NAME " is:");
+  {
+  EventBox* logoEventBox;   //!< The EventBox that holds the Orxonox-CrewLogo. it has to be an eventbox, because Images can not receive clicks.
+  
+#ifdef HAVE_GTK2
+    bannerEventBox->connectSignal("button_press_event", logoWindow, Window::windowOpen);
+    logoWindow->connectSignal("destroy", logoWindow, Window::windowClose);
+    logoWindow->connectSignal("delete_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoEventBox = new EventBox();
+    logoBox = new Box('v');
+    logoLabel = new Label(PACKAGE_NAME " v." PACKAGE_VERSION);
+    logoBox->fill(logoLabel);
+    logoImage = new Image(logo_xpm);
+    logoBox->fill(logoImage);
+
+    //! @todo add the names of all the guys working on orxonox
+    orxIsLabel = new Label("           " PACKAGE_NAME " is:\n" ORXONOX_STAFF);
+    logoBox->fill(orxIsLabel);
+    logoEventBox->fill(logoBox);
+#ifdef HAVE_GTK2
+    logoEventBox->connectSignal("button_press_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoWindow->fill(logoEventBox);
+  }
+  Window::addWindow(logoWindow);
+  
+  setMainWidget(bannerEventBox);
+}
+
+/**
+ *  Destructs it.
+*/
+GuiBanner::~GuiBanner()
+{
+  // nothing to do here
+}
Index: /branches/gui/src/lib/gui/gtk/gui_banner.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_banner.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_banner.h	(revision 8140)
@@ -0,0 +1,22 @@
+/*!
+  \file gui_banner.h
+  \brief  File that holds the class that creates the Banner-Image.\n
+  This is Commercial :-)
+*/
+
+#ifndef _GUI_BANNER_H
+#define _GUI_BANNER_H
+
+#include "gui.h"
+#include "gui_element.h"
+
+//! Class that creates the Banner-Image
+class GuiBanner : public GuiElement
+{
+ public:
+  GuiBanner();
+  virtual ~GuiBanner();
+};
+
+
+#endif /* _GUI_BANNER_H */
Index: /branches/gui/src/lib/gui/gtk/gui_element.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_element.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_element.cc	(revision 8140)
@@ -0,0 +1,50 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "gui_element.h"
+
+#include "gui_gtk.h"
+
+using namespace std;
+
+
+/**
+ *  standard constructor
+   @todo this constructor is not jet implemented - do it
+*/
+GuiElement::GuiElement () 
+{
+  this->mainWidget = NULL;
+}
+
+
+/**
+ *  standard deconstructor
+
+*/
+GuiElement::~GuiElement () 
+{
+  // delete what has to be deleted here
+}
+
+/**
+ *  Every GuiElement should set this, or it could result in a SegFault.
+*/
+void GuiElement::setMainWidget(Widget* widget)
+{
+  this->mainWidget = widget;
+}
Index: /branches/gui/src/lib/gui/gtk/gui_element.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_element.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_element.h	(revision 8140)
@@ -0,0 +1,28 @@
+/*!
+ * @file gui_element.h
+ *  Definition of ...
+
+*/
+
+#ifndef _GUI_ELEMENT_H
+#define _GUI_ELEMENT_H
+
+class Widget;
+
+//! A SuperClass for all the Different GuiElements
+class GuiElement {
+
+ public:
+  GuiElement();
+  virtual ~GuiElement();
+
+  /** @returns the main Widget of this GuiElement. */
+  Widget* getWidget() { return this->mainWidget; }
+ protected:
+  void setMainWidget(Widget* widget);
+
+ private:
+  Widget* mainWidget;
+};
+
+#endif /* _GUI_ELEMENT_H */
Index: /branches/gui/src/lib/gui/gtk/gui_exec.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_exec.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_exec.cc	(revision 8140)
@@ -0,0 +1,395 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_exec.h"
+
+#include "file.h"
+#include "util/loading/resource_manager.h"
+#include "parser/ini_parser/ini_parser.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+
+#ifdef __WIN32__
+#include <direct.h>
+#endif /* __WIN32__ */
+HashTable* orxonoxFlagHash;
+
+/**
+  *  Creates the Exec-Frame
+*/
+GuiExec::GuiExec()
+{
+  Frame* execFrame;            //!< The Frame that holds the ExecutionOptions.
+
+  this->confFile = "";
+  this->confDir = "";
+
+  execFrame = new Frame("Execute-Tags:");
+  {
+    Box* execBox;                //!< The Box that holds the ExecutionOptions.
+
+    execBox = new Box('v');
+    execFrame->setGroupName(CONFIG_SECTION_MISC);
+    {
+      Button* start;               //!< The start Button of orxonox.
+      Menu* verboseMode;           //!< A Menu for setting the verbose-Mode. @todo setting up a verbose-class.
+      CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
+      Button* quit;                //!< A Button to quit the Gui without starting orxonox.
+
+      start = new Button("Start");
+#ifdef HAVE_GTK2
+      start->connectSignal("clicked", this, startOrxonox);
+#endif /* HAVE_GTK2 */
+      execBox->fill(start);
+      this->saveSettings = new CheckButton(CONFIG_NAME_SAVE_SETTINGS);
+      this->saveSettings->value = 1;
+      this->saveSettings->saveability();
+      execBox->fill(this->saveSettings);
+
+#ifdef DEBUG
+      verboseMode = new Menu(CONFIG_NAME_VERBOSE_MODE, "nothing",
+#if DEBUG_LEVEL >=1
+                             "error",
+#endif
+#if DEBUG_LEVEL >=2
+                             "warning",
+#endif
+#if DEBUG_LEVEL >=3
+                             "info",
+#endif
+#if DEBUG_LEVEL >=4
+                             "debug",
+#endif
+#if DEBUG_LEVEL >=5
+                             "heavydebug",
+#endif
+                             "lastItem");
+      verboseMode->setFlagName("verbose", "v", 2);
+      verboseMode->setDescription("Sets the Output Mode", "This Enables Outbug messages\n"
+                                  "0: nothing will be displayed, but stuff one cannot do without (eg.GUI)\n"
+#if DEBUG_LEVEL >=1
+                                  "1: error: outputs all the above and errors"
+#endif
+#if DEBUG_LEVEL >=2
+                                  "2: warning: outputs all the above plus warnings"
+#endif
+#if DEBUG_LEVEL >=3
+                                  "3: info: outputs all the above plus Information"
+#endif
+#if DEBUG_LEVEL >=4
+                                  "4: debug: displays all the above plus debug information"
+#endif
+#if DEBUG_LEVEL >=5
+                                  "5: heavydebug: displays all the above plus heavy debug information: WARNING: the game will run very slow with this."
+#endif
+                                  );
+      verboseMode->saveability();
+      execBox->fill(verboseMode);
+#endif
+
+      alwaysShow = new CheckButton(CONFIG_NAME_ALWAYS_SHOW_GUI);
+      alwaysShow->setFlagName("gui", "g", 0);
+      alwaysShow->setDescription("shows the gui when starting orxonox");
+      alwaysShow->saveability();
+      execBox->fill(alwaysShow);
+
+      quit = new Button("Quit");
+#ifdef HAVE_GTK2
+      quit->connectSignal("clicked", this, GuiExec::quitGui);
+      //  Window::mainWindow->connectSignal("remove", this, GuiExec::quitGui);
+      Window::mainWindow->connectSignal("destroy", this, GuiExec::quitGui);
+#endif /* HAVE_GTK2 */
+      execBox->fill(quit);
+    }
+    execFrame->fill(execBox);
+  }
+  setMainWidget(execFrame);
+}
+
+/**
+ *  Destructs the Execution-stuff
+*/
+GuiExec::~GuiExec()
+{
+}
+
+/* FILE HANDLING */
+
+/**
+ *  sets the Directory of the configuration files
+ * @param confDir the Directory for the configuration files
+*/
+void GuiExec::setConfDir(const char* confDir)
+{
+  this->confDir = File(confDir).name();
+
+  PRINTF(5)("Config Directory is: %s.\n", this->confDir);
+  //! @todo F** Windows-support
+#ifndef __WIN32__
+  mkdir(this->confDir.c_str(), 0755);
+#else /* __WiN32__ */
+  mkdir(this->confDir.c_str());
+#endif /* __WIN32__ */
+}
+
+/**
+ *  Sets the location of the configuration File.
+ * @param fileName the location of the configFile
+
+   The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
+*/
+void GuiExec::setConfFile(const char* fileName)
+{
+  if (this->confDir.empty())
+    this->setConfDir("~/");
+  this->confFile = this->confDir + "/" + fileName;
+  PRINTF(5)("ConfigurationFile is %s.\n", this->confFile);
+}
+
+/**
+ * @returns The name of the Configuration-File
+*/
+const char* GuiExec::getConfigFile() const
+{
+  return this->confFile.c_str();
+}
+
+/**
+ *  checks if a option should be saved.
+ * @return 1 if it should 0 if not/
+*/
+int GuiExec::shouldsave()
+{
+  return(static_cast<Option*>(this->saveSettings)->value);
+}
+
+/**
+  *  Saves the configuration-file to the Disk.\n
+  * @param widget from which Widget on should be saved.
+
+    this Function only opens and closes the file, in between GuiExec::writeFileText(Widget* widget) will execute the real writing process.
+*/
+void GuiExec::writeToFile(Widget* widget)
+{
+  IniParser iniParser;
+  this->writeFileText(widget, &iniParser, 0);
+  iniParser.writeFile(File(confFile).name());
+}
+
+/**
+ *  Actually writes into the configuration file to the disk.
+ * @param widget from which Widget on should be saved.
+ * @param parser the IniParser to write to.
+ * @param depth initially "0", and grows higher, while new Groups are bundeled.
+*/
+void GuiExec::writeFileText(Widget* widget, IniParser* parser, int depth)
+{
+//   int counter = 0;
+//   while(counter < depth &&((widget->optionType > GUI_NOTHING
+//                               &&(static_cast<Option*>(widget)->isSaveable()))
+//                              ||(widget->optionType < GUI_NOTHING
+//                                 && static_cast<Packer*>(widget)->getGroupName())))
+//     {
+//       fprintf(this->CONFIG_FILE, "  ", depth);
+//       counter++;
+//     }
+
+  // check if it is a Packer, and if it is, check if it has a name and if there is something in it.
+  if(widget->optionType < GUI_NOTHING)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName())
+        {
+          parser->addSection(static_cast<Packer*>(widget)->getGroupName());
+          this->writeFileText(static_cast<Packer*>(widget)->down, parser, depth+1);
+        }
+      else
+        {
+          this->writeFileText(static_cast<Packer*>(widget)->down, parser, depth);
+        }
+    }
+
+  if(widget->optionType > GUI_NOTHING)
+    if (static_cast<Option*>(widget)->isSaveable())
+    {
+      char* saveName = static_cast<Option*>(widget)->save();
+      parser->addVar(static_cast<Option*>(widget)->title, saveName);
+      delete[] saveName;
+    }
+
+  if(widget->next != NULL)
+    this->writeFileText(widget->next, parser, depth);
+}
+
+/**
+ * @brief Reads in Configuration Data.
+ * @param widget from which Widget on should be saved.
+*/
+void GuiExec::readFromFile(Widget* widget)
+{
+  std::string fileName = File(confFile).name();
+  IniParser iniParser(fileName);
+  if (!iniParser.isOpen())
+    return;
+
+  iniParser.firstSection();
+  Widget* groupWidget = widget;
+  std::string groupName;
+  std::string widgetName;
+  VarInfo varInfo;
+  while ((groupName = iniParser.getCurrentSection()) != "")
+  {
+    PRINTF(4)("GROUP:::%s\n", groupName.c_str());
+    if((groupWidget = locateGroup(widget, groupName.c_str(), 1))==NULL)
+      {
+        PRINTF(2)("!!There is no group called %s in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n", groupName.c_str());
+	groupWidget = widget;
+	continue;
+      }
+    else
+      PRINT(4)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName);
+
+    std::string entryName;
+    iniParser.firstVar();
+    while((entryName = iniParser.getCurrentName()) != "")
+    {
+      PRINTF(4)("ENTRY:::%s = %s\n", entryName.c_str(), iniParser.getCurrentValue().c_str());
+      varInfo.variableName = entryName.c_str();
+      varInfo.variableValue = iniParser.getCurrentValue().c_str();
+      groupWidget->walkThrough(this->readFileText, &varInfo, 0);
+      iniParser.nextVar();
+    }
+
+    iniParser.nextSection();
+  }
+  widget->walkThrough(widget->setOptions, 0);
+}
+
+/**
+ *  Maps Confugurations to the Options.
+ * @param widget which widget downwards
+ * @param varInfo Information about the Variable to read
+*/
+void GuiExec::readFileText(Widget* widget, void* varInfo)
+{
+  VarInfo* info =(VarInfo*)varInfo;
+  if (info == NULL || info->variableName == NULL)
+    return;
+
+  if(widget->title && !strcmp(widget->title, info->variableName))
+    {
+      PRINT(5)("Located Option %s.\n", widget->title);
+      if(widget->optionType > GUI_NOTHING)
+	if (info->variableValue != NULL)
+	  static_cast<Option*>(widget)->load(info->variableValue);
+    }
+}
+
+/**
+ *  Locates a Group.
+ * @param widget The Widget from where to search from
+ * @param groupName The GroupName for which to search.
+ * @param depth The Depth of the search seen from the first widget we searched from.
+ * @returns The Widget that holds the Group, or the NULL if the Group wasn't found.
+
+   @todo do this in gui-gtk.
+*/
+Widget* GuiExec::locateGroup(Widget* widget, const char* groupName, int depth)
+{
+  Widget* tmp;
+  if (widget  == NULL || groupName == NULL)
+    return NULL;
+
+  if(widget->optionType < GUI_NOTHING)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName() != NULL &&
+         !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName()))
+	return widget;
+      else
+        {
+          if((tmp = locateGroup(static_cast<Packer*>(widget)->down,
+				groupName, depth+1)) != NULL)
+            return tmp;
+        }
+    }
+
+  if(widget->next != NULL && depth != 0)
+    {
+      if((tmp = locateGroup(widget->next, groupName, depth)) != NULL)
+        return tmp;
+    }
+  return NULL;
+}
+
+/**
+ *  Starts ORXONOX.(not really implemented yet, but the function is there.\n
+ * @param widget the widget that executed the start command
+ * @param data additional data
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int GuiExec::startOrxonox(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int GuiExec::startOrxonox(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  Window::mainWindow->hide();
+
+#ifdef HAVE_GTK2
+  gtk_widget_destroy(Window::mainWindow->widget);
+#else
+  quitGui(widget, data);
+#endif /* HAVE_GTK2 */
+
+  PRINT(3)("Starting Orxonox\n");
+  Gui::startOrxonox = true;
+}
+
+/**
+ *  Starts ORXONOX.(not really implemented yet, but the function is there.\n
+ * @param widget the widget that executed the start command
+ * @param data additional data
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int GuiExec::quitGui(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int GuiExec::quitGui(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  GuiExec* exec = (GuiExec*)data;
+  if(exec->shouldsave())
+    exec->writeToFile(Window::mainWindow);
+#ifdef HAVE_GTK2
+  gtk_main_quit();
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif /* HAVE_GTK2 */
+}
Index: /branches/gui/src/lib/gui/gtk/gui_exec.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_exec.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_exec.h	(revision 8140)
@@ -0,0 +1,68 @@
+/*!
+ * file gui_exec.h
+ * File that holds the class that creates the execute-Options.
+ */
+
+#ifndef _GUI_EXEC_H
+#define _GUI_EXEC_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+#include <string>
+
+class Widget;
+class CheckButton;
+using namespace std;
+class IniParser;
+
+//! Class that creates the execute-Options.
+class GuiExec : public GuiElement
+{
+ private:
+  CheckButton* saveSettings;   //!< A CheckBox for if the Options should be saved.
+
+  std::string confDir;         //!< The directory of the orxonox-configuration-files.
+  std::string confFile;        //!< The name of the .orxonox.conf(ig)-file.
+
+  //! A struct that holds informations about variables.
+  struct VarInfo
+  {
+    const char* variableName;  //!< The Name of this variable;
+    const char* variableValue; //!< The Value this variable gets.
+  };
+
+ public:
+  GuiExec();
+  virtual ~GuiExec();
+
+  void setConfDir(const char* confDir);
+  void setConfFile(const char* confFile);
+  const char* getConfigFile() const;
+  int shouldsave();
+  void writeToFile(Widget* widget);
+  void writeFileText(Widget* widget, IniParser* parser, int depth);
+  void readFromFile(Widget* widget);
+  static void readFileText(Widget* widget, void* varInfo);
+  Widget* locateGroup(Widget* widget, const char* groupName, int depth);
+
+#ifdef HAVE_GTK2
+  static int startOrxonox(GtkWidget *widget, void* data);
+  static int quitGui(GtkWidget *widget, void* data);
+#else /* HAVE_GTK2 */
+  static int startOrxonox(void* widget, void* data);
+  static int quitGui(void* widget, void* data);
+#endif /* HAVE_GTK2 */
+};
+
+//! A simple hashtable
+struct HashTable
+{
+  std::string name;           //!< name of the entry
+  std::string value;          //!< value of the entry
+  HashTable* next;      //!< pointer to the next entry
+};
+
+
+#endif /* _GUI_EXEC_H */
Index: /branches/gui/src/lib/gui/gtk/gui_flags.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_flags.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_flags.cc	(revision 8140)
@@ -0,0 +1,99 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_flags.h"
+
+/**
+ *  Creates the Flags-Frame
+*/
+GuiFlags::GuiFlags()
+{
+  this->flagsFrame = new Frame("Orxonox-Startup-Flags:");
+  this->flagsBox = new Box('v');
+
+  this->flagsLabel = new Label();
+  this->flagsLabel->setSize(260,60);
+  this->flagsBox->fill(flagsLabel);
+  this->shortFlags = new CheckButton("shortFlags");
+  this->shortFlags->setDefaultValue(0);
+  this->flagsBox->fill(shortFlags);
+
+  this->flagsFrame->fill(flagsBox);
+  this->setMainWidget(flagsFrame);
+}
+
+/**
+ *  Destructs the Flags-stuff
+*/
+GuiFlags::~GuiFlags()
+{
+  // nothing to do here
+}
+
+/**
+ *  Sets the Flags from widget downwards.
+ * @param widget the Widget from which on to scan for deeper Options and their settings.
+*/
+void GuiFlags::setTextFromFlags(Widget* widget)
+{
+  FlagInfo flagInfo;
+  flagInfo.shortFlags = this->shortFlags;
+  flagInfo.flagsLabel = this->flagsLabel;
+
+  this->flagsLabel->ereaseText();
+  this->flagsLabel->appendText(executable);
+  widget->walkThrough(GuiFlags::flagsText, &flagInfo, 0);
+  //  flagsLabel->setTitle(flagText);
+}
+
+/** 
+  *  this actually sets the flagtext, and appends it to flagText
+  * @param widget like GuiFlags::setTextFromFlags(widget)
+  * @param flagInfo Information aboout the Flag that should be updated.
+*/
+void GuiFlags::flagsText(Widget* widget, void* flagInfo)
+{
+  FlagInfo* info =(FlagInfo*)flagInfo;
+  if(widget->optionType > GUI_NOTHING)
+    if (static_cast<Option*>(widget)->value != static_cast<Option*>(widget)->defaultValue )
+      {
+	if(info->shortFlags->isActive() && static_cast<Option*>(widget)->flagNameShort)
+	  {
+	    info->flagsLabel->appendText(" -");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagNameShort);
+	  }
+	else if(!info->shortFlags->isActive() && static_cast<Option*>(widget)->flagName)
+	  {
+	    info->flagsLabel->appendText(" --");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagName);
+	  }
+
+	if(static_cast<Option*>(widget)->optionType > GUI_BOOL)
+	  {
+	    info->flagsLabel->appendText("=");
+	    info->flagsLabel->appendInt(static_cast<Option*>(widget)->value);
+	  }
+      }
+}
Index: /branches/gui/src/lib/gui/gtk/gui_flags.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_flags.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_flags.h	(revision 8140)
@@ -0,0 +1,36 @@
+/*!
+  \file gui_flags.h
+  \brief File that holds the class that creates the flags-Text.
+*/
+
+#ifndef _GUI_FLAGS_H
+#define _GUI_FLAGS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+//! Class that creates the flags-Text.
+class GuiFlags : public GuiElement
+{
+ private:
+  Frame* flagsFrame;          //!< The Frame that holds the flagsDisplay.
+  Box* flagsBox;              //!< The Box that holds the flagsDisplay.
+  CheckButton* shortFlags;    //!< CheckButton to change the display of short and long flags @todo show long if long not availible...
+  Label* flagsLabel;          //!< The Label of the Flags
+
+ public:
+  GuiFlags();
+  virtual ~GuiFlags();
+
+  void setTextFromFlags(Widget* widget);
+  static void flagsText(Widget* widget, void* flagInfo);
+
+  //! Struct that handles flag information.
+  struct FlagInfo
+  {
+    CheckButton* shortFlags;     //!< Button for the flag.
+    Label* flagsLabel;           //!< Label for the flag.
+  };
+};
+#endif /* _GUI_FLAGS_H */
Index: /branches/gui/src/lib/gui/gtk/gui_gtk.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_gtk.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_gtk.cc	(revision 8140)
@@ -0,0 +1,1986 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_gtk.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
+using namespace std;
+
+#include "gui_flags.h"
+#include "gui_exec.h"
+
+extern GuiFlags* flags;
+
+char* executable;
+
+/**
+ *  Initializes the Guis GTK-stuff.
+ * @param argc the argument count.
+ * @param argv The Argument strings.
+*/
+bool initGUI(int argc, char *argv[])
+{
+  if (argv)
+    {
+      executable = new char[strlen(argv[0])+1];
+      strcpy(executable, argv[0]);
+    }
+  else
+    executable = NULL;
+
+#ifdef HAVE_GTK2
+  gtk_init(&argc, &argv);
+#include "rc"
+  gtk_rc_parse_string( rc_string );
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  enters the GUI's main-loop
+*/
+bool mainloopGUI()
+{
+#ifdef HAVE_GTK2
+  gtk_main();
+#else /* HAVE_GTK2 */
+  char boolAns = 'y';
+  char ans[1000];
+  PRINT(0)("================================\n");
+  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
+  PRINT(0)("================================ - v." PACKAGE_VERSION "\n");
+
+  while(true)
+    {
+      PRINT(0)("\n Listing all the Orxonox Options: \n");
+      PRINT(0)("  #############################\n");
+      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
+
+      PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
+      scanf("%s", ans);
+      if (ans[0] =='n' || ans[0]=='N')
+        break;
+
+      PRINT(0)("\n Listing all groups\n");
+      PRINT(0)("  #################\n");
+      int groupCount = 0;
+      Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
+
+      PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
+      Packer* group;
+      while(true)
+        {
+          scanf("%s", ans);
+          int ansIp = atoi(ans);
+          if (ansIp <= groupCount)
+            {
+              group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
+              break;
+            }
+          else
+            PRINT(0)("\nChoose a smaller Number please: [1-%d] ", groupCount);
+        }
+      PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
+      int optionCount = 0;
+      group->walkThrough(Widget::listOptions, &optionCount, 0);
+      PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
+      Option* option;
+      while(true)
+        {
+          scanf("%s", ans);
+          int ansIp = atoi(ans);
+          if (ansIp <= groupCount)
+            {
+              option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
+              break;
+            }
+          else
+            PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
+        }
+      PRINT(0)("\n\n:: %s ::\n", option->title);
+      option->changeOption();
+
+      // here follows the rest.... this will be nasty.
+      //! @todo finish it.
+      //! @todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
+    }
+#endif /* HAVE_GTK2 */
+
+}
+
+
+//////////////////////////////
+/// DEFINING WIDGET-CLASES ///
+//////////////////////////////
+
+////////////
+/* WIDGET */
+////////////
+/**
+ *  constructs a Widget
+*/
+Widget::Widget()
+{
+  next = NULL;
+  this->title = NULL;
+}
+
+/**
+ *  deletes any given Widget
+   This is still pretty crappy.
+*/
+Widget::~Widget()
+{
+  if (this->title)
+    {
+      delete []this->title;
+    }
+
+  PRINTF(5)("deleting the Widget part.\n");
+
+  // deleting next item if existent
+  if (this->next)
+    delete this->next;
+  this->next = NULL;
+
+  //!  @todo not hiding widget, deleting.
+  //  this->hide();
+  // gtk_destroy_widget(this->widget);
+}
+
+/**
+ *  sets a new Title to a Widget
+ * @param title The new Title to set to the Widget
+*/
+void Widget::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+}
+
+/**
+ *  makes the widget visible.
+*/
+void Widget::show()
+{
+#ifdef HAVE_GTK2
+  gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  hides the widget.
+*/
+void Widget::hide()
+{
+#ifdef HAVE_GTK2
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Sets the resolution of a specific widget to the given size.
+ * @param width the width of the widget to set.
+ * @param height the height of the widget to set.
+*/
+void Widget::setSize(int width, int height)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_set_usize(this->widget, width, height);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  searches through widgets for a Name.
+*/
+Widget* Widget::findWidgetByName(char* name, unsigned int depth)
+{
+
+  if (this->title && !strcmp(this->title, name))
+    return this;
+
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findWidgetByName(name, depth+1);
+      if (tmp)
+        return tmp;
+    }
+
+  if (depth>0 && this->next)
+    return this->next->findWidgetByName(name, depth);
+
+  return NULL;
+}
+
+/**
+ *  Moves through all the Widgets downwards from this and executes the function on them.
+ * @param function must be of type void and takes a Widget* as an Input.
+ * @param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*), unsigned int depth)
+{
+  function(this);
+  if (this->optionType < GUI_NOTHING)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, depth+1);
+    }
+
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, depth);
+}
+
+/**
+ *  Moves through all the Widgets downwards from this and executes the function on them.
+ * @param function must be of type void and takes a Widget* as an Input.
+ * @param data Additional Data you want to pass to the function.
+ * @param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth)
+{
+  function(this, data);
+  if (this->optionType < GUI_NOTHING)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, data, depth+1);
+    }
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, data, depth);
+}
+
+/**
+  *  This is for listing the options of "widget"
+  * @param widget specifies the widget that should be listed
+*/
+void Widget::listOptionsAndGroups(Widget* widget)
+{
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Widget::listOptions(widget);
+    }
+}
+
+/**
+  *  This is for listing the options of "widget"
+  * @param widget specifies the widget that should be listed
+*/
+void Widget::listOptions(Widget* widget)
+{
+  if(widget->optionType > GUI_NOTHING)
+    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
+}
+
+/**
+  *  This is for listing the options of "widget"
+  * @param widget specifies the widget that should be listed
+  * @param data A Counter, that always knows how many Options have been found yet.
+*/
+void Widget::listOptions(Widget* widget, void* data)
+{
+
+  if (widget->optionType > GUI_NOTHING)
+    {
+      int* count =(int*)data;
+      *count = *count +1;
+      PRINT(0)(" %d:%s is %s\n", *count,
+               static_cast<Option*>(widget)->title,
+               static_cast<Option*>(widget)->save());
+    }
+}
+
+/**
+  *  This is for listing the options of "widget"
+  * @param widget specifies the widget that should be listed
+  * @param data A Counter, that always knows how many Options have been found yet.
+*/
+void Widget::printHelp(Widget* widget)
+{
+  int helpLen=0;
+
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Option* option = (Option*)widget;
+      if (option->flagName || option->flagNameShort)
+        {
+          PRINT(0)("  ");
+          if (option->flagNameShort)
+            {
+              PRINT(0)("-%s", option->flagNameShort);
+              helpLen += strlen(option->flagNameShort)+1;
+            }
+          if (option->flagName)
+            {
+              if (helpLen > 0)
+                {
+                  PRINT(0)("|");
+                  helpLen++;
+                }
+              PRINT(0)("--%s:", option->flagName);
+              helpLen += strlen(option->flagName)+2;
+            }
+          while ((helpLen ++) < 29)
+            PRINT(0)(" ");
+          if (option->shortDescription)
+            PRINT(0)("%s\n", option->shortDescription);
+          else
+            PRINT(0)("\n");
+        }
+    }
+}
+
+/**
+  *  Finds an Option by a given number(the n'th option found away from this Widget)
+  * @param number The Count of options to wait(by reference)
+  * @param depth The depth of the sarch. if 0 it will not search next pointer
+
+    @todo should return Option* would be much sexier.
+*/
+Widget* Widget::findOptionByNumber(int* number, unsigned int depth)
+{
+  if (optionType > GUI_NOTHING)
+    {
+      --*number;
+      if (*number <= 0)
+        {
+          return this;
+        }
+    }
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findOptionByNumber(number, depth+1);
+      if (tmp)
+        return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findOptionByNumber(number, depth);
+
+  return NULL;
+}
+
+/**
+  *  This is for listing the groups of "widget"
+  * @param widget specifies the widget that should be listed
+*/
+void Widget::listGroups(Widget* widget)
+{
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+}
+
+/**
+  *  This is for listing the Groups of "widget". It also displays the n'th number found.
+  * @param widget specifies the widget that should be listed
+  * @param data the Counter, that will show the number(this function will raise it by one if a Group is fount.
+*/
+void Widget::listGroups(Widget* widget, void* data)
+{
+  int* count = (int*)data;
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("%d: [%s]\n", ++*count, static_cast<Packer*>(widget)->groupName);
+}
+
+/**
+  *  Finds a Group by a given number(the n'th Group found away from this Widget)
+  * @param number The Count of options to wait(by reference)
+  * @param depth The depth of the sarch. if 0 it will not search next pointer
+*/
+Widget* Widget::findGroupByNumber(int* number, unsigned int depth)
+{
+  if (optionType < GUI_NOTHING && static_cast<Packer*>(this)->groupName)
+    {
+      --*number;
+      if (*number <= 0)
+        {
+          return this;
+        }
+    }
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findGroupByNumber(number, depth+1);
+      if (tmp)
+        return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findGroupByNumber(number, depth);
+
+  return NULL;
+}
+
+/**
+  *  This is for setting the option of "widget"
+  * @param widget specifies the widget that should be set.
+*/
+void Widget::setOptions(Widget* widget)
+{
+  if (widget->optionType > GUI_NOTHING)
+    static_cast<Option*>(widget)->redraw();
+}
+
+/**
+ *  redraws all the Widgets down from widget
+ * @param widget The topmost Widget
+ * @param data ...
+*/
+void Widget::redrawOptions(Widget* widget)
+{
+  if (widget->optionType > GUI_NOTHING)
+    static_cast<Option*>(widget)->redraw();
+}
+
+/**
+ *  Walks through all the Flags given at startuptime.
+*/
+void Widget::flagCheck(Widget* widget, void* flagName)
+{
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Option* option =(Option*)widget;
+      char* name =(char*)flagName;
+      char* value = NULL;
+      bool found = false;
+      // check if long flag matches
+      if ((option->flagName && strlen(name) > 2 &&
+           !strncmp(name+2, option->flagName, strlen(option->flagName)) &&
+           (name[strlen(option->flagName)+2] == '\0' || name[strlen(option->flagName)+2] == '=') ))
+        {
+          found = true;
+          if (name[strlen(option->flagName)+2] == '=')
+            {
+              value = name+strlen(option->flagName)+3;
+            }
+        }
+      // check if short flag matches
+      else if (option->flagNameShort && strlen(name)>1 &&
+               !strncmp(name+1, option->flagNameShort, strlen(option->flagNameShort)) &&
+               (name[strlen(option->flagNameShort)+1] == '\0' || name[strlen(option->flagNameShort)+1] == '='))
+        {
+          found = true;
+          if (name[strlen(option->flagNameShort)+1] == '=')
+            {
+              value = name+strlen(option->flagNameShort)+2;
+            }
+        }
+
+      if (found)
+        {
+          PRINT(4)("found matching Flag %s\n", name);
+          if (value)
+            {
+              PRINT(4)("with Value %s\n", value);
+              option->value = atoi(value);
+            }
+          else
+            {
+              option->value = !option->defaultValue;
+            }
+          option->redraw();
+        }
+
+    }
+}
+
+#ifdef HAVE_GTK2
+/**
+  *  Connect any signal to any given Sub-widget
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), NULL);
+}
+
+/**
+ *  Connect a signal with additionally passing the whole Object
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)( GtkWidget*, Widget *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), this);
+}
+
+/**
+ *  Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+/**
+ *  Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+/**
+ *  Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+void Widget::disconnectSignal(gulong signalID)
+{
+  g_signal_handler_disconnect(G_OBJECT(this->widget), signalID);
+}
+
+/**
+ *  Signal that does absolutely nothing
+ * @param widget The widget that initiated the Signal
+ * @param event The event-type.
+ * @param nothing nothin.
+*/
+gint Widget::doNothingSignal(GtkWidget *widget, GdkEvent* event, void* nothing)
+{
+}
+#endif /* HAVE_GTK2 */
+
+/////////////
+/* PACKERS */
+/////////////
+/**
+ *  Constructs a Packer
+*/
+Packer::Packer()
+{
+  this->down = NULL;
+  this->groupName = NULL;
+}
+
+/**
+ *  Destroys a Packer.
+*/
+Packer::~Packer()
+{
+  PRINTF(5)("deleting the Packer part.\n");
+  if (this->groupName)
+    delete []this->groupName;
+
+  //deleting recursively.
+  if (this->down)
+    delete this->down;
+}
+
+/**
+ *  Sets the group name under which all the lower widgets of this will be saved.
+ * @param name The name of the group.
+*/
+void Packer::setGroupName(const char* name)
+{
+  if (this->groupName)
+    delete []this->groupName;
+  this->groupName = new char[strlen(name)+1];
+  strcpy(this->groupName, name);
+}
+
+////////////////
+/* CONTAINERS */
+////////////////
+/**
+ *  Initializes a Container.
+
+   sets the Container-Specific defaults.
+*/
+Container::Container()
+{
+  this->optionType = GUI_CONTAINER;
+}
+
+/**
+ *  Destroys a Container.
+*/
+Container::~Container()
+{
+  PRINTF(5)("deleting the Container part.\n");
+}
+
+/**
+ * Fills a Container with lowerWidget.
+ * @param lowerWidget the Widget that should be filled into the Container.
+
+   It does this by filling up the down pointer only if down points to NULL.
+*/
+void Container::fill(Widget* lowerWidget)
+{
+  if (this->down == NULL)
+    {
+#ifdef HAVE_GTK2
+      gtk_container_add(GTK_CONTAINER(this->widget), lowerWidget->widget);
+#endif /* HAVE_GTK2 */
+
+      this->down = lowerWidget;
+    }
+  else
+    PRINTF(2)("You tried to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
+}
+
+/**
+ * @param borderwidth sets the Width of the border
+*/
+void Container::setBorderWidth(int borderwidth)
+{
+  this->borderwidth = borderwidth;
+
+#ifdef HAVE_GTK2
+  gtk_container_set_border_width(GTK_CONTAINER(widget), borderwidth);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* WINDOW */
+////////////
+
+/**
+ *  The main Window of Th Gui
+*/
+Window* Window::mainWindow = NULL;
+
+/**
+ *  Creating a Window with a name
+ * @param windowName the name the window should get.
+*/
+Window::Window(const char* windowName)
+{
+  if (!mainWindow)
+    {
+      mainWindow = this;
+      this->isOpen = true;
+    }
+  isOpen = false;
+
+#ifdef HAVE_GTK2
+  widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
+#if !defined(__WIN32__)
+  //  gtk_window_set_decorated(GTK_WINDOW(widget), FALSE);
+#endif
+  gtk_container_set_border_width(GTK_CONTAINER(widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (windowName)
+    this->setTitle(windowName);
+}
+
+/**
+ *  Destructs a Window.
+*/
+Window::~Window()
+{
+  PRINTF(5)("deleting the Window: %s\n", this->title);
+}
+
+/**
+ *  Adds a new Window Windows to the List of Windows.
+ * @param windowToAdd The Windows that should be added to the List
+   @todo this instead of windowToAdd(possibly)
+*/
+void Window::addWindow(Window* windowToAdd)
+{
+  if (!mainWindow)
+    {
+      mainWindow = windowToAdd;
+      windowToAdd->isOpen = true;
+    }
+  else
+    {
+      Widget* tmpWindow = mainWindow;
+      while(tmpWindow->next)
+        tmpWindow = tmpWindow->next;
+      tmpWindow->next = windowToAdd;
+      windowToAdd->isOpen = false;
+    }
+  return;
+}
+
+/**
+ *  Shows all Widgets that are included within this->widget.
+*/
+void Window::showall()
+{
+#ifdef HAVE_GTK2
+  if (!this->isOpen)
+    gtk_widget_show_all(this->widget);
+  else
+    gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Set The Window-title to title
+ * @param title title the Window should get.
+*/
+void Window::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_window_set_title(GTK_WINDOW(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  opens up a Window and fixes the Focus to it
+*/
+void Window::open()
+{
+  if (this != mainWindow)
+    {
+      isOpen = true;
+#ifdef HAVE_GTK2
+      gtk_widget_show_all(this->widget);
+      gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+ *  closes up a Window and removes the Focus from it
+*/
+void Window::close()
+{
+  if (this != mainWindow)
+    {
+      this->isOpen = false;
+#ifdef HAVE_GTK2
+      gtk_grab_remove(this->widget);
+      gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+ *  opens up a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+ * @param widget the widget that did it.
+ * @param event the event that did it.
+ * @param window the Window that should be opened
+*/
+#ifdef HAVE_GTK2
+gint Window::windowOpen(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->open();
+}
+#else /* HAVE_GTK2 */
+int Window::windowOpen(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+/**
+ *  closes a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+ * @param widget the widget that did it!
+ * @param event the event that did it!
+ * @param window the Window that should be closed
+*/
+#ifdef HAVE_GTK2
+gint Window::windowClose(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->close();
+}
+#else /* HAVE_GTK2 */
+int Window::windowClose(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+///////////
+/* FRAME */
+///////////
+/**
+ *  Creates a new Frame with name title
+*/
+Frame::Frame(const char* frameName)
+{
+#ifdef HAVE_GTK2
+  this->widget = gtk_frame_new("");
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+  if (frameName)
+    this->setTitle(frameName);
+}
+
+/**
+ *  destrcucts a Frame
+*/
+Frame::~Frame()
+{
+  PRINTF(5)("deleting the Frame: %s\n", this->title);
+}
+
+/**
+ *  Sets the Frames name to title
+ * @param title The title the Frame should get.
+*/
+void Frame::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_frame_set_label(GTK_FRAME(widget), this->title);
+#endif /* HAVE_GTK2 */
+}
+
+//////////////
+/* EVENTBOX */
+//////////////
+/**
+ *  Creates a new EventBox with name title
+ * @param eventBoxName title the Eventbox should get(only data-structure-internal)
+*/
+EventBox::EventBox(const char* eventBoxName)
+{
+#ifdef HAVE_GTK2
+  this->widget = gtk_event_box_new();
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (eventBoxName)
+    this->setTitle(eventBoxName);
+}
+
+/**
+ *  destructs an EventBox.
+*/
+EventBox::~EventBox()
+{
+  PRINTF(5)("deleting the EventBox: %s\n", this->title);
+}
+
+/////////
+/* BOX */
+/////////
+/**
+ *  Creates a new Box of type boxtype
+ * @param boxtype if 'v' the Box will be vertically, if 'h' the Box will be horizontally
+*/
+Box::Box(char boxtype)
+{
+  this->optionType = GUI_BOX;
+
+#ifdef HAVE_GTK2
+  if (boxtype == 'v')
+    this->widget = gtk_vbox_new(FALSE, 0);
+  else
+    this->widget = gtk_hbox_new(FALSE, 0);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  destructs a Box.
+*/
+Box::~Box()
+{
+  PRINTF(5)("deleting the Box: %s\n", this->title);
+}
+
+/**
+  *  Fills a box with a given Widget.
+  * @param lowerWidget the next Widget that should be appendet to this Box
+
+    It does this by apending the first one to its down-pointer and all its following ones to the preceding next-pointer. The last one will receive a NULL pointer as Next
+*/
+void Box::fill(Widget* lowerWidget)
+{
+#ifdef HAVE_GTK2
+  gtk_box_pack_start(GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
+#endif /* HAVE_GTK2 */
+  if (this->down == NULL)
+    this->down = lowerWidget;
+  else
+    {
+      Widget* tmp;
+      tmp = this->down;
+      while(tmp->next != NULL)
+        tmp = tmp->next;
+      tmp->next = lowerWidget;
+    }
+}
+
+////////////
+/* OPTION */
+////////////
+/**
+ *  Initializes a new Option.
+   sets all Option-Specific-Values to their defaults.
+*/
+Option::Option()
+{
+  this->value = 0;
+  this->flagName = NULL;
+  this->flagNameShort = NULL;
+
+  this->shortDescription = NULL;
+  this->longDescription = NULL;
+
+  this->saveable = false;
+  this->defaultValue = 0;
+}
+
+/**
+ *  Destroys an Option.
+*/
+Option::~Option()
+{
+  PRINTF(5)("deleting the Option Part.\n");
+  if (this->flagName)
+    delete []this->flagName;
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  if (this->longDescription)
+    delete []this->longDescription;
+}
+
+/**
+ * @param defaultValue new defaultValue for this option
+*/
+void Option::setDefaultValue(int defaultValue)
+{
+  this->value = this->defaultValue = defaultValue;
+}
+
+/**
+ *  This sets The FlagName of an Option and defines its default Values
+   !! Options will be saved if flagname is different from NULL !!
+ * @param flagname the Name that will be displayed in the output
+ * @param defaultvalue the default Value for this Option(see definition of defaultvalue
+*/
+void Option::setFlagName(const char* flagname, int defaultvalue)
+{
+  if (this->flagName)
+    delete this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  this->setDefaultValue(defaultvalue);
+
+  if (this->flagNameShort)
+    {
+      delete this->flagNameShort;
+      this->flagNameShort = NULL;
+    }
+
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+/**
+  *  see Option::setFlagName(char* flagname, int defaultvalue)
+  * @param flagname the Name that will be displayed in the output
+  * @param defaultvalue the default Value for this Option(see definition of defaultvalue
+  * @param flagnameshort a short flagname to be displayed in the output
+*/
+void Option::setFlagName(const char* flagname, const char* flagnameshort,  int defaultvalue)
+{
+  if (this->flagName)
+    delete []this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  this->flagNameShort = new char [strlen(flagnameshort)+1];
+  strcpy(this->flagNameShort, flagnameshort);
+  this->setDefaultValue(defaultvalue);
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+void Option::setDescription(const char* shortDescription, const char* longDescription)
+{
+  // setting up the short description
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  this->shortDescription = new char [strlen(shortDescription)+1];
+  strcpy(this->shortDescription, shortDescription);
+
+  //setting up the long description
+  if (this->longDescription)
+    delete []this->longDescription;
+  if (longDescription)
+    {
+      this->longDescription = new char [strlen(longDescription)+1];
+      strcpy(this->longDescription, longDescription);
+    }
+  else
+    this->longDescription = NULL;
+}
+
+/**
+ *  Sets the saveable-state of the option.
+ * @param isSaveable the saveable-state to set.
+*/
+void Option::saveability(bool isSaveable)
+{
+  this->saveable = isSaveable;
+}
+
+/**
+ *  saves an Option
+ * @returns the String that should be saved. (this string __should__ be deleted)
+
+   this is a default Option save
+*/
+char* Option::save()
+{
+  char* value = new char [30];
+  sprintf (value, "%d", this->value);
+  return value;
+}
+
+/**
+ *  loads an Option from of its loadString
+ * @param loadString the string from which to load the data from
+*/
+void Option::load(const char* loadString)
+{
+  this->value = atoi(loadString);
+  PRINT(5)("Loading %s: %s %d\n", this->title, loadString, value);
+  this->redraw();
+}
+
+/**
+ * @returns The saveable-state.
+*/
+bool Option::isSaveable()
+{
+  return this->saveable;
+}
+
+#ifdef HAVE_GTK2
+/**
+  *  Signal OptionChange writes the Value from the Option to its Object-Database.
+  * @param widget The widget(Option) that has a changed Value
+  * @param option the Option-Object that should receive the change.
+*/
+gint Option::OptionChange(GtkWidget *widget, Widget* option)
+{
+  static_cast<Option*>(option)->changeOption();
+#ifdef BUILD_ORXONOX
+  flags->setTextFromFlags(Window::mainWindow);
+#endif
+}
+#endif /* HAVE_GTK2 */
+
+////////////
+/* BUTTON */
+////////////
+/**
+ *  Creates a new Button with a buttonname
+ * @param buttonName sets the Name of the Button
+*/
+Button::Button(const char* buttonName)
+{
+  this->optionType = GUI_NOTHING;
+
+#ifdef HAVE_GTK2
+  widget = gtk_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+}
+
+/**
+ *  destructs a Button.
+*/
+Button::~Button()
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+ *  Sets a new name to the Button
+ * @param title The name the Button should get
+*/
+void Button::setTitle(const char *title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  redraws the Button
+   @todo not implemented yet
+*/
+void Button::redraw()
+{
+}
+
+/**
+ *  Button can not be changed, optionChange is empty)
+
+   @todo Actions for non-GTK-mode
+*/
+void Button::changeOption()
+{
+  // This will possibly be used for ACTIONS !
+}
+
+/////////////////
+/* CHECKBUTTON */
+/////////////////
+/**
+ *  Creates a new CheckButton with an ame
+ * @param buttonName The name the CheckButton should display.
+*/
+CheckButton::CheckButton(const char* buttonName)
+{
+  this->optionType = GUI_BOOL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_check_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+
+#ifdef HAVE_GTK2
+  this->connectSignal("clicked", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  destructs a CheckButton.
+*/
+CheckButton::~CheckButton()
+{
+  if (this->title)
+    PRINTF(5)("deleting the CheckButton: %s\n", this->title);
+  else
+    PRINTF(5)("deleting the CheckButton.\n");
+}
+
+/**
+ *  Sets a new Title to a CheckButton
+ * @param title The new Name the CheckButton should display.
+*/
+void CheckButton::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ * @returns the Active state of the checkButton
+*/
+bool CheckButton::isActive()
+{
+#ifdef HAVE_GTK2
+  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Changed the Option, call this Function
+*/
+void CheckButton::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[200];
+  PRINT(0)("\nPlease give me a new value for %s [0,1](default:%d): ",this->title, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->value = atoi(tmpChar))=!0)
+    this->value = 1;
+
+  PRINT(0)("%s set to: %d\n", this->title, this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Redraws the CheckButton(if option has changed).
+   Example: if new settings are loaded the Button must be redrawn for the GUI to display that Change
+*/
+void CheckButton::redraw()
+{
+#ifdef HAVE_GTK2
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(this->widget), value);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* SLIDER */
+////////////
+/**
+ *  Creates a new Slider
+ * @param slidername The data-structure-name of the slider.
+ * @param start The minimal Value of the slider.
+ * @param end The maximal Value of the slider.
+*/
+Slider::Slider(const char* slidername, float start, float end)
+{
+  this->optionType = GUI_FLOAT;
+
+  this->start = start;
+  this->end = end;
+#ifdef HAVE_GTK2
+ widget = gtk_hscale_new_with_range(this->start, this->end, 5);
+#endif /* HAVE_GTK2 */
+
+  this->setValue(start);
+  this->setTitle(slidername);
+#ifdef HAVE_GTK2
+  this->connectSignal("value_changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  destructs a Slider.
+*/
+Slider::~Slider()
+{
+  PRINTF(5)("deleting the Slider: %s\n", this->title);
+}
+
+/**
+ *  sets the exactness of the widget
+ * @param exactness count of digits after the dot
+*/
+void Slider::setExactness(int exactness)
+{
+#ifdef HAVE_GTK2
+ gtk_scale_set_digits(GTK_SCALE(this->widget), exactness);
+ gtk_range_set_increments(GTK_RANGE(this->widget), pow(.1, exactness), pow(.1, exactness-1));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Setting a new value to the Slider.
+   Maybe you also require a Slider::redraw() for this to display
+*/
+void Slider::setValue(float value)
+{
+  this->fValue = value;
+}
+
+/**
+ *  Redraws the widget
+   Example: see void CheckButton::redraw()
+*/
+void Slider::redraw()
+{
+#ifdef HAVE_GTK2
+  gtk_range_set_value(GTK_RANGE(this->widget), this->fValue);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Changed the Option, call this Function
+*/
+void Slider::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->fValue = gtk_range_get_value(GTK_RANGE(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s [%d-%d] (default:%d): ", this->title, this->start, this->end, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->fValue = atof(tmpChar))> this->end)
+    this->fValue = this->end;
+  if (this->fValue <= this->start)
+    this->fValue = this->start;
+
+  PRINT(0)("%s set to: %d\n",this->title, this->fValue);
+#endif /* HAVE_GTK2 */
+}
+
+char* Slider::save()
+{
+  char* value = new char [30];
+  sprintf (value, "%f", this->fValue);
+  return value;
+}
+void Slider::load(const char* loadString)
+{
+  this->fValue = atof(loadString);
+  PRINT(5)("Loading %s: %s %f\n", this->title, loadString, fValue);
+  this->redraw();
+}
+
+
+//////////
+/* MENU */
+//////////
+/**
+ *  constructs a new Menu, without adding any items to it.
+ * @param menuName the Name the Menu gets.
+*/
+Menu::Menu(const char* menuName)
+{
+  this->init();
+  this->setTitle(menuName);
+}
+
+/**
+  *  Creates a Menu-Item-list out of multiple input.
+    !! Consider, that the last input argument has to be "lastItem" for this to work!!
+  * @param menuname The Database-Name of this Menu
+  * @param ... items to be added to this Menu. !! Consider, that the last input argument has to be "lastItem" for this to work!!
+*/
+Menu::Menu(char* menuname, ...)
+{
+  this->init();
+  this->setTitle(menuname);
+  va_list itemlist;                     //!< The list to readin multiple Options.
+
+  char *itemName;
+
+  va_start(itemlist, menuname);
+  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
+    {
+      this->addItem(itemName);
+    }
+  va_end(itemlist);
+}
+
+/**
+ *  destructs a Menu.
+*/
+Menu::~Menu()
+{
+  PRINTF(5)("deleting the Menu: %s\n", this->title);
+  this->currItem = this->firstItem;
+  while(this->currItem)
+    {
+      delete []this->currItem->name;
+      //! @todo destroy menu
+      /*
+        #ifdef HAVE_GTK2
+        gtk_widget_destroy(this->currItem->item);
+        #endif /* HAVE_GTK2 */
+      MenuItem* tmpItem = this->currItem;
+      this->currItem = this->currItem->next;
+      delete tmpItem;
+    }
+}
+
+/**
+ *  Initializes a new Menu with no items
+*/
+void Menu::init()
+{
+  this->optionType = GUI_INT;
+  this->firstItem = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_option_menu_new();
+  this->menu = gtk_menu_new();
+  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
+  this->connectSignal("changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  saves the Label of the Menu
+ * @returns the name of the selected Menu-Item
+*/
+char* Menu::save()
+{
+  MenuItem* tmpItem = this->firstItem;
+  for (int i = 0; i < this->value; i++)
+    if (tmpItem)
+      tmpItem = tmpItem->next;
+    else
+      break;
+  if (tmpItem)
+    {
+      char* tmpName = new char[strlen(tmpItem->name)+1];
+      strcpy(tmpName, tmpItem->name);
+      return tmpName;
+    }
+  else
+    return NULL;
+}
+
+/**
+ *  loads a Menu from of its loadString
+ * @param loadString the string from which to load the data from
+*/
+void Menu::load(const char* loadString)
+{
+  MenuItem* tmpItem = firstItem;
+  bool foundItem = false;
+  while (tmpItem)
+    {
+      if (!strcmp(loadString, tmpItem->name))
+        {foundItem = true; break;}
+      tmpItem = tmpItem->next;
+    }
+  if (foundItem)
+    this->value = tmpItem->itemNumber;
+  else
+    {
+      this->value = 0;
+      PRINTF(2)("%s has not been found in the Itemlist of %s\n", loadString, this->title);
+    }
+  PRINTF(5)( "Loading %s: setting to %d\n", this->title, this->value);
+  this->redraw();
+}
+
+/**
+ *  appends a new Item to the Menu-List.
+ * @param itemName the itemName to be appendet.
+*/
+void Menu::addItem(char* itemName)
+{
+  if (!this->firstItem)
+    {
+      this->firstItem = this->currItem = new MenuItem;
+      this->currItem->itemNumber = 0;
+    }
+  else
+    {
+      int tmpI = this->currItem->itemNumber;
+      this->currItem = this->currItem->next = new MenuItem;
+      this->currItem->itemNumber = tmpI+1;
+    }
+
+  this->currItem->name = new char[strlen(itemName)+1];
+  strcpy(this->currItem->name, itemName);
+
+#ifdef HAVE_GTK2
+  this->currItem->item = gtk_menu_item_new_with_label(itemName);
+  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
+#endif /* HAVE_GTK2 */
+  this->currItem->next = NULL;
+}
+
+/**
+ *  Redraws the widget
+   Example: see void CheckButton::redraw()
+*/
+void Menu::redraw()
+{
+#ifdef HAVE_GTK2
+  gtk_option_menu_set_history(GTK_OPTION_MENU(this->widget), this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Changed the Option, call this Function
+*/
+void Menu::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_option_menu_get_history(GTK_OPTION_MENU(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s (default: %d): ", this->title, this->defaultValue);
+  scanf("%s",tmpChar);
+  this->value = atoi(tmpChar);
+
+#endif /* HAVE_GTK2 */
+  PRINT(4)("%s set to: %d\n", this->title, this->value);
+}
+
+/* OPTION LABEL */
+
+/**
+ *  Creates a new OptionLabel with a LabelName and a Value.
+ * @param label The name of the OptionLabel.
+ * @param value The Value of the OptionLabel(what will be displayed).
+*/
+OptionLabel::OptionLabel(const char* label, const char* value)
+{
+  this->optionType = GUI_CHAR_ARRAY;
+  cValue = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+#endif /* HAVE_GTK2 */
+
+  this->setTitle(label);
+  this->setValue(value);
+}
+
+/**
+ *  destructs an OptionLabel.
+*/
+OptionLabel::~OptionLabel()
+{
+  PRINTF(5)("deleting the OptionLabel: %s\n", this->title);
+  if (this->cValue)
+    delete []this->cValue;
+}
+
+/**
+ *  Updates the value of an OptionLabel
+ * @param newValue The new Name that should be displayed.
+*/
+void OptionLabel::setValue(const char* newValue)
+{
+  if (this->cValue)
+    delete []this->cValue;
+  this->cValue = new char [strlen(newValue)+1];
+  strcpy(this->cValue, newValue);
+
+  this->redraw();
+}
+
+/**
+ *  Redraws an OptionLabel(not implemented yet, but it works).
+*/
+void OptionLabel::redraw()
+{
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(widget), cValue);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Changed the Option, call this Function
+*/
+void OptionLabel::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->cValue = (char*)gtk_label_get_text(GTK_LABEL(this->widget));
+#else /* HAVE_GTK2 */
+  PRINT(0)("\nPlease give me a new input for %s: ", this->title);
+  char tmpChar[100];
+  scanf("%s",tmpChar);
+  this->setValue(tmpChar);
+#endif /* HAVE_GTK2 */
+  PRINT(4)("%s set to: %s\n", this->title,  this->cValue);
+}
+
+
+/**
+ *  creates the Optionlabel save-string
+ * @returns the String to save.
+*/
+char* OptionLabel::save()
+{
+  char* retVal = new char[strlen(cValue)+1];
+  strcpy(retVal, cValue);
+  return retVal;
+}
+
+/**
+ *  loads an Option from of its loadString
+ * @param loadString the string from which to load the data from
+*/
+void OptionLabel::load(const char* loadString)
+{
+  PRINTF(5)("Loading %s: setting to %s\n", this->title, loadString);
+  this->setValue(loadString);
+}
+
+///////////
+/* LABEL */
+///////////
+/**
+ *  Creates a new Label with a Text.
+ * @param text The text to be displayed.
+*/
+Label:: Label(const char* text)
+{
+  this->optionType = GUI_NOTHING;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
+#endif /* HAVE_GTK2 */
+
+  if (text)
+    this->setTitle(text);
+}
+
+/**
+ *  destructs a Label.
+*/
+Label::~Label()
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+ *  Sets a new Text to a Label.
+ * @param text The text to be inserted into the Label.
+*/
+void Label::setTitle(const char* text)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(text)+1];
+  strcpy(this->title, text);
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), this->title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  ereases the Text of a Label
+*/
+void Label::ereaseText()
+{
+  this->setTitle("");
+}
+
+/**
+  *  appends some Text to a Label
+  * @param textToAppend The text that will be appended to this Label
+*/
+void Label::appendText(char* textToAppend)
+{
+  if (this->title)
+    {
+      char* tmpTitle = new char[strlen(this->title)+strlen(textToAppend)+1];
+      strcpy(tmpTitle, title);
+      strcat(tmpTitle, textToAppend);
+      delete []this->title;
+      this->title = tmpTitle;
+    }
+  else
+    this->title = new char[strlen(textToAppend)];
+
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+  *  Appends some integer to the Label
+  * @param intToAppend The Int that will be added.
+
+    it does this by just converting the int into a char* and send it to appendText
+*/
+void Label::appendInt(int intToAppend)
+{
+  char append [32];
+  sprintf(append, "%d", intToAppend);
+  this->appendText(append);
+}
+
+
+/**
+ *  get the Text of a Label
+ * @return The Text the Label holds.
+*/
+const char* Label::getText()
+{
+  return this->title;
+}
+
+//////////////////
+/* PROGRESS-BAR */
+//////////////////
+/**
+ *  Creates a new ProgressBar.
+ * @param label The name you want to get the ProgressBar.
+*/
+ProgressBar::ProgressBar(const char* label)
+{
+  this->optionType = GUI_NOTHING;
+  this->progress = 0.0;
+  this->totalSize = 0.0;
+
+#ifdef HAVE_GTK2
+  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
+  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
+#endif /* HAVE_GTK2 */
+
+  if (label)
+    this->setTitle(label);
+}
+
+/**
+ *  destructs a ProgressBar
+*/
+ProgressBar::~ProgressBar()
+{
+  PRINTF(5)("deleting the ProgressBar: %s\n", this->title);
+}
+
+/**
+ *  Sets the Total size of the Bar.(ex. The maximum one can download)
+*/
+void ProgressBar::setTotalSize(double totalSize)
+{
+  this->totalSize = totalSize;
+}
+
+/**
+ *  Sets the progress maximum is this->totalSize
+*/
+void ProgressBar::setProgress(double progress)
+{
+  this->progress = progress;
+
+  if (this->progress > this->totalSize)
+    this->progress = this->totalSize;
+
+#ifdef HAVE_GTK2
+  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
+  PRINTF(5)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#else /* HVE_GTK2 */
+  PRINT(0)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+  *  returns the Progress Status
+*/
+double ProgressBar::getProgress()
+{
+  return this->progress;
+}
+
+///////////
+/* IMAGE */
+///////////
+/**
+ *  Creates a new Image
+ * @param imageName the location of the Image on the Hard Disc
+*/
+Image::Image(const char* imageName)
+{
+  this->init(imageName);
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_file(imageName);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  Creates a new Image
+ * @param imageData data to the PixBuff
+*/
+Image::Image(char** imageData)
+{
+  this->init("pixBuffImage");
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_pixbuf(gdk_pixbuf_new_from_xpm_data((const char**)imageData));
+#endif /* HAVE_GTK2 */
+}
+
+
+/**
+ *  destructs an Image.
+*/
+Image::~Image()
+{
+  PRINTF(5)("deleting the Image: %s\n", this->title);
+}
+
+/**
+  *  Initializes a new Image
+  * @param name the name to set to the Image
+*/
+void Image::init(const char* name)
+{
+  optionType = GUI_NOTHING;
+
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(name)+1];
+  strcpy(this->title, name);
+}
+
+
+/////////////////
+/* FILE DIALOG */
+/////////////////
+/**
+ *  Creates a new FileDialog
+ * @param fileDialogName a Name for the Dialog
+*/
+FileDialog::FileDialog(const char* fileDialogName)
+{
+  this->optionType = GUI_NOTHING;
+  this->isOpen = false;
+  this->changeOption = NULL;
+  this->openUpButton = NULL;
+  this->okObject = NULL;
+  this->okFunc = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_file_selection_new(fileDialogName);
+
+  gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION (this->widget), FALSE);
+
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->cancel_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget),
+                     "delete_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->ok_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogOK),
+                     this);
+#endif /* HAVE_GTK2 */
+  if (fileDialogName)
+    this->setTitle(fileDialogName);
+}
+
+/**
+ *  destructs a FileDialog
+*/
+FileDialog::~FileDialog()
+{
+  PRINTF(5)("deleting FileDialog %s\n", this->title);
+}
+
+void FileDialog::setChangeOption(OptionLabel* changeOption)
+{
+  this->changeOption = changeOption;
+}
+
+void FileDialog::setOKFunc(void* okObject, bool(*function)(const char* , void*))
+{
+  this->okObject = okObject;
+  this->okFunc = function;
+}
+
+
+void FileDialog::setOpenUpButton(Button* openUpButton)
+{
+  this->openUpButton = openUpButton;
+
+  openUpButton->connectSignal("button_release_event", this, FileDialog::dialogOpen);
+}
+
+
+void FileDialog::setDefaultFileName(const char* defaultFileName)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_set_filename (GTK_FILE_SELECTION(this->widget), defaultFileName);
+#endif /* HAVE_GTK2 */
+}
+
+void FileDialog::setMask(const char* mask)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_complete(GTK_FILE_SELECTION(this->widget), mask);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  disables the File Operator Buttons
+*/
+void FileDialog::disableFileOpts()
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(this->widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ *  The ok-button has been pressed
+*/
+void FileDialog::okEvent()
+{
+  if (this->okFunc)
+    {
+#ifdef HAVE_GTK2
+      if(this->okFunc((const char*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)), this->okObject))
+         this->close();
+#endif /* HAVE_GTK2 */
+    }
+  else if (this->changeOption)
+    {
+#ifdef HAVE_GTK2
+      changeOption->setValue(gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)));
+#endif /* HAVE_GTK2 */
+      this->close();
+    }
+  else
+    this->close();
+}
+
+/**
+   \biref opens up the FileDialog-Window
+*/
+void FileDialog::open()
+{
+  isOpen = true;
+#ifdef HAVE_GTK2
+  gtk_widget_show_all(this->widget);
+  gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \closes the FileDialog-Window
+*/
+void FileDialog::close()
+{
+  this->isOpen = false;
+#ifdef HAVE_GTK2
+  gtk_grab_remove(this->widget);
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->okEvent();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOK(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->open();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOpen(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->close();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogClose(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
Index: /branches/gui/src/lib/gui/gtk/gui_gtk.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_gtk.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_gtk.h	(revision 8140)
@@ -0,0 +1,470 @@
+/*!
+ * @file gui_gtk.h
+ * Contains all th different Widgets.
+ */
+#ifndef _GUI_GTK_H
+#define _GUI_GTK_H
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "debug.h"
+#include "globals.h"
+
+#ifdef HAVE_GTK2
+#include <gtk/gtkmain.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkframe.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkcheckbutton.h>
+#include <gtk/gtkhscale.h>
+#include <gtk/gtkoptionmenu.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkeventbox.h>
+#include <gtk/gtkprogressbar.h>
+#include <gtk/gtkfilesel.h>
+#endif /* HAVE_GTK2 */
+
+// enumerator for different GuiOption-Types
+enum GUI_OPTION
+{
+  GUI_BOX = -2,
+  GUI_CONTAINER = -1,
+  GUI_NOTHING = 0,
+  GUI_BOOL = 1,
+  GUI_INT = 2,
+  GUI_FLOAT = 3,
+  GUI_CHAR = 4,
+  GUI_CHAR_ARRAY = 5
+};
+
+extern char* executable;
+
+bool initGUI(int argc, char* argv[]);
+bool mainloopGUI();
+
+//! This is the topmost object that can be displayed all others are derived from it.
+class Widget
+{
+ private:
+
+ public:
+  Widget();
+  virtual ~Widget();
+
+  void show();
+  void hide();
+  void setSize(int width, int height);
+
+  virtual void setTitle(const char* title);  //!< An abstract Function, that sets the title of Widgets.
+  virtual const char* getTitle() const { return this->title; };
+
+  Widget* findWidgetByName(char* name, unsigned int depth);
+  void walkThrough(void(*function)(Widget*), unsigned int depth);
+  void walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth);
+   static void listOptionsAndGroups(Widget* widget);
+   static void listOptions(Widget* widget);
+   static void listOptions(Widget* widget, void* data);
+   Widget* findOptionByNumber(int* number, unsigned int depth);
+   static void listGroups(Widget* widget);
+   static void listGroups(Widget* widget, void* data);
+   static void printHelp(Widget* widget);
+   Widget* findGroupByNumber(int* number, unsigned int depth);
+   static void setOptions(Widget* widget);
+   static void redrawOptions(Widget* widget);
+   static void flagCheck(Widget* widget, void* flagName);
+
+#ifdef HAVE_GTK2
+  // Connection - Functions
+  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
+  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, Widget* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void* ));
+  void disconnectSignal(gulong signalID);
+  // Signals
+  static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing);
+#else /* HAVE_GTK2 */
+  // Connection - Functions
+  unsigned long connectSignal(char* event, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, int(*signal)(void*, Widget* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void* )){};
+  void disconnectSignal(unsigned long signalID);
+  // Signals
+  static int doNothingSignal(void* widget, void* event, void* nothing);
+#endif /* HAVE_GTK2 */
+
+
+  Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next
+#ifdef HAVE_GTK2
+  GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains.
+#else /* HAVE_GTK2 */
+  void* widget;
+#endif /* HAVE_GTK2 */
+
+  GUI_OPTION optionType;            //!< The Type of the Widget.
+  char* title;                      //!< The name of the Widget. Some do display it, Options need it to save;
+};
+
+//! This is a Packer Object, which has the ability to Pack other Widgets into itself.
+class Packer : public Widget
+{
+ public:
+  Packer();
+  virtual ~Packer();
+
+  Widget* down;                      //!< this points to the Widget below this.
+  char* groupName;                   //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved.
+
+  void setGroupName(const char* name);
+  /** @returns the GroupName if existent NULL otherwise */
+  inline const char* getGroupName() const {return this->groupName;}
+
+
+  virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers.
+};
+
+//! This is a Container Class, it can contain one sub-Widget: down.
+/**
+ * A Container is a Widget that can hold a subWidget in addition to a next-Widget.
+ * The Container can by itself not be displayed created or used.
+ * The derived classes of Container can be displayed
+*/
+class Container : public Packer
+{
+ private:
+  int borderwidth;          //!< The width of The Container Boarder.
+  int policy;               //!< The Update Policy of a Container.
+
+ public:
+  Container();
+  virtual ~Container();
+
+  void setBorderWidth(int borderwidth);
+  void fill(Widget* lowerWidget);
+};
+
+//! Window is the class that creates new Windows, and handels them
+/**
+ * A Window is a class derived from Container that contains a window-widget.
+ * It has the ability to hold one sub-object
+ */
+class Window : public Container
+{
+ private:
+  bool isOpen;                      //!< A bool Variable that checks if a Window is already open.
+ public:
+  static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window.
+  static void addWindow(Window* windowToAdd);
+
+  Window(const char* windowName = NULL);
+  virtual ~Window();
+
+  virtual void setTitle(const char* title);
+  void showall();
+  void open();
+  void close();
+
+#ifdef HAVE_GTK2
+  // Signals
+  static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
+  static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
+#else /* HAVE_GTK2 */
+  int Window::windowOpen(void* widget, void* event, void* window);
+  int Window::windowClose(void* widget, void* event, void* window);
+#endif /* HAVE_GTK2 */
+};
+
+//! Frame is the class that handles frames
+/**
+ * A Frame is an object, that has a border and if you like a name on it.
+ * It can contain a Widget, which means that you can insert anything you like inside of a frame
+ */
+class Frame :public Container
+{
+ public:
+  Frame(const char* frameName = NULL);
+  virtual ~Frame();
+
+  virtual void setTitle(const char* title);
+};
+
+//! EventBox is a Container that can Handle all Events happening inside of it.
+/**
+ * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox
+ */
+class EventBox : public Container
+{
+ public:
+  EventBox(const char* eventBoxName = NULL);
+  virtual ~EventBox();
+};
+
+//! A Box can contain multiple Widgets
+/**
+   A Box can Contain multiple Widgets, that are ordered either horizontally or vertically
+   I defined the standartbox to be horizontally.
+   A Box is always filled left->right(horizontally) or up->down(vertically)
+*/
+class Box : public Packer
+{
+ public:
+  Box(char boxtype = 'h');
+  virtual ~Box();
+
+  virtual void fill(Widget* lowerWidget);
+};
+
+//! An Option is a Widget that contains something that may change its state.
+/**
+ * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something
+ */
+class Option : public Widget
+{
+ protected:
+  bool saveable;              //!< Options can be Saved.
+
+ public:
+  Option();
+  virtual ~Option();
+
+  int value;                  //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume
+  char* flagName;             //!< options have a flag name that will be appendet if you start the Program from the GUI.
+  char* flagNameShort;        //!< like flag_name but shorter
+  int defaultValue;           //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value)
+
+  char* shortDescription;      //!< A Text that describes this option in short
+  char* longDescription;      //!< A Longer Text describing this option in a full way
+
+  void saveability(bool isSaveable = true);
+  virtual char* save();
+  virtual void load(const char* loadString);
+
+  bool isSaveable();
+  void setDefaultValue(int defaultValue);
+  void setFlagName(const char* flagname, int defaultvalue);
+  void setFlagName(const char* flagname, const char* flagnameshort, int defaultvalue);
+  void setDescription(const char* shortDescription, const char* longDescription = NULL);
+
+  virtual void redraw() = 0;       //!< A Option must be able to redraw itself.
+  virtual void changeOption() = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
+#ifdef HAVE_GTK2
+    // Signals
+  static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change.
+#endif /* HAVE_GTK2 */
+};
+
+//! Buttons can be pressed, and released.
+/**
+ * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it.
+ */
+class Button : public Option
+{
+ public:
+  Button(const char* buttonName = NULL);
+  virtual ~Button();
+
+  virtual void setTitle(const char* title);
+  virtual void redraw();
+  virtual void changeOption();
+};
+
+//! CheckButtons are a key in configuring bool Variables
+/** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc.
+ */
+class CheckButton : public Option
+{
+ public:
+  CheckButton(const char* buttonName = NULL);
+  virtual ~CheckButton();
+
+  bool isActive();
+
+  virtual void setTitle(const char* title);
+  virtual void redraw();
+  virtual void changeOption();
+};
+
+//! Sliders are Options that can be modified in their value
+/**
+ * good for volume, brightness, etc.
+ */
+class Slider : public Option
+{
+ private:
+  float start;                            //!< The beginning of the Slider-range.
+  float end;                              //!< The end of the Slider-range.
+  float fValue;                           //!< a value for the slider
+ public:
+  Slider(const char* slidername, float start, float end);
+  virtual ~Slider();
+
+  void setExactness(int exactness);
+  void setValue(float value);
+  virtual void redraw();
+  virtual void changeOption();
+
+  virtual char* save();
+  virtual void load(const char* loadString);
+};
+
+//! A Menu is an Option that has a dropdown menu, where you can chose between different Items
+class Menu : public Option
+{
+ private:
+#ifdef HAVE_GTK2
+  GtkWidget* menu;                      //!< The menu That will hold the Options.
+#endif /* HAVE_GTK2 */
+
+  //! A struct to handle the MenuItems
+  struct MenuItem
+  {
+    char* name;                         //!< The name of this entry.
+    int itemNumber;                     //!< The n'th entry of this menu;
+#ifdef HAVE_GTK2
+    GtkWidget* item;                    //!< One Item From a Menu.
+#endif /* HAVE_GTK2 */
+
+    MenuItem* next;                     //!< Pointer to the next MenuItem.
+  };
+  MenuItem* firstItem;                  //!< Pointer to the first Item.
+  MenuItem* currItem;                   //!< Pointer to the current Item.
+
+ public:
+  Menu(const char* menuName);
+  Menu(char* menuname, ...);
+  virtual ~Menu();
+  void init();
+
+  virtual char* save();
+  virtual void load(const char* loadString);
+
+  void addItem(char* itemName);
+  virtual void redraw();
+  virtual void changeOption();
+};
+
+//! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed.
+class OptionLabel : public Option
+{
+ public:
+  OptionLabel(const char* label, const char* value);
+  virtual ~OptionLabel();
+
+  void setValue(const char* newValue);
+
+  virtual char* save();
+  virtual void load(const char* loadString);
+
+  virtual void redraw();
+  virtual void changeOption();
+
+  char* cValue;                          //!< The Value the Label will have. @todo make private
+};
+
+//! A EntryField is a TextEntry field, for putting some text into.
+class EntryField : public Option
+{
+ public:
+  EntryField(const char* name = NULL);
+  virtual ~EntryField();
+
+  void setValue(const char* newValue);
+  virtual char* save();
+  virtual void load(const char* loadString);
+
+  virtual void redraw();
+  virtual void changeOption();
+};
+
+//! A label is a Widget, that displays a text
+class Label : public Widget
+{
+ public:
+  Label(const char* text = NULL);
+  virtual ~Label();
+
+  virtual void setTitle(const char* text);
+  void ereaseText();
+  void appendText(char* textToAppend);
+  void appendInt(int intToAppend);
+  const char* getText();
+};
+
+//! A ProgressBar is a Widget, that can display a Progress
+class ProgressBar : public Widget
+{
+ public:
+  ProgressBar(const char* label = NULL);
+  virtual ~ProgressBar();
+
+  void setProgress(double progress);
+  void setTotalSize(double totalSize);
+  double getProgress();
+
+ private:
+  double totalSize;         //!< The total Size of a download Bar
+  double progress;          //!< The progress of a Bar.
+#ifdef HAVE_GTK2
+  GtkAdjustment* adjustment;
+#endif /* HAVE_GTK2 */
+};
+
+//! Image is the keeper of one Image
+/**
+ * Images are mighty cool.
+ * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software.
+ */
+class Image : public Widget
+{
+ public:
+  Image(const char* imgaeName);
+  Image(char** imageData);
+  virtual ~Image();
+  void init(const char* name);
+};
+
+//! A FileDialog is a window with wich one can select a File
+class FileDialog : public Widget
+{
+ private:
+  OptionLabel* changeOption;
+  Button* openUpButton;
+  bool isOpen;
+  bool (*okFunc)(const char* , void*);
+  void* okObject;
+
+ public:
+  FileDialog(const char* fileDialogName);
+  virtual ~FileDialog();
+
+  void setChangeOption(OptionLabel* changeOption);
+  void setOKFunc(void* okObject, bool(*function)(const char* , void*));
+  void setOpenUpButton(Button* openUpButton);
+  void setDefaultFileName(const char* defaultFileName);
+  void setMask(const char* mask);
+  void disableFileOpts();
+
+  void okEvent();
+  void open();
+  void close();
+
+#ifdef HAVE_GTK2
+  static gint dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog);
+#else /* HAVE_GTK2 */
+  static int dialogOK(void* widget, void* event, void* dialog);
+  static int dialogOpen(void* widget, void* event, void* dialog);
+  static int dialogClose(void* widget, void* event, void* dialog);
+#endif /* HAVE_GTK2 */
+};
+
+#endif /* _GUI_GTK_H */
Index: /branches/gui/src/lib/gui/gtk/gui_keys.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_keys.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_keys.cc	(revision 8140)
@@ -0,0 +1,446 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_keys.h"
+
+#include <string.h>
+
+/**
+ *  Creates an Keyboard-Frame
+*/
+GuiKeys::GuiKeys()
+{
+  Frame* keysFrame;      //!< The Frame that holds the keyOptions.
+
+  keysFrame = new Frame("Keyboard-Options:");
+  {
+    Box* keysBox0;          //!< The Frame that holds the keyOptions.
+
+    //  keysFrame->setGroupName("Keyboard");
+    keysBox0 = new Box('v');
+    {
+      Box* keysBox1;
+      MiscKeys* misc;            //!< The Misc Keys
+
+      keysBox1 = new Box('h');
+      {
+        PlayerKeys* player1;       //!< The first Player's keys.
+        PlayerKeys* player2;       //!< The seconds Player's keys.
+
+        player1 = new PlayerKeys(CONFIG_SECTION_PLAYER "1");
+        player2 = new PlayerKeys(CONFIG_SECTION_PLAYER "2");
+
+        keysBox1->fill(player1->getOpenButton());
+        keysBox1->fill(player2->getOpenButton());
+      }
+      keysBox0->fill(keysBox1);
+
+      misc = new MiscKeys();
+      keysBox0->fill(misc->getOpenButton());
+    }
+    keysFrame->fill(keysBox0);
+  }
+
+  // setting up the Input Windows that receives keystrokes.
+  this->inputWindow = new Window("inputWindow");
+  this->inputButton = new Button("test");
+#ifdef HAVE_GTK2
+  this->inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
+  this->inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
+#endif /* HAVE_GTK2 */
+  this->inputWindow->fill(inputButton);
+
+  this->setMainWidget(keysFrame);
+}
+
+/**
+ *  Destructs the Keys-stuff
+*/
+GuiKeys::~GuiKeys()
+{
+  // nothing to do here.
+}
+
+
+Window* GuiKeys::inputWindow = NULL;
+Button* GuiKeys::inputButton = NULL;
+long GuiKeys::keySignal = 0;
+
+////////////
+/* PLAYER */
+////////////
+/**
+ *  Creates new inputs for a player
+ * @param player the name of the Player
+*/
+PlayerKeys::PlayerKeys(char* player)
+{
+  Window* pKeyWindow;     //!< The Window for a new Key-setting.
+
+  char* windowName = new char[strlen(player)+12];
+  strcpy(windowName, "KeySets: ");
+  strcat(windowName, player);
+  pKeyWindow = new Window(windowName);
+  {
+    Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
+
+    pKeyFrame = new Frame(windowName);
+    {
+      Box* pKeysBox;          //!< The Box that holds the Key-settings.
+      pKeysBox = new Box('v');
+      {
+        Button* closeButton;    //!< The CloseButton for this key-settings.
+
+        pKeysBox->setGroupName(player);
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_FORWARD, "w"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_BACKWARD, "s"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_LEFT, "a"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_RIGHT, "d"));
+
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_UP, "r"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_DOWN, "f"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_ROLL_LEFT, "q"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_ROLL_RIGHT, "e"));
+
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_FIRE, "BUTTON_LEFT"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_NEXT_WEAPON, "m"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_PREV_WEAPON, "n"));
+        pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_CHANGE_SHIP, "g"));
+        closeButton = new Button("close");
+#ifdef HAVE_GTK2
+        closeButton->connectSignal("button_press_event", pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+        pKeysBox->fill(closeButton);
+      }
+      pKeyFrame->fill(pKeysBox);
+    }
+    pKeyWindow->fill(pKeyFrame);
+  }
+  delete[] windowName;
+  Window::addWindow(pKeyWindow);
+#ifdef HAVE_GTK2
+  pKeyWindow->connectSignal("destroy", pKeyWindow, Window::windowClose);
+  pKeyWindow->connectSignal("delete_event", pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+  this->openButton = new Button(player);
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", pKeyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ * @returns the OpenButton of a Player
+*/
+Button* PlayerKeys::getOpenButton()
+{
+  return this->openButton;
+}
+
+//////////////////
+/* MISC_OPTIONS */
+//////////////////
+/**
+ *  Creates new inputs for a misc
+ * @param player the name of the Misc
+*/
+MiscKeys::MiscKeys()
+{
+  Window* keyWindow;     //!< The Window for a new Key-setting.
+
+  keyWindow = new Window("misc Keys");
+  {
+    Frame* keyFrame;       //!< The Frame for a new Key-setting.
+
+    keyFrame = new Frame("misc Keys:");
+    {
+      Box* keysBox;          //!< The Box that holds the Key-settings.
+      keysBox = new Box('v');
+      {
+        Button* closeButton;    //!< The CloseButton for this key-settings.
+
+        keysBox->setGroupName(CONFIG_SECTION_MISC_KEYS);
+        keysBox->fill(addKey(CONFIG_NAME_QUIT , "ESCAPE"));
+        keysBox->fill(addKey(CONFIG_NAME_PAUSE, "PAUSE"));
+        keysBox->fill(addKey(CONFIG_NAME_NEXT_WORLD, "x"));
+        keysBox->fill(addKey(CONFIG_NAME_PREV_WORLD, "z"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW0, "1"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW1, "2"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW2, "3"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW3, "4"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW4, "5"));
+        keysBox->fill(addKey(CONFIG_NAME_VIEW5, "6"));
+
+        closeButton = new Button("close");
+#ifdef HAVE_GTK2
+        closeButton->connectSignal("button_press_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+        keysBox->fill(closeButton);
+      }
+      keyFrame->fill(keysBox);
+    }
+    keyWindow->fill(keyFrame);
+  }
+  Window::addWindow(keyWindow);
+#ifdef HAVE_GTK2
+  keyWindow->connectSignal("destroy", keyWindow, Window::windowClose);
+  keyWindow->connectSignal("delete_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+  this->openButton = new Button("misc");
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", keyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+ * @returns the OpenButton of a Misc
+*/
+Button* MiscKeys::getOpenButton()
+{
+  return this->openButton;
+}
+
+
+/**
+ *  adds a new Key.
+ * @param key the number of the Key
+ * @param name The name of the new Key.
+ * @returns A widget that has the Key-Box
+*/
+Widget* addKey(const char* name, const char* defaultVal)
+{
+  InputKey* inputKey = new InputKey;
+  inputKey->keyBox = new Box();
+  inputKey->keyButton = new Button(name);
+  if (defaultVal)
+    inputKey->keyOLabel = new OptionLabel(name, defaultVal);
+  else
+    inputKey->keyOLabel = new OptionLabel(name, name);
+  inputKey->keyOLabel->saveability();
+
+#ifdef HAVE_GTK2
+  //inputKey->keyButton->connectSignal("key_press_event", inputKey->keyButton, key_cb);
+  inputKey->keyButton->connectSignal("button_press_event", inputKey, inputWindowEvent);
+#endif /* HAVE_GTK2 */
+  inputKey->keyBox->fill(inputKey->keyButton);
+  inputKey->keyBox->fill(inputKey->keyOLabel);
+  return inputKey->keyBox;
+}
+
+
+#ifdef HAVE_GTK2
+gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  GuiKeys::inputButton->setTitle("press a Key");
+  GuiKeys::keySignal = GuiKeys::inputButton->connectSignal("key_press_event", inputKey, key_cb);
+  GuiKeys::inputWindow->open();
+}
+
+/**
+ *  Function which gets keystrokes
+ * @param w the widget that released the Function.
+ * @param event The event that happened.
+ * @param Widget the Widget which will be applied.
+ * @returns Nothing
+*/
+gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  InputKey* inputkey =(InputKey*) inputKey;
+  char title [50];
+
+  switch(event->keyval)
+    {
+    case GDK_Up:
+      strcpy(title, "UP");
+      break;
+    case GDK_Down:
+      strcpy(title, "DOWN");
+      break;
+    case GDK_Left:
+      strcpy(title, "LEFT");
+      break;
+    case GDK_Right:
+      strcpy(title, "RIGHT");
+      break;
+
+    case GDK_space:
+      strcpy(title, "SPACE");
+      break;
+
+    case GDK_Return:
+      strcpy(title, "RETURN");
+      break;
+
+      // Special Keys //
+    case GDK_BackSpace:
+      strcpy(title, "BACKSPACE");
+      break;
+    case GDK_Scroll_Lock:
+      strcpy(title, "SCROLLOCK");
+      break;
+    case GDK_minus:
+      strcpy(title, "MINUS");
+      break;
+    case GDK_plus:
+      strcpy(title, "PLUS");
+      break;
+    case GDK_slash:
+      strcpy(title, "SLASH");
+      break;
+    case GDK_period:
+      strcpy(title, "PERIOD");
+      break;
+    case GDK_comma:
+      strcpy(title, "COMMA");
+      break;
+    case GDK_colon:
+      strcpy(title, "COLON");
+      break;
+    case GDK_semicolon:
+      strcpy(title, "SEMICOLON");
+      break;
+    case GDK_less:
+      strcpy(title, "LESS");
+      break;
+    case GDK_equal:
+      strcpy(title, "EQUALS");
+      break;
+    case GDK_greater:
+      strcpy(title, "GREATER");
+      break;
+    case GDK_question:
+      strcpy(title, "QUESTION");
+      break;
+    case GDK_at:
+      strcpy(title, "AT");
+      break;
+    case GDK_bracketleft:
+      strcpy(title, "LEFTBRACKET");
+      break;
+    case GDK_bracketright:
+      strcpy(title, "RIGHTBRACKET");
+      break;
+    case GDK_backslash:
+      strcpy(title, "BACKSLASH");
+      break;
+    case GDK_underscore:
+      strcpy(title, "UNDERSCORE");
+      break;
+    case GDK_quoteleft:
+      strcpy(title, "BACKQUOTE");
+      break;
+
+    case GDK_Page_Up:
+      strcpy(title, "PAGEUP");
+      break;
+    case GDK_Page_Down:
+      strcpy(title, "PAGEDOWN");
+      break;
+    case GDK_Home:
+      strcpy(title, "HOME");
+      break;
+    case GDK_Insert:
+      strcpy(title, "INSERT");
+      break;
+
+    case GDK_Escape:
+      strcpy(title, "ESCAPE");
+      break;
+    case GDK_Tab:
+      strcpy(title, "TAB");
+      break;
+    case GDK_Shift_L:
+      strcpy(title, "LSHIFT");
+      break;
+    case GDK_Shift_R:
+      strcpy(title, "R_SHIFT");
+      break;
+    case GDK_Control_L:
+      strcpy(title, "LCTRL");
+      break;
+    case GDK_Control_R:
+      strcpy(title, "RCTRL");
+      break;
+    case GDK_Alt_L:
+      strcpy(title, "LALT");
+      break;
+    case GDK_Alt_R:
+      strcpy(title, "RALT");
+      break;
+      // FXX KEYS //
+    case GDK_F1:
+      strcpy(title, "F1");
+      break;
+    case GDK_F2:
+      strcpy(title, "F2");
+      break;
+    case GDK_F3:
+      strcpy(title, "F3");
+      break;
+    case GDK_F4:
+      strcpy(title, "F4");
+      break;
+    case GDK_F5:
+      strcpy(title, "F5");
+      break;
+    case GDK_F6:
+      strcpy(title, "F6");
+      break;
+    case GDK_F7:
+      strcpy(title, "F7");
+      break;
+    case GDK_F8:
+      strcpy(title, "F8");
+      break;
+    case GDK_F9:
+      strcpy(title, "F9");
+      break;
+    case GDK_F10:
+      strcpy(title, "F10");
+      break;
+    case GDK_F11:
+      strcpy(title, "F11");
+      break;
+    case GDK_F12:
+      strcpy(title, "F12");
+      break;
+
+
+    default:
+      char* tmp;
+      sprintf(tmp, "%c", event->keyval);
+      printf("other key %s \n", tmp);
+      strcpy(title, tmp);
+      break;
+    }
+
+  inputkey->keyOLabel->setValue(title);
+  GuiKeys::inputButton->disconnectSignal(GuiKeys::keySignal);
+  GuiKeys::inputWindow->close();
+}
+#endif /* HAVE_GTK2 */
Index: /branches/gui/src/lib/gui/gtk/gui_keys.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_keys.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_keys.h	(revision 8140)
@@ -0,0 +1,67 @@
+/*!
+  \file gui_keys.h
+  \brief File that holds the class that creates the Keyboard-Options.
+*/
+
+#ifndef _GUI_KEYS_H
+#define _GUI_KEYS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+#ifdef HAVE_GTK2
+#include <gdk/gdkkeysyms.h>
+#endif /* HAVE_GTK2 */
+
+//! One KeyOption has one InputKey
+struct InputKey
+{
+  Box* keyBox;           //!< One Box that holds the Keys
+  Button* keyButton;     //!< The Button for changing the Key.
+  OptionLabel* keyOLabel;//!< The Label for displaying the Key-setting.
+};
+
+//! Class that creates the Keys-Options.
+class GuiKeys : public GuiElement
+{
+ public:
+  GuiKeys();
+  virtual ~GuiKeys();
+
+  static Window* inputWindow; //!< A Window that gets keyboard clicks. Static, because only one needed.
+  static Button* inputButton; //!< A Button that gets keyboard clicks. Static, because only one needed.
+  static long keySignal;      //!< A keySignal that handles keyboard clicks. Static, because only one needed.
+};
+
+//! Class to hold infos about a Player
+class PlayerKeys
+{
+ private:
+  Button* openButton;     //!< The OpenButton for this key-settings.
+
+ public:
+  PlayerKeys(char* player);
+
+  Button* getOpenButton();
+};
+
+class MiscKeys
+{
+ private:
+  Button* openButton;     //!< The OpenButton for this key-settings.
+
+ public:
+  MiscKeys();
+
+  Button* getOpenButton();
+};
+
+Widget* addKey(const char* name, const char* defaultValue = NULL);
+#ifdef HAVE_GTK2
+gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
+gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey);
+#endif /* HAVE_GTK2 */
+
+
+#endif /* _GUI_KEYS_H */
Index: /branches/gui/src/lib/gui/gtk/gui_update.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_update.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_update.cc	(revision 8140)
@@ -0,0 +1,501 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_update.h"
+#include <string.h>
+
+#include "gui.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "globals.h"
+
+using namespace std;
+
+/**
+ *  Creates an Update-Frame
+*/
+GuiUpdate::GuiUpdate()
+{
+  FileDialog* dataDirDialog;   //!< A FileDialog for the selection of the DataRepos
+  Button* dataDirButton;       //!< A Button for the selection of the DataRepos
+  OptionLabel* dataDirLabel;   //!< A Label fot the selection of the DataRepos
+
+
+  this->tmpDir = NULL;
+  this->homeDir = NULL;
+  this->installSourceDir = NULL;
+  this->userName = NULL;
+
+  this->getSystemInfo();
+
+  this->updateFrame = new Frame("Update-Options:");
+  this->updateFrame->setGroupName(CONFIG_SECTION_GENERAL);
+  this->updateBox = new Box('v');
+
+  dataDirButton = new Button(CONFIG_NAME_DATADIR);
+  dataDirLabel = new OptionLabel(CONFIG_NAME_DATADIR, "unknown");
+  dataDirLabel->setFlagName("data-dir", "d", 0);
+  dataDirLabel->setDescription("Sets the location of the orxonox' Data-Directory");
+  dataDirLabel->saveability();
+  dataDirDialog = new FileDialog("data-Repos-location");
+  dataDirDialog->setDefaultFileName("data");
+  dataDirDialog->setMask(DATA_IDENTIFIER);
+  this->checkDataDir(DEFAULT_DATA_DIR DATA_IDENTIFIER, dataDirLabel);
+  dataDirDialog->disableFileOpts();
+  dataDirDialog->setOpenUpButton(dataDirButton);
+  //dataDirDialog->setChangeOption(dataDirLabel);
+  dataDirDialog->setOKFunc(dataDirLabel, GuiUpdate::checkDataDir);
+  updateBox->fill(dataDirButton);
+  updateBox->fill(dataDirLabel);
+
+#ifdef HAVE_CURL
+
+  // the Button for autoUpdating
+  this->autoUpdate = new CheckButton(CONFIG_NAME_AUTO_UPDATE);
+  this->updateBox->fill(this->autoUpdate);
+  this->autoUpdate->setFlagName("update", "u", 0);
+  this->autoUpdate->setDescription("Updates orxonox", "When this option is selected orxonox automatically searches for updates, and if found installs them");
+  this->autoUpdate->saveability();
+
+
+
+
+  this->updateSourceWindowCreate();
+  this->updateBox->fill(this->updateSourceWindowGetButton());
+
+  this->updateDataWindowCreate();
+  this->updateBox->fill(this->updateDataWindowGetButton());
+
+#else /* HAVE_CURL */
+  Label* noCurlLabel = new Label("since you do not have cURL-support,\nupdate options are not availible");
+  this->updateBox->fill(noCurlLabel);
+#endif /* HAVE_CURL */
+  this->updateFrame->fill(this->updateBox);
+  this->setMainWidget(this->updateFrame);
+
+
+}
+
+/**
+ *  Destructs the Update-stuff
+*/
+GuiUpdate::~GuiUpdate()
+{
+
+}
+
+/**
+ *  checks if the Folder containing selected File is data.oxd, and if so sets it.
+ * @param
+*/
+bool GuiUpdate::checkDataDir(const char* fileName, void* object)
+{
+  if (!strcmp(fileName+(strlen(fileName)-strlen(DATA_IDENTIFIER)), DATA_IDENTIFIER))
+    {
+      char* tmpName = new char[strlen(fileName)-strlen(DATA_IDENTIFIER)+1];
+      strncpy(tmpName, fileName, strlen(fileName)-strlen(DATA_IDENTIFIER));
+      tmpName[strlen(fileName)-strlen(DATA_IDENTIFIER)] = '\0';
+      static_cast<OptionLabel*>(object)->setValue(tmpName);
+      delete[] tmpName;
+      return true;
+    }
+  else
+    return false;
+}
+
+
+/**
+  *  Look what info we can get from this system
+*/
+bool GuiUpdate::getSystemInfo()
+{
+  PRINTF(5)("Grabbing system information\n");
+  this->tmpDir = getenv("TMPDIR");
+  if(!tmpDir)
+    this->tmpDir = "/tmp";
+  PRINTF(5)("Temporary directory is: %s\n", this->tmpDir);
+
+#ifdef __WIN32__
+  this->homeDir = getenv("USERPROFILE");
+#else
+  this->homeDir = getenv("HOME");
+#endif
+  PRINTF(5)("Home directory is %s\n", homeDir);
+
+
+  this->installDataDir = DEFAULT_DATA_DIR;
+  PRINTF(5)("Installation of orxonox-data will go to this directory: %s\n", this->installDataDir);
+
+  this->installSourceDir = "/usr/games/bin";
+  PRINTF(5)("Installation of orxonox-source will go to this directory: %s\n", this->installSourceDir);
+
+  this->userName = getenv("USER");
+  PRINTF(5)("Logged in username is: %s\n", this->userName);
+}
+
+#ifdef HAVE_CURL
+bool* GuiUpdate::checkForUpdates()
+{
+  PRINTF(4)("checking for new version of orxonox\n");
+  FileInfo updateFileInfo;
+  updateFileInfo.fileName = "update_info";
+  updateFileInfo.webRoot = "http://www.orxonox.ethz.ch/files/data";
+  updateFileInfo.localRoot = this->tmpDir;
+
+  download(&updateFileInfo);
+}
+
+/**
+ *  Creates a window, and all it contains for the Data-update.
+*/
+void GuiUpdate::updateDataWindowCreate()
+{
+  this->updateDataWindow = new Window("update orxonox::Data");
+  this->updateDataBox = new Box('v');
+
+  // the close-Button of the Update Window.
+  //  updateWindowClose = new Button("close");
+#ifdef HAVE_GTK2
+  //  updateWindowClose->connectSignal("button_press_event", updateWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  //  updateWindowBox->fill(updateWindowClose);
+
+  this->updateDataBar = new ProgressBar();
+  this->updateDataBox->fill(this->updateDataBar);
+
+  FileInfo* dataInfo = new FileInfo;
+  dataInfo->bar = this->updateDataBar;
+
+  this->updateDataBegin = new Button("begin.");
+  dataInfo->stateButton = this->updateDataBegin;
+#ifdef HAVE_GTK2
+  dataInfo->buttonSignal = updateDataBegin->connectSignal("button_press_event", dataInfo, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  this->updateDataBox->fill(this->updateDataBegin);
+
+  this->updateDataWindow->fill(this->updateDataBox);
+
+  this->updateDataWindowButton = new Button("update orxonox::Data");
+#ifdef HAVE_GTK2
+  this->updateDataWindowButton->connectSignal("button_press_event", this->updateDataWindow, Window::windowOpen);
+  this->updateDataWindow->connectSignal("destroy", this->updateDataWindow, Window::windowClose);
+  this->updateDataWindow->connectSignal("delete_event", this->updateDataWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+ * @returns A Pointer to the Button of the UpdaterDataWindow
+*/
+Button* GuiUpdate::updateDataWindowGetButton()
+{
+  return this->updateDataWindowButton;
+}
+
+/**
+ *  Creates a window, and all it contains for the Source-update.
+*/
+void GuiUpdate::updateSourceWindowCreate()
+{
+  // the button, that opens this Window.
+  this->updateSourceWindowButton = new Button("update orxonox::Source");
+
+  // the Window itself
+  this->updateSourceWindow = new Window("update orxonox::Source");
+
+  this->updateSourceBox = new Box();
+
+  this->updateSourceBar = new ProgressBar();
+  this->updateSourceBox->fill(this->updateSourceBar);
+  test = new Button("increment");
+
+#ifdef HAVE_GTK2
+  test->connectSignal("button_press_event", updateSourceBar, updateSourceFunc);
+#endif /* HAVE_GTK2 */
+
+  this->updateSourceBox->fill(test);
+  this->updateSourceWindow->fill(updateSourceBox);
+#ifdef HAVE_GTK2
+  this->updateSourceWindowButton->connectSignal("button_press_event", this->updateSourceWindow, Window::windowOpen);
+  this->updateSourceWindow->connectSignal("destroy", this->updateSourceWindow, Window::windowClose);
+  this->updateSourceWindow->connectSignal("delete_event", this->updateSourceWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+ * @returns A Pointer to the Button of the UpdaterSourceWindow
+*/
+Button* GuiUpdate::updateSourceWindowGetButton()
+{
+  return this->updateSourceWindowButton;
+}
+
+
+#ifdef HAVE_GTK2
+/**
+ *  updates the Data of orxonox.
+ * @param w The widget, that executed this Function.
+ * @param event The event that trigered this Function.
+ * @param button The Button, that triggered this event.
+*/
+gint GuiUpdate::updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info)
+{
+  FileInfo* dataInfo =(FileInfo*)info;
+
+  dataInfo->fileName = "02%20orxonox%203.mp3";
+  dataInfo->webRoot  = "http://www.orxonox.net/files/";
+  dataInfo->localRoot = "./";
+  PRINTF(4)("Preparing to download file %s.\n", dataInfo->fileName);
+  downloadWithStyle(dataInfo);
+}
+
+/**
+ *  updates the source of orxonox.
+ * @param w The widget, that executed this Function.
+ * @param event The event that trigered this Function.
+ * @param button The Button, that triggered this event.
+*/
+gint GuiUpdate::updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+  ProgressBar* tmpBar = static_cast<ProgressBar*>(bar);
+  tmpBar->setTotalSize(20);
+  tmpBar->setProgress(tmpBar->getProgress()+1);
+}
+#endif /* HAVE_GTK2 */
+
+/**
+ *  The Function Curl calls to write out the File.
+ * @param ptr A Pointer to the date to write.
+ * @param size The size in bytes of one nmemb to write.
+ * @param nmemb The Count of size to write.
+ * @param stream Filehandler to write to.
+*/
+size_t GuiUpdate::curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fwrite(ptr, size, nmemb, stream);
+}
+
+/**
+ *  The Function Curl calls to write out the File.
+ * @param ptr A Pointer to the date to write to.
+ * @param size The size in bytes of one nmemb to write.
+ * @param nmemb The Count of size to write.
+ * @param stream Filehandler to get data from.
+*/
+size_t GuiUpdate::curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fread(ptr, size, nmemb, stream);
+}
+
+
+/**
+ *  An update Function for the GUI, to show the progress.
+ * @param Bar th ProgressBar to update
+ * @param totalSize The total size of the download in bytes.
+ * @param progress The current Progress of the download in bytes.
+ * @param upTotal not needed
+ * @param upProgress not needed
+*/
+int GuiUpdate::curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress)
+{
+  bar->setProgress(progress);
+  bar->setTotalSize(totalSize);
+#ifdef HAVE_GTK2
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif
+  return 0;
+}
+
+/**
+ *  The Curl handle for only one CURL(static).
+*/
+CURL* GuiUpdate::curlHandle = NULL;
+
+//! A bool parameter that shows if we are downloading.
+bool GuiUpdate::isDownloading = false;
+
+//! A parameter to see, if downloading has been canceled
+bool GuiUpdate::downloadCanceled = false;
+
+/**
+ *  Initializes a Download without displaying it.
+ * @param fileInfo the FileInfo.
+
+   !! BE AWARE THIS WILL NOT BE THREADED. !!
+*/
+bool GuiUpdate::download(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(4)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  CURL* localCurl;
+  localCurl = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnNet, info->webRoot);
+  if(fileOnNet[strlen(fileOnNet)] != '/') //!< @todo windows-shit
+    strcat(fileOnNet, "/");
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnDisk, info->localRoot);
+  if(fileOnDisk[strlen(fileOnDisk)] != '/') //!< @todo windows-shit
+    strcat(fileOnDisk, "/");
+  strcat(fileOnDisk, info->fileName);
+
+  if(localCurl)
+    {
+
+      info->fileHandle = fopen(fileOnDisk, "w");
+
+      curl_easy_setopt(localCurl, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(localCurl, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(localCurl, CURLOPT_NOPROGRESS, true);
+
+      curl_easy_perform(localCurl);
+
+      curl_easy_cleanup(localCurl);
+      fclose(info->fileHandle);
+    }
+}
+
+/**
+ *  Initializes a Download with some style.
+ * @param fileInfo the FileInfo.
+   @todo release thread-lock.
+
+   Downloading with a Button that gets a different Name while downloading, and a Bar, that gets to be updated. More to be followed
+*/
+bool GuiUpdate::downloadWithStyle(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(4)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  curlHandle = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnNet, info->webRoot);
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnDisk, info->localRoot);
+  strcat(fileOnDisk, info->fileName);
+
+  if(curlHandle)
+    {
+
+      info->fileHandle = fopen(fileOnDisk, "w");
+
+      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, false);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->bar);
+
+      if(!isDownloading)
+        {
+#ifdef HAVE_GTK2
+          info->stateButton->disconnectSignal(info->buttonSignal);
+          info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, cancelDownload);
+#endif /* HAVE_GTK2 */
+          info->stateButton->setTitle("please wait");
+
+          downloadThread(info);
+          downloadThreadFinished(info);
+
+          //      res = curl_easy_perform(curlHandle);
+
+          //      fclose(outfile);
+        }
+      else
+        PRINTF(1)("thread already in use\n");
+
+    }
+  return true;
+}
+
+/**
+ *  The downloading process(either threaded or not).
+ * @param fileInfo the FileInfo.
+
+   @todo Threads get locked, if the cancel button is pressed in to small intervals.
+*/
+void* GuiUpdate::downloadThread(void* fileInfo)
+{
+  isDownloading = true;
+  curl_easy_perform(curlHandle);
+}
+
+/**
+ *  Finishes a downloading process.
+ * @param fileInfo the FileInfo.
+*/
+void* GuiUpdate::downloadThreadFinished(void* fileInfo)
+{
+  FileInfo* info =(FileInfo*)fileInfo;
+  if(curlHandle)
+    curl_easy_cleanup(curlHandle);
+
+  PRINTF(4)("Closing the downloaded file.\n");
+  fclose(info->fileHandle);
+
+  if(isDownloading)
+    info->stateButton->setTitle("go on");
+  //  else
+  //    info->stateButton->setTitle("done");
+#ifdef HAVE_GTK2
+  info->stateButton->disconnectSignal(info->buttonSignal);
+  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  isDownloading = false;
+
+}
+
+#ifdef HAVE_GTK2
+/**
+ *  canceles a downloading session.
+ * @param w The widget, that executed this Function.
+ * @param event The event that trigered this Function.
+ * @param bar The Bar, that triggered this event.
+
+   @todo canceling a session in non-threaded mode.
+*/
+gint GuiUpdate::cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+  PRINTF(3)("Cannot cancle the Downloading process until after this File\n");
+}
+#endif /* HAVE_GTK2 */
+
+#endif /* HAVE_CURL */
Index: /branches/gui/src/lib/gui/gtk/gui_update.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_update.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_update.h	(revision 8140)
@@ -0,0 +1,117 @@
+/*!
+  \file gui_update.h
+  \brief File that holds the class that creates the update-menu.
+*/
+
+#ifndef _GUI_UPDATE_H
+#define _GUI_UPDATE_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+
+#define DATA_IDENTIFIER "data.oxd"
+
+#include <stdio.h>
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#include <curl/types.h>
+#include <curl/easy.h>
+#endif /* HAVE_CURL */
+#ifdef HAVE_PTHREAD_H
+#define _MULTI_THREADED
+#include <pthread.h>
+#endif /* HAVE_PTHREAD_H */
+using namespace std;
+
+//! Class that creates the execute-Options.
+class GuiUpdate : public GuiElement
+{
+ private:
+  // Defining Variables
+  char* tmpDir;                         //!< The Temporary directory.
+  char* homeDir;                        //!< The Home directory.
+  char* installDataDir;                 //!< Where to install the Data to.
+  char* installSourceDir;               //!< Where to install the Source to.
+  char* userName;                       //!< The user logged in.
+
+  bool getSystemInfo();
+
+  // Window creation.
+  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
+  Box* updateBox;                       //!< The Box that holds the updateOptions.
+  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
+
+
+  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
+  Window* updateDataWindow;             //!< A Window for the data-update.
+  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
+  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
+  Button* updateDataBegin;              //!< A Button to start the process.
+
+  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. @todo tricky
+  Window* updateSourceWindow;           //!< A Window for the Source-update.
+  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
+  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
+
+  Button* test;                         //!< will be deleted soon.
+
+#ifdef HAVE_GTK2
+  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
+  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
+#endif /* HAVE_GTK2 */
+
+  static bool checkDataDir(const char* fileName, void* object);
+
+#ifdef HAVE_CURL
+  //! A Struct to hold information about one File to download.
+  struct FileInfo
+  {
+    char* fileName;                     //!< The Name of the file we want to get.
+    char* webRoot;                      //!< The Root of the File on The Web
+    char* localRoot;                    //!< The Root directory to put the files on the local disk.
+    FILE* fileHandle;                   //!< A fileHandler.
+
+    Button* stateButton;                //!< A button that shows either start or cancel;
+    long int buttonSignal;              //!< The Signal of the stateButton.
+    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
+  };
+
+  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
+
+  static CURL* curlHandle;
+#ifdef HAVE_GTK2
+  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
+#endif /* HAVE_GTK2 */
+  static bool isDownloading;
+  static bool downloadCanceled;
+
+  static bool download(void* fileInfo);
+  static bool downloadWithStyle(void* fileInfo);
+  static void* downloadThread(void* fileInfo);
+  static void* downloadThreadFinished(void* fileInfo);
+
+
+#endif /* HAVE_CURL */
+
+ public:
+  GuiUpdate();
+  virtual ~GuiUpdate();
+
+#ifdef HAVE_CURL
+  void updateDataWindowCreate();
+  Button* updateDataWindowGetButton();
+
+  void updateSourceWindowCreate();
+  Button* updateSourceWindowGetButton();
+
+  bool* checkForUpdates();
+
+#endif /* HAVE_CURL */
+
+};
+
+#endif /* _GUI_UPDATE_H */
Index: /branches/gui/src/lib/gui/gtk/gui_video.cc
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_video.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_video.cc	(revision 8140)
@@ -0,0 +1,227 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_video.h"
+
+#include "gui_gtk.h"
+#include "sdlincl.h"
+#include <stdlib.h>
+
+/**
+ *  Creates the Video-Option-Frame
+*/
+GuiVideo::GuiVideo()
+{
+  Frame* videoFrame;        //!< The Frame that holds the video options.
+
+  videoFrame = new Frame("Video-Options:");
+  videoFrame->setGroupName("video");
+  {
+    Box* videoBox;            //!< The Box that holds the video options.
+
+    videoBox = new Box('v');
+    {
+      CheckButton* fullscreen;  //!< CheckButton for fullscreen-mode
+      Menu* resolution;         //!< Menu for the resolution
+      CheckButton* wireframe;   //!< CheckButton for wireframe Mode.
+
+      fullscreen = new CheckButton(CONFIG_NAME_FULLSCREEN);
+      fullscreen->setFlagName("windowed", "q", 1);
+      fullscreen->setDescription("Starts orxonox in windowed mode");
+      fullscreen->saveability();
+      videoBox->fill(fullscreen);
+      resolution = new Menu(CONFIG_NAME_RESOLUTION);
+      getResolutions(resolution);
+      resolution->saveability();
+      resolution->setFlagName("resolution", "r", 0);
+      resolution->setDescription("Sets the resolution of orxonox");
+      videoBox->fill(resolution);
+      wireframe = new CheckButton(CONFIG_NAME_WIREFRAME);
+      wireframe->setFlagName("wireframe", "w", 0);
+      wireframe->setDescription("Starts orxonox in wireframe mode");
+      wireframe->saveability();
+      videoBox->fill(wireframe);
+
+      videoBox->fill(advancedWindowCreate());
+    }
+    videoFrame->fill(videoBox);
+  }
+  setMainWidget(videoFrame);
+}
+
+/**
+ *  Destructs the Video-stuff
+*/
+GuiVideo::~GuiVideo()
+{
+  // nothing to do here.
+}
+
+/**
+ *  Creates a window, and all it contains for the Source-update.
+*/
+Widget* GuiVideo::advancedWindowCreate()
+{
+  // advanced-Performance-Options
+  Window* advancedWindow;   //!< A Window to display advanced options.
+  Button* advancedButton;   //!< A Button to open the Advanced Video Performance Window.
+  // the button, that opens this Window.
+  advancedButton = new Button("advanced");
+
+  // the Window itself
+  advancedWindow = new Window("Advanced Video Options");
+  advancedWindow->setGroupName(CONFIG_SECTION_VIDEO_ADVANCED);
+  {
+    Box* advancedBox;         //!< A Box to pack the options into.
+
+    advancedBox = new Box('v');
+    {
+      CheckButton* shadows;     //!< CheckButton for shadows
+      CheckButton* fog;         //!< CheckButton for fog.
+      CheckButton* reflections; //!< CheckButton for reflections
+      CheckButton* textures;    //!< CheckButton for textures
+      Menu* textureDetail;      //!< Menu for the Texture-Detail.
+      Label* modelDetailLabel;  //!< Label for model-detail.
+      Menu* modelDetail;        //!< model-detail.
+      CheckButton* particles;   //!< If the Particles should be enabled
+      Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
+      Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
+      Label* filterMethodLabel; //!< Label for filtering-Method.
+      Menu* filterMethod;       //!< Menu for filtering Method.
+      Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
+
+      // Advanced Performance Options
+      shadows = new CheckButton(CONFIG_NAME_SHADOWS);
+      shadows->saveability();
+      advancedBox->fill(shadows);
+
+      fog = new CheckButton(CONFIG_NAME_FOG);
+      fog->saveability();
+      advancedBox->fill(fog);
+
+      reflections = new CheckButton(CONFIG_NAME_REFLECTIONS);
+      reflections->saveability();
+      advancedBox->fill(reflections);
+
+      textures = new CheckButton(CONFIG_NAME_TEXTURES);
+      textures->setDefaultValue(1);
+      textures->saveability();
+      advancedBox->fill(textures);
+
+      textureDetail = new Menu(CONFIG_NAME_TEXTURE_DETAIL, "low", "medium", "high", "lastItem");
+      textureDetail->setDefaultValue(1);
+      textureDetail->saveability();
+      advancedBox->fill(textureDetail);
+
+      modelDetailLabel = new Label(CONFIG_NAME_MODEL_DETAIL);
+      advancedBox->fill(modelDetailLabel);
+      modelDetail = new Menu(CONFIG_NAME_MODEL_DETAIL, "low", "high", "lastItem");
+      modelDetail->setDefaultValue(1);
+      modelDetail->saveability();
+      advancedBox->fill(modelDetail);
+
+      particles = new CheckButton(CONFIG_NAME_PARTICLES_ENABLED);
+      particles->saveability();
+      particles->setDefaultValue(1);
+      advancedBox->fill(particles);
+
+      antiAliasingLabel = new Label("Anti-Aliasing-depth:");
+      advancedBox->fill(antiAliasingLabel);
+      antiAliasing = new Menu(CONFIG_NAME_ANTI_ALIASING, "0", "1", "2", "4", "8",  "lastItem");
+      antiAliasing->setDefaultValue(2);
+      antiAliasing->saveability();
+      advancedBox->fill(antiAliasing);
+
+      filterMethodLabel = new Label("Filtering Method:");
+      advancedBox->fill(filterMethodLabel);
+      filterMethod = new Menu(CONFIG_NAME_FILTER_METHOD, "none", "linear", "bilinear", "trilinear", "anisortopic", "lastItem");
+      filterMethod->setDefaultValue(1);
+      filterMethod->saveability();
+      advancedBox->fill(filterMethod);
+
+
+
+      closeButton = new Button("close");
+#ifdef HAVE_GTK2
+      closeButton->connectSignal("button_press_event", advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+      advancedBox->fill(closeButton);
+    }
+    advancedWindow->fill(advancedBox);
+  }
+#ifdef HAVE_GTK2
+  advancedButton->connectSignal("button_press_event", advancedWindow, Window::windowOpen);
+  advancedWindow->connectSignal("destroy", advancedWindow, Window::windowClose);
+  advancedWindow->connectSignal("delete_event", advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  Window::addWindow(advancedWindow);
+
+  return advancedButton;
+}
+
+/**
+ *  sets all resolutions to the menu
+ * @param menu the Menu to set The resolutions to.
+*/
+void GuiVideo::getResolutions(Menu* menu)
+{
+  SDL_Init(SDL_INIT_VIDEO);
+  SDL_Rect **modes;
+  int i;
+  int x = 0,y =0; // check for difference
+  char tmpChar[100];
+
+  /* Get available fullscreen/hardware modes */
+  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
+
+  /* Check is there are any modes available */
+  if(modes == (SDL_Rect **)0){
+    PRINTF(2)("No video-modes available!\n");
+    exit(-1);
+  }
+
+  /* Check if our resolution is restricted */
+  if(modes == (SDL_Rect **)-1){
+    PRINTF(2)("All resolutions available.\n");
+  }
+  else{
+    /* Print valid modes */
+    PRINT(5)("Available Modes\n");
+    for(i = 0; modes[i] ;++i)
+      {
+        if (x != modes[i]->w || y != modes[i]->h)
+          {
+            PRINTF(5)("  %d x %d\n", modes[i]->w, modes[i]->h);
+            sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
+            menu->addItem(tmpChar);
+            x = modes[i]->w; y = modes[i]->h;
+          }
+      }
+  }
+  SDL_QuitSubSystem(SDL_INIT_VIDEO);
+  SDL_Quit();
+}
Index: /branches/gui/src/lib/gui/gtk/gui_video.h
===================================================================
--- /branches/gui/src/lib/gui/gtk/gui_video.h	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/gui_video.h	(revision 8140)
@@ -0,0 +1,29 @@
+/*!
+  \file gui_video.h
+  \brief File that holds the class that creates the Video-Options.
+*/
+#ifndef _GUI_VIDEO_H
+#define _GUI_VIDEO_H
+
+#include "gui.h"
+#include "gui_element.h"
+
+// FORWARD DECLARATIONS
+class Widget;
+class Menu;
+
+//! Class that creates the Video-Options.
+class GuiVideo : public GuiElement
+{
+ private:
+  //  Button* advancedWindowGetButton();
+
+ public:
+  GuiVideo();
+  virtual ~GuiVideo();
+
+ private:
+  void getResolutions(Menu* menu);
+  Widget* advancedWindowCreate();
+};
+#endif /* _GUI_VIDEO_H */
Index: /branches/gui/src/lib/gui/gtk/logo.xpm
===================================================================
--- /branches/gui/src/lib/gui/gtk/logo.xpm	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/logo.xpm	(revision 8140)
@@ -0,0 +1,3170 @@
+/* XPM */
+static char * logo_xpm[] = {
+"200 200 2967 2",
+"  	c #000000",
+". 	c #020202",
+"+ 	c #010101",
+"@ 	c #242424",
+"# 	c #2A2A2A",
+"$ 	c #030303",
+"% 	c #040404",
+"& 	c #8B8B8B",
+"* 	c #A0A0A0",
+"= 	c #848484",
+"- 	c #0D0D0D",
+"; 	c #E3E3E3",
+"> 	c #F4F4F4",
+", 	c #181818",
+"' 	c #1C1C1C",
+") 	c #6D6D6D",
+"! 	c #A7A7A7",
+"~ 	c #CECECE",
+"{ 	c #080808",
+"] 	c #555555",
+"^ 	c #FFFFFF",
+"/ 	c #828282",
+"( 	c #090909",
+"_ 	c #B1B1B1",
+": 	c #D3D3D3",
+"< 	c #D5D5D5",
+"[ 	c #FDFDFD",
+"} 	c #8D8D8D",
+"| 	c #D1D1D1",
+"1 	c #FEFEFE",
+"2 	c #E2E2E2",
+"3 	c #6E6E6E",
+"4 	c #FCFCFC",
+"5 	c #EAEAEA",
+"6 	c #0E0E0E",
+"7 	c #141414",
+"8 	c #F7F7F7",
+"9 	c #525252",
+"0 	c #3D3D3D",
+"a 	c #F9F9F9",
+"b 	c #565656",
+"c 	c #3B3B3B",
+"d 	c #F5F5F5",
+"e 	c #1F1F1F",
+"f 	c #FDFEFE",
+"g 	c #FFFEFE",
+"h 	c #EBEAE9",
+"i 	c #29292A",
+"j 	c #9D9D9D",
+"k 	c #FEFDFE",
+"l 	c #FEFEFD",
+"m 	c #BABABA",
+"n 	c #020101",
+"o 	c #111214",
+"p 	c #E2E2E1",
+"q 	c #4B4B4B",
+"r 	c #969696",
+"s 	c #535353",
+"t 	c #FAFFFF",
+"u 	c #FCFBFC",
+"v 	c #C8C6C6",
+"w 	c #050505",
+"x 	c #F3F2F2",
+"y 	c #FDFFFA",
+"z 	c #FAFCFF",
+"A 	c #F2F7F8",
+"B 	c #FCFDFE",
+"C 	c #FAFAFA",
+"D 	c #333333",
+"E 	c #030404",
+"F 	c #B7B5B3",
+"G 	c #FBFFFF",
+"H 	c #606060",
+"I 	c #292929",
+"J 	c #F8F8F8",
+"K 	c #C1C1C1",
+"L 	c #717171",
+"M 	c #FCFEFF",
+"N 	c #FDFCF9",
+"O 	c #FDFCFA",
+"P 	c #FCFCFB",
+"Q 	c #838383",
+"R 	c #FCFEFE",
+"S 	c #FEFDF7",
+"T 	c #BCDFF5",
+"U 	c #A4CDED",
+"V 	c #949494",
+"W 	c #6E6D6F",
+"X 	c #FEFCFB",
+"Y 	c #FBFEFF",
+"Z 	c #FFFDF8",
+"` 	c #919191",
+" .	c #C0C0C0",
+"..	c #C9C9C9",
+"+.	c #E8E8E8",
+"@.	c #323232",
+"#.	c #FBFCFD",
+"$.	c #FCFCFA",
+"%.	c #BAD9E8",
+"&.	c #F7FCFB",
+"*.	c #FAFDFE",
+"=.	c #0B0B0B",
+"-.	c #DBDBDB",
+";.	c #FBFDFE",
+">.	c #50A7EF",
+",.	c #3696F1",
+"'.	c #FAFEFE",
+").	c #EFEFEF",
+"!.	c #373737",
+"~.	c #FAFCFC",
+"{.	c #F6FBFC",
+"].	c #BADBEE",
+"^.	c #FEFFFF",
+"/.	c #2F2F2F",
+"(.	c #CACACA",
+"_.	c #FAFAF7",
+":.	c #5E5F5D",
+"<.	c #030102",
+"[.	c #FEFDFD",
+"}.	c #F9FCFA",
+"|.	c #3898EC",
+"1.	c #9FCBED",
+"2.	c #FCFDFD",
+"3.	c #EEEEEC",
+"4.	c #262827",
+"5.	c #010103",
+"6.	c #4C4C4C",
+"7.	c #D8ECFA",
+"8.	c #0A80F5",
+"9.	c #0780F6",
+"0.	c #C9E4F7",
+"a.	c #FEFCFA",
+"b.	c #68696A",
+"c.	c #1A1A1A",
+"d.	c #DDDDDD",
+"e.	c #FAFCFD",
+"f.	c #FDFBF5",
+"g.	c #B4D7F2",
+"h.	c #2A8EE9",
+"i.	c #F6FEFF",
+"j.	c #FEFCFE",
+"k.	c #CFD4D1",
+"l.	c #050305",
+"m.	c #000002",
+"n.	c #020002",
+"o.	c #030101",
+"p.	c #474646",
+"q.	c #E9E9E7",
+"r.	c #D6D6D6",
+"s.	c #B2B2B2",
+"t.	c #FCFDFC",
+"u.	c #FDFFFD",
+"v.	c #FEFEFF",
+"w.	c #F8F8FA",
+"x.	c #858784",
+"y.	c #060606",
+"z.	c #E0E0E0",
+"A.	c #F9FCFC",
+"B.	c #1E8CF3",
+"C.	c #1B86F3",
+"D.	c #CDE9F4",
+"E.	c #FCFFFE",
+"F.	c #FDFDFC",
+"G.	c #C1C3C3",
+"H.	c #090908",
+"I.	c #B5B5B5",
+"J.	c #7ABAEE",
+"K.	c #047EFC",
+"L.	c #0181FD",
+"M.	c #5DAAEE",
+"N.	c #F7FDFF",
+"O.	c #FCFDFA",
+"P.	c #D5D6D6",
+"Q.	c #070605",
+"R.	c #B3B3B3",
+"S.	c #FDFCFC",
+"T.	c #FAFCFB",
+"U.	c #E3F3FA",
+"V.	c #228BF2",
+"W.	c #0F7FEE",
+"X.	c #DBEDF5",
+"Y.	c #FDFBFC",
+"Z.	c #F8FEFA",
+"`.	c #111011",
+" +	c #020001",
+".+	c #080506",
+"++	c #676A6C",
+"@+	c #F5F9FA",
+"#+	c #BCBCBC",
+"$+	c #7E7E7E",
+"%+	c #FDFDF8",
+"&+	c #FEFDF9",
+"*+	c #A8A8A8",
+"=+	c #151515",
+"-+	c #0F0F0F",
+";+	c #FEFDFA",
+">+	c #D5EDF5",
+",+	c #0E7EEE",
+"'+	c #017FFC",
+")+	c #3798F1",
+"!+	c #EDF6F4",
+"~+	c #8C8E8D",
+"{+	c #343434",
+"]+	c #FBFBFB",
+"^+	c #EEF8FB",
+"/+	c #238FF0",
+"(+	c #0281FD",
+"_+	c #027FFC",
+":+	c #0F82F3",
+"<+	c #E2F2FB",
+"[+	c #FEFDFB",
+"}+	c #454646",
+"|+	c #707070",
+"1+	c #F7FCFC",
+"2+	c #48A1EC",
+"3+	c #047FF8",
+"4+	c #067EF9",
+"5+	c #C5E6F6",
+"6+	c #FBFEFC",
+"7+	c #2A292A",
+"8+	c #060504",
+"9+	c #9B9E9E",
+"0+	c #FAFDFD",
+"a+	c #FFFCF6",
+"b+	c #BBBBBB",
+"c+	c #FFFFFE",
+"d+	c #FBFBFC",
+"e+	c #E8F5F6",
+"f+	c #F3FEFE",
+"g+	c #CFCFCF",
+"h+	c #262626",
+"i+	c #B4DCF4",
+"j+	c #067FF3",
+"k+	c #0180FD",
+"l+	c #0380FC",
+"m+	c #73B4EC",
+"n+	c #FDFFFE",
+"o+	c #FCFBFB",
+"p+	c #9DCEF2",
+"q+	c #057FFB",
+"r+	c #0280FB",
+"s+	c #037EFE",
+"t+	c #0380FB",
+"u+	c #86BEEE",
+"v+	c #CCCDCD",
+"w+	c #7EBDEE",
+"x+	c #047FFA",
+"y+	c #0280FC",
+"z+	c #047EFE",
+"A+	c #9ECCF3",
+"B+	c #4D4D4C",
+"C+	c #171717",
+"D+	c #CCCBCA",
+"E+	c #FDFCFB",
+"F+	c #F9FCFB",
+"G+	c #E8F5F8",
+"H+	c #818181",
+"I+	c #5E5E5E",
+"J+	c #FEFFFD",
+"K+	c #A5C8E3",
+"L+	c #75B6E9",
+"M+	c #F6FBFB",
+"N+	c #FBFCFB",
+"O+	c #F0EFEC",
+"P+	c #3C3C3C",
+"Q+	c #5F5F5F",
+"R+	c #FFFEFB",
+"S+	c #9ACCF5",
+"T+	c #0182FB",
+"U+	c #037DFE",
+"V+	c #0180FC",
+"W+	c #0581F8",
+"X+	c #A6D4F3",
+"Y+	c #FBFEF6",
+"Z+	c #FCFEFD",
+"`+	c #F9FCFF",
+" @	c #3898E9",
+".@	c #017EFF",
+"+@	c #0181FA",
+"@@	c #0180FE",
+"#@	c #2990EE",
+"$@	c #F2FDFE",
+"%@	c #FDFEFA",
+"&@	c #FEFEFC",
+"*@	c #FDFDF9",
+"=@	c #C1E2F4",
+"-@	c #097EF1",
+";@	c #0080FF",
+">@	c #7EBBEF",
+",@	c #FBFDFC",
+"'@	c #8A8A8A",
+")@	c #030201",
+"!@	c #3D3A39",
+"~@	c #FDFEFD",
+"{@	c #FEFCF7",
+"]@	c #F4FCFC",
+"^@	c #88C3ED",
+"/@	c #79B5EA",
+"(@	c #7F7F7F",
+"_@	c #9B9B9B",
+":@	c #404040",
+"<@	c #424242",
+"[@	c #FDFEFC",
+"}@	c #A4D3F0",
+"|@	c #087EF6",
+"1@	c #4DA1EA",
+"2@	c #E6F4FB",
+"3@	c #FDFCF6",
+"4@	c #F6FEFE",
+"5@	c #72B1E9",
+"6@	c #0181FC",
+"7@	c #037EFF",
+"8@	c #0281F8",
+"9@	c #1B83ED",
+"0@	c #D2E9F5",
+"a@	c #FCFDF8",
+"b@	c #C0E0F3",
+"c@	c #0C7DF9",
+"d@	c #0282F9",
+"e@	c #037DFF",
+"f@	c #0380FE",
+"g@	c #057EF8",
+"h@	c #ABD2F2",
+"i@	c #FFFDFF",
+"j@	c #FBFFFA",
+"k@	c #DEF0F6",
+"l@	c #288BEE",
+"m@	c #0180FF",
+"n@	c #0081FE",
+"o@	c #60ADED",
+"p@	c #FAFDFC",
+"q@	c #FDFDFB",
+"r@	c #9F9E9F",
+"s@	c #616165",
+"t@	c #EBF1ED",
+"u@	c #FAFDFB",
+"v@	c #EFF8F9",
+"w@	c #6BB5F0",
+"x@	c #067EF7",
+"y@	c #90C4F2",
+"z@	c #6A6A6A",
+"A@	c #121212",
+"B@	c #909090",
+"C@	c #BFBFBF",
+"D@	c #444444",
+"E@	c #393939",
+"F@	c #FCFDF6",
+"G@	c #B3D4EE",
+"H@	c #0280FA",
+"I@	c #3596EE",
+"J@	c #CAE7F6",
+"K@	c #EEEEEE",
+"L@	c #FDFFFF",
+"M@	c #56A9F0",
+"N@	c #0281FB",
+"O@	c #017FFF",
+"P@	c #0081FC",
+"Q@	c #0280FE",
+"R@	c #3790EC",
+"S@	c #EDF9F7",
+"T@	c #FCFAFD",
+"U@	c #61B3F1",
+"V@	c #037FFD",
+"W@	c #489EEC",
+"X@	c #F5FCFD",
+"Y@	c #FBFDF8",
+"Z@	c #F6F8FC",
+"`@	c #4EA2EF",
+" #	c #0080FE",
+".#	c #3192ED",
+"+#	c #F7FEFE",
+"@#	c #F7F7F4",
+"##	c #FDFAF8",
+"$#	c #E3F5F8",
+"%#	c #4499E8",
+"&#	c #0381F5",
+"*#	c #A6D3ED",
+"=#	c #2C2C2C",
+"-#	c #A1A1A1",
+";#	c #414141",
+">#	c #C4C4C4",
+",#	c #4A4A49",
+"'#	c #DEF3FA",
+")#	c #057FF6",
+"!#	c #1E8AF1",
+"~#	c #BDDEF3",
+"{#	c #288DF0",
+"]#	c #007FFF",
+"^#	c #0082F8",
+"/#	c #047DFE",
+"(#	c #0281F9",
+"_#	c #057EFA",
+":#	c #6FB4ED",
+"<#	c #F9FDFB",
+"[#	c #E0F0F6",
+"}#	c #1281F3",
+"|#	c #0281FC",
+"1#	c #4CA4EA",
+"2#	c #077EF7",
+"3#	c #037FFC",
+"4#	c #0880F4",
+"5#	c #CCE7F6",
+"6#	c #FBFDFD",
+"7#	c #86C2EE",
+"8#	c #057FF8",
+"9#	c #0380FD",
+"0#	c #1987F4",
+"a#	c #EDF7FB",
+"b#	c #FEFFFE",
+"c#	c #FEFEFB",
+"d#	c #C4E5F5",
+"e#	c #278AE6",
+"f#	c #B6D8F1",
+"g#	c #4A4A4A",
+"h#	c #646464",
+"i#	c #DEDEDE",
+"j#	c #FFFDFE",
+"k#	c #FDFEF7",
+"l#	c #CAC9C8",
+"m#	c #4D4F52",
+"n#	c #010203",
+"o#	c #050304",
+"p#	c #E4F2FC",
+"q#	c #0680F8",
+"r#	c #0180FB",
+"s#	c #0F7EF0",
+"t#	c #9BCDED",
+"u#	c #F9FCFE",
+"v#	c #FCFDF9",
+"w#	c #FDFFFC",
+"x#	c #E1F4F9",
+"y#	c #1183F0",
+"z#	c #067EFD",
+"A#	c #2D96EF",
+"B#	c #067EF6",
+"C#	c #087FF5",
+"D#	c #A6D3F2",
+"E#	c #80BFF1",
+"F#	c #067FF8",
+"G#	c #1883EB",
+"H#	c #E4F9FC",
+"I#	c #3E9AF1",
+"J#	c #017FFE",
+"K#	c #0380F8",
+"L#	c #72B5F0",
+"M#	c #BBE0F4",
+"N#	c #0F83F7",
+"O#	c #2E94F0",
+"P#	c #087DF9",
+"Q#	c #037FFA",
+"R#	c #087DF2",
+"S#	c #D7EEF8",
+"T#	c #F9FEFE",
+"U#	c #FAFDFA",
+"V#	c #A0CFF1",
+"W#	c #1688F4",
+"X#	c #057FF9",
+"Y#	c #047FF9",
+"Z#	c #E4F3FB",
+"`#	c #4E4F4F",
+" $	c #C9C9C4",
+".$	c #F1F1F1",
+"+$	c #8E8E8E",
+"@$	c #FFFCFD",
+"#$	c #FCFFFA",
+"$$	c #FAFEFB",
+"%$	c #D0CFCE",
+"&$	c #555357",
+"*$	c #040405",
+"=$	c #F4FBFD",
+"-$	c #238CF1",
+";$	c #027EFE",
+">$	c #0184FC",
+",$	c #62AEEC",
+"'$	c #F6FCFE",
+")$	c #D9EDF7",
+"!$	c #097DF3",
+"~$	c #067EF8",
+"{$	c #E5F7FB",
+"]$	c #429BE9",
+"^$	c #0E81F0",
+"/$	c #178BF7",
+"($	c #0181FE",
+"_$	c #7AB7EE",
+":$	c #FAFEF9",
+"<$	c #A0CCEE",
+"[$	c #047EFB",
+"}$	c #0E83F2",
+"|$	c #1A8AF0",
+"1$	c #037FFE",
+"2$	c #1D89EF",
+"3$	c #DCF4FB",
+"4$	c #268BEC",
+"5$	c #027FFE",
+"6$	c #057EF9",
+"7$	c #B3D7F4",
+"8$	c #F6FBFE",
+"9$	c #7CBBF0",
+"0$	c #097CF7",
+"a$	c #067FF5",
+"b$	c #FBFDFF",
+"c$	c #FCFEF9",
+"d$	c #FDFEFB",
+"e$	c #FFFEFF",
+"f$	c #FEFCFC",
+"g$	c #FDFFF9",
+"h$	c #E6EFF3",
+"i$	c #F9FBF9",
+"j$	c #FEFBF8",
+"k$	c #F9FEFF",
+"l$	c #FDFEF8",
+"m$	c #DDDCDB",
+"n$	c #787878",
+"o$	c #101010",
+"p$	c #F8FEFE",
+"q$	c #328EEA",
+"r$	c #0081FD",
+"s$	c #0081FB",
+"t$	c #077EF8",
+"u$	c #479AE9",
+"v$	c #DEF2FA",
+"w$	c #A2D0F2",
+"x$	c #248AEF",
+"y$	c #F2FBFA",
+"z$	c #D8F0F9",
+"A$	c #1C89ED",
+"B$	c #027FFF",
+"C$	c #037FFB",
+"D$	c #0B80F6",
+"E$	c #D2E9F3",
+"F$	c #EDFAFB",
+"G$	c #1A87EF",
+"H$	c #0B81F4",
+"I$	c #BEDFF3",
+"J$	c #F8FCF9",
+"K$	c #3D98ED",
+"L$	c #027FFB",
+"M$	c #027FFA",
+"N$	c #9ACCF4",
+"O$	c #E3F1F7",
+"P$	c #58A9EE",
+"Q$	c #0380F7",
+"R$	c #0081FA",
+"S$	c #1E89EE",
+"T$	c #EEF9FD",
+"U$	c #0A0A0A",
+"V$	c #5A5A5A",
+"W$	c #D0D0D0",
+"X$	c #FAFCF7",
+"Y$	c #EDF6FA",
+"Z$	c #FAFBFD",
+"`$	c #4F4F4F",
+" %	c #CDCECC",
+".%	c #63A5E3",
+"+%	c #66B3EE",
+"@%	c #D6ECF7",
+"#%	c #FCFEFB",
+"$%	c #EBEBEB",
+"%%	c #E7E7E6",
+"&%	c #FEFFFC",
+"*%	c #F2FFFF",
+"=%	c #3B93EA",
+"-%	c #0380F5",
+";%	c #0181FB",
+">%	c #2E90F1",
+",%	c #5BABF1",
+"'%	c #3E92E8",
+")%	c #F4FDFE",
+"!%	c #ACD4EF",
+"~%	c #0780F5",
+"{%	c #4C9FED",
+"]%	c #78B7EE",
+"^%	c #037FFF",
+"/%	c #0282FA",
+"(%	c #8CC1F0",
+"_%	c #F8FCFC",
+":%	c #6DB3F3",
+"<%	c #027FFD",
+"[%	c #0280FD",
+"}%	c #419CEB",
+"|%	c #3095F2",
+"1%	c #047FFC",
+"2%	c #067FF7",
+"3%	c #308FEA",
+"4%	c #E8E8E7",
+"5%	c #D4D4D4",
+"6%	c #E3F8FC",
+"7%	c #8EC0ED",
+"8%	c #53A2E6",
+"9%	c #717173",
+"0%	c #A0D0EF",
+"a%	c #0B7DF5",
+"b%	c #1084F5",
+"c%	c #69AEEA",
+"d%	c #D4ECF6",
+"e%	c #F8FDFC",
+"f%	c #FDFAFA",
+"g%	c #67B0F7",
+"h%	c #0381F9",
+"i%	c #5FB0EC",
+"j%	c #5DAAED",
+"k%	c #067DF8",
+"l%	c #67B1F4",
+"m%	c #FCFEFC",
+"n%	c #F8FDFB",
+"o%	c #75B6EC",
+"p%	c #0680F7",
+"q%	c #AED5F4",
+"r%	c #D8EEF7",
+"s%	c #1181F3",
+"t%	c #4AA1ED",
+"u%	c #F5FBFD",
+"v%	c #8DC5F0",
+"w%	c #0081FF",
+"x%	c #0480F9",
+"y%	c #3B97F0",
+"z%	c #5AABE8",
+"A%	c #0182FE",
+"B%	c #358EE9",
+"C%	c #F5FEFE",
+"D%	c #FEFFFB",
+"E%	c #FAFEFA",
+"F%	c #D7EBF7",
+"G%	c #6DB3ED",
+"H%	c #1D88EE",
+"I%	c #87C3F0",
+"J%	c #FCFDFB",
+"K%	c #F8F9F8",
+"L%	c #ECF9F9",
+"M%	c #1C88F6",
+"N%	c #0E80ED",
+"O%	c #62ACF0",
+"P%	c #FBFFFB",
+"Q%	c #FCFEFA",
+"R%	c #68B0F0",
+"S%	c #057DFE",
+"T%	c #449FF2",
+"U%	c #F8FAF9",
+"V%	c #90CAF1",
+"W%	c #087DF4",
+"X%	c #017FFD",
+"Y%	c #80BCEE",
+"Z%	c #FEFEFA",
+"`%	c #FDFCFD",
+" &	c #EFFAFA",
+".&	c #489CED",
+"+&	c #3193F1",
+"@&	c #F2FAFC",
+"#&	c #FCFBFE",
+"$&	c #52A3EE",
+"%&	c #0083F9",
+"&&	c #288EF5",
+"*&	c #DDEDF6",
+"=&	c #AED6EF",
+"-&	c #60A8EA",
+";&	c #F3FBFA",
+">&	c #73B8EB",
+",&	c #61AFF5",
+"'&	c #FBFFFD",
+")&	c #D4ECF7",
+"!&	c #62ADEF",
+"~&	c #0A82F4",
+"{&	c #037EFC",
+"]&	c #D8ECF6",
+"^&	c #FDFDFE",
+"/&	c #3F3F3F",
+"(&	c #020203",
+"_&	c #C7C7C5",
+":&	c #FEFEF8",
+"<&	c #63ACE9",
+"[&	c #0380FA",
+"}&	c #0A7FF1",
+"|&	c #5AAAF1",
+"1&	c #CDE7F5",
+"2&	c #FAFBFA",
+"3&	c #FDFBF9",
+"4&	c #82C1EC",
+"5&	c #047FFB",
+"6&	c #057FFA",
+"7&	c #3298F3",
+"8&	c #A8D4F0",
+"9&	c #1787F2",
+"0&	c #067DFB",
+"a&	c #037EFD",
+"b&	c #A9D3EE",
+"c&	c #FAFFFD",
+"d&	c #DBEDF8",
+"e&	c #1484F5",
+"f&	c #8BC3EB",
+"g&	c #B7DCF1",
+"h&	c #1481F5",
+"i&	c #B7DCF4",
+"j&	c #FBFDF6",
+"k&	c #FAFEFF",
+"l&	c #DBEFF8",
+"m&	c #0781F6",
+"n&	c #92C8F0",
+"o&	c #F7FCFD",
+"p&	c #6CB6F1",
+"q&	c #0180FA",
+"r&	c #FEFBFE",
+"s&	c #CFE9F5",
+"t&	c #5CACF1",
+"u&	c #077EF6",
+"v&	c #047EFD",
+"w&	c #4DA5F0",
+"x&	c #FCFCFD",
+"y&	c #D9D9D9",
+"z&	c #6B6A68",
+"A&	c #FCFFFD",
+"B&	c #BBDCF6",
+"C&	c #077FF5",
+"D&	c #51A6EE",
+"E&	c #B2D6F2",
+"F&	c #98CCEB",
+"G&	c #0480FA",
+"H&	c #2491F2",
+"I&	c #F6FCFD",
+"J&	c #FCFFFB",
+"K&	c #C8E5F5",
+"L&	c #2F94EE",
+"M&	c #0381FB",
+"N&	c #057DFD",
+"O&	c #CBE6F4",
+"P&	c #FEFEF9",
+"Q&	c #A5D6F1",
+"R&	c #1A84EA",
+"S&	c #E3F3F7",
+"T&	c #FFFEFD",
+"U&	c #F6F9F9",
+"V&	c #328FEA",
+"W&	c #82BBEB",
+"X&	c #FBFEFE",
+"Y&	c #FFFEFC",
+"Z&	c #ECF7FA",
+"`&	c #0E7FF0",
+" *	c #1888F3",
+".*	c #B9DCF2",
+"+*	c #FBFEFD",
+"@*	c #4099F1",
+"#*	c #74BBF2",
+"$*	c #C6E6F6",
+"%*	c #57A9ED",
+"&*	c #097EF8",
+"**	c #057EFB",
+"=*	c #A3CEF0",
+"-*	c #858581",
+";*	c #505050",
+">*	c #CCCCCC",
+",*	c #8F8F8F",
+"'*	c #626262",
+")*	c #F6F6F6",
+"!*	c #EEF9FB",
+"~*	c #1F89F2",
+"{*	c #047EFA",
+"]*	c #0281FE",
+"^*	c #1588F4",
+"/*	c #0480FB",
+"(*	c #0A7FED",
+"_*	c #EAF7FB",
+":*	c #FCFFFF",
+"<*	c #FFFEFA",
+"[*	c #E0F5FA",
+"}*	c #489EE7",
+"|*	c #0F81F2",
+"1*	c #E6F4FA",
+"2*	c #C2DFEC",
+"3*	c #FDFFFB",
+"4*	c #C4E3EF",
+"5*	c #EFFBFB",
+"6*	c #F6FFFD",
+"7*	c #3795EF",
+"8*	c #3898F0",
+"9*	c #CEE6F2",
+"0*	c #389BF4",
+"a*	c #168AF7",
+"b*	c #0C7FF2",
+"c*	c #0183FD",
+"d*	c #1584F4",
+"e*	c #E7F5FA",
+"f*	c #F9FDFC",
+"g*	c #FDFAFB",
+"h*	c #2C2C2B",
+"i*	c #BEBEBE",
+"j*	c #EDEDED",
+"k*	c #727272",
+"l*	c #A2A2A2",
+"m*	c #E5E5E5",
+"n*	c #858585",
+"o*	c #474747",
+"p*	c #1D1D1D",
+"q*	c #A9A9A9",
+"r*	c #6EB2EE",
+"s*	c #0D7DED",
+"t*	c #E6F8F9",
+"u*	c #FEFCF9",
+"v*	c #F5FCFB",
+"w*	c #3192E6",
+"x*	c #FFFDFC",
+"y*	c #52A1EC",
+"z*	c #5AA5EA",
+"A*	c #E4F5FA",
+"B*	c #F5FDFE",
+"C*	c #1C88EB",
+"D*	c #0282F7",
+"E*	c #1A89F0",
+"F*	c #057EFD",
+"G*	c #55A5F0",
+"H*	c #F7FDFA",
+"I*	c #FCFAF9",
+"J*	c #D5D6D5",
+"K*	c #111111",
+"L*	c #777777",
+"M*	c #E6E6E6",
+"N*	c #C2C2C2",
+"O*	c #E7E7E7",
+"P*	c #D7D7D7",
+"Q*	c #797979",
+"R*	c #CAE4F3",
+"S*	c #087EF5",
+"T*	c #B5DDF2",
+"U*	c #93CAF2",
+"V*	c #248CF1",
+"W*	c #0080FD",
+"X*	c #077EF9",
+"Y*	c #BFDFF1",
+"Z*	c #F8FCFE",
+"`*	c #CBDFEA",
+" =	c #F5FEFD",
+".=	c #FEFFF8",
+"+=	c #FFFDFD",
+"@=	c #C4E1F3",
+"#=	c #F6FCF9",
+"$=	c #FEFFFA",
+"%=	c #EEFCFE",
+"&=	c #0A7EEC",
+"*=	c #258BF2",
+"==	c #90CAF0",
+"-=	c #D9F0F5",
+";=	c #A9D5F1",
+">=	c #A4A3A5",
+",=	c #6A6A69",
+"'=	c #2B2B2B",
+")=	c #5D5D5D",
+"!=	c #FDFAFD",
+"~=	c #F8FEFC",
+"{=	c #3497F4",
+"]=	c #057EFC",
+"^=	c #5BA8ED",
+"/=	c #F8FDFE",
+"(=	c #F6FCFB",
+"_=	c #9ECBF1",
+":=	c #3699EF",
+"<=	c #0980F2",
+"[=	c #ADD8F7",
+"}=	c #FEFDFC",
+"|=	c #FFFFFB",
+"1=	c #FFFFFD",
+"2=	c #E8FAFC",
+"3=	c #107BF2",
+"4=	c #2890F1",
+"5=	c #9ACBEE",
+"6=	c #F3FDFD",
+"7=	c #87C2F0",
+"8=	c #1989F1",
+"9=	c #E5F6FB",
+"0=	c #FAFEFD",
+"a=	c #F6FDFE",
+"b=	c #6C6C6C",
+"c=	c #A6A6A6",
+"d=	c #FFFFFA",
+"e=	c #E8F0F4",
+"f=	c #539CE1",
+"g=	c #72B8F0",
+"h=	c #A2D3EE",
+"i=	c #D9EDF8",
+"j=	c #F0F9F8",
+"k=	c #FCFEF8",
+"l=	c #FEFFF9",
+"m=	c #81C0F1",
+"n=	c #1583ED",
+"o=	c #EAF7FC",
+"p=	c #FBFDFA",
+"q=	c #F8FBFC",
+"r=	c #B9DDF6",
+"s=	c #4B9FF0",
+"t=	c #0881F7",
+"u=	c #AED4F1",
+"v=	c #FFFEF4",
+"w=	c #B7DBF2",
+"x=	c #0283FC",
+"y=	c #2E93F2",
+"z=	c #9ECEF1",
+"A=	c #F3F9FC",
+"B=	c #FAFFFE",
+"C=	c #3092EC",
+"D=	c #0181F9",
+"E=	c #75B6EE",
+"F=	c #FDFDFA",
+"G=	c #FAFCFE",
+"H=	c #F1FCFD",
+"I=	c #E1F1FA",
+"J=	c #B2D5F0",
+"K=	c #75B7F4",
+"L=	c #51A2E7",
+"M=	c #D8E7ED",
+"N=	c #E4E4E3",
+"O=	c #8CC6F1",
+"P=	c #057CFA",
+"Q=	c #0480F8",
+"R=	c #057DF9",
+"S=	c #2088F3",
+"T=	c #53A5F0",
+"U=	c #7FBDEF",
+"V=	c #B8DCF2",
+"W=	c #E1F0F8",
+"X=	c #F4FFF9",
+"Y=	c #FEFBF9",
+"Z=	c #CDEAF5",
+"`=	c #0982F4",
+" -	c #A4CEF2",
+".-	c #FEFDFF",
+"+-	c #C0DFF5",
+"@-	c #50A1ED",
+"#-	c #80B7E2",
+"$-	c #BDDCF2",
+"%-	c #3792EE",
+"&-	c #A4D0F1",
+"*-	c #F2FBFC",
+"=-	c #FDFEF9",
+"--	c #D6EAF4",
+";-	c #0680F9",
+">-	c #BDDEF4",
+",-	c #F7FEFF",
+"'-	c #E3F6FC",
+")-	c #BCDBF2",
+"!-	c #8AC4F1",
+"~-	c #53A5EB",
+"{-	c #2790EF",
+"]-	c #077FF4",
+"^-	c #0480F7",
+"/-	c #7ABAEF",
+"(-	c #FBFCFC",
+"_-	c #505152",
+":-	c #49A4EB",
+"<-	c #057EF7",
+"[-	c #0D83F1",
+"}-	c #228CF2",
+"|-	c #5EAAEE",
+"1-	c #8AC5F1",
+"2-	c #1385F6",
+"3-	c #51A8F1",
+"4-	c #F9FDF9",
+"5-	c #EBF8F8",
+"6-	c #F6F9FB",
+"7-	c #F0FBF7",
+"8-	c #7CBCEF",
+"9-	c #1384F2",
+"0-	c #86C3EF",
+"a-	c #60ACEE",
+"b-	c #3594EA",
+"c-	c #1584EF",
+"d-	c #2F8FEE",
+"e-	c #EAF6F8",
+"f-	c #020302",
+"g-	c #B7B5B7",
+"h-	c #D0E9F6",
+"i-	c #1380F1",
+"j-	c #0281F7",
+"k-	c #0E80F2",
+"l-	c #EBF4F9",
+"m-	c #FDFEFF",
+"n-	c #F7FEFB",
+"o-	c #2B91EE",
+"p-	c #0E81F5",
+"q-	c #BBE0F5",
+"r-	c #C5C5C5",
+"s-	c #191919",
+"t-	c #ECECEC",
+"u-	c #FCFDFF",
+"v-	c #8DC6F1",
+"w-	c #0082FE",
+"x-	c #0280F9",
+"y-	c #057DFB",
+"z-	c #99CDEF",
+"A-	c #C1DDF4",
+"B-	c #0082FC",
+"C-	c #047DFF",
+"D-	c #047FF7",
+"E-	c #74B5E8",
+"F-	c #EEEBEF",
+"G-	c #272728",
+"H-	c #FEFCFD",
+"I-	c #F1FAFA",
+"J-	c #409DF0",
+"K-	c #54AAEF",
+"L-	c #72B3EB",
+"M-	c #3995EB",
+"N-	c #1685F2",
+"O-	c #0480FC",
+"P-	c #3995EF",
+"Q-	c #67B3EE",
+"R-	c #0380F9",
+"S-	c #0281FA",
+"T-	c #1281EF",
+"U-	c #2B8EEA",
+"V-	c #61ACF0",
+"W-	c #6AB4EA",
+"X-	c #0481F9",
+"Y-	c #027EFB",
+"Z-	c #3992EC",
+"`-	c #EDFBFD",
+" ;	c #6E716F",
+".;	c #010000",
+"+;	c #FEFBFA",
+"@;	c #D1EBF8",
+"#;	c #1A86ED",
+"$;	c #0181FF",
+"%;	c #3090ED",
+"&;	c #F6FDFD",
+"*;	c #EAF6F7",
+"=;	c #C1DFF2",
+"-;	c #8EC7F0",
+";;	c #61AEF4",
+">;	c #3090EC",
+",;	c #0682F7",
+"';	c #0E7FEF",
+");	c #D5EBF5",
+"!;	c #FBFFFE",
+"~;	c #1F89F1",
+"{;	c #097DF4",
+"];	c #2B8FEC",
+"^;	c #55A6F2",
+"/;	c #81BEF0",
+"(;	c #E1F1F6",
+"_;	c #F3FDFC",
+":;	c #F6FCF7",
+"<;	c #52A4E8",
+"[;	c #0A7FF6",
+"};	c #BADDF3",
+"|;	c #C7CACA",
+"1;	c #EDEEED",
+"2;	c #91C7EF",
+"3;	c #0580F6",
+"4;	c #6CB3EC",
+"5;	c #FAFEFC",
+"6;	c #DFF1FA",
+"7;	c #B4D7ED",
+"8;	c #CAE3ED",
+"9;	c #FDFBFA",
+"0;	c #EAF6F9",
+"a;	c #AED1E7",
+"b;	c #DDF1F9",
+"c;	c #F6FFFE",
+"d;	c #F7FFFF",
+"e;	c #FFFCFC",
+"f;	c #9FCCEE",
+"g;	c #71B5EE",
+"h;	c #FBFCFA",
+"i;	c #303030",
+"j;	c #434343",
+"k;	c #B6B6B6",
+"l;	c #F2F2F2",
+"m;	c #F9FFFD",
+"n;	c #F1FBF8",
+"o;	c #3F98E7",
+"p;	c #0480FD",
+"q;	c #0A82F1",
+"r;	c #C6E5F7",
+"s;	c #FEFDF8",
+"t;	c #FCFBF7",
+"u;	c #FEFBF5",
+"v;	c #FDFBFB",
+"w;	c #FCFFFC",
+"x;	c #E5F3F9",
+"y;	c #1586F2",
+"z;	c #2A91F3",
+"A;	c #EAF4FC",
+"B;	c #FBFEFA",
+"C;	c #F0F0F0",
+"D;	c #575757",
+"E;	c #CCE8F7",
+"F;	c #157EEB",
+"G;	c #3595EF",
+"H;	c #F0F8FA",
+"I;	c #F8FDF7",
+"J;	c #5AA9F0",
+"K;	c #0683F9",
+"L;	c #C1DFF6",
+"M;	c #929292",
+"N;	c #545454",
+"O;	c #E4F2FA",
+"P;	c #E3F2FB",
+"Q;	c #E4F1FB",
+"R;	c #E2F2FA",
+"S;	c #CAE3F5",
+"T;	c #A3D1EF",
+"U;	c #A7D2EC",
+"V;	c #45A2F0",
+"W;	c #007FFD",
+"X;	c #79BDEE",
+"Y;	c #FFFFFC",
+"Z;	c #A0D1EF",
+"`;	c #3B9AEA",
+" >	c #A2D1F2",
+".>	c #A5D1EE",
+"+>	c #C8E2F4",
+"@>	c #E3F2FC",
+"#>	c #E4F2FB",
+"$>	c #F3FDFE",
+"%>	c #7C7C7C",
+"&>	c #515151",
+"*>	c #F2FAFA",
+"=>	c #59A0E2",
+"->	c #0680F2",
+";>	c #077FF6",
+">>	c #0C81F3",
+",>	c #BDDFF3",
+"'>	c #F8FEFD",
+")>	c #E0F1F8",
+"!>	c #1C8AF0",
+"~>	c #067DFA",
+"{>	c #097EF4",
+"]>	c #5C9FE0",
+"^>	c #F0F8F7",
+"/>	c #494949",
+"(>	c #DFDFDF",
+"_>	c #E2F2F9",
+":>	c #5BACEF",
+"<>	c #3291ED",
+"[>	c #EDF6FB",
+"}>	c #F7F9FD",
+"|>	c #50A4ED",
+"1>	c #0082F9",
+"2>	c #3897EC",
+"3>	c #DEF3F9",
+"4>	c #F5F6F5",
+"5>	c #DCDCDC",
+"6>	c #F7FBFD",
+"7>	c #64AFE9",
+"8>	c #0280FF",
+"9>	c #097EF2",
+"0>	c #107CE9",
+"a>	c #0F7DEC",
+"b>	c #86B9E3",
+"c>	c #B1D6E9",
+"d>	c #117CE7",
+"e>	c #0E7DEB",
+"f>	c #0B7CF5",
+"g>	c #047DFA",
+"h>	c #097CFA",
+"i>	c #0381FA",
+"j>	c #0382FB",
+"k>	c #087CFC",
+"l>	c #4294EE",
+"m>	c #E4F4F9",
+"n>	c #FFFEF7",
+"o>	c #F4F3F4",
+"p>	c #484847",
+"q>	c #D9D8D9",
+"r>	c #F6FEFC",
+"s>	c #6FAFEB",
+"t>	c #3B99ED",
+"u>	c #BBDDF5",
+"v>	c #C1DDF3",
+"w>	c #C1DEF5",
+"x>	c #C0DEF6",
+"y>	c #C1DEF2",
+"z>	c #C1DEF4",
+"A>	c #DCF0F9",
+"B>	c #EFFEFD",
+"C>	c #F1FEFD",
+"D>	c #F4FEFD",
+"E>	c #F5FDFF",
+"F>	c #EFFEFF",
+"G>	c #F3FFFD",
+"H>	c #E5FAFA",
+"I>	c #C4DFF4",
+"J>	c #C0DEF5",
+"K>	c #C2DFF3",
+"L>	c #C2DEF1",
+"M>	c #BFDEF5",
+"N>	c #BFDEF1",
+"O>	c #66B3F0",
+"P>	c #67B2EC",
+"Q>	c #F7FDF7",
+"R>	c #2F2C2F",
+"S>	c #020103",
+"T>	c #F7FEFD",
+"U>	c #70B3EC",
+"V>	c #0D80F3",
+"W>	c #78B8ED",
+"X>	c #A9D3F2",
+"Y>	c #1082F2",
+"Z>	c #6EB3E8",
+"`>	c #F5FDFC",
+" ,	c #A2D3F3",
+".,	c #0B84F2",
+"+,	c #0581F9",
+"@,	c #73B5ED",
+"#,	c #FCFFF9",
+"$,	c #78B9F0",
+"%,	c #087EF7",
+"&,	c #74B7EC",
+"*,	c #F6FCFA",
+"=,	c #FFFDFA",
+"-,	c #D4D3D3",
+";,	c #1B1B1B",
+">,	c #A5A5A5",
+",,	c #F9FEFC",
+"',	c #ACD4F1",
+"),	c #1081F3",
+"!,	c #53A4EA",
+"~,	c #E9F6F9",
+"{,	c #F9FBFE",
+"],	c #F8FFFC",
+"^,	c #F9FCF9",
+"/,	c #EEF7F9",
+"(,	c #CCE4F2",
+"_,	c #C7E4F3",
+":,	c #ECF9FB",
+"<,	c #F7FFFE",
+"[,	c #FDFCF8",
+"},	c #FFFBFB",
+"|,	c #F2FDFC",
+"1,	c #6FB8ED",
+"2,	c #087DF7",
+"3,	c #1081F0",
+"4,	c #95C9EE",
+"5,	c #F6FBFD",
+"6,	c #B5B5B6",
+"7,	c #1B1918",
+"8,	c #010100",
+"9,	c #010200",
+"0,	c #2A2C2A",
+"a,	c #6B6B6B",
+"b,	c #EBEDEC",
+"c,	c #FBFCFE",
+"d,	c #ABD8F6",
+"e,	c #0381FC",
+"f,	c #3F98E9",
+"g,	c #EBF7FA",
+"h,	c #81B7E6",
+"i,	c #3697EB",
+"j,	c #1583F0",
+"k,	c #1184F6",
+"l,	c #1384F5",
+"m,	c #0D84F7",
+"n,	c #1184F5",
+"o,	c #1284F5",
+"p,	c #3994EC",
+"q,	c #97C7EC",
+"r,	c #F9FEFD",
+"s,	c #F5FFF7",
+"t,	c #70B2EC",
+"u,	c #0D82F3",
+"v,	c #A7D6F5",
+"w,	c #6C6C6A",
+"x,	c #2B2B2D",
+"y,	c #030202",
+"z,	c #030000",
+"A,	c #000201",
+"B,	c #D9D9DA",
+"C,	c #FDFBFD",
+"D,	c #FEFBFD",
+"E,	c #F6FCFC",
+"F,	c #B4E0F6",
+"G,	c #0082F7",
+"H,	c #3697ED",
+"I,	c #E7F3F6",
+"J,	c #F8FBFB",
+"K,	c #E4F3FA",
+"L,	c #A1CBEE",
+"M,	c #61ADEF",
+"N,	c #3495EE",
+"O,	c #2889E1",
+"P,	c #F2FBFD",
+"Q,	c #F4FEFE",
+"R,	c #8EC2EF",
+"S,	c #90C3ED",
+"T,	c #F0F7F8",
+"U,	c #0C7EEC",
+"V,	c #3594EF",
+"W,	c #61ACF3",
+"X,	c #9CCDEF",
+"Y,	c #E1F3FA",
+"Z,	c #F6FDFB",
+"`,	c #67A9E6",
+" '	c #9DCEF0",
+".'	c #E6E9E9",
+"+'	c #9B9D9E",
+"@'	c #5F5F60",
+"#'	c #232221",
+"$'	c #464646",
+"%'	c #F6FEFD",
+"&'	c #EFFAFC",
+"*'	c #C4DFF1",
+"='	c #82C1F2",
+"-'	c #4199EA",
+";'	c #0E82F4",
+">'	c #3B97EA",
+",'	c #D5EBF6",
+"''	c #D3E8F5",
+")'	c #379AF0",
+"!'	c #D1E7F5",
+"~'	c #DDF0F8",
+"{'	c #1883F0",
+"]'	c #1C87F0",
+"^'	c #DEF0F7",
+"/'	c #B8DEF3",
+"('	c #0480F5",
+"_'	c #077FF3",
+":'	c #3899ED",
+"<'	c #87C1F0",
+"['	c #D2E9F7",
+"}'	c #F7FDFD",
+"|'	c #C9E5F6",
+"1'	c #2E8FF1",
+"2'	c #0282FD",
+"3'	c #0C81F2",
+"4'	c #3D9BEE",
+"5'	c #74BAF2",
+"6'	c #C1E0F4",
+"7'	c #EBF7F9",
+"8'	c #D2D2D2",
+"9'	c #878787",
+"0'	c #454545",
+"a'	c #070707",
+"b'	c #2E2E2E",
+"c'	c #B8B8B8",
+"d'	c #D5EBF8",
+"e'	c #8EC6F0",
+"f'	c #52A5F1",
+"g'	c #228AEE",
+"h'	c #027EFD",
+"i'	c #72B4ED",
+"j'	c #F0F8FB",
+"k'	c #FCFBFA",
+"l'	c #E7F4F8",
+"m'	c #93C5EC",
+"n'	c #3997EF",
+"o'	c #0A7FEC",
+"p'	c #2691EE",
+"q'	c #B5D5EF",
+"r'	c #FBFFFC",
+"s'	c #97C9EF",
+"t'	c #1081EE",
+"u'	c #A9D1F0",
+"v'	c #ACD1F1",
+"w'	c #2B8EF1",
+"x'	c #0B7DF3",
+"y'	c #489EF2",
+"z'	c #A1CDF1",
+"A'	c #E8F3F9",
+"B'	c #F9FDFE",
+"C'	c #EDF9F8",
+"D'	c #73B3EC",
+"E'	c #097FF2",
+"F'	c #1786F3",
+"G'	c #449FEF",
+"H'	c #8EC4EE",
+"I'	c #CEE5F6",
+"J'	c #F1FDFE",
+"K'	c #F3F3F3",
+"L'	c #7B7B7B",
+"M'	c #E5F6FC",
+"N'	c #AAD2F1",
+"O'	c #68B3F2",
+"P'	c #288CEE",
+"Q'	c #087FF7",
+"R'	c #1C8AEF",
+"S'	c #AFD7F2",
+"T'	c #D0E9F8",
+"U'	c #6AB2EE",
+"V'	c #1887F3",
+"W'	c #047FFD",
+"X'	c #258BEF",
+"Y'	c #64B1EE",
+"Z'	c #ABD4F1",
+"`'	c #E1F1F8",
+" )	c #FCFCFE",
+".)	c #F8FFFB",
+"+)	c #F5FCFA",
+"@)	c #7EBFF1",
+"#)	c #0D7FF5",
+"$)	c #0F81F0",
+"%)	c #9ECFED",
+"&)	c #DAEFF9",
+"*)	c #A0D0F3",
+"=)	c #65AEEE",
+"-)	c #258CEF",
+";)	c #027FF9",
+">)	c #1B87ED",
+",)	c #77BAF0",
+"')	c #D1E8F6",
+"))	c #FBFEFB",
+"!)	c #F8FEFB",
+"~)	c #A1CDF3",
+"{)	c #1381F4",
+"])	c #027EFF",
+"^)	c #288CEA",
+"/)	c #5BABF3",
+"()	c #A7D2F1",
+"_)	c #DBEFF7",
+":)	c #EBF1F4",
+"<)	c #6CACE0",
+"[)	c #0880F3",
+"})	c #0082FD",
+"|)	c #DAEEF7",
+"1)	c #D2E7F8",
+"2)	c #5BAAF0",
+"3)	c #0C81F6",
+"4)	c #0083FD",
+"5)	c #268FEB",
+"6)	c #6FB5EC",
+"7)	c #CEE8F6",
+"8)	c #F2FAFD",
+"9)	c #F1FCFE",
+"0)	c #F8FCFB",
+"a)	c #51A6F5",
+"b)	c #127FE9",
+"c)	c #057FF7",
+"d)	c #077FF9",
+"e)	c #127DEA",
+"f)	c #4FA5F2",
+"g)	c #CBE5F6",
+"h)	c #FBFBFD",
+"i)	c #F4FCFE",
+"j)	c #C5DEF2",
+"k)	c #F1FDFF",
+"l)	c #F1FAFC",
+"m)	c #BFE2F5",
+"n)	c #70B5EA",
+"o)	c #278CF0",
+"p)	c #5FA7EF",
+"q)	c #CEE7F5",
+"r)	c #F6FDF9",
+"s)	c #CEECF4",
+"t)	c #2C8FF0",
+"u)	c #62A5E2",
+"v)	c #DDE7EC",
+"w)	c #3E3E3E",
+"x)	c #C6E7F7",
+"y)	c #3D9AEE",
+"z)	c #53A6F0",
+"A)	c #E5F4F6",
+"B)	c #DDF1FA",
+"C)	c #65ADEA",
+"D)	c #107FF2",
+"E)	c #62ADEC",
+"F)	c #BBDDF2",
+"G)	c #FEFAFC",
+"H)	c #E5F2F9",
+"I)	c #AAD3F4",
+"J)	c #6FB5ED",
+"K)	c #3893ED",
+"L)	c #0A80EC",
+"M)	c #087DFA",
+"N)	c #6AAEEE",
+"O)	c #F3FFFE",
+"P)	c #D1E7F7",
+"Q)	c #D0E6F4",
+"R)	c #F1FEFE",
+"S)	c #FBFFF9",
+"T)	c #66B1EB",
+"U)	c #067FF9",
+"V)	c #0C7DEB",
+"W)	c #3395F3",
+"X)	c #6CB4EC",
+"Y)	c #A9D9F0",
+"Z)	c #E9F7FB",
+"`)	c #F6FFFF",
+" !	c #B1D7F2",
+".!	c #62ADEE",
+"+!	c #0E81F1",
+"@!	c #0A7EF4",
+"#!	c #6FB5F0",
+"$!	c #DEF0F8",
+"%!	c #4EA2EA",
+"&!	c #077DFC",
+"*!	c #0680F6",
+"=!	c #3B9AF2",
+"-!	c #B3D6F1",
+";!	c #F9FDFD",
+">!	c #D2D2D1",
+",!	c #DFDEDE",
+"'!	c #FBFDFB",
+")!	c #FAFBFC",
+"!!	c #B2DAF2",
+"~!	c #3093EB",
+"{!	c #59A9EE",
+"]!	c #F0FAFD",
+"^!	c #FFFDFB",
+"/!	c #F0FBFC",
+"(!	c #80BAEE",
+"_!	c #1385F0",
+":!	c #208AF0",
+"<!	c #7DBBEC",
+"[!	c #DBEBF5",
+"}!	c #FDFBF8",
+"|!	c #DBF1F7",
+"1!	c #95C8F0",
+"2!	c #48A1F0",
+"3!	c #1180F2",
+"4!	c #5FACF3",
+"5!	c #E4F2F8",
+"6!	c #56A4EE",
+"7!	c #1181EB",
+"8!	c #49A2EF",
+"9!	c #9AC7ED",
+"0!	c #E5F4F9",
+"a!	c #D6ECF9",
+"b!	c #6AB0EE",
+"c!	c #1182F2",
+"d!	c #1185F2",
+"e!	c #98CBF0",
+"f!	c #F1F9FC",
+"g!	c #59A8EB",
+"h!	c #328FE7",
+"i!	c #9BCEF1",
+"j!	c #FBFCF7",
+"k!	c #DEDDDC",
+"l!	c #6C6F71",
+"m!	c #0E0D0C",
+"n!	c #484848",
+"o!	c #ABABAB",
+"p!	c #888888",
+"q!	c #EFEEEF",
+"r!	c #F0FAFC",
+"s!	c #9CCEF1",
+"t!	c #2790EE",
+"u!	c #0681F9",
+"v!	c #68ADEB",
+"w!	c #F1FBFB",
+"x!	c #C5E3F5",
+"y!	c #3996EB",
+"z!	c #1284F2",
+"A!	c #6EB4EB",
+"B!	c #DFF2F9",
+"C!	c #FCFCF9",
+"D!	c #B7DCF2",
+"E!	c #56A4E8",
+"F!	c #1181F5",
+"G!	c #268BED",
+"H!	c #8AC6F1",
+"I!	c #DEF2F6",
+"J!	c #F8FDFD",
+"K!	c #E0F3F8",
+"L!	c #8AC4F0",
+"M!	c #208CF2",
+"N!	c #1785F4",
+"O!	c #55A5EE",
+"P!	c #B5DCF4",
+"Q!	c #F9FCFD",
+"R!	c #DAEEF9",
+"S!	c #72B3ED",
+"T!	c #0F85F4",
+"U!	c #3495ED",
+"V!	c #5CA9EC",
+"W!	c #1B85F3",
+"X!	c #8DC6ED",
+"Y!	c #EFF9FB",
+"Z!	c #878786",
+"`!	c #000001",
+" ~	c #313131",
+".~	c #C7C7C7",
+"+~	c #161616",
+"@~	c #F9F8F3",
+"#~	c #FDFAF9",
+"$~	c #EEF5FC",
+"%~	c #85C3F2",
+"&~	c #7BB9EB",
+"*~	c #F6FDFA",
+"=~	c #F1F9F9",
+"-~	c #80BEEE",
+";~	c #0F83F1",
+">~	c #59A6E9",
+",~	c #DEEEF6",
+"'~	c #FEFCF6",
+")~	c #F1F9F8",
+"!~	c #94CAF0",
+"~~	c #2D93F0",
+"{~	c #097EF6",
+"]~	c #0280F6",
+"^~	c #067FFA",
+"/~	c #1183F5",
+"(~	c #449FED",
+"_~	c #70B6EC",
+":~	c #8DC7F4",
+"<~	c #92C6F3",
+"[~	c #73B5EA",
+"}~	c #439DF0",
+"|~	c #077DFA",
+"1~	c #3C99EF",
+"2~	c #ECF9F7",
+"3~	c #DCEDF9",
+"4~	c #59A6EC",
+"5~	c #037FF9",
+"6~	c #1484F0",
+"7~	c #86C4F3",
+"8~	c #F0F9FC",
+"9~	c #F9FFFE",
+"0~	c #F5FAFC",
+"a~	c #70B0EA",
+"b~	c #6EAFEE",
+"c~	c #E7F8F5",
+"d~	c #363636",
+"e~	c #AFAFAF",
+"f~	c #E1E1E1",
+"g~	c #A4A4A4",
+"h~	c #585858",
+"i~	c #232328",
+"j~	c #A2A3A7",
+"k~	c #FBFDF9",
+"l~	c #FBFFF8",
+"m~	c #DCEDF5",
+"n~	c #3D99F1",
+"o~	c #B5D9F1",
+"p~	c #F7FDFE",
+"q~	c #FCFBF8",
+"r~	c #99CBF2",
+"s~	c #288CF0",
+"t~	c #268BF3",
+"u~	c #9CCAF0",
+"v~	c #F7FDFC",
+"w~	c #B3D8F1",
+"x~	c #268CEF",
+"y~	c #0580F8",
+"z~	c #4B9FEF",
+"A~	c #DAEFF7",
+"B~	c #FDFDF7",
+"C~	c #B7B8B7",
+"D~	c #AAAAAA",
+"E~	c #747474",
+"F~	c #D8D8D8",
+"G~	c #010201",
+"H~	c #050301",
+"I~	c #383839",
+"J~	c #B0B1B3",
+"K~	c #B1D9F1",
+"L~	c #1C89F2",
+"M~	c #037EFB",
+"N~	c #0A7FF5",
+"O~	c #6DB6F1",
+"P~	c #B5DAF2",
+"Q~	c #3497EF",
+"R~	c #3895EC",
+"S~	c #C5E2F3",
+"T~	c #70B8EC",
+"U~	c #258FF0",
+"V~	c #B6DCF4",
+"W~	c #D2D3CE",
+"X~	c #373638",
+"Y~	c #E9E9E9",
+"Z~	c #9C9C9C",
+"`~	c #010202",
+" {	c #4A4B4B",
+".{	c #8FC5F0",
+"+{	c #238BEF",
+"@{	c #B8DDF3",
+"#{	c #67AEEA",
+"${	c #65B0EE",
+"%{	c #ECF5FB",
+"&{	c #ACD6F3",
+"*{	c #1B88F1",
+"={	c #1083F5",
+"-{	c #9ECBF0",
+";{	c #F8FCFA",
+">{	c #959595",
+",{	c #383838",
+"'{	c #F4FEFF",
+"){	c #7CB9EE",
+"!{	c #459EEE",
+"~{	c #F7FDF9",
+"{{	c #ABD4EF",
+"]{	c #258DF5",
+"^{	c #0181F7",
+"/{	c #0B7DF1",
+"({	c #1986EE",
+"_{	c #1588F2",
+":{	c #0B7FF0",
+"<{	c #0280F8",
+"[{	c #2190F4",
+"}{	c #B3D9F2",
+"|{	c #FBFEF9",
+"1{	c #DCEEF8",
+"2{	c #389AF3",
+"3{	c #0282FB",
+"4{	c #7BBAF3",
+"5{	c #FAFDF9",
+"6{	c #9F9F9F",
+"7{	c #E4E4E4",
+"8{	c #ACACAC",
+"9{	c #212121",
+"0{	c #DADADA",
+"a{	c #79B6EC",
+"b{	c #69B2F0",
+"c{	c #EBF9FA",
+"d{	c #6AB0F1",
+"e{	c #097DF6",
+"f{	c #0082FA",
+"g{	c #0D83F3",
+"h{	c #5BA8EE",
+"i{	c #AED5F2",
+"j{	c #D8F1F8",
+"k{	c #EDF6F9",
+"l{	c #DCF1F8",
+"m{	c #AAD5F5",
+"n{	c #479DEC",
+"o{	c #0580F7",
+"p{	c #0D80F6",
+"q{	c #79BAEF",
+"r{	c #EDF8FC",
+"s{	c #FBFBF9",
+"t{	c #EBF3F8",
+"u{	c #6BADEC",
+"v{	c #73B8EC",
+"w{	c #FAFCF9",
+"x{	c #6F6F6F",
+"y{	c #666666",
+"z{	c #808080",
+"A{	c #CBCBCB",
+"B{	c #9A9A9A",
+"C{	c #F8FFFF",
+"D{	c #6FB4F1",
+"E{	c #0681F6",
+"F{	c #0A81F5",
+"G{	c #88C1EE",
+"H{	c #D4EBF7",
+"I{	c #469BED",
+"J{	c #248CEF",
+"K{	c #C0E1F7",
+"L{	c #C1DFF4",
+"M{	c #419DEE",
+"N{	c #F2FCFB",
+"O{	c #6FB2EF",
+"P{	c #087EF9",
+"Q{	c #4D4D4D",
+"R{	c #999999",
+"S{	c #6CB1EA",
+"T{	c #0E80F5",
+"U{	c #ABD3F1",
+"V{	c #FAFBFB",
+"W{	c #BFDFF4",
+"X{	c #218AEE",
+"Y{	c #067EFA",
+"Z{	c #2C90EE",
+"`{	c #DAF1F9",
+" ]	c #FDFDFF",
+".]	c #D2ECF7",
+"+]	c #278DF0",
+"@]	c #238BEC",
+"#]	c #C9EAF7",
+"$]	c #80BCED",
+"%]	c #0882F6",
+"&]	c #6CB0F1",
+"*]	c #868686",
+"=]	c #77B9EF",
+"-]	c #A9D7EF",
+";]	c #FCFBFD",
+">]	c #A6D0F2",
+",]	c #1686F1",
+"']	c #D8ECF7",
+")]	c #92C5EA",
+"!]	c #6CB3F0",
+"~]	c #70B3ED",
+"{]	c #9ECEED",
+"]]	c #EDF9FC",
+"^]	c #0F85F5",
+"/]	c #1A86F1",
+"(]	c #A4D2F5",
+"_]	c #84BEEC",
+":]	c #0480F4",
+"<]	c #353535",
+"[]	c #202020",
+"}]	c #5C5C5C",
+"|]	c #B0B0B0",
+"1]	c #757575",
+"2]	c #95C9F0",
+"3]	c #0881F8",
+"4]	c #0381F8",
+"5]	c #96C7F0",
+"6]	c #A1CDF0",
+"7]	c #0C82F6",
+"8]	c #057DFC",
+"9]	c #79B9F1",
+"0]	c #BFE0F4",
+"a]	c #2489EB",
+"b]	c #047EF9",
+"c]	c #328FED",
+"d]	c #BDDFF1",
+"e]	c #7BBBED",
+"f]	c #0B82F6",
+"g]	c #A0CFF2",
+"h]	c #F5FCFE",
+"i]	c #0A81F7",
+"j]	c #9CCEF2",
+"k]	c #FCFDF7",
+"l]	c #989898",
+"m]	c #939393",
+"n]	c #131313",
+"o]	c #8C8C8C",
+"p]	c #BBE1F7",
+"q]	c #1383EF",
+"r]	c #85BEF3",
+"s]	c #F9FDFA",
+"t]	c #9CCCEE",
+"u]	c #0A82F3",
+"v]	c #0C7FF3",
+"w]	c #D6EDF5",
+"x]	c #1D89EE",
+"y]	c #1F88E8",
+"z]	c #E4F6FB",
+"A]	c #D6EDF6",
+"B]	c #0982F7",
+"C]	c #0982F8",
+"D]	c #9ECDF3",
+"E]	c #F7FDFB",
+"F]	c #87BDEF",
+"G]	c #1687F4",
+"H]	c #BEE0F1",
+"I]	c #252525",
+"J]	c #B4B4B4",
+"K]	c #DAEFFA",
+"L]	c #2189ED",
+"M]	c #61AAEF",
+"N]	c #F5FEFA",
+"O]	c #B4DAF3",
+"P]	c #0C7EF4",
+"Q]	c #74B5EB",
+"R]	c #83BEEE",
+"S]	c #1C89EF",
+"T]	c #1585F3",
+"U]	c #BFE4F6",
+"V]	c #F7FBFB",
+"W]	c #51A6F0",
+"X]	c #2C8FF3",
+"Y]	c #E1F0F7",
+"Z]	c #9E9E9E",
+"`]	c #0C0C0C",
+" ^	c #A3A3A3",
+".^	c #F7F9FB",
+"+^	c #439BF1",
+"@^	c #3999EB",
+"#^	c #F5FAFD",
+"$^	c #C4E1F7",
+"%^	c #4B9DED",
+"&^	c #2D8DEA",
+"*^	c #439DF1",
+"=^	c #F9FFFF",
+"-^	c #44A0EE",
+";^	c #1785EF",
+">^	c #C4E3F3",
+",^	c #EEF8FA",
+"'^	c #3394EE",
+")^	c #4DA3EE",
+"!^	c #F2FBFB",
+"~^	c #ADADAD",
+"{^	c #84BFEE",
+"]^	c #1E84F3",
+"^^	c #D7EDF5",
+"/^	c #DAF1FA",
+"(^	c #248DEC",
+"_^	c #047EFF",
+":^	c #489FEE",
+"<^	c #F5FDFD",
+"[^	c #2C8DE8",
+"}^	c #4098E8",
+"|^	c #499FEB",
+"1^	c #2E92EE",
+"2^	c #CDE8F7",
+"3^	c #1788F3",
+"4^	c #077EFA",
+"5^	c #91C6EF",
+"6^	c #3A3A3A",
+"7^	c #D2E7F6",
+"8^	c #0C84F3",
+"9^	c #0981F8",
+"0^	c #B0D8F5",
+"a^	c #F1F9FB",
+"b^	c #4199EE",
+"c^	c #439AEF",
+"d^	c #F8FEF9",
+"e^	c #5FADF2",
+"f^	c #0182FA",
+"g^	c #78B9F1",
+"h^	c #258EF1",
+"i^	c #52A4EE",
+"j^	c #F1FAF9",
+"k^	c #A1CDEF",
+"l^	c #CDE9F6",
+"m^	c #FDFCFE",
+"n^	c #656565",
+"o^	c #7A7A7A",
+"p^	c #3E97F1",
+"q^	c #62AFF0",
+"r^	c #7FBAED",
+"s^	c #0D80F4",
+"t^	c #DBF1F6",
+"u^	c #D2E7F4",
+"v^	c #1285F4",
+"w^	c #1782F4",
+"x^	c #DAF1F7",
+"y^	c #E4F1F7",
+"z^	c #0981F4",
+"A^	c #86C1F0",
+"B^	c #F3FCFE",
+"C^	c #55A3EE",
+"D^	c #037FF8",
+"E^	c #4A9EEC",
+"F^	c #4E4E4E",
+"G^	c #C8C8C8",
+"H^	c #B7B7B7",
+"I^	c #C6C6C6",
+"J^	c #FFFDF9",
+"K^	c #92C7EB",
+"L^	c #0580FA",
+"M^	c #278CF1",
+"N^	c #E8F7F7",
+"O^	c #BADFF4",
+"P^	c #0A80F6",
+"Q^	c #0182FD",
+"R^	c #8CC3F2",
+"S^	c #A7D2EF",
+"T^	c #1080EF",
+"U^	c #1A89F4",
+"V^	c #A6D2F3",
+"W^	c #8FC2ED",
+"X^	c #0D83F8",
+"Y^	c #CCE5F4",
+"Z^	c #E0F2F7",
+"`^	c #1E8BF3",
+" /	c #067FFB",
+"./	c #9FCFEE",
+"+/	c #E5F4F7",
+"@/	c #1788F0",
+"#/	c #0581F3",
+"$/	c #B0D8F4",
+"%/	c #E3F7FB",
+"&/	c #298DEF",
+"*/	c #2087F6",
+"=/	c #E4F7FB",
+"-/	c #D7F0F8",
+";/	c #70B2EB",
+">/	c #48A4F5",
+",/	c #4AA3F3",
+"'/	c #7CBBEC",
+")/	c #DAEEF8",
+"!/	c #D7EFF8",
+"~/	c #3495EC",
+"{/	c #96C8EE",
+"]/	c #0A7FF4",
+"^/	c #248FF0",
+"//	c #E5F5FA",
+"(/	c #272727",
+"_/	c #282828",
+":/	c #7FBBED",
+"</	c #48A3F0",
+"[/	c #76B4EC",
+"}/	c #3F9AEC",
+"|/	c #ECF8F8",
+"1/	c #FFFEF8",
+"2/	c #E1F2F9",
+"3/	c #3E97E9",
+"4/	c #7BBBF0",
+"5/	c #3E99EB",
+"6/	c #7CBBEE",
+"7/	c #979797",
+"8/	c #1586F3",
+"9/	c #0D7FF3",
+"0/	c #C9E7F7",
+"a/	c #CBE8F6",
+"b/	c #1583F2",
+"c/	c #0180F9",
+"d/	c #3597F0",
+"e/	c #D9EDF6",
+"f/	c #FFFEF9",
+"g/	c #D7EDF6",
+"h/	c #3C96E7",
+"i/	c #1683F0",
+"j/	c #D9EFF9",
+"k/	c #B5DAF3",
+"l/	c #1884F4",
+"m/	c #E4F4F7",
+"n/	c #5B5B5B",
+"o/	c #5AADF0",
+"p/	c #50A6EF",
+"q/	c #067FF6",
+"r/	c #1788F2",
+"s/	c #7DBBEE",
+"t/	c #CBE7F3",
+"u/	c #C8E6F6",
+"v/	c #63B1EF",
+"w/	c #1183F2",
+"x/	c #55A5ED",
+"y/	c #439DE9",
+"z/	c #047DFC",
+"A/	c #78B9EE",
+"B/	c #B9B9B9",
+"C/	c #676767",
+"D/	c #E3F2FA",
+"E/	c #1485F1",
+"F/	c #D7E9F6",
+"G/	c #C6E2F6",
+"H/	c #097FF7",
+"I/	c #0980F4",
+"J/	c #1484F2",
+"K/	c #2C91ED",
+"L/	c #218AF2",
+"M/	c #1583F7",
+"N/	c #0A80F1",
+"O/	c #C2E3F5",
+"P/	c #C8E5F4",
+"Q/	c #1887F0",
+"R/	c #EAF8FC",
+"S/	c #7D7D7D",
+"T/	c #0182FC",
+"U/	c #56A6EA",
+"V/	c #4CA1ED",
+"W/	c #4BA2ED",
+"X/	c #F8FCFD",
+"Y/	c #499EED",
+"Z/	c #90C5ED",
+"`/	c #F5FBFB",
+" (	c #288DF4",
+".(	c #077DF6",
+"+(	c #BBE1F5",
+"@(	c #C4E0F2",
+"#(	c #0080FC",
+"$(	c #D1EAF7",
+"%(	c #B5D7F2",
+"&(	c #3894EF",
+"*(	c #F3FCFD",
+"=(	c #616161",
+"-(	c #636363",
+";(	c #ABD8F3",
+">(	c #3193F2",
+",(	c #59AAEF",
+"'(	c #66AEEB",
+")(	c #2C8FEC",
+"!(	c #BADEF2",
+"~(	c #232323",
+"{(	c #BDBDBD",
+"](	c #5AA7E7",
+"^(	c #93C5F2",
+"/(	c #0D81EE",
+"((	c #2C8DEB",
+"_(	c #66B3F2",
+":(	c #72B2EA",
+"<(	c #6FB3EB",
+"[(	c #56ABEF",
+"}(	c #1F86F0",
+"|(	c #E7F3F9",
+"1(	c #8BC2F0",
+"2(	c #73B6F1",
+"3(	c #FAFFFC",
+"4(	c #767676",
+"5(	c #898989",
+"6(	c #EBF4FA",
+"7(	c #1886F2",
+"8(	c #0B7DF4",
+"9(	c #DAEEF6",
+"0(	c #8BC2EF",
+"a(	c #1184EF",
+"b(	c #9AD0F5",
+"c(	c #8BC9EF",
+"d(	c #0F81F5",
+"e(	c #98C8EF",
+"f(	c #0A7DF3",
+"g(	c #2489EE",
+"h(	c #C3C3C3",
+"i(	c #ABD6F0",
+"j(	c #0082FF",
+"k(	c #4A9FED",
+"l(	c #F8FEFF",
+"m(	c #2F94ED",
+"n(	c #1C87F2",
+"o(	c #D7EDF7",
+"p(	c #FDFCF7",
+"q(	c #AFDAF3",
+"r(	c #1582EE",
+"s(	c #46A1F0",
+"t(	c #479FF1",
+"u(	c #B9DCF5",
+"v(	c #66B3EF",
+"w(	c #95C7EF",
+"x(	c #D3EAF5",
+"y(	c #0780F8",
+"z(	c #ACD5F4",
+"A(	c #F6FDFC",
+"B(	c #E0F1F6",
+"C(	c #FBFCF4",
+"D(	c #9CCEF4",
+"E(	c #097EF0",
+"F(	c #DFF0F9",
+"G(	c #86BFEF",
+"H(	c #F4FDFD",
+"I(	c #288DEE",
+"J(	c #D1E8F5",
+"K(	c #89C1F1",
+"L(	c #3293EF",
+"M(	c #D8F0F8",
+"N(	c #50A0E9",
+"O(	c #0B7EF2",
+"P(	c #0B7EED",
+"Q(	c #4CA1EC",
+"R(	c #D6F0F9",
+"S(	c #3192F0",
+"T(	c #93C8F1",
+"U(	c #D2E8F5",
+"V(	c #3593F0",
+"W(	c #CDCDCD",
+"X(	c #D4EBF6",
+"Y(	c #2F91EE",
+"Z(	c #F4FCFD",
+"`(	c #4AA0EE",
+" _	c #76BBF2",
+"._	c #F7FCFA",
+"+_	c #479CE7",
+"@_	c #4A9AE4",
+"#_	c #78BAF2",
+"$_	c #56A9EE",
+"%_	c #F3FBFD",
+"&_	c #248CEE",
+"*_	c #0D81F1",
+"=_	c #E0F2F9",
+"-_	c #A8D2F3",
+";_	c #5FA9EE",
+">_	c #0F81F1",
+",_	c #91C6F4",
+"'_	c #0882F7",
+")_	c #DEEFF9",
+"!_	c #8EC5F6",
+"~_	c #1889F2",
+"{_	c #5BAAEF",
+"]_	c #ACD3F3",
+"^_	c #6BB1EB",
+"/_	c #94C8F3",
+"(_	c #BBDDF0",
+"__	c #91C7F4",
+":_	c #D2E8F6",
+"<_	c #0E81F4",
+"[_	c #DDEFF7",
+"}_	c #93C5F4",
+"|_	c #CAE5F5",
+"1_	c #89C2EF",
+"2_	c #7CBAEE",
+"3_	c #3C98F1",
+"4_	c #C8E3F4",
+"5_	c #88C1F1",
+"6_	c #7ABCF1",
+"7_	c #58A5ED",
+"8_	c #F9FFFC",
+"9_	c #71B1F1",
+"0_	c #90C5F3",
+"a_	c #BDDBF0",
+"b_	c #46A2F3",
+"c_	c #595959",
+"d_	c #F2F9FB",
+"e_	c #238AF1",
+"f_	c #0C80F8",
+"g_	c #E4F1F9",
+"h_	c #64AAEE",
+"i_	c #F2F9FA",
+"j_	c #DEEFF8",
+"k_	c #1283F3",
+"l_	c #1682EF",
+"m_	c #5DAAF0",
+"n_	c #F2F9FC",
+"o_	c #3490EE",
+"p_	c #6FB3EE",
+"q_	c #E0F2FB",
+"r_	c #2891F4",
+"s_	c #F5FCFC",
+"t_	c #696969",
+"u_	c #0C7CF0",
+"v_	c #2C90EF",
+"w_	c #F3FEFD",
+"x_	c #419CED",
+"y_	c #9ACCF2",
+"z_	c #E2F5FB",
+"A_	c #E4F5F9",
+"B_	c #8FC5F1",
+"C_	c #49A1EC",
+"D_	c #F2FCFE",
+"E_	c #2490F0",
+"F_	c #0B7DEE",
+"G_	c #C3E5F4",
+"H_	c #3C96EE",
+"I_	c #1084F7",
+"J_	c #1485EE",
+"K_	c #B3D8F4",
+"L_	c #B0DCF5",
+"M_	c #1185F1",
+"N_	c #208BED",
+"O_	c #2F90E7",
+"P_	c #ACD6F4",
+"Q_	c #61B1F6",
+"R_	c #E6F7F6",
+"S_	c #0E81F3",
+"T_	c #8CC2EC",
+"U_	c #EBF8FC",
+"V_	c #E3F5FC",
+"W_	c #83BAEC",
+"X_	c #0F83F2",
+"Y_	c #1184F4",
+"Z_	c #F7FCFE",
+"`_	c #61B0F7",
+" :	c #B1D5F1",
+".:	c #62B1F4",
+"+:	c #C9E2F2",
+"@:	c #1E87F0",
+"#:	c #4CA3F1",
+"$:	c #6BB4EF",
+"%:	c #4EA3EF",
+"&:	c #1282F0",
+"*:	c #64AFF5",
+"=:	c #AFD5F4",
+"-:	c #7FB9E9",
+";:	c #88C2EE",
+">:	c #C6E3F4",
+",:	c #067DF9",
+"':	c #C7E3F3",
+"):	c #A0D1F4",
+"!:	c #73B6EA",
+"~:	c #A0CEEE",
+"{:	c #C6E3F2",
+"]:	c #087EF4",
+"^:	c #C4E3F4",
+"/:	c #65AFF4",
+"(:	c #74B6EA",
+"_:	c #75B4ED",
+"::	c #A0CEEF",
+"<:	c #C7E3F4",
+"[:	c #047EF5",
+"}:	c #0082FB",
+"|:	c #067EF5",
+"1:	c #C6E3F3",
+"2:	c #9ECDED",
+"3:	c #71B5EA",
+"4:	c #047FF5",
+"5:	c #067DFC",
+"6:	c #0A7FF7",
+"7:	c #A1CEED",
+"8:	c #2188ED",
+"9:	c #9DD4F3",
+"0:	c #DEF0F5",
+"a:	c #D3E9F4",
+"b:	c #85C1EF",
+"c:	c #0C80F5",
+"d:	c #88C3F1",
+"e:	c #74B4EC",
+"f:	c #2589E9",
+"g:	c #CEE6F4",
+"h:	c #9ED0F1",
+"i:	c #0B81F7",
+"j:	c #62AFF5",
+"k:	c #8BC3EE",
+"l:	c #6FB2F0",
+"m:	c #C9E3F3",
+"n:	c #047FF6",
+"o:	c #CDE8F8",
+"p:	c #A5D3F2",
+"q:	c #0D82F4",
+"r:	c #087CF8",
+"s:	c #65B0F4",
+"t:	c #ADD5F5",
+"u:	c #AED5F5",
+"v:	c #66B0F4",
+"w:	c #CBE3F1",
+"x:	c #0083FA",
+"y:	c #D2E9F8",
+"z:	c #FCFCF3",
+"A:	c #A9D6F2",
+"B:	c #0B82F5",
+"C:	c #1082F3",
+"D:	c #E7F6F9",
+"E:	c #62B0F4",
+"F:	c #ACD5F5",
+"G:	c #ADD5F3",
+"H:	c #5EAEF6",
+"I:	c #2A8DEB",
+"J:	c #D8EBF6",
+"K:	c #AFD8F1",
+"L:	c #1182F5",
+"M:	c #1384EF",
+"N:	c #459FEA",
+"O:	c #BFDCF2",
+"P:	c #D7EFF6",
+"Q:	c #0780F7",
+"R:	c #308EEA",
+"S:	c #1887EE",
+"T:	c #2F8EEA",
+"U:	c #D7ECF7",
+"V:	c #B1DAF1",
+"W:	c #0F84F5",
+"X:	c #2E96F3",
+"Y:	c #2E90E8",
+"Z:	c #0A7DEF",
+"`:	c #E0F4F9",
+" <	c #0C7EF1",
+".<	c #248DF1",
+"+<	c #47A2ED",
+"@<	c #0282FC",
+"#<	c #2F8FEF",
+"$<	c #FEFFF7",
+"%<	c #B6DCF3",
+"&<	c #1285F2",
+"*<	c #50A0ED",
+"=<	c #E9F4F8",
+"-<	c #1983EE",
+";<	c #E7F8FC",
+"><	c #2E90F5",
+",<	c #DBF1FB",
+"'<	c #6EB7F0",
+")<	c #3090F1",
+"!<	c #DCEFF9",
+"~<	c #D6E9F2",
+"{<	c #EEF7FB",
+"]<	c #B9DFF5",
+"^<	c #1185F3",
+"/<	c #077CFB",
+"(<	c #81BDF5",
+"_<	c #D4EBF9",
+":<	c #3294EF",
+"<<	c #58A8F0",
+"[<	c #ABD3EC",
+"}<	c #9FCEED",
+"|<	c #3491E8",
+"1<	c #E0F0F8",
+"2<	c #FBFEF8",
+"3<	c #D6E6F2",
+"4<	c #2189F0",
+"5<	c #3D99E9",
+"6<	c #E2F5FA",
+"7<	c #FEFBF6",
+"8<	c #BDE0F3",
+"9<	c #AFD4F1",
+"0<	c #A6D0F0",
+"a<	c #64B2F0",
+"b<	c #AEAEAE",
+"c<	c #7EBBEE",
+"d<	c #87C2F3",
+"e<	c #CFE7F1",
+"f<	c #3894EB",
+"g<	c #E2F1F9",
+"h<	c #FFFFF8",
+"i<	c #1C8AEE",
+"j<	c #3C97E8",
+"k<	c #FEFAFE",
+"l<	c #C0E4F5",
+"m<	c #1687F3",
+"n<	c #DDEFF8",
+"o<	c #79B9F0",
+"p<	c #8DC3F0",
+"q<	c #4CA0EC",
+"r<	c #FBFCFF",
+"s<	c #F2FDF8",
+"t<	c #1F88F3",
+"u<	c #3C95EF",
+"v<	c #E4F2F7",
+"w<	c #C6E3F5",
+"x<	c #2088EB",
+"y<	c #3798EE",
+"z<	c #E0F2F6",
+"A<	c #FEFBFC",
+"B<	c #C4E3F5",
+"C<	c #1A88F0",
+"D<	c #2B91F0",
+"E<	c #3F99EB",
+"F<	c #0481F7",
+"G<	c #E0F3F9",
+"H<	c #127FEA",
+"I<	c #1686F3",
+"J<	c #5DA8EF",
+"K<	c #3F98EE",
+"L<	c #F9FDF6",
+"M<	c #FBFDF5",
+"N<	c #1C88F3",
+"O<	c #077CFD",
+"P<	c #3595EE",
+"Q<	c #C5E6F7",
+"R<	c #1C89F0",
+"S<	c #087CFB",
+"T<	c #6BB0F0",
+"U<	c #E6F7FC",
+"V<	c #0D82F1",
+"W<	c #1486F2",
+"X<	c #EBF5F9",
+"Y<	c #737373",
+"Z<	c #429DED",
+"`<	c #B9E0F5",
+" [	c #FEFBFB",
+".[	c #A5D0EF",
+"+[	c #4499E7",
+"@[	c #E5F4FA",
+"#[	c #C0E0F5",
+"$[	c #1A87F2",
+"%[	c #C8E5F6",
+"&[	c #1F89F0",
+"*[	c #B3D7F0",
+"=[	c #FCFCF8",
+"-[	c #AFD6F0",
+";[	c #459DF0",
+">[	c #1E1E1E",
+",[	c #80BDEF",
+"'[	c #76B7EF",
+")[	c #EFFBFA",
+"![	c #1783F4",
+"~[	c #0382FA",
+"{[	c #439AEB",
+"][	c #E9F5FA",
+"^[	c #1A86EE",
+"/[	c #3092E8",
+"([	c #FEF9FD",
+"_[	c #CBEAF7",
+":[	c #1F8BF1",
+"<[	c #69AFEE",
+"[[	c #8DC5F2",
+"}[	c #CDE6F5",
+"|[	c #2B8FEB",
+"1[	c #F4FAFD",
+"2[	c #499BEF",
+"3[	c #EEF6F8",
+"4[	c #F7FFFD",
+"5[	c #BCDCF3",
+"6[	c #1584EE",
+"7[	c #0281F6",
+"8[	c #2A91F0",
+"9[	c #D8EEF5",
+"0[	c #FEFAFD",
+"a[	c #D1EAF8",
+"b[	c #228DF0",
+"c[	c #5FAAF1",
+"d[	c #1D8AEF",
+"e[	c #CDE6F4",
+"f[	c #3698EE",
+"g[	c #CBE4F4",
+"h[	c #AED6ED",
+"i[	c #4D9EEC",
+"j[	c #EDF8FB",
+"k[	c #F7FEF9",
+"l[	c #B8D9F5",
+"m[	c #1384F6",
+"n[	c #1184F8",
+"o[	c #087CFD",
+"p[	c #278FEF",
+"q[	c #FDFBF7",
+"r[	c #D2EDF8",
+"s[	c #268DEE",
+"t[	c #B8DBF2",
+"u[	c #3996EE",
+"v[	c #84BEF0",
+"w[	c #6BB0EC",
+"x[	c #ECFCFC",
+"y[	c #268DED",
+"z[	c #51A0E5",
+"A[	c #B1D9F4",
+"B[	c #7BBBF1",
+"C[	c #D2EBF6",
+"D[	c #298EEA",
+"E[	c #D0ECF6",
+"F[	c #D6ECF8",
+"G[	c #278FEE",
+"H[	c #3390E8",
+"I[	c #F4FBF9",
+"J[	c #61ADEC",
+"K[	c #87BEEE",
+"L[	c #D8EBF7",
+"M[	c #0C81F5",
+"N[	c #1C85F1",
+"O[	c #EAF6FA",
+"P[	c #F8FFFE",
+"Q[	c #85C0EF",
+"R[	c #52A2EC",
+"S[	c #AED6F0",
+"T[	c #1482ED",
+"U[	c #80BFEF",
+"V[	c #D5EDF8",
+"W[	c #278EF0",
+"X[	c #258CEA",
+"Y[	c #FDF9FC",
+"Z[	c #D7EFF9",
+"`[	c #2990EF",
+" }	c #89C3F0",
+".}	c #E5F5FB",
+"+}	c #0D82F2",
+"@}	c #479FEE",
+"#}	c #A0CDF2",
+"$}	c #E9F5F8",
+"%}	c #1084F1",
+"&}	c #56A3EF",
+"*}	c #F2F8F8",
+"=}	c #B0D4F1",
+"-}	c #0E83F1",
+";}	c #087FF1",
+">}	c #81C1F1",
+",}	c #FAFBF9",
+"'}	c #298EF1",
+")}	c #218CF1",
+"!}	c #CEE9F4",
+"~}	c #2A91EF",
+"{}	c #1D88EF",
+"]}	c #EAF7F9",
+"^}	c #83BCED",
+"/}	c #56A7EF",
+"(}	c #AED8F3",
+"_}	c #0183F8",
+":}	c #258FEE",
+"<}	c #F2FAFE",
+"[}	c #6DB5EF",
+"}}	c #0580F9",
+"|}	c #5CA7EB",
+"1}	c #F4FBFB",
+"2}	c #F6FFFB",
+"3}	c #FBFCF5",
+"4}	c #A9D0F3",
+"5}	c #0C81F8",
+"6}	c #DBF0F9",
+"7}	c #2B92F0",
+"8}	c #087BFE",
+"9}	c #1C8AF1",
+"0}	c #CAE6F6",
+"a}	c #FCFBF6",
+"b}	c #DEF2F9",
+"c}	c #3193ED",
+"d}	c #077CFC",
+"e}	c #89C4F2",
+"f}	c #FBFCF9",
+"g}	c #B5D7F1",
+"h}	c #F4FEFA",
+"i}	c #2A90EF",
+"j}	c #99C9EF",
+"k}	c #DCEEF7",
+"l}	c #62A9E6",
+"m}	c #0C82F4",
+"n}	c #8FC5EE",
+"o}	c #3293ED",
+"p}	c #208AEC",
+"q}	c #3396ED",
+"r}	c #248BF1",
+"s}	c #E9F8F9",
+"t}	c #FCFBF9",
+"u}	c #9BCAEC",
+"v}	c #3E9BEE",
+"w}	c #98CBEF",
+"x}	c #268EEF",
+"y}	c #F1F9FA",
+"z}	c #65ACED",
+"A}	c #0982F5",
+"B}	c #93C8EF",
+"C}	c #DFF2FA",
+"D}	c #3295F0",
+"E}	c #1D88EC",
+"F}	c #C2E2F6",
+"G}	c #E1F4FA",
+"H}	c #3797ED",
+"I}	c #077DF9",
+"J}	c #8DC8F3",
+"K}	c #EFF9FA",
+"L}	c #298DEA",
+"M}	c #B6DAF4",
+"N}	c #F5FBFA",
+"O}	c #288FF1",
+"P}	c #067FFD",
+"Q}	c #91C8F3",
+"R}	c #EEF7FC",
+"S}	c #2A8DEC",
+"T}	c #0382F9",
+"U}	c #68ADF0",
+"V}	c #F5FAF9",
+"W}	c #F7FEFC",
+"X}	c #9DC9F1",
+"Y}	c #0B82F3",
+"Z}	c #0C80EF",
+"`}	c #94CBF2",
+" |	c #E0F2FA",
+".|	c #3695F0",
+"+|	c #1A88F2",
+"@|	c #C0E2F3",
+"#|	c #3899EE",
+"$|	c #3696ED",
+"%|	c #F2F7FA",
+"&|	c #91C8F1",
+"*|	c #439EF1",
+"=|	c #9FCDF0",
+"-|	c #218DF4",
+";|	c #ECF6FA",
+">|	c #B1D7F4",
+",|	c #0580F4",
+"'|	c #6BB0EB",
+")|	c #F6FFFC",
+"!|	c #FAFDF8",
+"~|	c #99C7F1",
+"{|	c #097FF8",
+"]|	c #9DCDEF",
+"^|	c #087BFD",
+"/|	c #FBFBF8",
+"(|	c #FFFCF7",
+"_|	c #3C99ED",
+":|	c #077DFD",
+"<|	c #0D81F4",
+"[|	c #B8DDF4",
+"}|	c #E3F1F9",
+"||	c #1584F3",
+"1|	c #C0DCF2",
+"2|	c #44A0F2",
+"3|	c #70B4F1",
+"4|	c #60AAEF",
+"5|	c #73B2E6",
+"6|	c #A3D1F0",
+"7|	c #E8F6FB",
+"8|	c #3C98EB",
+"9|	c #1585EE",
+"0|	c #B7DFF3",
+"a|	c #3E9CED",
+"b|	c #71B3E7",
+"c|	c #62ADE9",
+"d|	c #C1E1F4",
+"e|	c #0E80F4",
+"f|	c #107EF4",
+"g|	c #E1F4FB",
+"h|	c #238DF0",
+"i|	c #057EFF",
+"j|	c #77B4EC",
+"k|	c #8BC3ED",
+"l|	c #0A7FF0",
+"m|	c #0A83F5",
+"n|	c #5BA6E8",
+"o|	c #E8F7FC",
+"p|	c #3C9BEF",
+"q|	c #067EFB",
+"r|	c #1483EE",
+"s|	c #FCFAFA",
+"t|	c #449DEC",
+"u|	c #077DF8",
+"v|	c #3291EE",
+"w|	c #ECF9FC",
+"x|	c #FCFCF7",
+"y|	c #AED9F4",
+"z|	c #0B81F1",
+"A|	c #D8EEF8",
+"B|	c #79B8F1",
+"C|	c #077EFC",
+"D|	c #EEF6F9",
+"E|	c #B9DCF3",
+"F|	c #0883F6",
+"G|	c #0481F6",
+"H|	c #7BB7F0",
+"I|	c #FDFDF6",
+"J|	c #8ABFF0",
+"K|	c #0782F5",
+"L|	c #1082EE",
+"M|	c #A7D4F3",
+"N|	c #DBECF8",
+"O|	c #2B8FF0",
+"P|	c #2F92EB",
+"Q|	c #E9F6FC",
+"R|	c #B2DBF2",
+"S|	c #45A0ED",
+"T|	c #047DFD",
+"U|	c #1386F3",
+"V|	c #C3E0F5",
+"W|	c #E1F2F8",
+"X|	c #248AF0",
+"Y|	c #222222",
+"Z|	c #EFF7FB",
+"`|	c #3494EC",
+" 1	c #87C1EA",
+".1	c #7EBBED",
+"+1	c #F7FFFC",
+"@1	c #87BCEE",
+"#1	c #0780FA",
+"$1	c #1182EF",
+"%1	c #ADD6F1",
+"&1	c #DAEBF6",
+"*1	c #298FF3",
+"=1	c #2C91F0",
+"-1	c #DBEDF7",
+";1	c #1084F4",
+">1	c #ADD8F1",
+",1	c #EEF9FA",
+"'1	c #4BA1EC",
+")1	c #91CAF1",
+"!1	c #5FAAEC",
+"~1	c #3593EA",
+"{1	c #686868",
+"]1	c #BADEF5",
+"^1	c #0E86F7",
+"/1	c #0C7EF0",
+"(1	c #A5D4F4",
+"_1	c #F4FCF9",
+":1	c #60AAF0",
+"<1	c #83BCEA",
+"[1	c #FFFFF9",
+"}1	c #7EBAE9",
+"|1	c #0480F6",
+"11	c #0E85F4",
+"21	c #B0D8F3",
+"31	c #D0EBF9",
+"41	c #268DF0",
+"51	c #4CA0EB",
+"61	c #0F84F1",
+"71	c #AAD7F1",
+"81	c #FDFBFE",
+"91	c #F0FAFA",
+"01	c #4CA4ED",
+"a1	c #66ABEC",
+"b1	c #F8FDFA",
+"c1	c #0680FA",
+"d1	c #1483F1",
+"e1	c #82BCEA",
+"f1	c #1183F4",
+"g1	c #C8E3F3",
+"h1	c #F2FCFC",
+"i1	c #3896EF",
+"j1	c #0880F9",
+"k1	c #8ABFEE",
+"l1	c #F9FEFB",
+"m1	c #F9FFFB",
+"n1	c #79B9EC",
+"o1	c #0980F3",
+"p1	c #1086F4",
+"q1	c #B7DAF1",
+"r1	c #D3E8F7",
+"s1	c #258BED",
+"t1	c #2A8CE7",
+"u1	c #D0ECF8",
+"v1	c #EDF9FD",
+"w1	c #4BA4EF",
+"x1	c #087EFA",
+"y1	c #0E82F2",
+"z1	c #A4D3F2",
+"A1	c #FBFAFA",
+"B1	c #53A6EC",
+"C1	c #459EEB",
+"D1	c #BBDCF2",
+"E1	c #1183F1",
+"F1	c #F5FAF8",
+"G1	c #53AAEE",
+"H1	c #E7F6F8",
+"I1	c #4298ED",
+"J1	c #0882F3",
+"K1	c #FEFEF6",
+"L1	c #F4FCFB",
+"M1	c #78B5F0",
+"N1	c #1685EE",
+"O1	c #B8DCF3",
+"P1	c #CEE6F6",
+"Q1	c #208BF0",
+"R1	c #248DED",
+"S1	c #D3E9F7",
+"T1	c #F1FAFD",
+"U1	c #51A6EF",
+"V1	c #A1D2F2",
+"W1	c #FFFDF7",
+"X1	c #5CA7EC",
+"Y1	c #3C98EC",
+"Z1	c #D8EDF8",
+"`1	c #278DF7",
+" 2	c #F9FBFC",
+".2	c #E5F2F6",
+"+2	c #3193EC",
+"@2	c #EEF7FA",
+"#2	c #A6CEEE",
+"$2	c #F4FDFC",
+"%2	c #75B3ED",
+"&2	c #1885ED",
+"*2	c #BCDEF3",
+"=2	c #C7E6F7",
+"-2	c #2289EF",
+";2	c #218CF0",
+">2	c #CEE7F6",
+",2	c #59A6EB",
+"'2	c #9CCEEF",
+")2	c #F8FBFA",
+"!2	c #F2FAFB",
+"~2	c #86BEEC",
+"{2	c #E6F3F8",
+"]2	c #E8F7FA",
+"^2	c #288CED",
+"/2	c #3D95EB",
+"(2	c #2087EE",
+"_2	c #499CE7",
+":2	c #6EB0E7",
+"<2	c #1687F1",
+"[2	c #BDE1F7",
+"}2	c #C4E4F6",
+"|2	c #1D8BF0",
+"12	c #CEE7F4",
+"22	c #5DA8EB",
+"32	c #9ACEEF",
+"42	c #FBFAFD",
+"52	c #EDF7F8",
+"62	c #1E89F1",
+"72	c #DAF1FC",
+"82	c #C7E6F4",
+"92	c #0A7EF3",
+"02	c #B3D6F0",
+"a2	c #67ACEC",
+"b2	c #1487F2",
+"c2	c #C3E2F4",
+"d2	c #C7E3F5",
+"e2	c #1E88EC",
+"f2	c #59ABEF",
+"g2	c #0981F6",
+"h2	c #95CBEF",
+"i2	c #8AC0E9",
+"j2	c #1D8AEE",
+"k2	c #CBE5F5",
+"l2	c #ACD3F2",
+"m2	c #1781EB",
+"n2	c #FDFFF8",
+"o2	c #65AAEE",
+"p2	c #C9E5F5",
+"q2	c #C5E0F4",
+"r2	c #1988EF",
+"s2	c #C8E4F7",
+"t2	c #F8FDFF",
+"u2	c #60AFEF",
+"v2	c #087DF6",
+"w2	c #91CAF2",
+"x2	c #1881EA",
+"y2	c #CEEAF7",
+"z2	c #6DAAE2",
+"A2	c #1F89EC",
+"B2	c #BBDFF6",
+"C2	c #1885EF",
+"D2	c #1888F0",
+"E2	c #C0E1F4",
+"F2	c #69B0EC",
+"G2	c #98C8EB",
+"H2	c #C7E3F1",
+"I2	c #FAFCF8",
+"J2	c #2890EE",
+"K2	c #218CEE",
+"L2	c #C9E8F8",
+"M2	c #1485F2",
+"N2	c #1787F0",
+"O2	c #C0DFF2",
+"P2	c #077FF8",
+"Q2	c #0481FA",
+"R2	c #3392ED",
+"S2	c #C4E1F5",
+"T2	c #B8D8F1",
+"U2	c #EAF6FB",
+"V2	c #67B3EF",
+"W2	c #067FF4",
+"X2	c #B7DBF4",
+"Y2	c #1586F0",
+"Z2	c #B8DEF4",
+"`2	c #70B6F2",
+" 3	c #0780F4",
+".3	c #69B1EC",
+"+3	c #EBF9FC",
+"@3	c #F7FAFA",
+"#3	c #BBDEF0",
+"$3	c #EDFBFC",
+"%3	c #4EA4F2",
+"&3	c #0A80F4",
+"*3	c #5DACEC",
+"=3	c #FBFBFA",
+"-3	c #B8DDF6",
+";3	c #288CEC",
+">3	c #D2E9F6",
+",3	c #B6D8F3",
+"'3	c #1385F2",
+")3	c #74B7ED",
+"!3	c #3D96E5",
+"~3	c #C3E4F6",
+"{3	c #54A6EE",
+"]3	c #087EF8",
+"^3	c #A0C6E8",
+"/3	c #228CEF",
+"(3	c #F0FBFB",
+"_3	c #E2EFF6",
+":3	c #ADD7F4",
+"<3	c #0F82EF",
+"[3	c #1184F1",
+"}3	c #B0DAF3",
+"|3	c #268AEE",
+"13	c #0481F8",
+"23	c #0B7FF1",
+"33	c #B5D7ED",
+"43	c #93C7EE",
+"53	c #63ADEB",
+"63	c #E1F0F6",
+"73	c #AAD4F2",
+"83	c #1183EF",
+"93	c #B1D8F0",
+"03	c #ECF7F9",
+"a3	c #5FA6E5",
+"b3	c #1785F2",
+"c3	c #A1D0F1",
+"d3	c #FFFCFB",
+"e3	c #D4EBF8",
+"f3	c #3998F2",
+"g3	c #DBEDF6",
+"h3	c #0D84F4",
+"i3	c #ABD5F1",
+"j3	c #7DC0F2",
+"k3	c #4C9EED",
+"l3	c #D8ECF5",
+"m3	c #2D2D2D",
+"n3	c #F3FBFB",
+"o3	c #92C2EF",
+"p3	c #3E97EB",
+"q3	c #DBF1FA",
+"r3	c #FEFEF7",
+"s3	c #FFFBFE",
+"t3	c #A5D0F1",
+"u3	c #0C82F5",
+"v3	c #AAD5F3",
+"w3	c #8FC2EC",
+"x3	c #9BCBF0",
+"y3	c #A0D0F1",
+"z3	c #0980F1",
+"A3	c #A3D2F1",
+"B3	c #9CCCF0",
+"C3	c #0D80F1",
+"D3	c #9CD1F4",
+"E3	c #97C9F1",
+"F3	c #087FF6",
+"G3	c #9FCFED",
+"H3	c #FEFAFB",
+"I3	c #EFF7FA",
+"J3	c #6FB2E6",
+"K3	c #057FFD",
+"L3	c #1B86F1",
+"M3	c #69B0EE",
+"N3	c #D6ECF5",
+"O3	c #E7F8FD",
+"P3	c #9DCBED",
+"Q3	c #439BEF",
+"R3	c #1083F3",
+"S3	c #50A3EF",
+"T3	c #99CBEF",
+"U3	c #DCEDF7",
+"V3	c #95C5F1",
+"W3	c #54A7F2",
+"X3	c #1380EC",
+"Y3	c #077EF5",
+"Z3	c #047EF7",
+"`3	c #1D8AED",
+" 4	c #56A8EF",
+".4	c #A3CDEF",
+"+4	c #C4E2F4",
+"@4	c #8AC3F3",
+"#4	c #5BABED",
+"$4	c #3092EF",
+"%4	c #1482F8",
+"&4	c #0680F5",
+"*4	c #1184F3",
+"=4	c #3093EC",
+"-4	c #99CBF0",
+";4	c #C6E1F0",
+">4	c #CEE3F1",
+",4	c #95C5EE",
+"'4	c #8CC6F4",
+")4	c #60ABE9",
+"!4	c #58A7EA",
+"~4	c #59A7EA",
+"{4	c #54A8F0",
+"]4	c #6EB2EC",
+"^4	c #90C6F4",
+"/4	c #B2DAF4",
+"(4	c #CCE3F0",
+"                                                                                                                                                                                                      . . +                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                      @ #                                                                                                                                                                                                       ",
+"                                                                                                                                                                      + . $ $ +                   + % & * +                       . $                                                                                                                                                                           ",
+"                                                                                                                                                                      + . = @ +                   + - ; > ,                       ' )                                                                                                                                                                           ",
+"                                                                                                                                                                      + . ! ~ {                   . ] ^ ^ / $                 $ ( _ : $ .                                                                                                                                                                       ",
+"                                                                                                                                                                        + < [ } +                 + | 1 ^ 2 %                 . 3 4 5 6 +                                                                                                                                                                       ",
+"                                                                                                                                                                      + 7 8 ^ 1 9 .               0 a 1 ^ 1 b                 c d ^ ^ , .                                                                                                                                                                       ",
+"                                                                                                                                                + +                   + e f g 1 h i +           + j [ k l [ m + +         n o p l ^ 1 q +                 + +                                                                                                                                                   ",
+"                                                                                                                                                r -                     s [ 1 t u v w +       + 7 x y z A B C D $         E F 1 G ^ ^ H +               + $ $ & I                                                                                                                                               ",
+"                                                                                                                                                J K ' + + +           + L B M N O P & . +     + Q R S T U l [ V .     + + W X Y Z ^ ^ ` .             + . 6  .J +                                                                                                                                               ",
+"                                                                                                                                                ..[ +.@.% .             V #.$.%.&.*.4 s $ +   =.-.;.u >.,.'.^ ).7     . !.$.~.{.].^.^  ..           + $ /.(.1 C                                                                                                                                                 ",
+"                                                                                                                                                m [ k _.:.<.. +         ~ [.}.|.1.P 2.3.4.5.+ 6.4 2.7.8.9.0.a.2.b.n + c.d.e.f.g.h.i.j.k.l.      m.n.o.p.q.1 ^ r.                                                                                                                                                ",
+"                                                                                                                                                s.t.u.v.w.x.y..       y.z.4 A.B.C.D.E.F.G.H.$ I.[ a.J.K.L.M.N.O.P.Q.% R.S.T.U.V.W.X.Y.Z.`.       +.+++@+f ^ ^ #+                                                                                                                                                ",
+"                                                                                                                                                $+1 [.%+&+[.*+=++ +   -+[ ;+>+,+'+)+!+;+B ~+{+]+1 ^+/+(+_+:+<+[+f }+|+[ 1 1+2+3+4+5+[ 6+7+  + + 8+9+0+a+;+^ 1 b++                                                                                                                                               ",
+"                                                                                                                                                $+c+d+e+f+S.[ g+h+.   c [ S.i+j+k+l+m+R n+o+(.1 ^ p+q+r+s+t+u+v.u.v+> ^ ^.w+x+y+z+A+~.4 B+  + C+D+0+E+F+G+^ 1 H++                                                                                                                                               ",
+"                                                                                                                    + . + .                     I+1 J+K+L+M+N+[ O+P+. Q+^ R+S+T+U+V+W+X+Y+[.Z+[+`+ @.@+@@@V+#@$@%@&@R *@=@-@;@;@@@>@,@P '@)@!@z.~@{@]@^@/@^ 1 (@+                   + .                                                                                                                         ",
+"                                                                                                                    . . _@:@+                   <@[ [@}@|@1@2@3@4@t.|+& ^ J+5@6@7@k+8@9@0@B l a@b@c@8@d@e@f@g@h@E+i@j@k@l@m@;@;@n@o@p@q@r@s@t@u@u v@w@x@y@^ 1 z@.                   I V A@                                                                                                                      ",
+"                                                                                                                        B@[ C@D@+ .             E@2.F@G@x+H@I@J@O.a.1 K@^ L@M@N@O@P@r+Q@R@S@e.T@U@K.L.K.V@T+L.W@X@Y@Z@`@N@;@;@;@ #.#+#R+@#[+j.##$#%#t+&#*#^ ^ :@        . . . . =#-#d C@                                                                                                                        ",
+"                                                                                                                        ;#[ [ [ >#,#            $ [ t.'#)#V+l+!#~#*.^ ^ ^ G {#N@]#^#/#(#_#:#<#[#}#|#g@1#2# #3#4#5#6#7#8#9#;@;@;@ #0#a#R+b#n+c#d#e#t+V@8#f#^ ^ :@        + $ g#>#8 4 [ h#                                                                                                                        ",
+"                                                                                                                        % i#l f j#k#l#m#n#o#    % k %@p#q#|#r#6@s#t#u#v#w#x#y#H@z#A#B#k+_+C#D#E#F#@@G#H#I#H@J#K#L#M#N#3+3#O#P#O@Q#R#S#T#[ U#V#W#X#L.V@Y#Z#^ ^ w . . $ % `# $q@[@L@^ .$6                                                                                                                         ",
+"                                                                                                                        + +$n+@$w##$$$&+%$&$*$  % i#w#=$-$L.;$_+>$B#,$'$f )$!$t+~${$]$L.V@m@^$/$y+($_$:$<$r+[$V+}$|$1$t+2$3$4$5$V+6$7$[ 8$9$0$l+k+k+@@a$Z#^ ^ .   y.] g+t.b$c$d$e$^ j $                                                                                                                         ",
+"                                                                                                                        . c f$g$'$h$i$j$k$l$m$n$o$K J+p$q$r$s$e@3#V+t$u$v$w$K.y+x$y$z$A$k+4+B$($C$D$E$B F$G$f@J#P@@@_+H$I$J$K$L$M$d@N$O$P$Q$n@3#R$k+k+S$T$^ 5 U$V$W$1 ^ X X$Y$Z$2.4 `$.                                                                                                                         ",
+"                                                                                                                        + .  %Z+$..%+%@%#%n+2.q@$%%%&%*%=%M$k+-%_+;%y+C$>%,%_+V+'%)%S.!%~%($s+;%(${%e.E+p@]%l+^%V+_+/%(%0+_%:%5$<%[%}%|%1%<%r#2%]#r+V+3%4@^ 4%5%~.[ v.L@6%7%8%}.E+5 U$.                                                                                                                         ",
+"                                                                                                                            9%$.#.0%a%b%c%d%e%f%1 u.k 2.g%h%[%i%j%k%@@5$3#r+V+k+l%m%~@n%o%y+V+l+p%q%*.l g r%s%y+s+t+t%u%w#4 v%J#J#3#C$w%t+x%y%z%($z+A%B%C%L@f D%E%e.F%G%H%X#I%J%4 _@+                                                                                                                           ",
+"                                                                                                                            e K%F.L%M%|#U+N%O%d%6+k P%Q%R%m@S%T%U%V%W%[%(#r$<%X%Y%R Z%`% &.&K.|#+&@&f ^ ^.#&$&Q#%&&&*&d$1 4 =&C$;@C$<%_#l+-&;&>&[$<%@@,&6#f Z+'&)&!&~&<%{&4#]&^&2./&                                                                                                                            ",
+"                                                                                                                            (&_&l :&<&Q#C$|#[&}&|&1&2&3&4&5&6&7&[ R 8&9&0&s+a&y+b&^&G j#c&d&e&a$f&R ^ ^.^ U#g&5&h&i&j&k&i@#.l&)#5$k+<%m&n&o&k#p&V@q&5$l%r&Z$s&t&u&v&y+6@_+w&x&J+y&$                                                                                                                             ",
+"                                                                                                  + o$6 + +     +   +       n#z&Z+A&B&x%J#r#y+5$f@C&D&E&F&G&K.H&I&J&J%K&L&M&N&Y#O&P&i@&%g [+Q&R&S&l ^ ^ T&x&U&V&W&t.X&Y&'&,@Z&`&V@<% *.*+*t.2.@*<%s$6$#*$*%*&***K#L.L._+[$=*#%[.-*.     +   + + + + + + 6 o$                                                                                                    ",
+"                                                                                                + $ ;*5 >*,*'*@ $ . +       . ' )*^ !*~*@@<%{*Q@]*y+;%t$^*/*5$(*_*f :*<*[*}*2%|*1*m%^ ^ ^ M o&2*~.L@^ ^ ^ 3*#%4*5*e$^ ^ ^ &@6*7*($8*9*[@b#n+f 0*l+B$<%a*b*/#[&c*V@;@@@k+d*e*f*g*h*.     . $ $ $ h+9 B@i*j*k*                                                                                                    ",
+"                                                                                                  + . l*[ 1 1 [ m*I.n*o*p*+ . . q*1 X&r*J#<%3#S$H@q+[$<%9#x+m@s*t*f 1 n+u*v*:#w*I&x*^ ^ ^ &@[@q@[@T&^ ^ ^ e$f f$f$c+^ ^ ^ 1 +*y*z*A*q@&%Y&^.B*C*@@Q@X#4+D*[$6&E*F*_+<%n@G*H*I*J*(&$ + K*o*L*I.M*[ 1 [ 4 N*y.                                                                                                    ",
+"                                                                                                    + p*O*^ ^ ^ ^ ^ 1 4 8 P**+Q*= [ R R*S*5$[&T*U*V*_+H@ #k+W*X*Y*J%g ^.L@6+Z*`* =[.^ ^ ^ :*Y&1 &@L@^ ^ ^ .=+=d$'&c+^ ^ ^ c#~@@=#=$=Y&&%L@c+%=&=J#[%k+r$'+*===-=8#x+Q@2%;=6#;+>=,=*+P*d 4 [ ^ ^ ^ ^ 4 > '=.                                                                                                     ",
+"                                                                                                      + )=1 l n+M '.j.!=j.k 6#X&1 k k ~={=]=1$^=/=(=_=:=<=H@K.K.[=[@b#T&^.&%X&}=c#^ ^ ^ ^ ^ b#c+l ^ ^ ^ ^ v.:*|=g ^ ^ ^ ^ 1=R Z 1 L@L@R+u.~@2=3=y+a&V@4=5=6=t.7=y+C$@@8=9=0=R k &@[ J%N J%`%f a=^ ^ 4 b=+ +                                                                                                     ",
+"                                                                                                        . c=k d=e=f=g=h=i=j=k=:&l=J+f Y m=]=[%n=o=O.p=q=r=s=t=|#u=&+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+v=w=x=Q#y=z=A=x&B=+*C=L.D=5&E=F=&@&%n+[+G=H=I=J=K=L=M=c+^ b+$                                                                                                         ",
+"                                                                                                        + , N=R #%O=P=Q=R=S=T=U=V=W=X=Y=Z=`=k+_+ -u@.-x*&@P%+-@-#-;.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.f $-%-&-*-6+f [ =---;-<%k+8#>-0=,-'-)-!-~-{-]-C$^-/-(-l > /.+                                                                                                         ",
+"                                                                                                        + $ _-N N+M+:-3#;%H@Q@l+<-[-}-|-1-2-X%X%3-,@'&t f ;+4-f*5-F@^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.J&6-7-,@$=~@L@;.O.8-]=(+y+9-0-a-b-c-q+{*[%m@5$G&d-e-p@4 Q*$ .                                                                                                         ",
+"                                                                                                          + f-g-f :*h-i-n@k+K.@@J#H@[$C$x+r$J#j-k-l-g g R+:*m-v.1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g e$v.J+^.c+^.~@n-o-z+L.W*r#k+r+@@V+x%@@@@L$k+p-q-4 U#r-y.  +                                                                                                         ",
+"                                                                                                              s-t-^ u-v-5&5&w-x-3+<%k+ #;@L$(#k+y-z-T&^ ^.c+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ i@A-&*v&l+k+w%5$z+6&V@<%B-C-P@D-E-<#*@F-G-$                                                                                                             ",
+"                                                                                                              + b [ H-I-J-k+{*<%K-L-M-N-O-1%s+r+x%P-T#&@G Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ w#Q-r$R-S-(+5&T-U-V-W-X-Y-r#3#Z-`-:&f* ;.;                                                                                                              ",
+"                                                                                                                $ *+X&+;@;#;$;_#%;a#&;*;=;-;;;>;,;';);S !;e$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ *-~;{;];^;/;$-(;_;:;<;{&;$y+[;};l J+|;H.                                                                                                                ",
+"                                                                                      . . + + + + + . . . + + + + =+1;P&S.2;3;J#R-4;<#E+~@.-b#5;6;7;8;9;L@1=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0;a;b;c;~@d;e;~@,@f;;-V+5$[$g;h;q@d i;. + + + + + + + + + + + + . +                                                                                     ",
+"                                                                                    + j;k;k;k;k;k;k;k;k;j*l;l;l;l;.$P m;P n;o;[%p;q;r;G=u.[ g ^ O s;t;u;G J+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ l v;T&^.1 y :*w;x;y;1$_+3+z;A;B;P ]+.$C;l;l;l;K@k;k;k;k;k;k;k;k;j;+                                                                                     ",
+"                                                                                    + . D;a [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ x*3*`%a@E;F;($5&G;H;f n+T&L@t E.u.G :*Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.L@L@c+b#d=&@I;J;6$5$_+K;L;v;+*^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 M;$ +                                                                                     ",
+"                                                                                      . $ N;J ^ ^ ^ L@B*O;p#P;P;P;P;Q;R;S;T;U;V;W;@@v&X;R 1 L@Y;Y&1 J+^.g v.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1=1=^.b#1=w#t.Z;X#5&w%k+`; >.>+><+P;P;P;@>@>P;#>$>L@^ ^ ^ a %>. . .                                                                                     ",
+"                                                                                        + . &>)*[ ^ *>=>->6&3+x+x+x+;>F#C$R-x+<%5$5$1%>>,>J%e$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [@'>)>!>[%@@5$B$r+~>3+Y#x+x+x+x+X#t$X#{>]>^>Y&P&d ;*                                                                                            ",
+"                                                                                          . $ />(>^ l _>:>6$<%;@;@;@;@V+C$5$m@w%w%n@[&Q@<>[>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R }>|>v&X%W*r$s$;$1>@@@@ #;@;@;@_+A%Q$2>3>q@f 4>6.+                                                                                             ",
+"                                                                                              . @ 5>6#d$6>7>Q@;@;@;@C$1$8>|#y+[%[%[%9>0>a>b>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [+c>d>e>f>g>Q@V@Y#@@h>i>n@;@;@;@j>k>l>m>@$n>o>p>                                                                                                ",
+"                                                                                            + . . e q>d$[.r>s>Y#@@;@@@t>u>v>w>x>y>z>A>B>C>D>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+c+^ ^ Y;1=^ c+^.^.1=1=e$e$e$e$:*L@^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ &@E>F>G>H>I>J>K>L>M>N>O>3#m@ #m@6&P>Q>k &@y&R>S>                                                                                                ",
+"                                                                                                + . e 5%1 ^ T>U>V>V+k+~%W>A.1 l ~@~@g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g g ^.^ T&1 E.w#D%T&c+L@u.w#w#&%[+1 1=Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g T&w#n+2.}.X>Y>Q#@@(+2%Z>`>D%:*r.p*                                                                                                    ",
+"                                                                                                + + + o$q*1 &@f* ,.,<%Q@+,@,&.k x*f b#^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.^ 1 ~@c#<*g ~@X&L@l g g g c+Z+k$:*+=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$#,F.;+U#$,%,t+;%<%W+&,*,=,M -,;,+                                                                                                     ",
+"                                                                                                        w >,B <*,,',),C$Q@9.!,~,'.&%^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 *.G={,+#],^,/,(,_,:,<,<,<,*,[,R+n+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Y;:*},|,1,2,5$ #/*3,4,5,w#L@6,7,                                                                                                        ",
+"                                                                                              +   + 8,9,0,a,b,g i@c,d,T-[%X%e,f,g,B 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+^ e$^ ^ L@1 [.1 t.T#'.[ =-Z*h,i,j,k,l,m,8#B#Y>n,n,o,p,q,l |=Z+,,r,y ~@=,1 L@^.g ^.c+^ ^ c+1=^ ^ ^ ^ ^ ^ ^ f j.s,t,t$6@<%a&u,v,%@R l ,@w,x,y,z,8,A,+                                                                                               ",
+"                                                                                              % =+&>j B,c,C,D,j#R E%E,F,b%G,k+t+H,I,Y;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g x*g Y;Z%b#Y&J,K,L,M,N,O,P,{@Q,R,+,s+X%r#;@;@;@n@@@[$C$]*S,g T&T,U,V,W,X,Y,Z,a@Y;&%L@Y&g ^.^ c+^ ^ ^ ^ ^ ^ ^ d$Z.`,;-y+@@w%5& 'i$m%&@n+v.x&Q%.'+'@'#'$ .                                                                                             ",
+"                                                                              . + + + + - $'Q r-1 1 ~@O ;+4 %'&'*'='-';'t$[%[$r+>','g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.2.&@X&i.''7=)']-C$Q@Q@S*!'5;&+~'{'L.q&]#;@;@;@;@**5$$;]'^';+f /'('t+S-8#_':'<'['}'+*;.l ^ ^.^.^ ^ ^ ^ ^ ^ ^ [@'.|'1'2'C$k+L.3'4'5'6'7'5;O.+*j$F.n+[+8'9'0'A@+ . . + + +                                                                             ",
+"                                                                              $ a'b'b=c'5 4 1 ^ ^ ^ M %'d'e'f'g'Q=H@r#K.n@h'C#i'j'k'1=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.<#l'm'n']-[&k+<%5$x+o'p'q',@r'2.s'^-Q# #;@;@;@@@C$w%t'u'r,&+d$v'w'x'<%m@1%5$O-C&y'z'A'B'1 g ^ ^ ^ ^ ^ ^ ^ ^ [+'&[ C'D'E'[%<%k+Q#t+X#F'G'H'I'J'6+Y;^.^ ^ 1 K'c'L'0 { $ +                                                                             ",
+"                                                                              . H+J [ [ [ ^ l p$M'N'O'P'Q'K.y+ #O@5$_+{*@@R'S';.E.f ^.^ ^ ^ E.j#J+b#Q%B q@T'U'V'C$r#W'3#B#X'Y'Z'`'r> )[,.)[ +)@)#);%V+Q@r+r#y+$)%)0+0=O J%U#G=&)*)=)-)Q=;)x%Q@C$>),)')))k &@m%1 g ^ ^ ^ :*|=e$u.!)~){)y+V+ #C-_+3#])<%+,^)/)()_)i.&@J+1 [ [ [ 9'.                                                                               ",
+"                                                                              . + b'c'4 [ ^ l :)<)[)<-3#@@r+8#@@B$;@O@})];|)l ^ ^ ^ ^ ^ ^ ^ &%n+u.u.h;1)2)3)**4)H@X#5)6)7)8)t.6+:*e%9)L>0)F.P&o+,>a)b)c)d)e)f)g)h)m%P&i)j)k)0)Y&f$p=l)m)n)o)~$k+[%i>~&p)q)#.H-w#$=^ ^ ^ ^ ^ ^ ^ r&r)s)t)s+Q@(#0&;@<%C$V+y+6$F#u)v)c#n+1 4 c'w)w $ +                                                                             ",
+"                                                                              + +     !.W$[ t.w;u@x)y)%,3#V@_+k+J#y+t$z)A)E.^.^ ^ ^ ^ ^ ^ ^ ;+'.f$B)C)%,y+**Q#D)E)F)T#G)x&J%H)I)J)K)L)M)N)v*t.Z%i@m-O)P)Q)R)p=S)Z+[ E,T)U)V)W)X)Y)Z)h)`%[+`) !.!+!1%s+x+@!#!$!0+[.^ ^ ^ ^ ^ ^ ^ f [+Y.l&%!&!6&w-@@{&$;k+*!=!-!+#;!q@;.>!N;+                                   . + . .                                           ",
+"                                                                                      . $ Q+,!x*#$'!)!!!~!8#k+;@@@x@{!]!^!l ^ ^ ^ ^ ^ ^ ^ ^ #./!(!_!G&W'r+:!<![!B'}!<#|!1!2!3!v&e,Q@5&6@U)4!O;~@Z+j#3*w;&@[ :*1 m-5!6!q+|#L.8>5&;>7!8!9!0!m-[.*.a!b!c!k+M$l+d!e!=$^ ^ ^ ^ ^ ^ ^ g :*[+P f!g!a&_+k+3#Q#h!i!e%j!k#F=k!l!m!. +                                   + y.A@.                                           ",
+"                              + . + $ n!o!p!q -+. . .                                       =.b=q!4 ~@A&r!s!t!y+u!v!w!^.e$^.^ ^ ^ ^ 1 :*X ;!x!y!y+k+5$z!A!B!~.C!D>D!E!F!+@[%m@O@@@O@n@;@V+1$G!H!I!p@E+e;m-J!)!K!L!M! #m@;@;@;@;@]#;@;@_+N!O!P!Q!`%*.R!S!T!X#;$Y#U!x!u Y@&@u.T&~@b#c+^ ^.l *-V!]=N@W!X!Y!c+^.;.K@Z!6 `!                                        =#: ).*+ ~$ . +                                   ",
+"                                . <@.~[ 4 [ 1 K@#+k*{++                                       . +~H+@~w#~@#~$~%~&~*~T&^ ^ ^ ^ ^ ^ ^ '&k =~-~;~3#<%9.>~,~J!'~)~!~~~{~<%;%]~1$;@;@;@;@;@;@;@m@5$^~/~(~_~:~<~[~}~/~|~O@;@;@;@;@;@;@;@;@;@;@@@9#B#1~4,2~B;B'3~4~2%5~B$6~7~8~[ J+D%9~L@^ ^ ^ l ~@0~a~b~c~T@[ ^ a j @ . +                                           6 t-[ [ J b+&>$                                   ",
+"                          + % d~e~C ^ ^ ^ ^ ^ ^ ^ ^ ^ f~g~h~;,. $ + $                               i~j~N k~l~t l$r&c+^ ^ ^ ^ ^ ^ ^ F.m~n~H@[%F#|%o~p~q~B*r~s~x+q&Q#<%])a&;%;@;@;@;@;@;@;@[%[%;@V@1$5$B$]);$<%8@r$;@;@;@;@;@;@;@;@;@;@;@@@<%7@7@{&t~u~v~e.n%w~x~C$[%y~z~A~B~'&^&g ^ ^ ^ &@E.G A&5;^&C,$$C~=#                          + . . $                 . D~1 ^ ^ ^ [ 8'E~- . +                           ",
+"                          I I.[ [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ [ [ F~} 0'(                               G~H~I~J~f$c#J+w;b#^ ^ ^ ^ ^ ^ ^.K~L~M~V@N~O~(=p=A.P~Q~~$y+m@k+O@L.P@s+L$;@;@;@;@;@;@;@O@3#[%V+_+k+ #Q@t+O@Q@V+;@;@;@;@;@;@;@;@;@;@;@O@1%V+r$(+N@G&R~S~p@Z+0!T~[;;%v&U~V~&+:*^ ^ ^ ^ [@<*b#J+2.1 W~X~$ .                             ( /&-++               . q ^ ^ ^ ^ 4 [ 4 Y~p!@                           ",
+"                  + $ I Z~8 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ~ w .                               `~ {[ ^ ^ ^ ^ ^ ^ ^ 1 [@u@.{;~Q@l++{@{0+~._)#{x@t+_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r$y+C$a&[%n@ #X%L$@@W* #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #]-${%{6#p$&{*{x+6&={-{;{R+J+n+Y&^ ^ ^ ^ ^ ^ b .                           + . I+M*4 9 +               + -+5 [ ^ ^ ^ ^ ^ ^ ^ J _@!.                      ",
+"                  7 >{8 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ Q+.                               ,{C;1 ^ ^ ^ ^ ^ ^ ^ 3*'{){D-[%3+!{x;`%~{{{]{<%^{S%m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#_#($L._#/{({_{:{[$O@<{k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$q+[{}{|{))1{2{K.3{X*4{5{9~n>n+^ ^ ^ ^ ^ ^ C;#                           + U$f~[ 4 D~+               + $ 6{[ ^ ^ ^ ^ ^ ^ 1 ^ 7{N;                      ",
+"                + 8{^ ^ ^ ^ ^ ^ ^ 1 4 f~Q I.$%4 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ Y~K*                          + 9{0{^ ^ ^ ^ ^ ^ ^ ^ ^ 6#a{S-{&2%b{M+;!c{d{e{|#<%f{m@**;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@H@g{h{i{j{e-k{l{m{n{o{;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%R-C$p{q{r{s{t{u{G&6&Q=v{w{9~u.^ ^ ^ ^ ^ ^ [ y&+~.                       + x{1 ^ [ C;K*                  & 4 ^ ^ ^ ^ ^ ^ [ >,+~.                       ",
+"                . t-^ ^ ^ ^ 1 1 ^ C;y{a'. + ( D z{A{^ 1 1 ^ ^ ^ ^ ^ ^ [ B{                        + U$m 1 ^ ^ ^ ^ ^ ^ ^ c+C{D{E{_+F{G{o&#&H{I{r+y+Q@r#z+P@m@;@;@;@;@;@;@;@;@;@;@;@;@W*;@5$l+J{K{O.#.6#0=J%F.B~f+L{X'm@;@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#]#5$|#K#M{);6#N{O{-%3#P{_~U#R+c+g b#L@^ ^ [ [ _ + +                     - 7{^ ^ 1 1 |++               + A{1 ^ ^ ^ ^ ^ $%h#$ + +                       ",
+"                D [ ^ ^ ^ 1 4 5 (@7 $ +           . o$Q{R{r.C ^ ^ ^ ^ [ a @..                   + $ Q*4 1 ^ ^ ^ ^ ^ e$:*e%S{F#n@T{U{4 V{W{X{m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#R$V+Y{Z{`{ ]w#H-#.q@k j.Y&:&#,.]+];@y+ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$B$@]#]S i)$]%]W'K#&]#=:*f X&6+^ ^ ^ ^ 4 a,% .               + $ *][ 1 ^ ^ ^ >#$             . K*).^ ^ ^ ^ ^ g+'                               ",
+"              + / 1 ^ ^ ^ 1 C;' $ + + +           + . . + . j;l;^ ^ ^ [ 1 C@a'                +   D@8 [ 1 ^ ^ ^ ^ ^ J+t.=]G&r+T{-];];.>]3)N@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #Q#($,]']k==-~=_*)]!]~]{]]]l k N 5#^]1%@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%V+[%/](]h)}._]:]X#1%u+*@6+&%R+^ ^ ^ ^ 1 J <].               + []d [ 1 ^ ^ ^ J }]% +         + <@^ ^ ^ ^ ^ ^ x{$                               ",
+"              + W$[ ^ ^ ^ 1 |].                               1]4 ^ ^ ^ ^ 4 '*              + $ =+d.[ ^ ^ ^ ^ ^ ^ ^ m%2]3]V@4]5]e.E,6]7]y+8]@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#H@_+9]R #,'>0]a]c)b]C$X-c]d]h;'.#%e]t+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@B$@@r$f]g]x&h]9$x+;%i]j]k]J+w#^ ^ ^ ^ ^ ^ g+=.              + l][ ^ ^ ^ ^ ^ [ [ m]w +       + / ^ ^ ^ ^ ^ 1 /..                               ",
+"            + , a 1 ^ ^ ^ 1 |++       + + p*n]+ + + .         - g+1 1 ^ ^ 1 K@n]              . o][ ^ ^ ^ ^ ^ T&l R p]q]@@|@r]s];!t]u]z+5$@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r#;@v]w]j.%@A>x];$@@($O@C$6@y]z]s;m%A]B];@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@y+n@k+5$<%C]D]F@E]F]x+P#G]H]B J&^ ^ ^ ^ ^ ^ [ n*+ +       + + I]d 1 ^ ^ ^ ^ ^ 1 1 1 K A@.     . J]^ ^ ^ ^ 1 5 . +                               ",
+"            $ ] ^ ^ ^ ^ ^ ^ 9{+       + $ R.d A{(@<@%         . <]8 [ ^ ^ ^ ^ m].           + /.4 ^ ^ ^ ^ ^ c+G q@K]L]K#y~M]N]5{O]P]O@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%n@7*+)`%B'Q]y+O@;@;@;@<%[&Q#R]c#v.E]S];@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%r#T]U]6#V]W]G&K.X]Y]E+c+^ ^ ^ ^ ^ 4 ).=#.         . Z]4 1 ^ ^ ^ ^ ^ ^ ^ 1 4 F~@.+   `]Y~^ ^ ^ ^ 4 *+                                  ",
+"            $  ^^ ^ ^ ^ 1 y&. +       . A@> 1 1 1 [ i#+       + + n$1 ^ ^ ^ ^ 8 i;        + % (.1 ^ ^ ^ ^ ^ g 5;.^+^H@V@@^#^N+$^y;h%w%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r+%^$$0+`>&^[%;@;@;@;@m@x+[%*^=^T&0+-^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W*[%[%;^>^q~,^'^1%[&)^!^c+^ ^ ^ ^ ^ 1 1 #+w       + c )*1 1 ^ ^ ^ ^ ^ ^ ^ 1 1 1 ).] + ,{1 ^ ^ ^ ^ 1 z@                                  ",
+"            a'7{^ ^ ^ 1 [ & $ +       + o*1 ^ ^ ^ 1 ~^            =.C;^ ^ ^ ^ 4 `$      + . y{[ [ ^ ^ ^ ^ ^ ~@;!{^3+h%]^^^c,/^(^@@_^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$y+:^P%k <^[^B$W*;@;@;@m@V+1%}^B=&@C{|^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W*J#r+O@1^U.F.2^3^(+4^5^^.^ ^ ^ ^ ^ ^ ^ [ 9       + B{[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ]+Q*%>[ ^ ^ ^ ^ 4 #                                   ",
+"            6^1 ^ ^ ^ 1 4 q +         . B@1 ^ ^ ^ [ 3             @.C ^ ^ ^ ^ K',         - O*1 ^ ^ e$^ |=1=B 7^8^V@9^0^Z$a^b^ #@@ # #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$;@c^d^@$5;e^y+a&R$C$O@B$f^Y#g^n+X&}'h^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+B$w%5$6$i^j^4 k^X#;$u,l^m^$=Y&^ ^ ^ ^ 1 8'. +     E~1 [ 1 j*6{n^F~[ 1 ^ ^ ^ ^ ^ 1 1 d 1 ^ ^ ^ ^ m*.                                   ",
+"            o^[ ^ ^ ^ 1 $%-           % r.1 ^ ^ ^ 1 []            n$1 ^ ^ ^ ^ #+$         L*1 ^ ^ ^ n+D%L@^.<^p^6@q+q^P }'r^y+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@m@5~s^t^~@g u^v^v&w%B$**L.1%w^x^[@Z%y^z^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@[%6&A^(-B^C^D^_+E^1+'&A&^ ^ ^ ^ ^ ^ D;.     []7{c=F^K*+ $ `]B@1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ >,.                                   ",
+"            G^1 ^ ^ ^ 1 H^+           # [ ^ ^ ^ ^ F~%         + . I^1 ^ ^ ^ ^ L'+     . -+Y~1 ^ ^ ^ L@J^^&#%K^L^[&M^N^+;O^P^n@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@Q^a$R^d$l 0+S^T^O-L$V+_+U^V^S.x*,@W^R-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@5&X^Y^0+Z^`^V@ /./D,c$^ ^ ^ ^ ^ ^ F~+     + a'+   + +   + . n!(>1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ n^$                                   ",
+"          =+K'[ ^ ^ ^ 1 E~+           z@4 1 ^ ^ ^ '@$ +       . C+.$4 ^ ^ ^ 1 c .   + $ ) ]+1 ^ ^ ^ ^ c#c&+/@/5&#/$/$.%/&/|#<%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@V+R-*/=/~@Z*I*-/;/>/,/'/)/p=t.`%!/R'9#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@+@l+~/,^$.{/]/<%^/// )^ ^ ^ ^ ^ ^ [ I+                      + =.r ]+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ (/$                                   ",
+"        . }]1 ^ ^ ^ ^ [ _/+       + $ 8{^ ^ ^ 1 [ o*+         . q ^ ^ ^ ^ [ m*+       { 0{1 ^ ^ ^ ^ ^.c#T#:/8>Q#</Q!O.[/(+<% #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@;@J#}/|/k'5{d$m-x*c#1/^&(-J%2/3/@@s+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%;@y+4/N %'5/_#N@6/F.c+^.^ Y&^ ^ ^ 0{. +                       . N;(>[ 1 ^ ^ ^ ^ ^ ^ ^ #+;,+ +                               ",
+"        . >,^ ^ ^ ^ ^ 5%. +       + a'd ^ ^ ^ 1 $%U$          . B{^ ^ ^ ^ 4 7/        Q{[ ^ ^ ^ ^ ^ e$B=//8/|#9/0/Y@a/b/v&c/]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@Y#d/e/<#:&J^c#E.!;f/U#g/h/R-k+_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@i/j/h;k/^~h%l/m/T&^ ^ ^ ^ ^ ^ [ $'+                       . $ n]Z~^ ^ ^ ^ ^ ^ ^ ^ 4 Y~n/.                               ",
+"        { M*^ ^ ^ ^ [ M;          + />1 ^ ^ ^ 1 I.+           { (>^ ^ ^ ^ [ D;        I.[ ^ ^ ^ ^ ^ j#p==]5$y+o/C!A.p/q/;@_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@8#r/s/t/$@1+_%f*u/v/w/@@[%M$w%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+x/0)J!y/z/N@A/;.1 ^ ^.^ ^ ^ 1 ! .                           + $ B/4 ^ ^ ^ ^ ^ ^ ^ ^ ]+Z~U$+                           ",
+"        @.[ ^ ^ ^ 1 [ <@          + ,*1 ^ ^ ^ 1 C/+            ~4 ^ ^ ^ ^ J '       []J [ ^ ^ ^ ^ ^ n+D/E/r$C&F/0=G/H/;%C$;@r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+;@[%l+I/J/K/L/M/[;L$C$a&_+w%V@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@N/O/$.P/t$q+Q/R/B 1=c+^ ^ ^ 1 d +~                          + % $%[ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 P*/.                          ",
+"        z{1 ^ ^ ^ ^ l;-           + W$1 ^ ^ ^ 1 (/+           x{[ ^ ^ ^ ^ >#.     $ S/^ ^ ^ ^.c+g ^.!;F]T/v&U/p@;!V/r+;@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$1$J#k+B$B$W* #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%k+W/X/0+Y/J#D=Z/ )A&J+^ ^ ^ 1 [ S/$ +                       . &>1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8 n$w . . `]}]! t-e +       ",
+"        K 1 ^ ^ ^ 1 B/+           @ 4 1 ^ ^ ^ F~{ +           i*[ ^ ^ ^ ^ $+.     $ >*^ ^ ^ 1=T&L@T&`/ (5&.(+(p=@(x%($;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$@@@@x+J# ##(B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r$J#C&$(t.%(F#3#&(*(k ^ ^ ^ ^ ^ [ >*. +                       + ! ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 H^h#e~.$4 4 [ =(+       ",
+"      C+J [ ^ ^ ^ ^ 1]+       + . -([ 1 ^ [ [ B@. +       + A@.$^ ^ ^ ^ 1 D .     =#C ^ ^ ^ 1=n+~@E+;(4^Y#>(&;~=,(K.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@[&Q#y+n@5&[% #B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L$C$Q#'(w;N.)(@@2%!(l ^ ^ ^ ^ ^ ^ ]+~(+                       C+a ^ ^ ^ ^ [ {(o![ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 l;[]+       ",
+"      ( 0{[ ^ ^ ^ 1 .~+       + . s.4 1 ^ 1 4 :@+         + s ^ ^ ^ ^ ^ ).+ +     (@1 ^ ^ ^ ^ :*[+~.](9#|#^(O _>/(@@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+<%V@((_(:(<([(}(5$r+@@5$n@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%V+w-/]|(F.1(b]R-2(3(J+^ ^ ^ ^ ^ ^ a,+                       -([ ^ ^ ^ ^ 4 I+y.Q+.$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ 4(. +       ",
+"        w))*^ ^ ^ 1 ]+z@. +   + $ `]6.5(: [ j*o$          . M;^ ^ ^ ^ [ 6{        C@[ ^ ^ ^ ^ b#Z+6(7(T/8(9(G=0([%k+k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1%1%a(b(1+E.!;E.P ,^c(d(l+1$T/r+m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+e(Z+A~f(V@g(v@[@^ ^ ^ ^ ^ ^ _ .                   + $ i*[ ^ ^ ^ ^ > ,     c.h(4 [ ^ ^ ^ ^ ^ ^ ^ ^ z.-           ",
+"        . 6{^ 1 ^ ^ [ > I +   + + . + + + C+D@+           a'(>^ ^ ^ ^ 4 Q+      s-)*1 ^ ^ ^ b#l l i(0&j(k(l(;.m(X%@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;%n(o(p(m^%@l=a.5{0+g*q(r(($_+k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@s(Z$J!t({&~$u([+^ ^ ^ ^ ^ 1 ).A@                  . ' 8 [ ^ ^ ^ ^ B/+     + % E~8 1 ^ ^ ^ ^ ^ 1 1 z@+           ",
+"        . =+5 [ ^ ^ ^ 1 C@w                               I 4 ^ ^ ^ ^ [ o$    . D@^ ^ ^ ^ ^ 1=n+Z+v(5$V@w(1 x(c)C$t+<%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@y(z(H-v.q@A(B(l{Z*C(#%c#D(2#V+k+ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@E(F(A.G(H@6@J)a@^ ^ ^ ^ ^ 1 [ <]                  + a,1 ^ ^ ^ ^ ^ n^$         .  ~>*[ ^ ^ ^ ^ 4 d.=.+           ",
+"        . + Q+[ ^ ^ ^ ^ 1 a,+ + + + +               + + + z{[ ^ ^ ^ ^ (.$     . n*^ ^ ^ ^ ^ g G H(I([%2,J(+=K(k+X%;@W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L(E]~=}=M(N(O(P(Q(R(+=A&w!S(x- #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@l+T(*@U(y~m@V(T#^ ^ ^ ^ ^ ^ 1 4(+             + + . >#1 ^ ^ ^ 1 C p*+         + + -+g~^ 1 ^ ^ 4 y{.             ",
+"            a'#+^ ^ ^ ^ ^ ]+W(,*D@-+$ +           . . d~~^8 [ ^ ^ ^ ^ z{$     + k;^ ^ ^ ^ ^ ^ c+X(O(V+Y(Z(k~`(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ _a.p=._+_N@Q@3#y+@_'.l ~.#_<%W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@9#$_}=%_&_W'*_=_^ ^ ^ ^ ^ ^ ^ *+. +       + $ e x{K ]+^ ^ ^ ^ [ I^                . E@4 [ ^ 1 K {               ",
+"            + 9{]+1 ^ ^ ^ ^ 1 1 1 )*>#4(# + + + + !.R.C 1 1 1 ^ ^ 1 1 6^.     a'2 ^ ^ ^ ^ ^ ^.~@-_@@@@;_G=Q,>_;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@,_=-6#0@;-m@K.<%@@'_)_f ^!!_5$k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@Q@~_u@Y {_h'3#]_^ ^ ^ ^ ^ ^ ^ 0{$ +   + A@L (.a 1 1 1 ^ ^ ^ ^ 4 L*                + `]5 1 1 1 ;#.               ",
+"                n$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 +.o!L*.~4 [ 1 ^ ^ ^ ^ ^ [ f~{ .     c.[ ^ ^ ^ ^ ^ c+0+^_;@6@/_*@(_U);@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@__:*2.:_]-{*<%n@(+<_[_M l }_J#5$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%;>|_x&1_l+q+2_^ ^ ^ ^ ^ ^ ^ )*=+.   + ,{1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ #                      ^1 4 #+. .               ",
+"                - 5%1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 1 1 ^ 1 1 1 ^ ^ ^ ^ 1 1 [ B{+ +     6.1 ^ ^ ^ ^ ^ g 6#3_y+c)4_k=5_k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@6_Y@c$F+J-J#V@r#G&7_8_u.'.9_R$5$m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#b]0_F.a_Y#6@b_Z+&%n+1=^ ^ ^ 1 /.+   + y.0{1 1 [ ^ ^ ^ ^ ^ ^ 4 x{                  + ] [ [ c + +               ",
+"              + . 0'4 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ I^F^w         c_1 ^ ^ ^ ^ ^ ^&d_e_;%f_g_;.h_@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1^i_+#<*j_V!k_l_m_n_6+:*!^o_y+L.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@V+p_N+q_C&r$r_s_Q%E.Y;^ ^ ^ 1 b +   + . c.'@K@[ 1 ^ ^ ^ ^ ^ [ ..                    ' (.4(.                   ",
+"                + + t_R.Y~[ [ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 5>y{% + +         ,*1 ^ ^ ^ ^ ^ g [*u_r#v_w_))x_6@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1%y_h;F=l(F.z_A_5;Q%p@E+B_R-J#V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@W*C_e.D_E_J#F_m>6+g 1=^ ^ ^ 1 L +     + + + C+= 2 1 1 1 ^ ^ 1 4 # .                     + +                   ",
+"                    $ + U$;#5(W(4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 0{H { $ $             >{^ ^ ^ ^ ^ ^ T&G_x@q&H_J!J,I__+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@J_K_c,Z+Z+w;y |=:*(-L_M_3#@@W';@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #W*N_6>B'O_z+)#.]0=Y&b#^ ^ ^ 1 m]+           . . a'H -.4 ^ ^ ^ ^ $+$                                           ",
+"                    +   +       - V$R{7{]+[ 1 1 [ [ O*Q*-++                   I.[ ^ ^ ^ ^ ^ c+P_r+Y#Q_^&R_S_$;;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%y+3,T_U_6+P&'.2.V_W_X_ #V@@@m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+Q@Y_Z_f `_Q@5$ :2.[@^ ^ ^ ^ ^ >{+                   + n/< 4 [ 1 7{=.                                          ",
+"                                  + . $ I z@|]).l;L*-+. $ +                   W$[ ^ ^ ^ ^ ^ T&q%y+;@.:v.+:e{@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@C$k+i>@:#:$:t,%:&:M&r+@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%@@H$,~1 *:($B$=:+=u.^.^ ^ ^ 1 .~+                   + . % 9 s.K ) a'                                          ",
+"                                              -+=+                            : 1 ^ ^ ^ ^ ^ ^.-:@@6&;:v.>:,:W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K#K#k+v&a&5$k+@@L._+5&5$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$w%B#':1 *:($<%):O 1 J+^ ^ ^ ^ :                               +                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ ^.!:($3+~:.-{:k%]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$O@y+[%@@k+_+v&]=@@($$;;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#$;]:^:l /:($J#(:O. ]c#^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:[:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V+n@J#<%}:J#H@H@_#L.5&k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:g 2:[%_+3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:4:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%**3#s+5:T{6:@@K.k+Q# #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:f 7:_# #3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:4:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_#m@L.8:9:0:a:b:c:b] #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:p=d:6$ #3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@e:W*_+z=e$<:[:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;@;@;@;@_+n@f:g:6#`%6#p=h:i:V+ # #O@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@W*B#1:v#j:@@y+&~&@^ c+^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ m-k:O-(+l:!;m:n:W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+n@<%_+5$6@X'o:1 ^ ^ ^ u.E.p:q:{&w-K.6&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@m@+@r:':R s:B$[%t:Y;L@Y&^ ^ ^ ^ | +                                                                             ",
+"                                                                              : 1 ^ ^ ^ ^ ^ T&u:Y#V+v:w#w:<-J#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.<%x:*=y:z:J+^ ^ ^ n+Y;+*A:B:8]4]1$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%r#C:D:}=E:B$@@F:c#&@n+^ ^ ^ 1 I.+                               +     +                                       ",
+"                                      + $ $ h+o$.                             >{[ ^ ^ ^ ^ ^ L@G:[%x+H:k~_;Y_V@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@{*m@|#I:J:E%p$g ^ ^ ^ X&J^Y;u.K:L:z+r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@s+M:J!F+N:])D-O:+*c#L@^ ^ ^ ^ >{                    . w Q{I.6{N;7 . $ $                                       ",
+"                            + + + +   C+t_m 1 5 Z~(/+ + +                     >{[ ^ ^ ^ ^ ^ Y;P:Q:Y{R:H(}'S:m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@ #;@;@m@<%Q^T:U:,@[.&@D%c+^ Y;d$R ~@l S.V:W:3# # #B$n@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%S%X:p@B*Y:O@Z:`:+*b#c+^ ^ ^ ^ >{              + + w 9 (.[ 1 1 1 )*k;t_'=. + + +   +                           ",
+"                          + $ % n]9 ~^> [ 1 ^ ^ ^ )*{(D@=.+                   S/1 ^ ^ ^ ^ ^ e$m> <z+.<I-u#+<B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #n@<%5&<%@<#<)/J+^ ^ ^ Y&w#$<A&b#G v.g n+n+%<&<a&j(6&**;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W;3#*<0==<-<r$({;<J^L@1=^ ^ ^ 1 =(.           + . 6^..1 ^ ^ ^ ^ ^ ^ ^ 4 [ >*$+;#( $ .                           ",
+"                    . + + a'/>r j*1 1 1 1 1 ^ ^ ^ 1 1 1 0{n^=++ + + +         D;1 ^ ^ ^ ^ ^ i@<^><[&x@,<E+'<O@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.@@f^)<!<C(T&^ ^ ^ n+p@~<{<;+;+G J+l &@Z+]<^</<(#8>;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@3#r+(<*._<L^[&:<6+l L@T&^ ^ ^ ^ h~+     + + + /&B/]+[ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 [ 1 1 7{>{D;A@+ .                     ",
+"                    $ I +$5>4 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ).5(h+. $         c 1 ^ ^ ^ ^ ^ g V{<<y+Q#[<S.}<_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@C$@@M&|<1<2<p$T&^ ^ ^ 6+3<4<5<6<7<~@n++*f/T&u.8<b/7@6@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@S-9<~.0<t+e,a<J+b#1=^.^ ^ ^ 1 p*.   + . j;i*a 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ]+d 5($ .                   ",
+"                  t_: 1 1 1 1 1 ^ ^ ^ ^ ^ 1 1 [ 1 1 ^ ^ ^ 1 1 1 1 b<b'        7 K'^ ^ ^ ^ ^ f S.c<J#b]d<e.e<X#s+w%x-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@k+;@;@m@<%T+f<g<6#j#T&h<+=T&6#K&i<n@5&j<A*k<#%%@f f 1 X l<m<V@W*@@7@r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@a&m&n<Z+o<1%x-p<^.c+Y;^.^ ^ ^ $%6 +   . I.1 [ ^ 1 ^ ^ ^ ^ 1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 1 1 ;#.                   ",
+"                '=[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ .$4 1 ^ ^ ^ ^ ^ ^ ^ [ *         $ F~^ ^ ^ ^ ^ ^.s;P!Q=p;q<r<s<t<:]L.5:]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@V@{*y+@<u<v<w#^ ^ ^ T&<,k=w<x<L.Q@C$C$y<z<A<f G L@T&E.u.B<C<s+A%3+F*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%D<B=8_E<W'F<G/^ ^ ^ ^ ^ ^ ^ 5%$ +   h+[ 1 ^ ^ ^ ^ ^ ^ ^ 1 t-A{> ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 >*U$                  ",
+"            . . o!1 ^ ^ ^ ^ ^ 1 1 [ [ 1 Y~l*q =+c_W$[ 1 1 ^ ^ ^ ^ ^ 8 A@.     .  ^^ ^ ^ ^ ^ e$+=G<H<Q@I<_*U#J<}:X%B$r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+K.m@3{K<K,L<+=^ ^ ^ Y&M<$^N<;%Q@**Q@L.O<P<6;j$s;G J+Y&&@[@Q<R<S<|#m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@+@T<F.U<V<5&W<X<^ ^ ^ ^ ^ ^ [ M;+ + + 4(1 ^ ^ ^ ^ 1 1 [ 5%) K*+ +~-(H^Y~[ 1 1 1 1 ^ ^ ^ ^ 4 Y<+ +               ",
+"            $ @.C 1 ^ ^ ^ ^ ^ 1 4 4 e~H `]$ . $ . a'!.|]4 ^ ^ ^ ^ ^ ^ h#$     $ n^^ ^ ^ ^ ^ ^ b#'&Z<C$0&`< [.[2%V@n@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@3#@@[&+[@[B~T#&%^ ^ ^ Z+#[$[3#[%C$5$r$y+t$J#b-z$j$n+n++*<*b#&@%[&[])V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@*!*[=[-[i>R-;[0+^ ^ ^ ^ ^ 1 [ )=  + % N*^ ^ ^ ^ ^ 1 k;q { +       . $ - D@B@0{[ [ ^ ^ ^ ^ 4 O*' +               ",
+"            + |]1 ^ ^ ^ [ [ 1 A{z@>[+ +     +   + + + + ~(M*[ ^ ^ ^ ^ g+$     +  ~1 1 ^ ^ ^ ^ R+#%,[t+C$'[2.)[![N@U+P@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@V+;@@@O@Q@~[{[][~@g g h<l Y&f*~#^[L.[%5$;@m@X%@@k+J#(+/[A>([v#d$1 1 g [+_[:[V@V+@@S%r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+w% #;@d*7-4 <[k+y+[[F.^ ^ ^ ^ ^ 1 4 ~(  + p*4 ^ ^ ^ 1 [ &>+   +                 + % /.z{> [ ^ ^ 1 1 r .               ",
+"            ,{C ^ ^ ^ 1 [ -#h+. $ .                   . $ $+]+^ ^ ^ ^ 4 I]      { M*[ ^ ^ ^ ^.c+~@}[E{n@|[1[p@:>y+V+#(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K.{*N@;%2[3[%@^ ^ ^ j#4[E%5[6[L.Q@5&O@Y{w%7[n@;@B$@@V@8[9[0[L@t L@l E.&%a[b[;$2'^-z+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%[$3#c[f+A=d[k+9.e[}=^ ^ ^ ^ ^ 1 5>.   + z@[ ^ ^ ^ [ i#a'                          $ . 1][ ^ ^ ^ ^ ]+P+              ",
+"        . . 7/1 ^ ^ ^ 1 +.o$  +       + . $ . +           /.[ ^ ^ ^ ^ [ p!        ! [ ^ ^ ^ ^.n+1 Z$f[C$^-g[@$h[,:($B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+K.w%M&i[j[k[[.^ ^ ^ Y;C(l[m[T+<%**Q@k+r+4+n[l+<%O@r#[&o[p[a!q[{@t J+c#&@&%r[s[S<Q^@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@C$;@Y#5[$.t[3+_+u[!;l ^ ^ ^ ^ ^ 1 } +   + e~1 ^ ^ ^ [ p!+           % y.. . . .         { ~ [ [ ^ ^ ^ {(y.+           ",
+"        . I]> [ ^ ^ ^ ^ V$+           + w g#*]w           w K ^ ^ ^ ^ [ f~        )=[ ^ ^ ^ c+1=1 ;.v[L$Q^w[#.x[y[V+]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%k+x%z[r{B~'.$=^ ^ ^ f A[w/l+5$_+@@r$y+]-B[C[&_x+;@ #[%X#J#D[E[+;L@u.6+c#n+c#F[G[s+V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@V+L.H[I[6#J[V@[%K[E.g ^ ^ ^ ^ ^ ^ Q{.   7 )*1 ^ ^ ^ 1 o*+           w)i#Z~/>-+.         . :@J 1 ^ ^ ^ 1 H +           ",
+"        $ j ^ ^ ^ ^ [ | y.+       + <]} -.[ 4 $'. +       . ) ^ ^ ^ ^ ^ 1 ;#.     C+K'^ ^ ^ ^ ^ ^ ^.L[M[r+N[O[P[Q[1%V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;%;@X%J#9#i>R[8~b#^ ^ d=[@[+n%S[T[n@_+;@k+_+L.~%U[~=&@V[W[[%_+m@@@O@$;X[a[Y[v#u.1 1 g c#Z[`[3#V+$;0&L.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #r$5& }a@.}+}V@n,[_#%n+^ ^ ^ 1 [ j*-+$ . }]4 ^ ^ ^ ^ 5 6 +       + $ 7/[ ^ ^ t-m e +         * [ ^ ^ ^ ^ d.A@          ",
+"        I )*^ ^ ^ ^ [ b $ +       n^C [ 4 [ [ g~$ +       . A@K@^ ^ ^ ^ ^  ^.     $ B/^ ^ ^ ^ ^ ^ ^ B=@}(+6&#}R $}%}W';@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K.[$6@N@&}*}l$^ ^ ^ g 8_~==}-}n@5${*@@C$@@;}>},}5;n+2.V['}1%w%]#B$k+5$)}!}0[n+G L@&@f w#!<~}])[&K#7@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@y+{}]}0+^}3+5$/}J!~@n+^ ^ ^ ^ [ _@. . . j [ [ ^ ^ ^ l].         + U$7{[ ^ ^ 4 [ (/+         c.m*^ ^ ^ 1 [ z{          ",
+"        * [ ^ ^ 4 4 W(+           >[4 1 ^ ^ ^ $%K*            ! [ ^ ^ ^ ^ d o$    . n/4 1 ^ ^ ^ ^ ^ T&(}]/_}:}<}T.[}v&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.w%}}|}1}2}k ^ ^ ^ J+3}4}5}f^3#**@@ #y+I/k:[@=^:&n+$=f 6}7}Y#<%]#r#x%8}9}0}a}a+t u.Z%Y&J+b}c}d}($r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #x+e}f}0~s[$;p%g}h;l u.^ ^ ^ ^ [ q   + -+C;^ ^ ^ 1 4 s           .  ~^ ^ ^ ^ [ g++           - ).^ ^ ^ 1 4 M;          ",
+"        c'[ ^ a .~L', .           + >#1 ^ ^ ^ [ t_            g#4 ^ ^ ^ ^ [ )=    . =.Y~[ ^ ^ ^ ^ ^ 1 h}i}[%K.j}'!k}^<;@m@;@;@;@;@;@;@;@;@;@ #;@;@;@J#k+}}l}l)s;B .=c+^ b#R V#m}y+s+k+@@r$K#%]n}e.l J+L@T&J+y F.A>o}x+;@ #@@R-5$p}G_S.m-3*+*Y&E.x*)>q}a&k+ #m@m@;@;@;@;@;@;@;@;@;@k+;@;@t+r}s}t}u}|#U)v}F+f*l l ^ ^ ^ ^ -.U$    ;*1 ^ ^ ^ 1 ).K*          . *]^ ^ ^ ^ 4 E~            F^[ ^ ^ ^ ^ 4 D@          ",
+"        =(-.Q i;                  + }]1 ^ ^ ^ 1 i*$           y.0{^ ^ ^ ^ [ r-% .     '@1 ^ ^ ^ ^ ^ [@'!w}Q=<%x}y}f*4/N@W'n@@@;@;@;@;@;@;@;@;%;@_+<%9#}}z}%_^ ^ ^ Y;m%q@s]t]t'w%C$ #k+_+(+A}B}r,J+c+^ ^ ^ ^ ^ ^ ^ C}D}1%3#;@@@O@w%E}F}g*O.n+L@g 1 J+G}H}1%V+$;I}@@;@;@;@;@;@;@;@@@c)($[$G&J}p(K}L}A%*!M}^ ^ ^ ^ ^ ^ ^ 1 z{+   + B@1 ^ ^ ^ 1 q*+           w 5>^ ^ ^ ^ [ <]          + j [ ^ ^ ^ ^ 2 {           ",
+"        w =.. +                   + - l;^ ^ ^ 1 [ #           + p!^ ^ ^ ^ 1 8 '=.   + h+a ^ ^ ^ ^ ^ e$}=N}O}S-P}Q}5;R}S};%V@J#;@;@;@;@;@;@;@;@K.3#k+T}U}V}S ^ ^ ^ e$|{W}X}Y}n@5${*@@C$($Z}`}F+c$E.^ ^ ^ ^ ^ ^ ^ ^ F. |.|e,w%O@5$y+5$+|@|r&&@!;:*&@l ~@K,#|s+8#N@]);@;@;@;@;@;@;@r#;@{&S-$|%|G=&|M&5$*|^,^ ^ ^ ^ ^ ^ ^ C e +   { ; [ ^ ^ ^ 1 =(+           I][ ^ ^ ^ ^ d.y.          a'; 1 ^ ^ ^ ^ * .           ",
+"                                  + . *+[ 1 ^ ^ ^ L'. +       .  ~)*4 ^ ^ ^ ^ 9'$     $ B/^ ^ ^ ^ ^ :*c#k$=|Y{V@-|;|E+>|,|k+;@;@;@;@;@;@;@;@X%[$j(;>'|;{)|B ^ ^ ^ J+!|~|{|T+5&**@@n@t+}&]|Z+B=y J+c+^ ^ ^ ^ ^ ^ ^ y m-A*$|8#<%;@V+8#^|8/8</|(|t E.&+R+J+D:_|:|$;W*;@;@;@;@;@;@;@7@r$f^<|[|u@}|||x+q/1|E]^.^ ^ ^ ^ ^ 4 j $ . $ d~[ 1 ^ ^ ^ )*c.+           Y<]+^ ^ ^ ^ Q .         $ j;^ ^ ^ ^ ^ 1 &>.           ",
+"                                    . 6^[ 1 ^ ^ ^ m*{         + . r-1 ^ ^ ^ ^ P*$     + 6^[ ^ ^ ^ ^ ^ c+[.Z*2|y+F#3|;!J!4|q&k+;@m@5$k+;@;@;@5$6@G&5|o&q@k .=Y;e$~@+*n}9.|#7@@@@@n@^-%]6|#.&@1=L@T&e$:*&%1 T&R T&^.c+$=^&7|8|5&w%J#@@;%V@9|0|H-k %@!;Y&:*x*]}a|K. #W*O@m@ #;@;@;@ #**{&b|f*s]c|a&f@1@J!X ^ ^ ^ ^ ^ ^ ]+6^+ . . n*1 1 ^ ^ 1 #+. +         + : [ ^ ^ ^ 1 ;#+         . B@^ ^ ^ ^ ^ C;- +           ",
+"                                      a'z.1 ^ ^ ^ [ <@+           k*[ ^ ^ ^ ^ [ g#      + J][ ^ ^ ^ ^ ^ ^ ^ d|e|[&f|W{p=g|h|Q@t+V@i|r$@@C$_+(+}}j|T>^ ^ ^ c+m%))U#k|l|w%5&@@k+3#r+m|S^p$u.Y&c+^.g },<#[_n|`{~.~@l ^ ^ ^ ^ o|p|q|y+;@O@O@($r|i+s|F.:*L@g f J+:,t|5&k+A%u|@@;@;@;@@@_+v|w|x|y|z|v&|*A|l f ^ ^ ^ ^ ^ 1 J].   + y.r.^ ^ ^ 1 [ 3 $ +       . s-1 ^ ^ ^ [ 7{{           w : ^ ^ ^ 1 [ ~^$ +           ",
+"                                      + H+^ ^ ^ ^ 1 Z~+           n]K'^ ^ ^ ^ 1 * +       <][ ^ ^ ^ ^ ^ ^ ^ k B|H@C|m(D|O E|F|3#q& #n@[$V@@@G|H|._I|^ ^ ^ ^ B~r>J|K|$;5$[$@@C$@@L|M|J!S E.^.^.^ l p$N|O|[%P|j_k J%c+^ ^ ^ q@Q|}~|#@@J#5$r+1$k_R|C,P&Z+:*&@Y&Z+j[S|T|x@Q^B$;@;@;@]=U|V|5{W|X|1$C$Q[;][@&@^ ^ ^ ^ 1 1 {++     I 1 ^ ^ ^ 1 a Y|+ +       + C/^ ^ ^ ^ [ r             <][ ^ ^ ^ ^ [ I++ +           ",
+"                                      + # 1 ^ ^ ^ [ )*6           . q*^ ^ ^ ^ [ Y~-+.     $ |]^ ^ ^ ^ ^ ^ ^ $$Z|`|S%5&p&;!e% 1q+r#J#k+[$w%E'.1f}+12.^ ^ ^ b#!)@1#1V+C$[$@@n@r+$1%1Z+A&A&1=c+c+1 *.&1*1X%k+Q@=1-1J!b#^ ^ c+3*f _*W@2%<%;@k+c)O<;1>1i$J^G E.J^R+b#,1'18]@@W*;@;@;@/*)1}!N}!1**V+~1,^;!k Y;^ ^ ^ ^ ]+b<$ .   + L*1 ^ ^ ^ 1 A{.           .  .1 ^ ^ ^ [ Q{            = 1 ^ ^ ^ ^ 8 7               ",
+"                                      + . c'1 ^ ^ ^ 1 )=+         . b ^ ^ ^ ^ [ 1 {1+       =#l;1 ^ ^ ^ ^ ^ &@k ]1^1i>/1(1B _1:1_#[%1$;%y~<1Q![@i@[1d=i@l ;!}1+,6@^% #@@n@|111212.R+T&L@g L@x*[ 3141@@R-@@a&y+t!r%[+'.Y&^.1=D%v.]]511%n@J#@@6@a&617181[.l$!;T&m-}=91015&3#;@]){*a1b1,@e!c1k+d1|_R F.l L@^ ^ ^ 1 l;>[. +   + I^1 ^ ^ ^ 1 %>+           -+J ^ ^ ^ ^ t--+        + . h(1 ^ ^ ^ ^ #++               ",
+"                                          h#4 1 ^ ^ ^ C@. +       . y.)*^ ^ ^ ^ ^ 4(.       + '@4 ^ ^ ^ ^ ^ ^ ^.6#e1r+C$f1g1u@h1i1X#6@j1k1l1c+^ ^ ^ Z+m1^,n1o1w%[$@@[%l+C$p1q1r,E.T&^ ^.c+[++#r1s1r#;@;@;@;@_+t+t1u14 m-l ^ ^ ^ ^ v1w1x1L.;@O@O@@@y1z1A1[.G :*g n+J+*-B1y+s$Y#C1J'v;D1E1x+l+N$,@^ ^ ^ ^ ^ ^ ^ ^ 9'+       , 4 1 ^ ^ ^ 1 /&+           V$4 ^ ^ ^ ^ *+$         . I 4 [ ^ ^ ^ 1 t_.               ",
+"                                . + . . s-E~[ ^ ^ ^ ^ ]+Y|        . %>^ ^ ^ ^ 1 M*6 +       + =+i#1 1 ^ ^ ^ Y;E.R+F1G1|#1%5)']O H1I1J1(%n%k]^ ^ ^ ^ K1L1M1F<@@V@[$;@L$k+N1O1p$S A&^.^.^ 1 F.P1Q1@@@@;@;@;@V+w%C$($R1S1`%$.^ ^ ^ c+c#T1U1e,k+J#<%;%N&e|V1u W1Z+:*Y&R+Z+*-X16&Y1//B~Z1`1y+|#a- 2Q%^ ^ ^ ^ ^ ^ 1 i#{ +       U$: 1 ^ ^ ^ 1 _ . .         *+[ [ [ 1 [ V$.         . n$[ 1 ^ ^ [ [ ' .               ",
+"                              + $ n]N;{()*4 4 1 ^ ^ ^ [ *]        n]$%^ ^ ^ ^ 4 k*          + $ n!4 1 ^ ^ ^ 1=g &@A&.2+26@1%4'@2'!9=#2v#l1m%c+^ ^ ^ $2%2L^9#_+C$@@P@y+&2*22.J+E.1=g g 1 B'=2-2@@5~ #;@;@;@V@@@n@3#[%;2>2r,^ ^ ^ c+w#[@&',22%Q@;@@@o{N&q:'2)2=,:*'&;+Y&u.!2~2{2;.]2^2Y#<%/2k{l Z+^ ^ ^ ^ ^ ^ 8 0'          + F^1 ^ ^ ^ 1 ]+F^. +       I |+#+d [ .$C+.         . c'^ ^ ^ ^ [ I^$ +               ",
+"                        . . ( 6.g~.$1 1 1 1 1 ^ ^ ^ ^ [ 5>. . + . z{[ ^ ^ ^ ^ f~-+            + $ *+1 ^ ^ ^ ^.c+T&L@[@w<(29#{&_2;<Y=[.~@i@&%J+J+k (=:2[&6@5$n@<% #Q=<2[2[ c#T&^.c+n+F.`%}2L~V+m@ #W*;@;@;@;@<% #;@V@[%|212J%0+Y&b#1=&%v.*(22O-L.J#@@k+5$u]3242S.#%B=&%n+Z%N s]52C1R-r+6272v.n+T&^ ^ ^ ^ 1 [ >{.             w #+[ ^ ^ ^ 1 z.=++       + +   C+n/Y<+ +         ;,a ^ ^ ^ ^ [ %>.                 ",
+"                        6^,*t-[ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 :@$ $ ~(j*[ ^ ^ ^ ^ ) +               + -+y&^ ^ ^ ^ ^ ^ ^ Z%h;82616@9202B~b#^ ^ c+Z%$=h}a2;>w%[$X%_+y+t+b2c2'!!;J+^ ^.c+^!+#d2]'q&;@;@;@;@;@;@;@;@;@;@;@;@_+G&e2$*f$m-&@^ ^ ^ ^.*(f2P#($;@O@@@5$g2h2]+x*1=c+c+n+R+F.i2Q$@@j2k2g ^ ^ ^ ^ ^ ^ ^ [ F~6 +           + $ i;8 1 ^ ^ ^ 1 >{+               . .             b=4 ^ ^ ^ ^ 4 _/                  ",
+"                  7 L'< ^ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 [ ^ ^ ^ 1 l*$ y.! ^ 1 ^ ^ 1 ..  +                   E@> 1 ^ ^ ^ ^ ^ e$T&R l2m2z=n2m%L@^ ^ ^ a@H=o2d@k+{&K.;@'+[%E}p2T#=-3*L@^.^ ^&,@q2y;V+m@;@;@;@;@;@;@;@;@;@;@;@y+w%L$@@r2s2S.N+^ ^ ^ 1=c#t2u2G&y+J#k+;%d}v2w2Q![ i@J+A&<*T&'.'|x2y2Z+c+^ ^ ^ ^ ^ ^ ^ > '=                  + >,1 ^ ^ ^ 1 J d~. . .         +           . + o!4 ^ ^ ^ ^ : .                   ",
+"                  9{4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ a ]+^ ^ ^ ^ .$(@(>4 ^ ^ ^ ^ [ />                      + ) 4 ^ ^ ^ ^ ^ u.$=O o&B(T.%@~@g ^ ^ ^ A.z2l+1%k+_+;@;%|#A2|'F.Y;:*J+g g l B'B2C2J#Q#W*;@;@;@;@;@;@;@;@;@;@;@5$[%n@V@[%D2E25;^ ^ ^ c+w#c#Z(F2q/5$;@@@Q=1$]/G2t2c#J+f n+J+A&s_H2w;u.c+^ ^ ^ ^ ^ ^ [ I+$                   + 9{j*^ ^ ^ 1 4 )*H^z@b'.                   6 L*K'[ ^ ^ ^ ^ ,*+                   ",
+"                  . r-1 ^ ^ ^ ^ ^ 1 1 [ [ A{Q*h+K 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ >#+                       + . ! [ 1 ^ ^ ^ ^ ^.e$e$c+c+^.^ f 3*6#I2F=E2J2V@8>;$y+5&K2L2&@c#T&^.^ f 2.x&i&M2W*;@;@ #;@;@;@;@;@;@;@;@;@;@;@;@@@;@;@<%k+N2O2u@~.&@b#c+c+^.a=p_P2L.V+<%Q2R2S2P h;p=c#^.^.R+Y;1=c+c+^ ^ ^ ^ ^ ^ [ 7/                        . H+4 1 ^ ^ ^ ^ ^ ^ ^ W(z{<@( . + . $ A@Q*$%1 ^ ^ ^ ^ ^ ^ <]+                   ",
+"                    =(1 ^ ^ ^ ^ ^ 1 ; z{{+y.$ + C/^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 0'.                       + $ { W(1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E.m-j^T2k$O U2V2W2v&l+)}E;[,B=b#^ ^ c+^!J!X2||q&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%_+X#Y2Z2[.m-&@^ ^ ^ b#J,`22%[% 3.3+3;.@3#3~.T&c+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ a'                      + . A@5 1 ^ ^ ^ ^ ^ ^ ^ [ [ [ M*r c_;,-(5>[ ^ ^ ^ ^ ^ ^ ^ (>a'+                   ",
+"                    -+l;4 [ [ l;c=/&{         $ o$l;[ 1 ^ ^ ^ ^ ^ ^ ^ [ i*                              + +~g+4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ O $3%3&3*3m>F==3-3i};3>3+*J&$=b#^ e$^&0+,3Y_H@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r+w%_+@@'3u(v;~.^ ^ ^ b#u.B')3!3~3h;p=S&{3]3E#p$x&v.^ ^ ^ ^ ^ ^ ^ ^ ^ [ g+C++                           + I+[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ a ^ ^ ^ ^ ^ ^ ^ 4 [ [ M;                      ",
+"                    . q*)*I.s a'. $ . +       + . Z][ ^ ^ ^ ^ ^ ^ ^ ^ 1 w)                              + $ []5 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ p@^3y(H@5&/3S'a=o+(3_3F=Y&E.J+g g l /=:3<3J#<%#(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$L$w%<%9#[3}36+c+^.c+b#Z+Z+N+J!(-<#&{|3[%132333*.l g ^ ^ ^ ^ ^ ^ ^ ^ -.A@. .                           + . r.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 h(/>.                       ",
+"                      o$+~.                       q ]+^ ^ ^ ^ 4 4 2 ,*j;$                                   + b'O*4 1 ^ ^ ^ ^ ^ ^ ^ A&6+43,]|1@@x@5363k#1 l T&^.^ l 0+#.73+} #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%@@8393v~N+l b#^ ^ ^ 1 03a3p%t+l+b3c3=^^ ^ ^ ^ ^ ^ ^ ^ ^ 4 M*/..                                   s-9 -#$%[ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ 4 {(0'.                           ",
+"                        . +                       . d.1 ^ ^ l;Z]g#6 . $ $                                   + $ =#; 1 ^ ^ ^ ^ ^ ^ ^ d3'&k#e3f3Q=N@3%g3B;&%g ^.^ ^ [+f*D#p-r+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@_+x+h3i3`%R &@^ ^ ^ Y&h;j3q#Y{k3l3t.&@^ ^ ^ ^ ^ ^ ^ ^ ^ ; m3$ .                                   + . . 6 c 9'-.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ c'/&. . +                           ",
+"                                                  . +$]+b+)=A@                                                  . I 2 4 1 ^ ^ ^ ^ ^ E.+=j#:*n3o3p3q3r3s3v.D%^ c+B /=t3D$x-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@_+w%[%[%u3v3d+;!^ ^ ^ L@Z+'!w3x3;&0=f g ^ ^ ^ ^ ^ ^ ^ [ z.# .                                                   y.h+L i*4 [ 4 4 4 [ [ R.E@$                                   ",
+"                                                  + =+' + . +                                     + +           + $ h+| 1 ^ ^ ^ ^ ^ g |=E.j#t.6+}.S.E.e$&%e$g [.u#y3z3[%J##(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$L$w%<%[%Y}A3[@:*v.c+^.c#6+'!6#E+P&u.n+^ ^ ^ ^ ^ ^ ^ b+o$$ . +       + +   + +                                 + . + + o$n/! > [ b<{+. . +                                   ",
+"                                                                                              $ . $ - !./&$ +       . `]k;[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$*.n%B3u&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;$L.C3D33}Y.&%g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 J]- .     $ P+= g#(/- $ . $ +                                           + . e $                                           ",
+"                                                                              +   + + + + n]E@t_l]~ J [ 1 >,K*      + + U$H+[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ J+~.E3F33#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@s+L$<%q;G3H3E.^.^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ^ 1 J $++ + .     x{4 1 1 [ J W(I.M;c_!., w + +                                   + . +                                           ",
+"                                                                              . o$b''*B{< K'4 ^ ^ ^ ^ ^ [ K $           . $ F^l;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g I3J3@/K3;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L.y+|1L3M3N3 )w#T&^ ^ ^ ^ ^ ^ ^ ^ ^ [ 4 Y~0'            / 4 ^ ^ ^ ^ ^ ^ ^ ^ 4 [ (>C@K*+                                                                                 ",
+"                                                                              . l*1 1 1 1 [ 1 ^ ^ ^ ^ 1 > I]+           + . + ~(C@1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ b#w;F.O3P3Q3;>($X%$;;@k+V+W*;@O@m@;@;@W*@@O@O@O@<%5$;@;@;@O@O@B$C$;@;@@@O@J#r+R3S3T3a#6#[+1 1=^.^ ^ ^ ^ ^ ^ ^ 1 ^ 1 i*p*+             a'8{^ 1 ^ ^ ^ ^ ^ ^ 1 1 1 1 l*. +                                                                               ",
+"                                                                              $']+^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ n^$ +                   a'S/K'[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ n+A(U3V3W3X3Y3_+k+ #R$V@]=1%X%W*W* # # # # #V+y+W* # # #;@m@5&Z3`3 4.4U2v~}=g ^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 l;|+y.+               . +~: [ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ]+{1$ .                                                                             ",
+"                                                                              a'Q*l;1 1 1 ^ ^ ^ ^ ^ 1 D~y..                       + I N*4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$H-^&+*:$6*+4@4#4$4%4&4d@($y+{&@@;@;@;@5&3#k+V+[%Y#]-*4=4j%-4;4}'6+Z+m%J^Z+L@1=^ ^ ^ ^ ^ ^ ^ ^ [ [ 4 J];,. +                 + + <]).1 1 1 1 ^ ^ ^ ^ ^ ^ 1 d ,{                                                                              ",
+"                                                                              . $ # K [ [ ^ ^ ^ ^ ^ 1 h++                           . . n/0{^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ J+D%g g ~@P%d$[ u ~.|,>4k/,4'4)4!4~4~4~4{4 4]4^40_/4(4)%J!/=L@J+G g Y;u.:*n+g c+^ ^ ^ ^ ^ ^ ^ 1 4 5%V$$ $ +                       . Q{q*-.K'4 ^ ^ ^ ^ ^ ^ ^ 1 i#[]                                                                            ",
+"                                                                              +   + a'z@+.1 1 ^ ^ ^ ^ h~+                             + + o$n$+.1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^.c+1=b#T&g v.n+f 1 1 L@1 v.M :*L@L@L@1 L@L@l R+Y&&@u.1 R+T&^.g ^.^ c+e$T&c+^.^ ^ ^ 1 1 1 [ +.n$a'+   +                         + + + + , w)3 8{> 1 ^ ^ ^ ^ 1 C@w +                                                                         ",
+"                                                                                    + $ ;*4 1 ^ ^ ^ 1 b<+                                   . - H+l;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ m*Y<- . +                                           $ . H [ ^ ^ ^ ^ ^ 1 9'.                                                                         ",
+"                                                                                        $ d.[ ^ ^ ^ 1 C;-                                       + `]x{7{[ 1 1 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ 1 1 7{3 U$      + + + .                                       + $ B{[ 1 ^ ^ ^ ^ C F^. +                                                                     ",
+"                                                                                        + & 1 ^ ^ ^ 1 [ =(                                          $ a's k;J [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 d ! g#. . +       + a'j;-++                                     + . { W(1 ^ ^ ^ 1 4 t-@ +                                                                     ",
+"                                                                                          b'1 ^ ^ ^ ^ 1 _ $ +                       + n]j +~. .           + 9{1]r-8 [ [ [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ [ 8 r-4(+~+           + . @ C@1 5 l]6^$ . . .                               + (/+.[ 1 ^ ^ ^ 1 ~ a'$ +                                                                 ",
+"                                                                                        + $ | ^ ^ ^ ^ ^ $%( +                       + R{4 ; q $             $ . $ p*k*e~m*1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 7{|]-(p*. $ . .           + s 7{1 1 ^ 1 [ b+I+n].                               + $ 0'8 1 ^ ^ ^ 1 [ *+$ +                                                                 ",
+"                                                              + . k*[]$ .                 . ) [ 1 ^ ^ ^ 1 `$+                   + $ q a ^ ^ q*$                         { b'b=Z~W(]+1 [ [ 4 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ [ 1 [ C ~ Z~) i;{                         z@J ^ ^ ^ ^ ^ ^ ^ ^ $%9'# . . +                           + L'1 ^ ^ ^ ^ ^ 4 />+                                                                 ",
+"                                                              + j;4 $%&>$                 $ >[4 1 ^ ^ ^ 1  ^+                   . s-2 [ ^ ^ >*.                             . . . - '=g#Q**]_@N*N*N*N*N*N*N*N*N*N*_@*]t_g#'=- . . . .                           *][ 1 ^ ^ ^ ^ ^ ^ ^ [ 4 a N*H a'                          + % J]^ ^ ^ ^ ^ 1 /.+                                                                 ",
+"                                                              . !.^ ^ [ m]{ $       + $ +   + D~[ ^ ^ ^ 1 C;a'+ + + + + + ( - - 6 * ^ ^ ^ ^ [ -                                                                                                                 I^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 2 5(=#. .                       A@i#1 ^ ^ ^ 1 /.+                                                                 ",
+"                                                              . ' 8 ^ [ [ : =(] ] ] b z{M;M;M;i*1 ^ ^ ^ 1 [ ~^_ ~ ~ ~ ~ ~ K@1 ^ 1 [ ^ ^ ^ ^ 4  ~                                                                                                              + A{^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ [ [ b<;*U$                    + *+1 ^ ^ ^ .$`]                                                                  ",
+"                                                                  m*1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 s                                                                                                               w ^ ^ ^ ^ 1 r.;#c'K'4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 Q*[]. . $             W([ ^ ^ ^ j*. +                                                                 ",
+"                                                                  b<[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 p!                              +               >[ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~i;Y|                                y.^ ^ ^ ^ 1 ! . . ~(9'Y~^ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 > J]0'%           + m*1 ^ ^ ^ : . +                                                                 ",
+"                                                                  o][ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ R.                          + $ I]y&l;K'K'K'K'K'C ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ > ;*$                             :@[ ^ ^ ^ ^ m]        ( N; .4 4 4 ^ ^ ^ ^ ^ ^ ^ ^ 4 r.o^o$$ +   + 7{1 ^ ^ ^ _                                                                     ",
+"                                                                  t_[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 r.. +                       + I ; [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ J b                           + $'1 ^ ^ ^ ^ m]        + . +  ~m]C;1 1 ^ ^ ^ ^ ^ ^ 1 1 1 ]+-#;#$ p*8 1 ^ ^ ^ b<+                                                                   ",
+"                                                                  i;4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 4 1 ^ [ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ { .                   + $ (/; [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ )*n/$                       + z{1 ^ ^ ^ [ |++               . - a,G^4 4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ W(= 4 1 ^ ^ ^ 1]$ +                                                                 ",
+"                                                                  7 K'^ ^ 1 1 5 -.-.-.-.W(Z]Z]Z]Z]B/1 ^ ^ ^ ^ ^ ~ '*=(=(=() j Z]Z]Z]7{1 1 1 ^ ^ P+.                 + + n]r-[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 J H + +                   + 5(1 ^ ^ ^ 1 ] +               . . + . 0'g~).1 1 1 ^ ^ ^ ^ ^ ^ 1 1 1 1 ^ ^ 1 Y<+ +                                                                 ",
+"                                                                  . 2 ^ ^ 4 d /..               + - d.^ ^ ^ ^ ^ K@=++               =+ ^4 4 ^ ^ I+.               + $ =+G^[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ J h#.                   + {(1 ^ ^ ^ 1 e~%                       . % =+o^y&[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 />                                                                    ",
+"                                                                  . |]^ ^ 1 L*. +                 . = 1 1 ^ ^ ^ 1 *]+               + $ =(+.1 1 !.+             + + =+W(1 1 ^ 1 1 1 K@N*N*N*N*N*N*N*N*N*V *]*]*]*]*]*]*]g+1 1 ^ ^ [ 1 ]+C/+ +               + i*1 ^ ^ ^ 1 [ L*+                     + + + + y.:@|]4 1 ^ 1 ^ ^ ^ ^ ^ ^ ^ [ {+                                                                    ",
+"                                                                  + H+^ ^ i*%                       ;,d 1 ^ ^ ^ 1 i#`]                  $ ' D~H+                . a'! [ ^ ^ ^ 1 4 Y~D + + + + + + + + + $ +           % e +.4 ^ ^ ^ ^ 4 4 ) .               + o^[ ^ ^ ^ ^ ^ [ :@                                $ >[5(; [ [ ^ ^ ^ ^ ^ 1 > h+                                                                    ",
+"                                                                  . V$[ O*s-+                         6{1 ^ ^ ^ ^ 1 3 +                 + + + +                 a'D~1 ^ ^ ^ ^ ^ a <@+                                 + + '=m*1 1 ^ ^ 1 1 [ a,              + $ k;[ ^ ^ ^ ^ [ 7{p*.                             + + . % b i*a [ 1 1 [ ~ (/+                                                                     ",
+"                                                                  $ $ `$g#                            /&]+^ ^ ^ ^ ^ W(a'+                                       m]4 ^ ^ ^ ^ ^ J V$.                                       . '=f~4 ^ ^ ^ 1 4 B/              + $ n]f~1 ^ ^ ^ [ 4 b+U$+                                   $ $ <]B@+.[ V `]. +                                                                     ",
+"                                                                    + + +                           + . >#[ ^ ^ ^ ^ 1 b                                         J]1 ^ ^ ^ 1 [ n*+                                         + + 6^d ^ ^ ^ ^ 1 b+                + + 6^)*1 1 ^ 1 ^ [ 5(+ +                                 +   + + =.<]. + +                                                                       ",
+"                                                                                                    + . D;4 1 ^ ^ ^ [ B/+                                       J]^ ^ ^ ^ 1 -#$                                               . B{^ ^ ^ ^ ^ b+                  + $ b=4 1 ^ ^ ^ [ 4 I+%                                                                                                                         ",
+"                                                                                                        . 2 1 ^ ^ ^ 1 4 P+. +                                 + J]1 ^ ^ ^ ^ =(+               + .                 . + $ +     $ m]^ ^ ^ ^ ^ b+                    + + >,[ [ 1 ^ ^ 1 )*m3. . . +                                                                                                                 ",
+"                                                                                                        + x{1 ^ ^ ^ [ [ +.=(+                                   ` 1 ^ ^ ^ 1 1].       - s-s-s-Y|b ] ] ] ] ] ] ] ] x{` `$$     $ V$^ ^ ^ ^ ^ b+                      . ( (.[ ^ ^ ^ ^ [ F~'@b b';,+                                                                                                               ",
+"                                                                                                        . []4 ^ ^ ^ ^ ^ ^ ^ s.~(. $                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ & +     + c_^ ^ ^ ^ ^ b+                          Y|$%1 ^ ^ ^ ^ ^ ^ ^ ^ 1 0{b+b'.                                                                                                         ",
+"                                                                                                        + b 1 ^ ^ ^ ^ ^ ^ ^ [ .$t_$                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ &         c_^ ^ ^ ^ ^ b+                          + `$]+^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ -.`]                                                                                                        ",
+"                                                                                                        + g~1 ^ ^ ^ ^ ^ ^ ^ 4 [ C (/                            L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ B{+       c_^ ^ ^ ^ ^ b+                              9'[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ *+. +                                                                                                     ",
+"                                                                                                        o$> 1 ^ ^ ^ ^ ^ ^ ^ ]+f~1]$                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ .~.       c_^ ^ ^ ^ ^ i*                              . C@1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ L .                                                                                                     ",
+"                                                                                                    + . D;[ [ 4 1 1 ).~ ` s _/. +                               L*^ ^ ^ ^ ^ Z]        Q ^ ^ ^ ^ ^ ^ ^ 1 1 1 1 1 1 1 1 .~.       c_^ ^ ^ ^ ^ a                               + 6 Q+(@q*-.+.4 [ [ 4 [ ^ ^ J 6^                                                                                                    ",
+"                                                                                                    + . e~4 0{o!3 /&o$. . + . $ +                               L*^ ^ ^ ^ ^ Z]        @.=(=(=(=(=(=(=('*{+I]I]I]I]I]I]>[.     + c_^ ^ ^ ^ ^ a                               . . + . + + a'I]F^3 Z]m 5>^ 2 6^                                                                                                    ",
+"                                                                                                    + . `$p*.                                                   L*^ ^ ^ ^ ^ Z]                                                $ V$^ ^ ^ ^ ^ a                                                       $ s-- .                                                                                                     ",
+"                                                                                                      . . . +                                                   L*^ ^ ^ ^ ^ j   +                                         +   . m]^ ^ ^ ^ ^ a + +                                                   + + . .                                                                                                     ",
+"                                                                                                                                                                E~[ ^ ^ ^ 1 > q $ +                                       $ % n$4 ^ ^ ^ 1 [ K'$ +                                                                                                                                                               ",
+"                                                                                                                                                              + c [ 1 ^ ^ ^ [ )*;*+ +                                     + 6.1 [ ^ ^ 1 ^ 8 &>. +                                                                                                                                                               ",
+"                                                                                                                                                                U$s.4 [ ^ ^ ^ 1 )*s $ +                                   d~d ^ ^ ^ ^ 4 4 o^.                                                                                                                                                                   ",
+"                                                                                                                                                                + { b<1 1 ^ ^ ^ [ a b .       + +                 7 i; ~/&; 1 ^ ^ ^ ^ [ $+.                                                                                                                                                                     ",
+"                                                                                                                                                                  + { o!4 [ ^ ^ ^ 1 a J]k;k;k;{(.$l;K'K'K'K'K'K'K')*4 [ ]+^ ^ ^ ^ ^ ^ _ y.                                                                                                                                                                      ",
+"                                                                                                                                                                    + % >,[ [ ^ ^ 1 1 ^ ^ ^ ^ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 [ ^ ^ ^ ^ ^ 1 8{a'+                                                                                                                                                                       ",
+"                                                                                                                                                                      + a'* 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g+-                                                                                                                                                                           ",
+"                                                                                                                                                                        + w _@[ [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 W(C++                                                                                                                                                                           ",
+"                                                                                                                                                                          + y.7/4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ +.[]                                                                                                                                                                              ",
+"                                                                                                                                                                              $ o^]+^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 -.i;+                                                                                                                                                                               ",
+"                                                                                                                                                                              + . =#0 0 0 0 0 0 0 0 0 w)b'+ + + + + + + + . $ $ .                                                                                                                                                                               ",
+"                                                                                                                                                                                                        +                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                "};
Index: /branches/gui/src/lib/gui/gtk/rc
===================================================================
--- /branches/gui/src/lib/gui/gtk/rc	(revision 8140)
+++ /branches/gui/src/lib/gui/gtk/rc	(revision 8140)
@@ -0,0 +1,139 @@
+/*
+ * style <name> [= <name>]
+ * {
+ *   <option>
+ * }
+ *
+ * widget <widget_set> style <style_name>
+ * widget_class <widget_class_set> style <style_name>
+ *
+ * Here is a list of all the possible states.  Note that some do not apply to
+ * certain widgets.
+ *
+ * NORMAL - The normal state of a widget, without the mouse over top of
+ * it, and not being pressed, etc.
+ *
+ * PRELIGHT - When the mouse is over top of the widget, colors defined
+ * using this state will be in effect.
+ *
+ * ACTIVE - When the widget is pressed or clicked it will be active, and
+ * the attributes assigned by this tag will be in effect.
+ *
+ * INSENSITIVE - When a widget is set insensitive, and cannot be
+ * activated, it will take these attributes.
+ *
+ * SELECTED - When an object is selected, it takes these attributes.
+ *
+ * Given these states, we can set the attributes of the widgets in each of
+ * these states using the following directives.
+ *
+ * fg - Sets the foreground color of a widget.
+ * bg - Sets the background color of a widget.
+ * bg_pixmap - Sets the background of a widget to a tiled pixmap.
+ * base - Sets the base of Widgets
+ * font - Sets the font to be used with the given widget.
+*/
+
+
+
+static const gchar* rc_string =
+(
+"style'orxonox'"
+"{"
+"fg[NORMAL]      = { 0.0, 1.0, 0.0 }"
+"fg[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"fg[ACTIVE]      = { 0.0, 1.0, 0.0 }"
+"fg[INSENSITIVE] = { 0.0, 0.8, 0.0 }"
+"fg[SELECTED]    = { 0.0, 1.0, 0.0 }"
+
+"bg[NORMAL]      = { 0.0, 0.0, 0.0 }"
+"bg[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"bg[ACTIVE]      = { 0.0, 0.3, 0.0 }"
+"bg[INSENSITIVE] = { 0.0, 0.1, 0.0 }"
+"bg[SELECTED]    = { 0.0, 0.1, 0.0 }"
+
+"base[NORMAL]      = { 0.0, 1.0, 0.0 }"
+"base[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"base[ACTIVE]      = { 0.0, 1.0, 0.0 }"
+"base[INSENSITIVE] = { 0.0, 1.0, 0.0 }"
+"base[SELECTED]    = { 0.0, 1.0, 0.0 }"
+
+"font              = '-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*'"
+"}"
+
+"style'window'"
+"{"			
+"bg[NORMAL] = { 0, 0, 0 }"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"base[NORMAL] = { 0, 0, 0 }"
+"base[INSENSITIVE] = { 0, 0, 0 }"
+"}"
+
+"style'frame'"
+"{"
+"bg[NORMAL]  = { 0.0, 0.4, 0.0 }"
+"}"
+
+"style'scale'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"bg[NORMAL] = { 0, 1.0, 0 }"
+"bg[INSENSITIVE] = { 0, 1.0, 0 }"
+"bg[PRELIGHT] = { 0, 1.0, 0 }"
+"bg[ACTIVE] =   {0.2, 0.2, 0.2 }"
+"}"
+
+"style'button'"
+"{"
+"fg[PRELIGHT] = { 0, 0, 0 }"
+"bg[PRELIGHT] = { 0, 1.0, 0 }"
+"bg[ACTIVE] = { 0, 1.0, 0 }"
+"fg[ACTIVE] = { 0, 1.0, 0 }"
+"bg[NORMAL] = { 0, 0, 0 }"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"bg[INSENSITIVE] = { 0.0, 0.2, 0.0 }"
+"fg[INSENSITIVE] = { 0.0, 0.8, 0.0 }"
+"base[NORMAL] = { 0, 1.0, 0 }"
+"base[PRELIGHT] = { 0, 1.0, 0 }"
+"}"
+
+"style'main_button' = 'button'"
+"{"
+"font = '-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*'"
+"bg[PRELIGHT] = { 0, 0.75, 0 }"
+"}"
+
+"style'toggle_button' = 'button'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"fg[ACTIVE] = { 0, 1.0, 0 }"
+"text[NORMAL] = { 0, 0, 0}"
+"}"
+
+"style'text'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"}"
+
+"style'ruler'"
+"{"
+"font = '-adobe-helvetica-medium-r-normal--*-20-*-*-*-*-*-*'"
+"}"
+
+"widget'Gtk*'			style'orxonox'"
+"widget'*Gtk*Frame*'              style'frame'"
+"widget'GtkWindow'		style'window'"
+"widget'GtkFileSelection'	style'window'"
+"widget'*Gtk*Scale'		style'scale'"
+"widget'*GtkCheckButton*'	style'toggle_button'"
+"widget'*Gtk*Menu*'		style'toggle_button'"
+"widget'*GtkRadioButton*'	style'toggle_button'"
+"widget'*GtkButton*'		style'button'"
+"widget'*Ruler'			style'ruler'"
+"widget'*GtkText'		style'text'"
+"widget'*GtkLabel'		style'text'"
+
+"widget'main window.*GtkButton*' style 'main_button'"
+
+
+);
Index: /branches/gui/src/lib/gui/qt/Makefile.am
===================================================================
--- /branches/gui/src/lib/gui/qt/Makefile.am	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/Makefile.am	(revision 8140)
@@ -0,0 +1,49 @@
+MAINSRCDIR=../../..
+include $(MAINSRCDIR)/defs/include_paths.am
+
+AM_LDFLAGS =
+
+noinst_LIBRARIES = libORXqtgui.a
+
+
+libORXqtgui_a_CPPFLAGS = \
+		@QT_CXXFLAGS@ \
+		-DBUILD_ORXONOX
+
+
+libORXqtgui_a_SOURCES = \
+		qt_gui.cc \
+		qt_gui_moc.cc \
+		qt_gui_elements.cc \
+		qt_gui_elements_moc.cc \
+		q_image_widget.cc \
+		q_image_widget_moc.cc \
+		\
+		gui_video.cc \
+		gui_audio.cc \
+		gui_general.cc \
+		gui_general_moc.cc \
+		gui_control.cc \
+		gui_control_moc.cc
+
+
+noinst_HEADERS= \
+		qt_gui.h \
+		qt_gui_elements.h \
+		q_image_widget.h \
+		\
+		gui_video.h \
+		gui_audio.h \
+		gui_general.h \
+		gui_control.h
+
+
+EXTRA_DIST =
+
+
+
+%_moc.cc : %.h
+	@QT_MOC@ -o $@ $<
+
+clean-local:
+	rm -f *_moc.cc
Index: /branches/gui/src/lib/gui/qt/banner.xpm
===================================================================
--- /branches/gui/src/lib/gui/qt/banner.xpm	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/banner.xpm	(revision 8140)
@@ -0,0 +1,526 @@
+/* XPM */
+static char * banner_xpm[] = {
+"127 382 141 2",
+"  	c None",
+". 	c #183016",
+"+ 	c #183316",
+"@ 	c #183416",
+"# 	c #193816",
+"$ 	c #193916",
+"% 	c #193B16",
+"& 	c #1A3E17",
+"* 	c #1B3F17",
+"= 	c #1B4318",
+"- 	c #1B4418",
+"; 	c #1B4818",
+"> 	c #1C4F18",
+", 	c #1A3D17",
+"' 	c #172D15",
+") 	c #162A15",
+"! 	c #1C4B18",
+"~ 	c #193716",
+"{ 	c #36AC2D",
+"] 	c #42B837",
+"^ 	c #4DC042",
+"/ 	c #53C447",
+"( 	c #60CC53",
+"_ 	c #69D05D",
+": 	c #6ED261",
+"< 	c #74D669",
+"[ 	c #7BD86E",
+"} 	c #80D972",
+"| 	c #54C549",
+"1 	c #58C84D",
+"2 	c #45BC3C",
+"3 	c #1F641B",
+"4 	c #2FA326",
+"5 	c #32A829",
+"6 	c #25921E",
+"7 	c #2B9D23",
+"8 	c #24871D",
+"9 	c #2A9C21",
+"0 	c #31A628",
+"a 	c #183116",
+"b 	c #162314",
+"c 	c #162915",
+"d 	c #216F1B",
+"e 	c #141F14",
+"f 	c #206A1B",
+"g 	c #23791C",
+"h 	c #1D5018",
+"i 	c #1E5719",
+"j 	c #258F1E",
+"k 	c #1E5B1A",
+"l 	c #27991F",
+"m 	c #162514",
+"n 	c #23801D",
+"o 	c #22741B",
+"p 	c #2EA225",
+"q 	c #9CE391",
+"r 	c #89DC7B",
+"s 	c #BDEDB5",
+"t 	c #F8FDF7",
+"u 	c #9DE494",
+"v 	c #183216",
+"w 	c #1D5119",
+"x 	c #182F16",
+"y 	c #172A15",
+"z 	c #1B4217",
+"A 	c #30A527",
+"B 	c #85DB79",
+"C 	c #44BA39",
+"D 	c #1D5419",
+"E 	c #20691B",
+"F 	c #248E1E",
+"G 	c #26971E",
+"H 	c #216E1B",
+"I 	c #20661B",
+"J 	c #162614",
+"K 	c #182E16",
+"L 	c #EEFBEB",
+"M 	c #72D566",
+"N 	c #1A3C17",
+"O 	c #39B030",
+"P 	c #23851D",
+"Q 	c #152114",
+"R 	c #237D1C",
+"S 	c #61CD55",
+"T 	c #B5EBAD",
+"U 	c #D7F5D2",
+"V 	c #183516",
+"W 	c #1C4C18",
+"X 	c #48BD3D",
+"Y 	c #4FC244",
+"Z 	c #8EDF82",
+"` 	c #3DB433",
+" .	c #1E601A",
+"..	c #22771C",
+"+.	c #248A1E",
+"@.	c #1E5A19",
+"#.	c #C3EFBD",
+"$.	c #1F611A",
+"%.	c #E3F8DF",
+"&.	c #94E087",
+"*.	c #2C9F23",
+"=.	c #3FB735",
+"-.	c #21721B",
+";.	c #FCFEFC",
+">.	c #2DA024",
+",.	c #152314",
+"'.	c #ADE8A5",
+").	c #F3FCF2",
+"!.	c #D9F5D4",
+"~.	c #289A20",
+"{.	c #162414",
+"].	c #1B4518",
+"^.	c #DEF6D9",
+"/.	c #FEFFFE",
+"(.	c #172C15",
+"_.	c #162814",
+":.	c #26961E",
+"<.	c #FFFFFF",
+"[.	c #162714",
+"}.	c #D0F3CB",
+"|.	c #152214",
+"1.	c #38AF2F",
+"2.	c #6AD15E",
+"3.	c #1E5519",
+"4.	c #33A92A",
+"5.	c #1E5E1A",
+"6.	c #35AB2C",
+"7.	c #152014",
+"8.	c #37AD2E",
+"9.	c #3EB534",
+"0.	c #23821D",
+"a.	c #F6FDF5",
+"b.	c #A6E69C",
+"c.	c #BAECB3",
+"d.	c #FCFEFB",
+"e.	c #91DF85",
+"f.	c #F1FCEF",
+"g.	c #3CB332",
+"h.	c #43B938",
+"i.	c #172B15",
+"j.	c #C0EFBA",
+". . . . . + + + @ @ @ # # $ $ $ % % & * * * * * = = = - ; ; > > > > > , = = + . ' ' ' ' . . . ' ' ' . ' ' ' ) . ! > > ! , @ . . ~ ! { ] ] ^ / ( _ : < [ } [ < < _ | 1 ( 2 > 3 4 5 6 7 3 8 9 . > 0 a b } [ c d e f g ! h i j f k j l l m ) 9 n o p q : r s t u ",
+". . . + v . + + @ @ @ @ $ # % % % % % & & = & & = = - = ; > ; ; ! w ! & & * . v ' ' ) ' . . ' ' v x v x ' # v ) . . ' ) y z o p A p 1 / ^ ^ ^ ( : : [ } B [ < : ( | ( ( C D E F G H 6 6 F * I o J @ K L M $ N e z O d h h d 8 j d P n Q m p G R C S r _ u T U ",
+"K . . . . . . . @ @ @ @ V # # # % % & * & * N * = = = - - ; > > > > ! & = = . . ' ' ' ' ' . x ' + ' ' x ' ' . ' J @ W o 7 { C X Y X 1 S ( | ^ ( : [ B Z B [ : _ ( ( : _ `  .o ..H G 6 +.3 @.a i j c e #.[ Q z Q R ! ! f $.j f j p { j ) @ { p G Y [ B [ u %.&.",
+". . . . @ @ @ + @ @ V V $ $ $ $ % % % & * * & * = = - = ; > ; > ! > ; , = = v v ' ' ) ' . . ' ' ' ) ' + ' J ' - *.A O ] =.=.` O 2 ] A 2 _ : ( : [ [ } B B < : ( ( S < : 2 @.H R *.-.6 P F D l k @ $ K ;.O a @ e > X i i f $.j { >.n k ,.' d I o / '.[ } ).!.t ",
+"' ' . . . + + + @ + # @ V $ $ # % % & & & * % * = = = = ; > ; > > w - $ & * . . ' ' y ' ' . ' ' ' ' ' @ . ) > A =.=.` ` ` ` =.X 1 / l { ( _ ( : < [ } } } < : _ : ( S < ^ ; @.6 G 7 6 ~. .. ,.i j J {.T M e N e n R i $.].N y ) b Q Q e ) @ e Q h S k s ^./.T ",
+". . . . . . + + + @ @ V # # $ $ % % % * * = * & = = - - - - > ; > > > , = = v . ' ' ' ' . . x ' v x (.. _.. n ^ ` ` ` { O ` X / ^ | j { ( ( ( ( } } [ } [ < : : [ S _ : X ; D :.P 7 P F H ' j g @ @ @ <.=.b c Q k f Q e e c c e e e e e J y e Q 7 8 N 1 t r %.",
+". . . . . . . @ + + # # V # $ # % % % & & & N N = = = = ; ; > ; > > > , & * v . ' ) ' ' ' . ' ' ' ' . v [.$ 7 2 ` ` =.` =.Y / | Y S P p ( S : [ } [ [ < < < < < _ : _ | ` ; D +.7 -.+.P H * y k j Q e }.C e z b j c e e e a J e e e Q |.@ a e e ! C K T %.}.M ",
+". . . + @ @ + + @ @ @ V $ $ $ $ % % & * * = & & = = = - ; ; ; > > ! > * & = @ . ' ' ' x v . . ' x ' ' ) ) + { =.=.` ` =.2 Y | / / 1 l A _ _ : < B Z [ < [ } [ B < : 1 1 1.;  .F 6 +.o P H J 0 $.$ @ z L S b e e d k Q e b K c e e b e e c y e e { R $ M ).2.%.",
+"' . . . . + . a @ @ @ @ # # $ # % % & & * * * N = = = = ; > ; > > ; ; & N * a . x ' ' ' . v v x . ' . ' ' @ { ] =.=.2 Y Y Y / / Y 1 l 0 1 1 _ _ : } Z } < : : B : _ / 1 1.- @.F ..6 6 P :.j J h l e e ^.0 b e K { J e e e K Q e Q e e e v c e e i C y !.%.T | ",
+". . . . . . @ @ @ V V V # $ $ $ % % % * & = & & = = = ; - ; > ; > ; > = & = V ' ' ' ' . . . x x x x ' x x $ { O ` 2 2 Y / / / Y 1 1 7 A _ ( _ _ : B Z Z B < _ : : S | 1 1.; D 8 6 $.n F n y R N z y h }.{ e e Q 8 ! Q e e e e e e e e e e c e Q 0 f N M t Z !.",
+"K K . . . @ + + + @ # V # # $ # # % % * & * * N = = = ; - ; > > > ; ; & N * @ . ' ' ' . . . . x ' . ' ' ' + { =.=.Y ^ / | Y / Y | / *.A _ : < : : [ [ [ Z Z < : _ / / _ ` = D P n H 7 +.*. .v 8 8 e b ;.j Q e @ 0 c e e e Q e a ].N ].e z $.i N h R ; s #.!.1 ",
+". . . + + . + + @ @ @ # V $ % $ % % & & * * & & = = = = ; ; ; ; w ; > = & * @ ' ' ' ' ' . . x x (.' . ' ) + { 2 Y Y / / Y / / 1 1 1 *.7 ] 2 ( : } B < < Z Z : / S | | _ ` ; 3.+.G +.+.A j @.>.K $.b 0 '.b e e J j $ e a z $.l 1 S _ j J y O 0 O 2.C O 2.M 1 [ ",
+". . . . . . . + @ @ @ # # # % % $ % % & & * * & = = = = ; > ; ; w ; ; & * = @ . ' ' ' . v . . x ' x . ' ) + ` ^ / / / ^ Y / | 1 / | :.I 3 H F 4.| : [ } q Z : / S 1 1 _ 1.- 5.+.6 6 *.6.P = ' 0 k Q e %.k Q e e ! 0 ! d >.R j l j 0 0 e v 8 >.0 { X 1 }.).L 1 ",
+". . . . v @ + + @ V V # V $ % $ % % & * * * & * = = ; ; ; ; > > > ; > * & * @ . ' ' ' ' . v x x x ' x ' . , =.| ^ Y Y / / / 1 | _ _ { o 3 i o F +.6.C ^ : [ } [ S | S | 9 = 3 6 >.6 ~.A 5 * Y y n b { %.b e e e 0 d f f i o $.$.g 0 j 7.; Y >.>.| R 0 u %.t ).",
+"K K . . . + . a @ @ @ # V # # # # * % & & * % & = = = ; ; ; ; ; > ; > & & = . . ' ' ' ' . v . x + . x x ~ ; Y | / ^ X Y / 1 | | ^ ^ 4.P R o o R :.*.9 F >.1.C | S S | / F % H ~.>.0 8.6.F * $ 0 f e J U $ e Q b ! 8 d i i j j R f { { Q f 2.O 0 X | 1 !.M %.T ",
+". . . . . . @ + @ @ V V # $ % % N % % * * * * * = = = = ; ; > > > ; ; & % * @ . ) ' . . . ' x ' x ' ) ~ W = 2 1 ^ Y ^ / 1 | | / 1 : p 3 3 F +.n 9 *.~.A A G 8 P :.:.j H > - H A 0 8.0 4.3 V P K f b 0 S c a ].Q { d i o o $.o o o 0 d e f Z >.O j O Z !.#.L s ",
+". . . . . @ @ + @ @ @ # # $ $ $ % & % & & & * * = = = = ; ; ; > > ; ; & % & . . x (.) ' x x x . ) + , = ; = 2 ^ ^ / / ^ Y / | 1 1 _ A o  .E o P 9 ~.:.9 A G F 8 o 3 @.> ; > -.>.8.6 8.^ :.v > n d e c ;.a N c c $.k ; h o j j l 0 { o 7.N C >.O | | M s u #.Z ",
+". . . + + . + + V @ V V # # # % # % & % % * & * = = ; ; ; ; > ; w > ; & % * @ . ' ) ) ' + ' x x (.$ = - , ; 2 ^ ^ / | 1 ^ ^ S : _ | j R 3 w D 3 3 3 o G 9 A G :.8 o  .3.> 3.P 0 8.8.>.*.H & j ' n Q *.| k {.h e 0 $.i o o R l 0 j O d 7.h Y j >.| [ [ [ !.t &.",
+"K . . . . . . . @ @ @ V # % # & # & % & & * & * = = = - ; ; > ; > ; ; & % * . . ' ' ' . + ' (.x & , , @ $ W ^ 2 | 1 1 _ 1 1 1 _ S 2 7 =.1 1.9 8 o 3 3 H 3 o P 8 o o o H w > n 6.8.>.4.4.*.% > 0 $.e z ;.c k y {.R *.$.; f j *.X Y p f J f 1 >.>.C [ Z [ T ).%.",
+". . . . + @ @ @ V @ V # $ V % V * % & * & & * * = = = = ; ; ; > > > ; , & & @ . ) ) ' v x (.v @ ; , , , = W 2 | ^ | ( _ < _ ( Y | p j ^ [ < < : ^ 1.G E = = @.E  .E R H D > o >.8.*.9.6.A P I J l e d }.O Q z J =.R f n $.k j O { C o 7.>.Z j 0 1 T 1 T Z %.&.",
+"' ' . . . + + . @ @ @ @ % # % V # & % * * * * * = = ; ; ; ; ; > > ; ; & % * . . ) ' ) ' ' . , ; , $ , , - - ` _ ( 1 | 1 1 ^ { p P n O _ } : : : q q < C G o @.@.@.3.3. . .3 P >.>.8.*.6.*._.k O z e $ <.Q h c e f o i h o o j X _ 7 > 7.W { { 0 Y Z #.T U T }.",
+". . . . . . + + V @ # # # % V % * % % & % & * * = = = = ; > > ; > > ; % & & @ . ' ' ' ) ' ~ = = v @ $ $ , @ 9 ] | 2 ` { 4.9 n  .n P _ [ : : : B [ B Z } : / =.4.F o  .@.@.@.R A 4.*.O 4 4 G I K 0 e X %.j e {.v | $.; d o o ` r O z 7.7.y K R >.1 u T %.Y U r ",
+". . . . . . @ a @ @ V V # % # # # & & & & & & * = = = - ; ; > > > ; > % % * @ x ' x ' (.@ * , v @ @ @ @ - x D i :.0.o H o ..n o ; k _ : _ < < } B B : | _ : : [ < ( ` 8 D = 5.:.*.4.*.9.:.' I 0 $ e k t y @ y J v e y R *.k $ z $ Q e Q 7.a '.[ l C Z j ; ).<.",
+"' ' . . . . . v # @ @ @ # @ & # * # # * * * * & = = * 3., ! ! > > 3.; $ & = x (.K b _., - , $ + $ x @ = @ , - $ D D D ..3 5.H o I  ./ _ < < < [ } } : _ S [ B } < [ Z 1 @.# D P 6 *.0 *.- = g @ >.e Y t f e a a 1 b e n j v e Q |.e @ T N N }.a.} X O b e }.0 ",
+". ' . . . @ . x @ @ # @ # # # # * N & # & & & & * > & , > 3.* ; = > > * & = v ' _.v , = , @ v . v & @ $ W * @ = $ = i o D D k o 3 3 | ( : < } [ Z } : : : [ } [ [ [ } S n % W P ~.*.G 0 :.) f 7 N e l ).z ; b b j z y ! o @ e e e c { ;.}.e t t 1 2.j 7.f ).h ",
+"' x . x x . @ @ V # @ # # # # # & # & * & & = = * , ; ; * & * > 3.> ; # # $ x ' J , - , $ v + + v @ $ , = = , = , 5.0. .= k 5.$.i d _ _ ( < } B Z < S [ B } [ } Z : : _ p - W ..6 -.*.0 * + % $ 0 e e a k l ! Q z {.e $.j a e e Q e e ;.Z N 2.L 2.M { 7.b !.*.",
+"' ' . . x . . . @ # # # @ # # V N # * N * & & & ; & > & = 3.3.; > ; = & * , v ' - - @ a @ a v + # @ - - $ $ $ $ 5.R 0.i ; 3 5.- D d : : ( _ < B Z B [ } Z B [ } } : _ _ ` ! = -.$.+.7 ~.*.[.j l $ J e K j *.J e e e c j n Q e Q e Q b ; >.b >.0 C } >.b i ;.).",
+". x x . . x @ @ @ @ @ @ # # N # # & & & & * * = * , * > 3.& $ > > 3.> = & + a $ - , a * , ' . v v $ = @ $ $ $ D R H ; , - - D W i  ._ < : : < B B Z q Z Z Z Z } : : : _ =.W ; 3 G -.n O 4.@.N z { j b $ $.O z b e Q e k >.N e e b $ }./.T /.s S r Z { J Q r %.",
+"' ' . . . . . @ @ @ # # # # # # * V * & % & * = * > = ; @ ; @.& > > - D 3 D ; - a y y , ' v I n 3 ~ $ # v = 5.o W @ ; 7 0 D $ ; > > ^ ( < < < < B q b.Z Z B Z } _ : : : =.- W H ..-.6 +.8 _.{ N K 8 z y C l |.e e e Q ! k J e Q e $ Y Z M Z &.r 2.| f J Q e e ",
+". x x . . . @ . @ # @ # V # # & # & % & & * * * * _ [ } [ c.[ @.:.S c.c.| 3 , = a y ' a @ 5 L d.e.- x = @ w o D = ; _ f.a.^ * ; $ # O / _ [ } } Z e.q q Z B [ [ : _ < _ =.- > o ..6 P 5 g.j T s Q e y $ j >.N Q J y K J b b J z ; f 1 u 0 } C N ; h ; @ @ b b ",
+"' ' . . . @ . @ @ # @ # # # # # # & & % & * * * * S > * 3.* E }.S ~.* , i D , ' ' a @ ' (.^ /.d.d.o J @ W -.3 = W i '.d.a.| x % ) @ 1.2 | _ B B q Z Z q q } : : [ ( : : 2 = D o +.+.~.A  .y )./.; e e a | S c e e e Q e Q e $ %.T $ >.%.!.Z !.R f c j T S N c ",
+"x . @ . . ' @ @ @ @ @ # @ # # # * V & % % & N N * G > = = * D S 3.; = D R @ $ ' ' ' ' a ' : d.t t H [.W o W $ ; W , b.a.d.M |.b J . =.X | [ [ } B e.e.Z } < : : : : _ _ ] - > P F ~.:.A 8 # { T z e e e b N J e e e e e e e i %.!.; K >.R J { >.; c v u <.<.O ",
+"' ' x ' . . @ @ @ @ @ @ # # # @ # & & % & * & * > S / / S : / _ S : S : ^ W ' y ' y ' $ @ : a.d.d.I ' w D w w ; - , T d.a.: Q b b . ` X / < } B B Z B } < < : : : _ ( S h.; D F *.A 5 6.3.7.Q Q e b Q e e Q @ O b Q e e $ v z L t v ; #.).&.Y >.R e e @ i ! l ",
+"' ' ' . . @ . @ @ @ # @ @ # # # % # & % % & * * % 3.= = > ; - > = n H = V @ a a y a @ & + _ d.d.t o ' @ $ W i W , , c.d.t 1 e ,.b . ` X / M [ e.Z } [ < : : : : ( ( ( _ 2 ; 3.:.7 :.~.*.> # @ Q J $ $ e y e $.r d y l k K $ h T '.i i B L @.j 8 c R C e P {.h ",
+"@ . ' . @ @ @ . @ @ @ # # # # V * # & & % & * N * & = = ; ; > ; H 3 * $ x $ y a y , - $ ) _ d.d.t j ) ) v * - 3., $ c.;.t 1 e b b a ] X Y _ [ Z B [ : : : : : : ( _ ( _ ^ W 5.~.4.A 6.O n 6.1.A @ $ c e Q e $ { Q e l l >.i $ s ^.- = 1.%.b.E z $ 0 _ i 7.e i ",
+"# @ @ ' ' . @ @ @ @ @ # @ # # # # & # & % & & & = $ ; = & = > 3.o w V $ V $ ' ' ~ = , a b _ d.d.d.n J . $ $ $ W ; % '.;.;.2.e b J . =.X ^ 1 _ } [ < : _ : : _ _ 1 ( : _ ^ > 3 A 0 >.4.8.8 >.A g.0 e e c | z y N c e y h o d [ s '.4 @.8.^.A _ ! 0 Z 2 D - e 0 ",
+"% @ @ . @ ' @ @ @ @ @ @ # # # # # & # & % & & & & > & > * = o n > = ~ K * a a ' ! $ (.x ) _ a.;.d.d ) = = , , & D % u d.;.2.e Q J . ] X X / S < : : < : : : _ _ 1 S : : / w 3 4 6.8.4.0 F G 9 =.% e e c M }.M =.e e *.f k l 1 s c.5 F S a.b.o @.j t >.A 1 - n ",
+". @ @ . @ . @ @ @ @ @ @ # @ # # & # * N & & & & ; ^ 3., = -.S ~.* @ , W =.$ a = , ' _.a x : d.;./.H ) , & = = $ D , '.t ;.2.e b J . =.Y / 1 S [ < [ [ < < : _ : _ : < < | D H >.>.*.0 >.*.+.8.4.> e b e i ! C Z z b z f R h | < c.q 8.} /.1.; J | ^.^ { G J C ",
+") ' . @ . . . @ @ @ @ @ # # # # # # # * # & & , & S v 3.k H : 6 $ $ V ' ^ = * - _.y y v ' [ d.;.;.n {.' % ; & & > $ '.;.t 2.e b J . ` / 1 ( _ [ < [ } < : : _ : S : < < | D H A >.>.8.*.~.+.9.A g.. Q e e J j 8 b e M l ; d 1 }.c.g.>.C '.S H N P !.=.@.N g l ",
+"(.(.x x @ @ @ . @ @ @ @ @ @ # # V * * & N N & % - q A O C 9 < S :.A F :.b.o x a ' y a , = [ ;.;.d.$._.v $ $ - W , @ '.t ;.2.e ,.,.+ C / 1 ( < [ B [ < < < < } < [ : } B / w H A 0 >.>.>.~.6 >.8.5 O 5.V |.e i P y c l C $.$.C q %.^ -.* ,.C ^ & _ S X E ! *.| ",
+"i.i.K K v v @ x # @ # @ @ @ @ # $ N N % & * = , ! ^ } } S ^ [ 2 S ^ | | S - (.a y ' $ = # S t /./.f b # + @ D $ - + q ;./._ Q |.) $ 2 | / ( < [ B B [ [ < < } } [ M } B 1 w H A A *.4.>.~.~.>.8.8.9.0 6.3 Q ) i b Q [ 0 z l 1 T }.} +.~ Q P g.E >.q { 8 A M f ",
+"i.(.x x x x v @ v V @ # # # # # % % & & N $ , , , n n ! V ~ V % + V 3.k > i.a ' K V * , a : /.;.;.f ,.~ - @ $ ; % x '.<.d.: |.|.{.+ X 1 / : [ [ Z B B } } } [ } [ : [ B | D H A A >.>.0 6 6 0 0 8.9.9.9.{ R z ! e Q { r k k | Z ^.} ^ -.Q H 3 N A } [ o h | $.",
+"i.i.(.(.x x v v @ @ V V # % $ # $ $ * & & # $ , H -.; v $ V V $ V ! w $ a @ K y $ , , ~ @ B <.;./.$.b Q ) = % $ $ b q /.d.2.e m J . =.( Y : : < B B B B B B } r [ [ } } 1 w H A A >.>.4.~.6 0 8.9.8.6.>.~. .J N a |.1 | d d [ s s c.5 -.$.5 n @ P } S b 8 | N ",
+"x ' i.(.(.x v v v V @ @ V V # $ # % % , V , ; 3.-., @ ~ $ , ! , ! > - ~ ~ K i., * v ~ * $ : ;.;.;.k 7.' ,.' = % ) Q './.;.: e J c ~ C S Y ( [ B Z Z e.q e.Z Z } } [ } Z ^ D 3 A A *.4.>.6 6 *.8.8.6.9.4.A P ) ].b e j | i R 1 }.L ^ *.! i.| A N 6._ _  .j S y ",
+"i.(.i.i.(.(.x x x v @ @ # # # % % , $ $ , ! 5.3 K = V V @ V v > ..w , v @ @ $ @ K $ > * (._ /.;.t O e ,.' 7._.y e ! %./.;.} Q m J $ 0 : S 1 : B q Z q e.q Z Z Z } < } Z | 3.H A A >.>.4.~.6 0 8.8.8.9.4 ~.G ' ].y b 2 n ! 8 2.s }.< 5.J Q :.A > 7 B } N | O J ",
+"(.(.(.(.i.' (.' v x v V v V V V $ % $ ~ ! $.$.! @ =.> v $ , * P - , V a = V = x J V ! V ,.( <.;./.L $.e |.m e |.$.} <./.;.1 b b _.. d X _ _ < } Z q q b.q e.Z B } } B Z | w H A >.*.4.>.~.6 >.0 9.>.6.6.~.o ) $.b c d C f 8 [ }.^._ { ! ,.:.n * G }.=.' >.=.e ",
+"y y (.' (.' x (.' ' . v V V # $ # $ $ , k -.> i., j.=.| S ^ Z ^ ^ | | | ^ , . x v _.x $ ) Y ;./././.L C y e b j t <.;.;.<.0 e J ' {.x G ( : B Z q q q b.b.q Z Z } [ [ Z | 3.3 A A >.>.>.~.6 0 8.0 8.9.5 4 g.$ $ N Q 0 n ].j 1 T }.u ^ n = j @.' A Z 1 7.C ; b ",
+"(.(.(.' ' ' (.' ' x V V ' V , V , K ; n k ~ @ v v ^ $ v @ * H $ * @ $ , v @ $ (.' v _.V @ $ T /./.;./.<.}.=.r ;.;./.;.;.t N e _.) ' ) + D F C : } q b.b.q q q } Z : [ q ^ 3.$.A A *.4.4.6 6 >.6.0 9.0 4.A E {.I J b n { k j O u ^.#.1.K , C G = ` Z ` > 8 h e ",
+"' K y (.' ' x ' ' (.x . v V V V x = $.3 ! v v ~ $ :.# $ * - k * a * , @ $ i ; v ) ' J ' & b @ T ;.<.;.;.<.;./.<./.t <.).8 e _.b ) ' (.' @ = 5.+.^ : } q q q q Z } : Z Z C 5.-.4.>.*.>.4.6 6 0 6.6.9.9.>.7 g.h ].].Q $.8 i O O u ).'.n 7.Q 9 > = | c.Y = 1 K e ",
+"(.(.' ' ' x (.' ' a K v v v v v , $.k , K @ @ x v & x V V @ > 3.* = @ $ w $., $ V v K V b # _.b ; &.;.;.<.<./.;.;.%.R b e y Q ) ) (.' + $ = 3.R +.>.8.C ^ ^ S : } Z q [ A 3 n A 4.~.4.A 6 6 >.0 6.0 0 6.~.3.{.k y b 8 { R j C #.L #.g.v & n o > A f.o { h b e ",
+"(.' (.(.(.' x x i.x i.' @ ' v * w > ~ i.i.$ $ x & (.$ V x V , w 3.~ ~ k H w y a V = K a a a (.) l ^.<.<./.;.<.<.<.;.O v e b _.' ' (.(.v $ - 3.n n *.>.*.~.~.6 +.4.8.^ 4.n 3.n >.4.~.4.A 6 6 A 0 6.6.h.4.+.{ I ].; e h C f M f &.).s A (.K 1 > # ^ j.1.* R e e ",
+"(.(.(.' ' x ' ' ) K ' K ' v ~ 3., v v @ @ V # v v v $ V V = V V $.> 5.3.- v v ) _.a ! ~ a |.D u <./.t /.<.<././.;.t /.%.d e . ) . _._.v $ = 3.H ~.*.4.4.>.*.+.n  . .o -.w k n 4.4.*.>.4.+.6 A 4.4.C 0 *.>.$.7.! $ Q k R j R >.s #.!.^ x ; 6.G > =.L ; ` ! e Q ",
+"(.(.(.(.(.(.(.K y a @ a K ' $ ! * K i.@ v x @ # (.8 8 F F *.:.:.~.0 h.G -._.@ ' ' Q , - @ $ '.<./.<.<.<.U M T /.<./././.!.W Q ' + J J . % = 3. .n :.~.*.>.~.~.+.-. .H o $.H n >.>.*.>.A +.6 A 4.O 4.*.0 4 6 @ h N Q N | ; 2.v T ).!.{ Q {.^ @.E S =.] 0.b Q e ",
+"' ' (.' ' ' K ' a @ @ K i.v ~ , > * @ x v @ x . ; } *.*.F 8 P G 4 g.=.{ _ $ . ' N ) 7., D { d.<./.<.L [ z e @ X ;.<.<./.<.0 7.) ' ) # D 3.3.3.5. .H n n F ~.F o -. .H R $.H n *.4.~.>.A 6 6 7 4.~.^ 9.>.*. .Q $.k Q h 8 8 l $.#.%.!.=.b V E * D S j.> D {.e v ",
+"' (.' (.' x x ' (.y ' i.i.V , @ ~ ! , x v # v @ x S V $ , $ = ; 3 -.~ ' | $ + @ + x x b b e.<./.<.'.W |.|.) Q {.i 2.;.<.<._ Q _.J @ P 1 : ( ^ ^ g.4 F -.H o n H 3 3.H -.$.H n *.>.~.4.>.6 6 A A 4.6.A >.>.R ' i N Q ; 1 8 | K Z ).!.O ' > =.; o b.[ G I Q e e ",
+"x (.) x ' i.) (.(.x K ' ~ ! , K K @ 3.- v v ' $ $ c.S | ^ 9 4.] 9.:.6 ^ j.= $ & y ) v # Q : <.<.<.d Q ' . . @ @ c J }.<.<.M e J m @ X ( ( : [ Z b.q [ S =.j 5.> 3 W  .H  .5.n 4.>.*.>.4.6 6 >.4.A 4.8.>.~.-.' ; f Q h f | >.; r ).L : _.$ :.G 9 | #./ % e e y ",
+". (.(.x ' ' (.' ' x ' (.v , $ v K ~ v 3.> _.@ v v $.o :.F g.^ 5 6 *.:.6 3.$ - J _._.$ ; ,.S /.<.<.d Q ' . ~ % % @ c s <.<.[ Q b J a C 1 1 _ < Z Z b.'.c.q } ^ ] n  .i i 5.E o ~.>.*.0 0 6 6 *.4.A 4.8.A 7 n @ - $ Q h 1 f | Q !.).%.2._.b 6.3.3 ] ^./ @ Q |.Q ",
+"(.. (.(.' ' ' ' (.v x (.i.v V V V i.v ; 3.= K v @ K @ $ - H > = $ - - $ - @ V y ) V ; , e 1 <.<./.o {.' ' * ; z @ c T ;.<.} e b J + 2 1 ( : : } q q b.b.'.q q Z < 1 *.i D 5.o 4.*.~.*.0 6 6 >.>.6.4.8.>.~.6 D n o e f i Z R i Z ).%.&.b v 3.*.-.C U 1 |.b e a ",
+") x x ' (.x x ' x x K x x K v V V v V K = 5., $ v , v , H 3.~ @ $ , , V  .@ ,.(.v $ % . e 2.<.<.<.o |.' v - ; % b b s <.<.} Q {.J @ X 1 ( : < B q q q b.b.q q Z q q : p 5.> H 8.>.*.0 0 6 6 >.A 6.4.8.*.6 P = k ; e f X *.1 e %.L d.X _., ^ 3.=.B <.p Q D - e ",
+"J ' x ) ) (.x (.x ' K K K v K v @ > v (.@ & w , @ , > -.5.w ! @ $ - - - b # v a ; v ) . e S /.<.<.o |.+ # , # ) Q Q s <.<.M e m J . C 1 1 : : } q q b.b.b.b.q q < B Z : :.> 3 *.*.6 *.0 6 6 >.>.A 4.4.4.~.F w  .k Q K R &.n $ 2.).%.}.b > H ~.6.q ^.P e ]._.z ",
+"{._.(.(.(.(.' ' x ' ' x x v K K ~ ; = V K ' , - , 6 O 9.+.7 *.9.:.8 G R W ' % + $ . ) ' e 2./.<.<.I |.$ $ . _.Q b b s <.<.M e ,.J @ 2 1 1 : < B q q q q q q Z Z Z [ Z e.g.@.H *.0 *.*.0 6 6 *.>.A 4.A >.6 F  .o ! Q h =.C Y Q t }.t | m ) A 6 5 g.f.n {.|.e e ",
+") ) ) (.x (.' (.(.K x v v x v x V K w ! ~ v _.- H '.^ A F F ..4.C 7 4 :.B $ , % (.x ) J e [ <./.<.f ,.~ ' [.,.Q J e T <.<.[ e ,.{.. =.1 ( _ : } q q b.b.b.q q Z } _ < q ^ 3 5.~.*.6 0 *.+.6 >.>.A 8.4.>.+.R ; ; $.e K $.&.R J 2.t f.%.7.J 5.-.H / ^.o Q b e $ ",
+") J ) ' v x K x (.v v K (.K v v K K ~ 3 3.v v K $ [ $ v V $ & a $ , ' # ^ z $ J ' [.|.J e [ <.<.<.o {.. b Q ,._.,.e T <.<.[ e b J @ =./ ( : < B q q q q q q q Z Z B } q ^ 3.w 4.>.~.0 0 6 6 *.A A 4.4.>.6 G o n $.Q ! 0 2.Y J ).}.).r J > 5 +.F ^ a.D b ' |.Q ",
+") ) x $ @ ) ) V v x (.' v v v v K @ i.@ $.5.$ i.$ '.[ S ^ ] F :.F :.F ^ '.; J |.b |.b ) J 2./.<.<.n Q Q ,.Q |.b Q e '.<.<.M e |.b . ^ 1 1 _ : } q q b.b.q q Z Z [ < } Z ( D $.~.*.6 *.*.6 +.*.>.*.4.4.>.G o ! v k e c n '.$.e M t ).^.Q , 3.A 6.e.s ].Q m e b ",
+"(.V % v (.x V $ v v x K (.i.i.K v K v v * 3.3.@ K 5.P 5 9 +.~.F *.~.F F n ) |.m Q 7.,.) _.M <.<.<.g Q |.J Q Q Q Q b T <.<.[ Q {.b a X 1 1 _ < B q q q b.b.q q Z } < [ B | D $.*.*.*.*.*.6 +.~.>.A A *.~.*.F i + $.b y l T *.K %.L ).'.z $ o >.6.^ a.].J $ Q e ",
+"% N v ) (.$ $ v _.x $ $ v ' x v K v v K _.; H 5.@ i.$ * ! V - * ~ $ 3.= {.) ,.,.Q b ) ' _.2.<.<./.I e e Q Q |.Q Q e T <.<.: e |.J . 2 | | _ : } q q q b.q q Z Z B [ } B | w $.~.*.6 *.*.6 +.*.A A 4.8.*.n P ..D h e c n s z _.[ ).).}.7.v x 6.3 X %.d e @ e b ",
+"- v _.) x v x ' i.(.x v v v K x (.$ x (.V , = 3.$.* V K * - > 3.- , ! a |.' J |.) ' ' ) J _ <.<.<.d Q Q |.Q ,.b b e s <.<.[ e {.b a C 1 1 S : B q q q b.b.q q } [ < } B | D 5.~.*.*.*.*.6 +.~.>.A *.A *.6 F D Q j e Q l r R K %.!./.u @ J F C A 1./.i @ z c Q ",
+"' ) _.(.(._.(.V (.i.i.x v v (._.v v (.V w , i., A 3.@ @ v > 3.3.k w 3.v , J b {.) ) ) ' ) _ <./.<.$.Q Q ,.,.Q 7.b e #.;./.} e J {.. X / | _ : } q q b.q q q Z Z } < } Z | > $.6 *.6 *.*.6 +.~.*.~.A 8.~.n 6 :.d z K e o %.@ e Z ).).T J * F 1.~.B }.0 Q ) m J ",
+"_.) (.(.' K x x x (.i.' $ , $ V x i.v * & v @ - , R n ~.6 O 0 6 *.0 5 :.*.. b [.) [.) v ~ [ <.<.<.$.Q e Q b Q e e b s /./.} Q e b . 2 | 1 _ : B q q q q b.q Z Z [ < [ B | > $.~.*.6 *.6 +.+.6 >.>.>.>.*.~.+.; Q n e Q ` } ; a !.L L M 7.# =.C 7 =.t d c $ c e ",
+"K x ) ) (.x x ) $ V K ) ) V > 3 * K @ $ i.v ! 3.K 6 ~.F 9 5 [ | 6 7 0 5 F * ) ) ) (.+ ~ + Y <.<.<.k |.,.|.,.b Q Q J Z <.<.1 J Q {.. =.| | ( : } Z q q q q q Z B } : } B | w 5.6 6 6 *.*.6 n ~.>.>.A >.6 n F F o ! a Q 0 ^.c e T ).;.2.J i.6.A 5.=.%.>.J N y b ",
+") ) ) ) ) (.K v ) V , $ i._.v = $.& v v @ ; ! v V K $ = & V | ~.$ @ *  ., - x (.) x , + Q G a./.u J e Q Q Q Q b b e 0 ;.;.j e e b a C / 1 ( : B Z q q q q q Z Z [ : [ Z / w 5.~.*.6 6 6 6 n 6 *.~.A >.*.~.R = (.n Q Q Y u @ @ #.;.;.1 c ) F C F j L o c @ e e ",
+"x ) ) (.' i.(.' K ' , = @ K K i.= ! v K ! * i.V v ^ ^ S | S j.Z | | ^ ^ | W @ v # * ' b b {._.~ |.Q e e _.e Q ,.J b e @ @ b e J b . ] / 1 ( : } q q q q q q Z B } < } B | w 5.~.6 6 *.6 6 +.~.>.A 0 >.6 6 P o  .; $ J =.U e b #.).<.1 7.3 C A 8.^ L O Q c c e ",
+"i.(.x (.(.K ' _.(._.K , * a K @ ' ' i.@ > k * i.v *.:.F :.F >.+.6 :.:.:.F * , , = (.b |.|.Q e |.|.e J e e e b e e b e b e e Q {.m a =.| 1 ( : } Z q q q q q } B } : < B 1 w 3.6 ~.6 *.*.+.n 6 *.*.>.>.G 6 n ; J g Q e u &.J @ T t L 2._.F >.8.*.| a.>.K ; Q e ",
+") v v (.) (.(.(.' x i.' = * K y (.x ' @ ! 3.- $ K V @ & ; @ x & v $ $ $ (.' % = (.b |.|.J _.,.e e c 7 [ T }.T } R a e e b b b b b K 2 / 1 S : [ Z Z q q q Z Z B [ < } B | D  .G 6 6 6 6 6 +.~.~.G *.4.~.n P H - I z Q 2.u e e }.%.;.{ ,.= 9.~.A =.L C e J y |.",
+") ) x v x _._.K i.a a K , w , _.y V $ * 3.* ~ > $ i.a a , w $ v , @ x V y V V y a ) {.Q m e e b 7 }.<.<./.;.<.<.<.L 0 e e Q b c b K =.| | S : [ Z q q q q q Z B } : [ } / D 3.6 ~.6 6 6 6 n ~.~.A *.*.G n 6 o + f y e T =.b a &.;.L M 7.-.6 ^ -.A %.>.v z e e ",
+"J J (.V V x i.) i.y a $ , , - ! x v @ - k > ~ * * , v = 3.* ' $ $ @ v @ . J _.' # x J J [.e ~ 1 ;.<.<./.<.<././.<.;.<.e.@ e @ e b K =./ 1 ( _ B Z Z Z q q Z Z B [ < [ B | >  .F 6 6 6 *.n n G ~.*.*.>.G n n i ) j @ J Z }.e {.}.L <.G ,.H ^ +.^ ~.f.=.y N J J ",
+"' i.) ) v V v i.v v * $ y a ! w @.V v , ! k k * K ^ : : O , H ( ( | | g.g.x _.K ) v x ' ) _.S <.<.<.<.t %.%.U /./.<.<.<.'.c e y b K =.Y 1 S _ [ Z q q q q Z Z B < < < B 1 > 3.F 6 6 6 6 6 -.6 ~.G *.A *.n n  .$ h b c #.C Q a 2.t ).1 Q 6.>.9.6 S L =.b v |.e ",
+"x v ' i.i.v V V $ = , a ' $ , a -.= @ @ @ > $.k ~ : 3.' v $ ] A V @ , 3.< & y b |.@ # ' {.> L <.<.<.r h Q b ) ~ }.<./.<.;.I e Q b K =.| / _ _ } B Z Z Z q e.B } } : < } / w 3.G 6 +.6 6 n +.6 ~.*.*.~.G F R w ' l $ e Z u Q b %.t ;.p 7.! 8.*.*.=.).0 e @ e e ",
+"i.v , & v _.' , , a _.' - & (._.a V , - ~ K ~ -.k ^ ~ - $ x 1 :., # a ' ( J ) a ) J (.+ ' j <.;.<.L . e ,.e Q e b #.<.<.<.o ,.m b K =.| / ( _ } B Z q q q Z Z B [ : < } / D 3.F 6 6 6 6 n n +.~.~.A *.~.+.o 3.- $ c c !.j e c 2./.^.0 |.3.+.8.+.*.^.| J v Q e ",
+"v $ (.y * V b = , x ' ' V , a ' ) $ V v * ~ @ * -.j.j.c.j.^.j.> $ { ^ ( '.& J _._.J ) ' m : <.<.<.C Q e 7.e ,.e Q > <.<.<.O e Q J y 0 1 Y _ : } Z q q Z Z q B [ _ [ [ < | 3.5.+.+.+.6 6 +.n G ~.~.*.~.6 F n  .- 0 y e M [ e N %.L <.f {.~.9.0 8.+.L O v K b e ",
+"3.$ ' (.i.v i.(.- V a y ' V v a V $ ' y $ ~ @ * * -.> * ~ _.$ a @ = v ) - Q . x ) ) ) ) b : <.<./.l e e b e Q Q e @ )./.<.C e ,.e b *._ 1 S _ [ B Z q Z Z q Z B : [ } [ / > 3.+.+.+.6 6 n -.+.~.6 ~.~.6 +.o 3.; o e y T f Q e M ;.L =.e 6.~.0 9.^ L Y b N Q Q ",
+"$ v i.b a $ ' K V ' (.y ' V V $ + v ) J i.a ~ * @ > k > $ $ $ V $ v $ x @ ' V ,._.J ) (.m 2.<.<./.g e Q m Q e Q e b #./.<.S e b c e @ n 2 : < } } B q q Z Z B } < _ : [ ^ > 3.n 6 +.6 6 +.n +.G *.~.G n n n o I P c b M X Q a ^.L <.h e 3.^ *.>.=.d.>.$ J Q e ",
+"b i.K J V = V $ y y (.) i.' V $ ' ) ) ) ) ) a @ ~ @ * 3.k - @ $ $ v $ ' (.a y ) _._.) (.{._ <.<.<.o e Q e Q Q Q Q Q u <.<.M e e m e e x D F ^ [ q q b.q Z Z Z [ B _ : B / D 3.+.+.+.6 6 n n +.G 6 6 *.G n o 5.> @ e N M o e b [ <.).Y e = *.8.-.5 ^.u e @ e e ",
+"K _.@ $ @ ! - v J i.x v . (.(.' [.) ' ' ) ) ' (.w @ a * 3.- $ ,  .v $ v x v b a ) ) ) ) J : <.<.<.d Q b e |.,.b ,.Q '.<.<.} e e |.J b b [.. 3.F ^ S } q b.q } [ : _ < B ] 3.@.+.6 +.6 6 n n +.G ~.>.~.+.n R o H k $ e Z { e z T t <.~ ) >.9.0 ~.5.a.O @ e Q e ",
+"a ' ~ $ , ! V i.) ' V $ V (.' ) ) _._.c y y ' ) _., * ~ * > 3.@ ^ @ @ V y ' J ) _.) ) ) m _ <.<.<.f e y b e e Q e Q '.<./.M e e Q |.Q b ' V = w 3 F 4.^ S } Z q < < Z } p > @.F +.n 6 +.n -.+.~.n G ~.G n H D = {.e ; C $ e e r <.L j b h.*.0 8.^ %.&.e $ e Q ",
+"J y i.a - $ b y K V v V @ x x (.) ) c c y K y ) . $ ~ ~ @ * > > | a @ @ v v ' J ) ) y ' m : /.<.<.d Q a ' b Q e e Q T <.<.: e 7.Q |.{.J ' , ; 3 o n n n n ~.6.g.S _ [ ( 8 > $.n +.n 6 6 n n n G ~.~.~.n n o 3 i J { e &.>.b a #.t <.@ b 3.^ *.>.C d.| v b Q e ",
+"a _.K @ ' i.J K $ $ v v x ) ) J _.) y y y y y K ' ) V , , ~ ~ > _ $ $ ' x (.(.J J _.) (.m : <.<.<.n Q ' . @ ' Q Q Q T <.<.2.e Q J Q {.) ' V &  .H n :.F n o H  . . .n n ; ; H n 6 n 6 6 n n +.6 6 6 ~.n n o 3 D @ @ @ f K e |.s ;.U j e * *.C +.4.%.r c y e Q ",
+"_._.(.y J i.@ @ 3., v J ,.) ) ) ) ) ) ) y K K . a + v (.' , $ , : 3.$ y a ' ' J ) ) ) _.b M <.<./.n Q J @ , . ,.e Q T <.<.M e 7.b 7.m m v & >  .H n 8 F 8 o 3 5.D * D 3.> > $.6 +.n n 6 -.-.n 6 +.~.+.+.+.n i ; @ }.y C h e z &.<.).@ ,.P *.9.n o ^.Z c b e Q ",
+"V y J _._.K * k * -.@ _.' {._._.) ) _.) ) K . . a . . . @ # $ V - - - a a @ _.) ) ) ) ) ,.2.<.<.<.H |.. @ $ ' b Q Q T <.<.M 7.7._.e J ' N = ; > 3. .o R P R o 3 i = D 3.w > 3.n +.+.n 6 n -.+.6 +.~.~.+.n -.o n @ o k K N e e %.t L f @ ~.8.*.9.7 f.2.K b e Q ",
+", v J ,.) @ * * k ! $., J (.m ) _._.) ) ' . . + # @ % @ @ (.% % . = ; - ' y ,.' ) ) (._.b : <.<.<.H |.@ + + x ,.e Q T <.<.M e e e e H { ^ g.*.n  . . .5. . . .3 D w i 3.w > k n 6 -.+.+.-.n n 6 ~.6 n 6 6 o 3.D z /.b C v e $ S <.!.J 7.A 8.8.*.: L u Q c e e ",
+"K @ @ a $ $ ' J 3.* > k v b ' [._.) ) ' . v v v # . # x @ @ # # = , @ D v $ ' J _.) ) ) ,.: <.<.<.o {.' v ~ ' Q e Q T <.<.M e 7.m c 0 / S _ < [ S ^ A P 3 3.3.D W ; D D 3.3.k +.+.n n 6 -.-.n 6 6 ~.6 +.n H 5. .8 2.j J c e e ^.t %.f 7., 8.9.*.7 f.Y y e e Q ",
+"_._.v w 5.$ _.) ~ * * k 3.v [.) ) _.) ' x . @ @ V V % % E j P n R n $ v $ $ . ) ) ) ) _.{.: <.<.<.0.b ' @ $ ) e e 7.T <.<.M e e e c ` 1 / | : < Z Z q } ( 1.j o @.D ; = > 3.3.n +.n +.n -.-.+.+.+.6 6 +.n 3 w $ ; t e R c e c 1 /.}.Q J 6 *.^ n F ^.}.b b e e ",
+"K _.J $ 3.> a J i.K > > > 3.K ) ) ' ) ' v v V V x ^ q q ( ` j p ( | '.b.:.) ; ) ) y y _.,.: <.<.<.o Q . $ ' Q e e e T /.<.M e e Q ' X Y Y ( : < B B Z Z Z B [ < ^ A n D - w k n +.n +.+.-.-.n 6 6 +.6 +.n 3 & ,.j !.{ e J e J '.;.L k N 4.8.0 9.5.f.[ y e e _.",
+"@ i.J J @ w - _._.i.i.! > > k v y ) . v v v v V & ^ = v + % @ ' . . ' W < $ b ' J ) ) ) b : <.<.<.o |.. ' b e Q e Q T <.<.[ e e Q c X / ( S S < [ } Z Z q Z B B e.< / :.3.- 3.n n n n +.-.-.n +.+.+.G +.n 3 3.D o /.e N e Q e | ;.}.7.7.4.0 6 6 g.f.T b e e e ",
+"K a v K i.$ w > ' i.J _.* 3.! $.i.(.x . v v v V a b.0.G j j *.n 9 j P R q a v x _.) ) _.b : <.<.<.o J ) e e Q Q e e T <.<.M e Q b _.C X 1 ( ( [ B Z q Z q B [ [ S < q / o - 3.n +.n n +.-.-.n +.6 n 6 6 -.3 D > l t 0 Q e Q J }.).%.> 7.5.9.8.6 6 L [ K Q e Q ",
+"_.i.@ v _._.V w $ J i.i.@ k > > 3.* i.$ 3.- (.@ % P 7 F 9 9 j p j G ..o A H v ) (.(.y x ) B <.<.<.d e Q Q 7.Q e e Q T <.<.[ e e e K =./ / 1 _ [ B B Z q Z Z B [ : ( _ < 4.* 3.+.-.-.n n -.-.n +.+.n +.6 +.$.> m { %.e e e e e S /.T 7.' 4.*.9.H +.%.T b e Q Q ",
+"i.K K _._.i.K v R = b i.i.@ k > > 3.! $ x V & $ v * ' @ & @ , ' $ . = @ @ ) , V ' {.) = # e.<./.<.d e 7.Q e Q e e e u <.<.M e e e y =.Y / ( _ [ B B Z Z Z B B } : S < B =.- 3.n n -.+.n -.-.n +.*.+.n n 6 H ; {.*.<.j e e e K s ;.U $ z *.8.0 6 > j.T c e e e ",
+"~ ~ K _._.v ~ v @ $.w i._._.K ! k - $ K y @ = = $ # + * $ v & & v ; = v a ' (.$ ' ,.v > + : <.<.<.f e Q 7.e Q e e Q T /.<.[ e e e K =./ / S S [ B Z Z q Z Z } } < _ : B 2 > 3.n n -.n n -.-.n +.n 6 6 n n H H i *.t ; b e e e [ <.M 7._.^ 0 0 0 ] L u J e e e ",
+"~ K _._.' @ a ' b i.H 3.i.K K i.! ! @ _.@ , , = @ v = $ $ = @ , , ; ; W b (.a V x _.. % m ( /.<./.$.e e 7.e e e e Q T <.<.M e Q e K =.Y Y S _ < } B Z Z Z B } [ < _ : B ^ D 3.n n -.n n H -.n n n +.+.n o $.> {.` <.$.e Q e K r %.%.z Q ! 9.8.+.5 f.!.$ Q e e ",
+"~ @ v $ $ ' y ' i._.a $.- _.v i.K * - K ' $ @ ) ' ..F R j :.:.F *.:.*.~.o y a @ V . ) [.b [ <.<./.f e e Q e Q e e e T /.<.M e e e y =.Y / ( _ [ B B B q B B } [ : : : } C > 3.-.n -.n n -.$.n +.+.n +.n n H 3.7.=.;.=.e e e e u <.[ 7.) O 6 0 *.+.}.u J e e e ",
+"w * $ * $ _.i.v _.a {.a 5.$ ,.K K K * * @ $ , _., B *.:.p j r 1 *.0.:.P c.$ (.b y . ' y J } <././.$.e e 7.e Q e e e T <.<.M e e e K C | Y 1 _ < } B B Z Z B } [ : 2._ } ^ > w o -.-.n n -.H n n 6 n 6 -.3.5.3 [.X ;.v e e e K 2.;.s c = A 9.8.n ! }.^.N e e e ",
+"$ & * @ i._._.' @ {.(._.$ 3 @ b ~ y ~ > > > 3.* y : @ ' $ x _ A 3 V ' y : ' D , {.(.V # m _ <.<./.f e e Q 7.Q Q e Q T <.<.[ e Q e y =.Y | ( _ [ B B Z e.Z B } } _ : : } C w > n n -.n n H 3 n +.+.n n n n n o ) | t M Q e e b e./.1 7.@ C 6 *.9...#.#.v e Q e ",
+"m ~ - ~ @ @ K _.' % (.(.@ & w ! _._.y a * > w > a '.7 ~.R ~ 2 H $ ( ^ h.j.! v $ (.,.) + Q / <.<./.f e Q Q e Q e e e T <.<.M e Q e K =.Y Y 1 _ [ } B Z e.Z } [ [ _ : : B Y w > n o H n n -.H n n n -.-.-.$.! ; ' U ;.; e Q e J 1 /.u J 7.n 8.*.*.| d.%.v e e e ",
+"|.{.$ > * @ K i.) J @ & V _.' H * i.y a K ~ > > k k o :.-., v , , o *.:.5.a J ' - a J v b [ <.<./.o e e e e Q Q Q e T <.<.} e e e y C Y / S _ < B } B Z e.B B } 2._ : [ ^ w 3.o -.-.H n H $.n n +.6 n -.3.H  .) u <.M Q e e e u <.X 7.' H *.9.*.G ^.}.N e e |.",
+"[.Q {.$ = = V i.(.(.v v y J _.* P ! y i.@ @ ~ > ! ! , a ' x @ + # + W W ' b ) b = & J ) |.: <.<.<.$.e e Q e e e e b './.<.M e b e y =.Y Y 1 S [ B B B Z Z B [ < _ S : [ / > D R o H -.-.H 3 n n n -.n -.3 @.. ; t t j 7.Q Q y X <.M c > O >.0 -.$.T %.v e e Q ",
+") ,.{.) $ ; * K v ' v ) J K $ , W 3., J i.v @ ~ > 3.! x i.$ * $ $ & @ x (.y y x V ; J J |._ <.<.<.k e e b Q Q b e {.T /.<.S e e e c C Y | ( _ : } B Z Z Z B } } _ _ : [ ^ w 3.o -.H H n H H -.n +.H -.-.5.> ' k }./.S Q Q e e }.<.0 7.> 8.8.0 8.H %.}.; e e {.",
+"J _.) {._.V - $ V K K ) ) V , V b V ! $ i._.K K * ! $.3.& v @ $ , W $ ) ' x x & ' % . (.,._ <.<.<.k b e Q Q b e e e T /.<.[ e e e y O Y Y 1 _ < } } B Z B B [ [ _ S : [ / W w o n H -.-.H H -.n n n $.H 3.3.> ! <.).O J e Q J 0 ;.u 7.7.*.6 *.6 9.#.).c e e e ",
+"_.) J b {.(.$ ! ~ K K v v v v ' ) (.& ! , i.i.@ @ , ! 5.> V a $ & V V (._.$ - a b b $ + b : /.<.<.$.e e e e Q e Q e %.<.;.M e Q e y C Y / S _ [ } B Z Z Z B } [ _ ( _ < ^ w w o o H -.n H H -.n n -.$.H 5.3.; h u /.| e ,.e e T <.j 7.* 9 0 8.8.5 f.#.! e Q b ",
+"$ ' b _.) ,.J V - ~ v @ ' ) K @ @ x (.$ w * K K K K ~ ! w w = V V v v V , - V ,.) 7.J y c r <.<.<.j e Q Q e Q Q e K t <.;.Y e e e c C Y Y 1 S < } } B Z B } [ < 2.S : < ^ W w o o 3 H -.$.H -.n n $.-.$.3 = J j <.L 2.J e ,.e | /.| c  .C >.9.-.R '.%.c e Q Q ",
+"N v ) J _.b b _.- ! * ~ v _.' x ' . ) ) , w , i.K K v $ - w = v i.V v V = x Q b . ,.7.,.c S <.;./.} e e Q e Q Q e 0 ;.<.<.0 e Q e y C Y | ( _ < } } B B Z B [ < _ ( : < ^ w w -.-.H -.-.H $.-.n n H -.$.5.> J >.L ;.C e ,.e e } <.j 7.D =.0 9.8.= j.).i e e e ",
+",.# # J m _.) J i.* * ~ @ K (.) v (.' (._.$ w * K v v v V , $ x @ (.& > x ,.i.& ' # Q Q 7.{ /.<.<.t z Q e e e e N ^.<.<.<.R e e e c O Y | 1 S < } } B B B B } < _ S : < Y W w H -.3 -.-.H $.-.n n n 5.k 3. .> 8 /.;.u ) e e e 1 /.1 7.,.4.~.*.9.O }.}.y e e Q ",
+"b ' # . J J c J b K = ; , v K ) ) ' v v ) _.v - K v K @ @ V = ~ V v = v J $ ' J b v @ b e $ t <.<.<.#.0 ; c @ j t <./.<.;.$ e Q 7.J =.| | S _ [ } B Z Z Z B < : _ S _ [ ^ w D n o H H -.$.H -.n n -.H 3 w 3.7.=.L /.>.e e e c } t j 7.J n 0 0 *.8 f./.i e e e ",
+"J J ' @ a ) c J _.b i.$ = , $ v (.' (.v ' (.K $ > K i.i.v $ v v $ $ & (.J 3.= ,.) ,.. ' Q Q 2.<./.<.;.;.<./.t /.<.<.<.;.u J e e e c C | Y 1 _ : } } B B } } [ : _ _ _ [ / > w o o H -.n $.$.-.-.H -.H 5.3 _.b C t ;.}.e m J e 1 <.0 J ].8.8.0 n P j.}.v e Q e ",
+"i.b J v @ a y _._.{._.' $ , , v v x (.' x v x i.i.3 w _._.V V , , ; * K J i.$ ' J J . [.@ Q _.Y /.<.<.<.<././.<.<.<.t =.y e e e 7.y O Y C 1 : ( B B B B B B < < _ ( : < ^ > w -.-.3 H -.$.H -.n -.n $.3.3.3 ) | ).;.f e e e y S t i 7.o C 4.C 6 V }.t h e e e ",
+"_._.J _.) @ @ K J ) ) _.(.V , $ v x (.(.x x v x (.< : : 6.V :.B ^ S B : S i._.V a b (.x ' . e e g &.<.<./.;.<.<.<.r $.e e Q Q e Q y O 1 Y | : < < < B Z Z B < : 2.( : < ^ W D o -.3 H -.$.$.-.-.H n -.H 5.j J 1 /.).Y b ,.b e M <.{ 7.@ C 8.0 ^ 6 j.#.$ e e e ",
+"J i.) J _.' @ N J c _._.) a $ = V v K (.(.x x v x ^ > 3.= ) ( ~.$ a @ w } K _.v , y b (.m @ # Q e ) $.O : r S 0 $ e e Q J e e J 7.7.j _ S / S } } } B Z Z Z } < _ S _ [ ^ > w -.H 3 H -.$.$.-.-.H H k 3.5.(.# s <.t d e Q e y 2.t d 7.' -.4.9.*.~.L ).N e Q Q ",
+"b _.) ) _.J ) N @ y J ) y ) ) $ $ $ V K i.' v v _.: v . 3 $ ] n a , $ , [ , a J ' ! _.J x (.(.) e e e e e e e Q Q Q e e e e b e b 7.h C _ S S : Z B B B } [ < : S S _ < ^ > w o H $.$.H $.5.-.-.-.-.H $.w (.7.&.<.}.O e ) Q e u ;.j J W =.9.*.~.:.j.}.N e e e ",
+"{._.) i.i.J J ' # @ K y ' J {.' ~ $ ~ V K ' ' ' $ ( q U j.j.c.a $ 5 | ^ S ! $ ' y y , v y b y + ' $ k 8 n d d g d $.$.k $.J e Q e 7.J $.O 1 _ } < } Z e.B [ < < _ ( _ < ^ ; D H H 3 H -.5.k -.-.-.H k $.3.R + ^.t /.$ |.b {.c X t ! 7.o ^ 0 *.+.w s L ; e e e ",
+"{.) J b _.i._.{.' $ # c _._._._.v V V V V v x i.(.x V x x # @ v y , y ~ ' y , , ' b , ' $ b a Y %.t <.<.;./.<.<.<.<.<.<.<.0 e Q e b 7.b . W d 7 | _ B Z Z } < : S ( : < ^ ; w o 3 $.$.H $.5.-.-.H -.$.5.5.[._.#.<.}.o e @ Q e u ;.>.7.* C 4.9.9.= q L k b e e ",
+"_.) _.J _._._.) J ' @ # . ) _.) J (., $ V V V (.i.V v v V ' . $ a @ @ y m ' y * , m b ) ) Q q <.<.d.<.<.<.<.<.<./.<.<.;.<.1 Q e b 7.,.) . @ # ; D R *.] S } B < : / ( [ 4.> > H 3 $.H H $.k H -.$.5.$.> - (.! a.;.t @ e K Q b X %.].Q . *.4.0 >.h.^.t $ e e e ",
+"_.J _._._.) ) ) (.J ' # V ) {.(.' _.a , $ V v K ' i.x V (.v & (.V ' y a ' J b ' * $ a _.) k L <./.<.<./.<.<.<./.<.<.<.<.;.0 e Q Q Q Q ,.) v * D 3. . . .H ~.1.=./ _ B _ R = 3.H 3 $.H H $.$.H H -.5.3 5.E x ~ T <.u b b a e e &./.k 7.o >.4.4.*.7 U /.i e e e ",
+"J _._.J _.) _.) ) _.J x @ v (.) ' J ) @ $ $ V v ' x _.' V x x a ' @ y ) v b y b v * $ ' b { <.<.<.d.Y p 0 0 0 l j 0 l l n ) e e e {.b {.' v - 3.3.3 o 3 5.@.3.> D P 9 8 ; = 5.5.$.$.H H k $.H H $.5.5.5.o , n /.%.}.y e K J c 1 !.; 7.j 8.=.9.-.R '.a.v e e b ",
+"_.J _.) J ) ) ) J ) ) _.(.# @ ) ) ) ) ) a , & V ! =.| C ^ ^ ^ 2 ^ ^ | : b.(.J ) {.@ = = {.^ <./.<.< |.e e e Q |.e Q e Q Q e |.,.e Q Q ,.. @ & = 3.3 H 3 E @.> ; @ @ N = = ; 3 3 5.$.$.H k $.H H H 3 3 3.D |.i }.<.Y Q J K e e Z /.! 7.> ^ *.8.6.* '.d.j e Q e ",
+"J _.J _._.) _.) ) (.(.J _.V # . ' ' ) J ) v $ $ (.V V v ' @ & ' a a ' _.( ) y J b _.$ D (.S <.<.;.j e m m ) ) ) ) m ,.a ' Q Q e J e Q [.% & ; ; @.@.3 E 3 3.3.= * @ & D > ; 3.H $.5.H $.k k H 3 H 5.5.3. .@ { t !.#.e e N Q v M !.h 7._.9 =.9.>.O c.f.@ e e Q ",
+"J _.J ) _.) _.) (.) ) y ) (.. @ # . ) (.(.) (.$ , , a ' a y a V $ i.v D q . Q b J b ) $ ) r <./.<.I b . ) ) ' @ % # # % @ ~ . e e e > j O A F 3 D D 3.3.5.@.3.> N @ % = ; ; >  .$.5.H 3 5.5.H H $.5.H @.; b { ^.;.=.e y N e Q M ).; 7.3.>.C *.:.~.j.a.o e b e ",
+") [._._.) ) ) ) ) _.) ) ) _.) x # + (.) ' ) _.x $ ^ : | | | ^ | ^ S | 4.~.(.|.y J b b [.J } <.<.<.H ,.[.@ x . $ x , , ~ $ $.* e Q |.7 2 ( _ _ S =.A 8  .> > W > * $ * = W 3.3.3.5.$.3 H k 5.H 3 H 5.3 ; + e | %.).Z b e K J N 1 #.N b F =.: ^ ..6 q L ].e e e ",
+"_.[.[._._.) _.) J ) ' ) ) ) ) {.. # x ) (.' ) ) V $ a $ ~ y ' a @ a ) , |.(.b _.J J y [.b : ;.<.<.$.7.(.d = . v $ @ @ # = I @ e Q ) X | X | _ [ B B < | 6.o 3.* * * ! ; ; ; 3.3 5.5.3 3 5.5.H 3 $.3.H @.> ' S #.t *.e y @ ,.a } ).- Q 3 C 4.^ 6 ! b./.n e Q e ",
+") ) _.[.[.) ) ) ) ) ) ) ) ) ) (.) ' + + . (.(.' (.' @ $ @ $ a ' ' V x (.(.b [.J J ) ) [.Q S <.<.<.H Q = o R W x @ $ + $ D ; y e e c =.Y | 1 : : < < } B B : 2 1.f W N ; > @.= 5.5.5.5.5.3.5.3 $.H 3.3. .I {.| %.!.[ e e z % E #.#.$ ,.x 1.C C G :.q ^.f e e e ",
+") [.J ) [._.) ) _._.) ) ) ) ) ) ) (.. @ @ . (._.) v (.@ @ @ (.@ v a x ' [.) ) b J ) ) ) b : <.<.<.I _.= # ;  .; v @ ;  .k & _.Q e ) X Y | 1 _ < [ [ } } Z B < _ S Y 9  .* ; 3.H 5.3.3 3 3.5.H 3 3 H 3 ; = K Z #.t 8 e J b ) n 1 ;.@ 7.; A ^ : 4.g.^./.$.e e Q ",
+"b J _.) ) ) ) _.) ) _.) ) i.) i._.) (.. # V . ) ) + J , ' $ $ ' a x a ) x [._.) _.J _.) m M <.<.<.n J ' ) @ W D ; , ;  .* _.|.e e c =.Y / | : : < < < [ } B < < _ [ _ O  .> > 3 @.5.5.5.3.5.3 $.5.3 5.; _.e u #.#.2.e b % |.' Z '.N ' G =.: C -.P '.^.n e J e ",
+"b m J ) ) ) J ) ) ) _.i.) i.) ) (._._.) . V @ + # q ] 2 / ^ ] _ ^ ^ ( ] ^ . b J J _.) ) m M <.<.<.j ,.) + v v = i $ ' x [.e e e e c C Y Y 1 _ : < < < < < < _ S | | : _ G ; =  .5.3.5.3 3.5.3 $.-.3.3.H > ].#.s ).h b b . . i S ;.) 7.:.C S : n @.c.<.i e e c ",
+"m m m J [.[.) _.) ) ) ) ) ) i.i.i.) y y (.. @ # ) ] ' ) ) . $ x $ a ) # ( b b ' [.y (.) Q _ /.<.<.f ) z x ' a x = x Q e |.Q e e e c =.X / / : : : < B B } < : _ _ 1 S [ 1.> > 3 3.3.5.5.3.3.3 5.5.5.3 * |.v u s #.X e Q D D D ^.q ' 7.V 4.S S *.3 c.t O Q e e ",
+"b b {.J _.[.J _.) ) _.) ) ) ) ) _._.i.y ) (.. + . q l n P N [.* $ @ x > } ' b {.[.) ) ) e S <.<./.d ,.$ % # x v $ v b e Q e e e e c C X Y | _ : < < [ [ [ < < : 1 | 1 [ 2 @.3. . .3.5.$.5.3.3 5.H 3 5.* _.i T T ).y b e e $ F < L J 7.= A 8.[ 8.A }.<.f Q e {.",
+"b b b b J [.[.) ) _.) i._._.i.i.i.i.y (.y (.' . z 0 { X / X C 2 C 1 / g.p {.|.) _.) ) _.b 2.<.<.<.g e ) ! = x $ % , v b e e e e e J C X / | _ _ [ } < [ < < _ S 1 _ 1 [ 2 > ; 3.3.5.5.5.3.5.3 3 $.$.3.> b $ s #.T R Q |.~ x # j.q . N *.C ^ S 8 6 j.d.0 e e e ",
+"m b b b b [.[.) _.) _.i.i.) ) _.K y y y ) y ) ' . + z . ) . ) ' v v + $ |.) [.{.) ) [.) _.[ <.<.<.I e ' # = , V @ # * @ ,.e e e e J C Y Y | _ _ : < [ } } } : _ 1 1 | [ ^ ; ; H 3.3.3.3.3.3.5.3 $.$.3.n N f %.s s Q e _.$ $ = < %.e 7.A 6.S [ 3 o q a.o e e Q ",
+"m m m ,.,.b {.[.) _.) ) ) i._._.y y y ) y (.y (.. . , $ (.x . ) ) ' ' ' [.x [.) b J y . ) } <.<.<.d Q . . . $ ; @ ; $ @ & ) e Q 7.c O | | 1 S : : < [ [ [ < _ _ S | S [ Y > > @. .3.5.$.3.3.$.$.$.$.- @.e R u }.[ ! e e ' % > }._ @ 7.; 4.4.}.:.; e./.| e Q {.",
+"_.m m m ,.m {.{.) ) ) ) ) ) ) ) y _.y (.y (.(.y ) (.' @ # ' ' @ ' ' ) ) @ Q ) . ' (.y (.b : <.<.<.o e _.' # = ; @ + v = D x e Q e J O | | 1 S : < < [ [ [ [ _ _ S 1 1 _ X > > @.3.3.3.5.3.3.5.5.$.> H N 7.>.).u T e e (.. @ n #.U 7.@ @ A S C ~.A }.d.l e e e ",
+"J [.J m J b b b [._._.) ) ) (.y ) (.) y (.(.y (.) R :.F :.F 8 o P P o E P |.[.) a x (.) Q S /.<.<.o e _.+ = = % # v $ D  .. 7.e 7.c O | Y 1 S : < < [ [ [ < _ _ S Y _ : Y W > @. .> 3.5.3.3.$.$.$.3. .H J 0 }.!.C . |.W z J R L Y Q J E A C j.*.F U /.7 _.e e ",
+"J _.J J J J b {.J J _._.) ) ) ) ) y ) ) y (.(.(.+ ` ^ ] ^ ( : 2 ^ Y Y ` 4.@ [.b (.) ) ) |.: <.<.<.d Q ' ~ * % @ # % W i D # {.e 7.c O | | 1 S _ : < [ [ } < _ _ 1 | _ : 2 > > @. .3.3. .3.3.$.$.H 3.3.@.7.1 !.[ O e e a J b Q O T 7.J ` 1.4.G x o c.t { b Q b ",
+"m m J J [.m {.,.{.b J ) ) _.) _.y ) y y y (.(.(.b v ) ) . ' # . . ' _.) ,.Q |._.J ) ) ) b _ <.<.<.d Q + ~ $ v v & ; > ; - & @ _.Q c =.| Y 1 _ < < [ < [ [ [ _ _ 1 Y _ _ Y > > 3.3.> 3.3.3.3.5.5.5.w  .(.y 2.u h e Q e 7.c y { 7.i y Q * i _.A ~ > _ ;.| e c e ",
+"m [._._.[.J J b b ,.{.J ) _.) ) y ) (.(.) y y (.. ' J x v ) + # v @ y _.Q m e 7.J ) [.J |.: <.<.<.d ,.. . . . # = & , & - ; z N J y C Y X | S : : < [ [ < < _ _ 1 Y _ _ 2 > > 3.3.> 3.3.w 3.5.$.5.5.> ' ,.! @ K f e Q K 7.1 Y k Q Q v $ 7.` ] ^ j { u z c s 0 ",
+"m m m J J _.J J {.J J J J ) (.y ) y ) ) y (.(.(.) x v + . ' x (.% * ) Q m Q e |.b [._.b Q _ <.<.<.o Q ' ' . @ = * $ @ % ; W W > @ N | 1 | 1 _ [ : < < [ [ : _ _ 1 | S _ X W > @.3.w 3. .3.3. .3 3. .o P ' j ; Q J e Q K Q ; L ; J @ J 7.N _ }.|. .0 L [ { R y ",
+"b m m [.m _.[._.[.[.J {.J ) x a ) y y (.) (.(.(.) ) ) J x v ' . (.% . ) $.J 7.e e b [.[.b < <.<.<.n ,.) ' ~ % * v % $ # - W ! > h k M [ | 1 S : : < < < [ : _ _ 1 Y _ : 2 ; > 3.D > w 3.3.3. .3 n E N e f }.| v e b e b b { [ ; Q J ' N 7.P $.. ~ C t ).).h e ",
+"m m [.J J m [.[.J ) _.|._.= = v _._.) ) y y ) ) ) | / : ( b./ = H ] u #.` _.e e e e b m Q : <.<.<.f e ) . ~ $ @ $ @ # & = = = =  .g _ _ M _ S [ : < [ [ [ < _ _ S | S : Y D > 3.5.= D > D > 3.7 g h v c ! M u Q b e e j >.j T z b J v a e N l v N { %.L ).>.e ",
+"m m m J J m [._.' {.,.' V # x (.) ) i.) ) y (.) @ 1.V ) . b z j.` R @ J b e ,.e e e e |.e : <.<.<.d e ' v # # + @ @ $ # ~ - D $.@. .1 [ [ 2.S 1 : : [ [ < : _ S S Y 1 : ^ > > i - 5.>  .D ;  .D c Y M e h =.n v e b e h O S T ; Q ' J b Q K f i c O <.%.t N r ",
+"_.J m m J _.[._.) b J @ & ' J J ) y ) y y (.y (.) j ) ) $ ' . ^ # . {.b ) e Q e Q Q e e Q _ <.<.<.d Q ' . + @ @ + % % @ $ = D 3.D > 1 r [ M [ : : < [ [ } < 2._ 1 | ( : X D W D D ; i > D * @ ,.{ y Q $ k 2.O e b e e 7.7.> Y E c z N h h @ z N c | %./.s Y ; ",
+"J m m m [._.[.[.|.' ~ $ x ) _.y ) _.) ) ) (.y (.x ] ^ ^ g.^ 2 ^ ] Y / C l K e e e Q Q Q Q : <.<.<.o ,.. . . . @ # @ # % ; > ! = * 3.: B _ 1 S 2._ : < < [ : _ S S Y 1 : X > > D w 3.i 3.I Q D @ ; R Q Q =.1 0 b e e c y b 7.].7 g I $.d ].v k N a M <.t ).$ T ",
+"b m m _.m m m b {.@ & . J J ) ) _.) _.y y ) (.) b + J . . + ) {.' ) {.J c e e e e Q b J Q _ <.<.<.o Q y ' v v @ V . . , W W ; * V  .< _ 1 | 1 S : : : < : : 2._ 1 | ( : ^ W > D D - i & = # . K T v b Q j u 7 J Q 7.7.N z J % A n h f d @ @ 8 @ $.S }.#.^.Z 8 ",
+"b m _._.m b {.[.$ # x ) J _._._.y y ) ) y ) (.) ' ) {.v ' ) x @ _.) _.Q b e b Q e m _.) Q _ <.<.<.o |.' ' . + # @ @ % ; > , N * > o : Y Y 1 1 S _ M < < < : _ S 1 Y S _ Y W > D = 5.7.$ > $.N J i j Q { S $.+ @ j z 7.K b _.k A d W $.k K $ 0 ! o r '.T u R ].",
+"m J _.m b m ) ' % (.b [.(.) ) _.) ) ) y ) (.y y ) (.v ' J x + |.J _.) ,.Q e Q e ,.J ) _.,._ <.<.<.o Q y ' v v v + * W > - $ , = o o / ^ Y Y 1 S S _ : < : : _ S 1 | 1 : 2 W W D 3.= |.> G D Q c } b &.#.I $ ' ! h h b J K v D =.0.i o f @ N >.; *.&.^.U /.L &.",
+"J m _.J {.{.' # ' J b J y _.) (.) ) ) (.y (.(.) x 3 n H :.n 3 n 8 o n $.$ Q Q e _._.J b Q _ <.<.<.I Q ' . + + v # ; W & @ $ > $.; $ 4./ | X 1 S _ _ 2.< : 2._ S 1 Y 1 : ^ W W D w v v / a.! e e j { P X $.- I ! o N 7.y b a f O j ].i i v v j @ j u '.^.).;.%.",
+"J {.,.b _.+ + ' ) _.J ) J ) ) ) ) ) ) ) ) ) _.i.v H P P G R d o o d n P s e ,.[.[.{.J [.Q _ <.<.<.o Q ) . + v # w @ , % . > P & 7._.G < _ ^ 1 1 S S _ : [ : S S | 1 1 ( 2 - w w > > J > j a e c l y K D o g ! h k i Q z $ K o =.I > i f c N j $ n s '.%.d.^.s ",
+"J b |.) x a ' ) J _.J ) _._.) ) ) _._.) ) ) ) i.b $ ' b J b J ) {.' ,.e X m ) b J J _.) Q : <.<.<.d e _.' @ $ $ @ x v = D , . Q v x  .] : < < ( _ S _ _ 2.[ 2.S 1 1 ( : ^ - W w W # m Q e c e e =.0 ].0 j ! ! @ f ; b y c a h =.n i i d N N O z =.!.}.L t }.T ",
+"b |.J ' a x J J ) [._._._.) _._._.) ) ) ) (.) ) x H P o o o d d F I n 4.'.@ |.) _.J [.[.Q _ <.<./.o ,.' ' ' # = & $ @ % i . e Q ; - W H 9 4.g.C | : } [ [ 2.S | / 2 / : ^ w - ; w - . e z ~ e $ } [ =.P f $ k i f $.e @ K Q n { o ! i $.{.k *.z 0 U &.s ).}.u ",
+"b J (.. (._.{.J _.[.[.) ) ) ) ) ) ) ) ) ) (.) ) x 3 o o n H o o 3 n j D W b ) Q [.J _.) Q : <.<.<.f e m @ + + . $ % W = , [.7.,.; H o 3  .W W H F { / _ [ [ [ [ S / _ : g.W - ; W 3 I e j ).K Q [ u 0 j @ N h h f a y y c N ! Y f ].! ; @ @ Y z 0 T &.%.t !.#.",
+"b ) ' y J {._._.[._._.) J ) ) _.J ) ) (.' ) ) ) ,.) {.|.J J m m ) b a x ) e m (.J J J ) Q _ <.<.;.0 K @ % ; W > = -  .i > ' ) , - 3 3  .H  . .o = ;  .P A { ] Y / 1 : | :.= - 3.; > |.e &.u c $ 2.f j z z ].$ ! i k e $ y e k *.I ].> k Q ! *.! j #.u #.;.%.&.",
+"y y ) b J [.) J [.[.J ) ) _.) ) _.) ) ) (.) ) _.b c b _.) _._.) J v x {.m [.|.b J J J ) Q : <.<.<.t t ;.t t t t d.d./.d.L ` . , $.H D ; 5.H o R H 3.= = > = = * H I n ..D = ! w ; I - _.m n e Q 2.{ z f $ N h ; h c y c Q @ N X $.h i i z y { $ O #.#.%.%.#.'.",
+"' (.J b J _.) J _._._._._.) ) ) _._.) y ) ) [.J b y c J J ,.) . ' , ' b J ) b [.[.m ) J |._ <.<./.<.<.<.<.<.<.<.<.<.<.<.<.| ) ! W ; W w 3.3 H -.F o 3.> ; ; % @ . {.(.# , - W - W = _.7.].k b N | >.k $ $ N ! z ].].Q @ c _.f Y n k f d $ ].j ].*.}.#.!.;.}.} ",
+") J J J ) J J ) J [.[.[.) ) _.) ) ) ) ) _.J J b y @ c J J c . . V ' _._.m b b b J J [.[.Q : <.<.<.<.<.<.<.<./.<.<.<.<.<.<.S . ; = = W D w  .o R o o 3 3.* = & $ . {.v = = = ; > ; % $ e o T b e &.{ N v $ ! z ].].v K ~ c a h 1 o i ! > z @ j N O }.#.!.L #.[ ",
+"J J J J J J J J ) _._._._._.) _.) y ) [.[.J m J J Y b c _.' 1 j i.a y b J b ) J [.b y J Q S <.;.;././.;.<.;.;./.<.;.d.<./.l ) @ = = W k 3 H -.o R +.R 3 w = , # ' ) . & = ! > ; W % ,.Q O M y z X 8 K K $ ; ; z $.z b @ J K i C l i h h N N $.z j u s !.t %.'.",
+"b J J J J _.J J J [.[.[.[._.) _.) ) ) J m m J J Q X c b _.N ^ j _.i.y _.) 7.|.J b ' m ) |.~ ; h > z ! ; a y @ $ % $ ! $ . |.. . , = W D 5.3 -...R F F o  .> , V ) ) @ & = - w ; = $ y ,.7 %.Q e r 0 N $ ].N @ z y b J a y K $.| l h h i ].z i N j &.u #.L L !.",
+"J {.J J J J _.J J _._._._.) ) ) ) ) {.b {.J [.J . &.Y ^ / / c.[ ^ ^ ^ ^ 4 @ b ,.b y |.) ) J |.J b e {.~ ! f k K b e e e Q ' @ + , - ! D i 3 H o R P F F R 3 ; @ ) ) @ = = - > > D . 7.7.U M c z | 0 h @ N $.N b e e J N e v N O *.! ].i ! N ! $ n &.#.%./.%.u ",
+"J b J J J J _._.J J ) ) ) _.) ) [.[.{.m b ,.{.{.Q 8 o G G R j R P P P R I ) b m [.b J b _.~ x J ' =.%./.<.<.<./.s l . _.@ @ {.! z ; W 3.5.3 H o R P P F F ..i = ' _.. & = - > > & 8 E 7.| %.7.N }.8 J e b $ % $ Q e $ K c c N 0 { ! z h z a N N l r T !.;.%.u ",
+"J J J J J J J [.J _.J ) ) ) ) _.m m m {.b ,.,.,._.% V V x J _.' K a y m (.|.m [.m |.y m ) ' . H ^.;.<.<.<.<.<.<.<.<.}.o b = W $ , - D D 5.3 o o ....0.+.6 F o 3.@ ' ' # = > > = D @ 7._.C @ J j r ! ,.e Q z N J e e K N e @ K 0 { ].].i ! y @ N 8 } u %.;.).T ",
+"J {.J J J J J J J _._.) ) J _.[.b b b ,.b ,.,.J v # $ v i.) (.a _.a y b m b b e [.{.J _., _.H L <.<.<.<.<././.<./.;.<.L j ,.$ W - - W D i  .o o P P ..R F F 0.H ; # x $ = w > = = @.d 7.v N e $ #.z e e e v $ a e e z K b b ' j { ].].k i a a N l } u !.t %.T ",
+"J J J J J J J _.J [.) J J J b b Q b J J ,.{.) (.$ v J J (.' y _.y ' y b ) b ) m m y J x @ y _ <.d.<.<./.).U %.;.<./.<.<.'.$ @ ; - ; W D i 3 H ......P P 0.F 0.R E ; * & * ; ! = & * 7.' > b 7.8 S a b e Q N y e e Q v z e K y *.X h ].$.i @ @ N n M u !.;.).T ",
+"J {.{.J J J J J J [.) ) ) J b b ,.b b ,.,.J ' $ @ v _._.x ) ) a ' (._.b [.Q {.J |.y @ , y 5././.<./._ z {.e b > q <.<.<.;.d . $ ; W W D i 5.H o ..P +.0.0.F 0.R n @.; = & = > = = ,.,.Q ].f y v }.v e e v K e y e e c K e J _.o M I ].i i $ $ z *.r T L ;.L T ",
+"J {.J J J J J J [.J ) _.{.b ,.,.7.J J Q J V = $ i._._.K _.i.y ' y ' ' ) J J b b ' @ $ a e X <.<.<.e.J e Q |.[.Q Q C <.<.<.{ {.~ - ; W D i H o o ....R 0.0.0.0.R o o d 3 3.; ; ; = = 7.@.T K 7.o =.@ e b K K Q y N b K d @ e y d Y d z ! i z a K C u X X #.u &.",
+"J m {.J J J J J [.J [.[.b b |.b J ,.Q [.@ $ @ i._.i._.i.K _.(.) (.' ) _.b b J _.@ V v y e Y <.<.<.O e e [.x . ' |.o d.<./.C {.@ , ].W D 5.3 H H o ..0.P 8 P n o E R n n 3 > - = *  .' @ o 8 7.! }.7.Q @ v v z h D K $ l h J c i 1 n ].! i z N N { u u Z &.M 1 ",
+"{.J J J J J J J [.J m ,.b ,.b |.[.|.J @ = $ i.J i.K i.i.' _.' (.) ) y J ,.b _.' , x ) ,.Q 1 <./.<.I e [.x # . . _.~ %.<./.S |.. $ W D D 5. . .R ....P F 8 n n R H o F j 8 H > * W E _.@ / - Q R >.K Q ; ].].N $ k y y j D b b z | *.! ! ! N @ $ 1 2.} s %.^.}.",
+"b J J J J J J [.b b b ,.,.,.|.|.|._.V * V ' _.i._.J i._.' J y x y ' (.J b _.@ , V ) Q e e S <./.<.k Q ' x a ' . @ K }.<.<.M b ' $ W W D  .5.3 R ....R 8 8 8 8 R o d R j 9 F 3 ; N ,.= b { O 7.].u b y y $ $ N ; h y y *.g . Q $ { l z ].h N $ N 0 2.} T }.%.!.",
+"J b J _.J _.J m b b b Q ,.|.|.Q J @ N V (.J ) i._._.a ' ' ' m y x a i.J _.v V x J Q Q e e 1 <././.d |.' ' ' v @ ~ ~ #.<.<.} |.a $ = W W 3 H 3 o o R P P 8 P n o n o H 8 9 *.P H V ; ' # P J J $.X ; c ; v $ ].! j N y j d K Q @ =.{ h ! h z $ z 1 u T %.!.r } ",
+"J J J _.J {.J m Q b b |.Q ,.{.J # , @ ) b _.i.J J @ b b _.a ) (.(.) i.i.~ , V ) Q e e e e 1 <.<./.n Q [.. . # + . N s <.<.[ b K ~ z i i  .H o o o R 8 F 8 P 8 o H o R n :.9 G G E * ; ,.n i e R T b K v ; z ! ; h y Q 8 l ].b ' { O ! ].h ].z i 2.#.T u r T u ",
+"b b J J J m b Q b b b Q ,.|.) v = @ ) J ) ) ) _.y *.a ' ' a y a _.i.a * = V [.Q e e e e e | <./.<.g |.[.+ . v . . ~ T <./.} Q a $ ; i i ; i ..o ....P 8 8 n R P H o n F j :.~.9 ] H [.' ) J e j O ! y $ ; i z $ i K {.P *.D {.y 0 C z $ ; N @ z Y T T u u T | ",
+"b b J J J b b Q Q b b Q |.J v , , (.{.i.) J J v ) Z H R n o o ..-.R 7 4 H . 7.e 7.e e e e 1 <./.<.k Q _.+ v ' @ ~ @ s <./.e.Q a $ - ! $ ) , H o o ..P 8 8 8 R R H o 8 j ~.9 :.j 9 @ = 7.> y e *.[ e b N v $ ! z $ c c l { $.J c l O N z ! z @ z Y #.#.u #.!.0 ",
+"J J J b ,.m b Q Q m m 7.{.$ = V J _._._.) _.) ) (.[ R ....0.H +.R G 5 9 o |.e e e e e Q e 1 <.<.<.d Q (.x . + + + . j.<.<.[ Q K N W ~ {.m ) , o P n 8 F F P R R o o n j :.G 9 9 ] D _.. . J 7.0 =.y J v $ @ z ! ; Q y =.Y n ) Q n C f ! ! z K ; | s !.T }.2.$ ",
+"b [.[.,.e Q Q Q J Q Q b a , $ K _._._.) ) i.) _._.4.' m a a b y * 3.* b ,.Q Q e e Q 7.7.7.} <./.<.d e ) . v + @ @ v s <.<.} b a N N c Q b _.x = o R R o ..F 8 o o H o P :.9 :.G E (. .c N c b { M J 7.$ v $ i ! $.a J O j 0 N c n | n ! ! z @ z O }.s } T *.c ",
+"b b ,.Q Q e b ,.Q |._.V , $ K J _.J J _.) ) ) ) ) a b @ J J , ~ ! > x ,.e b e e 7.e 7.[.) [ <.<.<.d Q ) ' + v + ~ + s <.<.} b K y c Q e J ) (.. W o F P o 0.+.o H o R j :.9 9 G ` H _.' ) J e { Y ; c J $ @ $ h f b % n C 0 $.{.i O h N N $ @ N [ #.}.!.u i h ",
+") b Q Q m Q Q {.7._.& > , i._._._.) ) _.) y ) y ) J y y i.i., 3.! a |.,.e e e e 7.|.y $ ) _ ;.<.<.d Q (.' + + + @ @ #.<.<.} b y Q e e ,.m ) ' . x W R 6 0.o R R o o R j :.9 ~.:. .Q = Q C N b >.2.J e v v v j [ Y h b *.k C $ |.i 0 z @ N K @ z 0 #.}.#.r e u ",
+") _.J |.7.|.|.Q b $ w , i.J J _._._.J ) ) ) ) ) ) x v Q (.- w w v J |.,.e b Q e e ' , x Q S <.<.<.d Q ) x v v @ v @ s <.<.[ e Q e e b b J c ' x (.@ W R F 0.o 0.H o o 8 :.~.9 9 p > ) ! b.q 7.o { J e v k O S 1 %.y J b {.> o e ! 0 ! $ z v $ ! *.'.Z #.k y r ",
+",.x . b e Q b Q , - , i.b J ) J _.) _.) _.) ) ) ) J J ' - ! > _._.,.J e b e Q ,.' . x J 7.: <./.<.f 7.) ' v v @ . @ #.<.<.M e e e e Q Q J ) ' x # ' x W 0.F ....H o n P G 9 :.G d @ v @ L 0 e k | >.C X | X 1 u S h e J Q 0 @ b z =.o N z z ; ! 0 }./.%.u u <.",
+"b y V ' b Q b i.- $ i.b J ) ) J _._.) _.) ) ) ) _.( 2 | h.w O [ 2 ] Y ` 1 Q e Q $ (.,.b b _ <.<.<.d Q ) x v + + @ + #.<.<.[ e e e e e Q J ) . + $ v a $ w ..F R o o n F :.G 9 ~.*.@ ) E ^.r e r L Z &.Z } %.t }.M v K Q b l n {.i Y *.! i h h ].0 &.;.| >.}.T ",
+"J b ' & @ |.J = , i.J _.i.J J (._._.) ) ) ) ) y _.h.* w w a g.H ,.|.J _.X e m # ) ) J b Q : <./.<.d Q ) ' + v + @ ~ #.<.<.[ e e e b b b c ) . $ . & = a $ i R R o o n P :.9 G G p ; . $ } j 7.Z %.M M Z T Z { h g a e Q K 0 @ ) ! { n z $.k z $ O L u v $.).[ ",
+"J b b b a 3.D V J J J J J _.) _.) _.J J [._.y _.J } k w ' Q / I b (.|.|.^ v = [.J J [._.Q _ <.<.<.o Q ) (.. + @ $ . j.<.<.M e e e e Q ,.[.' + # , , , , @ x - 0.d E o j :.:.:.:.F . ; @ >.k b '.).1 Z } f >.X e e b . e . n h K N C *.z ! ; $ h 2.).u Q T ^.h ",
+"_.i.J y ' V > (.b b J ) i._.J _.) _.{.) (._._.i.> [ b.j.j.c.r y y p 2 p < # ) J J [._.) Q : <.<./.H Q ) ' . + ~ . ' s <.<.: e e e e Q ,._.' V # $ & & = , . + ; I P n o 9 *.:.*.9 d y N >.! b >.Z 2.Z 0 i [ %.! Q b J e c i $ b $ O *.h $.h $ ].M ;.{ n t S e ",
+"J @ , , b Q V , ) {.b _.) ) J J (.{.[.' y J y ~ > ! * J ) J b b b |.b . ; J |.b [.m [._.Q _ <.<.<.d Q ' ' . @ ~ _.,.T /.<.M e e e Q Q ,._.x @ & & * = = = + (.) z d P 8 :.9 :.9 G n . ! 8 f y >.Z 2.O ; N 2.}.].e e J Q {.@ z z ; 0 j z ; ; $ ! } Z Q ; %.8 h ",
+"y ' W @ J _.,.V v ) ,.b _.) ) J J _.) ) J _.~ w ! a b 7._._.b ) ' |.. ; ) ) J _.J J [.[.Q : <.<.<.H e ) ' + . . Q Q './.<.M e e e e Q ,.) . # N = = * * = $ x ) [.$ o *.:.F 9 ~.:.; y $.r N v { ; h N 7.v S r @ J e y h o 8 n f N >.8 ! ! ].z i | l e l j {.{ ",
+"_.' * y y a 7._.V v (.{.b ) (._._.) _.J y $ ! w ' Q [.) ,.Q y Q 7.@ , ' Q J Q b [.{.[.) Q _ <.<.<.d e ) . . ) m e e '.<.<.[ e e e e Q m ) @ # & * = - = * % # x ,.J W j ~.:.~.:.P @.* ; !.}.j $.C j R $ N j R N z b y 8 0 l j k @ j R z z N h R X N K 1 ! c 0 ",
+"$ D a y ' J J J ) ' v x _.b _._._._.J i.* 3.- x Q [.Q b b _.J _.% # x |.) b [.) _.J [.[.Q : <.<.<.H Q ' + ' |.e e Q T <.<.M e e e e Q J ) @ $ * N * = - * $ + ' _.m (.D :.9 :.*.G D 7.R %.C $.| f b z ! ; N N g f J y R j 8 8 $.K l l h ! N ! o { N M &.K i s ",
+"$.; b J (.i.(.b J _.x V x J b ) _.J i., D - v b J q | =.=.X O / _ ] / ` 2 {.J [.J {.[.[.Q _ <.<.<.f Q ' c m e e e e T <.<.M e e e Q |.J ) @ # & = $ = ; = $ @ (.) J {.v  .F 9 9 H > N _.}.2.N k k y ! ! z i k n f e c R >.j o ; ! O 0 i h h i j i e f =.k u }.",
+"= J |.J J y ) ) _.,.b V v _.b _._._.$ k w ' |.b Q C Q J {.,.V D + ' ) ) ^ b b ) J {._.[.Q : <.<.<.d Q m Q e e Q e e '.<.<.2.e e e Q ,._.) @ # & ; & * ; = & $ . {.J ' ' ' 5.*.:.p n J N S Z b C $ b ; i N N ; ! d c ! { { 0 j o K >.>.h k h ! f y b ].y j T [ ",
+"J ,.,.J _.J J _.J b v = $ J b (.|.' w D ' Q b m J &.g k j % ; v ) ) . ; Z ,.[.{.[.J J [.Q _ <./.<.I Q e e e e e e e T <./.r e e e Q ,.J ' @ % * = = = = = % @ + ) m ) $ $ v D *.*.= z b | %.f k =.y z ! ! z ! f z 7.$ l h >.f ! ! l j h ! ! z h K > ; i T T X ",
+"|.J b J (.(.J _.b x , @ ) i.) b ' 3.D (.b b b b J g 0 =.2 ^ ^ C ^ ^ { C 8 ,.|.J [.{.J [.Q : <.<.<.g Q e e e e e e Q T <./.M e e e e ,.J ) @ # * * = = = = & @ + ) _.y # $ V * i P D J 7.; [ { 1 f b a v z z $ ; h e $ R 1 Z { k $ l 8 ! ; ! i ! v O j | s T Y ",
+"J Q ) . i.) ) ,.= $ v i.b b ' a D D a |.|.J b b b b J . ' @ ' b |.' x J Q J b {.J J [.[.Q _ <.<./.o e e e e Q e e Q './.<.M e e e Q ,.J ' . $ * = = = - = % @ . _._.x @ = & $ V 8 G = ; 0 i ; C { b v ! ].N i $.@ y h { j %.C ; N >.o ; ; ! h K e K j | T } C ",
+"J b (.@ _.Q b (.3.V J J J J V 3.W (.Q b |.{.[.,.b J ) N (.,.J $ ' ) ) J ) [.|.) J J [.[.Q : <.<./.$.e Q e e 7.e e e T <.<.M Q e e e ,.J ' . # * * = = = = N @ . _._.' @ - ; , @ ) D c >.!.k b 2.h a $ a ].! ; ; k e >.>.{ O l h N 8 k $ N h i a Q N =.[ T [ } ",
+",.$ v b {.,._.5.(._.J _.@ , - ! y _.y b 7.,._.,.J J ~ ) 7.$ (.{.' ' Q ' 7._.) Q [.J [.) Q _ <.<.<.$.e b e e e e |.e }.<.<.M e e e Q ,.J ) @ % * = = = = = , ~ v ) ) x $ = - = = @. .k 8 L R b f 8 _.N k N @ ! i v 7.z O | %.j ; v k f ; $ ; h i ! o | T &.u M ",
+"# V ' ,.,.@ ; - Q J _.y , , a y _.@ ' b |.b ,.J ,.z _.{.) _._.. ) + (.b (.7.(.{.{.{.[.[.e _ <.<./.I e Q e e e e e e ^.<.<.1 e e e e ,._.' @ # * * * = = z , @ . _._.. & = = = D P # 7.| /.Z 7.o ! z ! ; z N $ z N b j ! 2.%.2.z v k $.N @ z ; k i ; X [ r u S ",
+"= J {.) ) ; D ,._.J J ' a y m y a a _.J ) b Q J % d.a.}.#.'.}.T '.c.U '.b.x Q ) b b [.[.e S <.<./.0 e e e e e e e z )./.<.X e Q e Q ,.J ) . % & = = = = = % ~ v ) ) ' % = ; i o j > J ; L ).; i f K v ; v y ; k h Q h >.>.Y $.; K f i $ $ z ].; @ n C Y u 2.M ",
+"{.J ,.(.> = ) J {._.J b J _.y , y y _.(.b b _.J {.G 1 c.u { ].y + ' _.) _.Q {.[.{.b [.[.e S <./.<.M b ,.J e e e Q >.<.<.<.0 e e e e ,.J ' . # * = = = = = % @ . _.) ' @ - 5.8 4 G - ,.7.M %.R l f z z h ! z h f ; y ! ! Z ).M $.b R f v @ $ ! z k 0 C } u &.S ",
+"J b $ > v ,.b [.J ) J b y $ ~ y _._._.) ' [.,.J b K J _.> { e.u 1 P ) J + 7.J _.|._.) |.b  .<.<.<.;.0 J J e e e C <.<.<.<.$.e e e Q ,.[.) @ % N * * * ; = # . . _.[.[.% H *.*.G A = 7.N 1 O $ }.0 c h $.! z h $ Q K v Q { u t Z @ $.h $ @ h h k k ! 0 &.u 2.2.",
+",._.V x J b _.) J J b b ' @ ' _.|.i.' y ) b ,.) c b c K _.J ) (.k ` } r ` @ m Q (.|.J ' ,.+ }.<.;.<.;.}.[ / [ #.<./.;.<.%.v e e e e ,._.(.+ $ * * = * * * N # . y ,..  .j G 9 G P @ K 2.t 2.; &.y c j ; b y N 7.Q e N c r Y o j c f ! @ $ ! i ! ].$.} %.%.&.Z ",
+"a - V |.|.y ) b J y b _.$ y Q y J ' a ' ) {.J ) _._.. m {.. y c $ 7 [ '.` ,.7.x ,._.J b b e 7 <.<.;.<.<.<.<./.<././.<.t 0 e Q e e Q |.J ) . % * % * = * * * @ . _.{.= G 9 :.G G ` $.b =.t Z @ #.j J K Q Q y $ Q e c b h #.L T z y h ].J N o z $ $ k X %.^.Z s ",
+"@ - , m |._.(.J J |.' = a J J b ' V a ) (.' ) ) . ) J _.a $.2 #.: 0 @ e _._.+ m |.(.) {.+ J ,.{ <./.<./.;.<.<.<.<.<.a.{ e e J e e e |._.' v $ & * * = = * * @ ' J @  .G j :.9 9 d y 2.^.s j R %.! 7.K K c 7.J e e Q z Q 0 [ %.=.J f ~ K N $ i ! i 0 u }.%.S #.",
+"m ) @ $ y |.b _.|.a $ a ' b b x @ + y J y . x (.) ; A u c.=.f c _.' {.Q b e c ) x Q ) b |.. e b n [ ^.t <./.d.a.#._ k Q e Q e Q e Q ,.m ) @ $ * & = * ; = @ @ . # D n j j G 9 G A > f }.L U y [ k c K b b y @ c Q e 7.O t [ f N v i ! a N N v i o 1 } !.#.Z '.",
+"Q e ) = , _.b b @ - a Q J ) a W y ) J b ) (.(.x (.d.d./ 1 2 O X X =.C Y 7 ) Q J x b ' J Q ' ' c 7.y ) _.% - , . J {.e e Q b e Q e Q ,.[.' @ $ * = = = ; * N * = E g n F 9 *.G G P Q R [ !.0 j O b 7.@ y Q e Q Q e e $ $ T %.u h N f ' $ h K ].; ; O &.#.%.| #.",
+"J Q Q ' , $ ' y w _.' i.e $ H @ b J J J _.J _.' ' V J (.' _.. ' c K J e e e Q Q [.x (.[.) b c J J Q b J e Q Q e m ) _.m b e Q Q Q e |.J ) @ $ & & ; * ; * = > E P o o j 9 G G G # J 0 !.U #.y &.z @ $ b e Q J e e J c j | O | Q @ ! $ . N K z i e C u %.}.[ }.",
+"Q J Q Q x $ $ - y _.b b $ D @ Q [._.) ) (.J b y a a x (.' ' ) _.c K c Q Q e e e b ) ' ) {., [ s *.) _.' |.) ) ' ' |. .u '.% e e Q Q |.[.) @ $ & $ = ; * * > o j H E n F 8 :.A j 9 J ; T }.8 h 0 $ Q ,.b J Q b J Q e k [ %.n J 7.! d @ ) a {.z N i O =.| M =.}.",
+"{.Q ,.,.Q x w $ b _.b y = v b y ) J {.) ) J J J i.$ $ x (.. ' _.' y c J e e e e e |.x . J ( /.<.d.k Q a y ' . ' ' + './.;._ e e e Q |.{.. x @ = = = & $ > o P o o o o 8 G 9 G G { $ j 0 8 n # t z Q ; $.y J a a K e k &.[ $ J _.! N K ; a K k ! o [ 1 X 0 j X ",
+"b |.,.|.e [.$ _.m b y $ @ (.) b ) J ) J b _.' i.J i.V V (.' ' ' ) y J Q e e e Q e Q _.) J _ <.<.;.f Q . ) ' . . . ~ j.<.<.[ e b e Q b ) ' V % = = & ; ; E 8 n o E o n 8 G 9 9 G o ' 0 %.L X =.j @ e $ ! m J $ ! ) b h s 0 @ e c ].$ y N @ z h b o X { | u Z | ",
+"{.b ,.Q Q Q b Q y , , ' y _.b _._.J J ) ' $ = = i.J y v @ v a ) . ' c Q e e e e e e Q |.m : <.<.<.d ,.' ' . v v @ + j.<.<.} m y b 7.Q _.) @ = & $ = 3.o 8 8 n o o o g P :.~.G G ] N z T ).=.Q }.a e $ ].y y $ ].y 7.l '.| K Q Q h ].' c Q @ ; b k Y C 2.r r 2.",
+"{.{.b b b |.|.|.' 3.- _._.J b y _.) b y , @ i., $ _.J _.' @ v J ) ) _.e e e e e e e e e Q 2.<.<.<.d 7.) ' v + @ @ @ j.<.<.B m ' @ {.Q _.' v $ & = 3.o 8 F n o o o o n P G 9 G G  .$ | u u z =.Y N b K v J J y $ K e R } f Q e K N z % @ J @ N e j 2.| 2.1 Y =.",
+",.,.b b J b |.b |.(., * y _.K J _._.' V $ ) b J = $ ' _._.$ , a ' x ) |.e Q Q e e e e e e S <.<.<.d 7.) ' a + @ v @ c.<.<.} b ' ; % ) {.(.v $ = 3.o :.F n P 8 n H H n j :.9 9 G { @ E !.;.| J }.J e a z K c Q b e Q 1 }.8 e e ) k N K c Q $ $ y O [ | 1 M | >.",
+"m ,.m b b {.|.{.Q Q ' = , _.J _.J _.= = ) _.a b v V x J J K $ $ a ' ) |.e e e Q e e Q e e 1 <.<./.d 7.) x v x @ @ @ j.<./.} ,.K N > * _._.x $ > R 8 F R o 8 R d o o o P G 9 G G E _.{ X =.; =.` c b $ z y b Q c b K Y q K e e ].h a y c J N @ K C r Y X X =.*.",
+"b |.m ,.|.m |.b Q m m ' - @ b i._.K $ ' |.J (.b J ' v @ K _.i.- & % V ' ,.e e e e e Q e e 1 <.<.<.d 7._.' . . @ @ @ }.<.<.} ,.. + W D # i.v ; 3...P R R 8 8 P o E o n j :.G 9 G D y 0 s %.1 a #.b Q N z c Q e b e b [ C $ e J K $ c y J b ; $ K >.1 { >.O O 0 ",
+"m |._.{.|.c J b b |.) a V ! - J ~ * ' b i.) J x ) ; o 0.3.i.v +.>.*.:.n - J e e e e Q e e 2.<./.<.o Q ) ' x . @ + + j.<./.} ,.. , z i  .= ,  .R -.o R P F R R R H o o P :.9 G G E b ; &.#.0 l k c Q $ N c b J K Q z [ | e Q Q ~ $ c ) b J i N y =.[ C 0 0 0 0 ",
+",.,.b ,.b b b b c J J J y K * -.v ' J J _.x x [.[.e.d o 3 _.| g.5 :.F F c.~ c e e e e e e | <.<.<.i y . J @ x a v @ j.<.<.} Q . # W W D o R H o o R ..R R n R o o E n G G G 9 j ' _.7 1 &.>.h }.e K N J Q e e Q Q K T h Q e _.$ @ a v c b N $ k 1 | O =.| Y C ",
+",.,.,.b J J b b c Q [.) J @ > , J b J v a J J x . X + _.) J | 9.$ _.7.J ] x . b e e e e e 1 <.<.<.n e N % J v @ ' . #.<.;.[ m ' ~ ; ; > H o H o o R R R 8 n n o f g n n 8 A G @.@ 7.j !.L X ; f a . $ J Q e Q y Q { &.! e b b . ) ' a J b ; ; f | Y 0 O C O O ",
+"b b {.m b b J J b ) J Q y * ~ i._._.' $ @ ) J ) # '.` ] ^ ^ j.$.b 3 H :.q ; e {.Q Q e e e | <.<./.f e ) - , . . ~ . c.<.<.} |.' ~ ; ; W 5.H 3 ..o o R P R R o o H o n j 9 9 H # $.y ! C r f $.&.J K ! ' Q m a ) e D | _.e e ) $ K y y b b k $ $ C X 0 O | C 0 ",
+",.,.,.,.m b b m J @ ) J = , _.b ,.v $ x _.y i.J J  .j n 3 0.H _.y i 8 ~.8 (.(.[.|.Q e e e 1 <.<./.$.e e ' D ~ . ~ $ T <.<.} Q . ~ ; W ; i 3 E R o o o n n n n o g E o A G  .N @ ,.y =.L s ! n r k J J b Q e y $ b M j Q e Q a v c c y Q y 8 ; @ >.O 0 X 1 C { ",
+"b b ,.{.b m J b J ,.. = V y J b ) & w $ J b _.y J J = $ ) _.J ) b v $ x J V W J _.[.Q e e 1 <.<.<.o e Q e (.- , . ~ j././.} {.. $ - W D i 3 H o R R R R n R n n o d o j H # (.@ f Q N &.!.! $.[ @ J c Q Q J c e h '.> ,.Q Q $ y b c c e e k @ v 0 C Y Z S 0 O ",
+",.b ,.b b b J J b J ' $ ' Q J $ W % $ > = i.J _.b ' b $ , [.v Q (.& J 7.b i.K , a (.,.e e 1 <.<.<.D e Q e Q ) z z K T <./.[ {.) $ - D D i 3 H H o R R R 8 R o o E n E = V x . @ J K =.T X c { U e.n y e Q Q 7.b 0 0 K e Q e % y b c c Q v j N z l 0 | }.u j j ",
+",.b ,.b b J b b {.) {.b ) _.y W $ J ,.' - - K _.K J b ) $ V b ' @ J y a b Q J V , @ J 7.e 1 <.<.<.o e e Q |.e (.].].U <.<.} |.' $ - W D  .3 H o o o R P n n n R f E = ' (.v V v Q b >.}.}.N $.u &.&./ - m e c N M S Q Q Q J ' Q b b Q e ! 0 $ $ *.O | !.u h y ",
+",.b b {.b m J b J Q ,.[.[.& w @ Q b |.,.' w - i.b +.^ h.h.*.& ) (.' J ,.J _.b J - $ _.7.e 1 <.<.<.M m e Q e Q e ' 0 <./.;.r |.. , - W > i 3 H o o o o R R R o n 8 ; J _.V V ' x . _.{ 2.R e >.'.&.&.C N J e e K #.i e e e b _.b b J b e ; j K $ l X 1 s [ $ Q ",
+"|.b ,.,.b b b J [._.{.Q x - # |.J m ,.Q b a * > b ! R R ..W ; y ) J (._.Q v Q b _.- = b Q Y <./.<.<.1 ) e e e _.S <.<.;.<.2 Q . $ = D 3.i  .H H R n P 8 n R n n ; J _.' @ x (.W % b l X v e $ o 1 s S h Q Q Q 0 }.j J e Q ) c e b J e e $ o y h =.C =.u &.c e ",
+",.b ,.{.m m b b |.,.{.|.b ) m Q |.b ,.b ,._.v * = ,._.i.i._.(.' _.J y _.J 7.K J ,.v = D |.i t <.;.<.<.%.7 e D T <.;.<.<.t l e ' ~ , W D D  .H o H R o R 8 j H D _.7.) . x v & 8 * ,.b ) 7.K v Q Q K N e ,.,.y 1 O a Q Q e c m Q Q a J e h R e ; R 0 Y } u $.e ",
+"b b {.,.b b m m ,.J [.J b |.|.|.|.|.b m b |.J x - * v J J ) x (.(.. {.Q _.Q _.J _.b ' $ + _.d #.<./.;.<.<.f.t <.;.<./.t C m ) ~ , - W D 5. .H o R o R n j o ; ) [.,._._.v D :./ ' ) _.J y N ) m b c e b y e $.r l ,.Q J b K b Q b b b Q $ h e z j O 1 u u | { ",
+"b ,.,.b b ,.,.b [.J _._.J b b [.,.|.|.,.b ,.|.,.& , $ @ ' _.b (.J . ' v ,._.Q _._.,.J J > = 7.' 0 L <././.<.<./.<.;.[ N e a ' ' $ z ; W 3. .3 o +.o R 8 o = ) ,.{.Q {.) w A C C D N b y f j @ ,.J e ) ,.e ) j }.8 J e Q ,._.e e c e e J ].z J n >.8 R 0 f l [ ",
+"b b b b b m J {.,.m b b m m m b b ,.,.,.b m ,.|.|.H : b.Z Z h.^ j.c.[ p i.b _.b b J J Q m > > e b } /.<.<.<.<.<./.#.; e e c > , = ; W D 3. .H o o o n 8 3.. J ) {.7.J > G ^ ] A ] p . k Y [ Y k m c Q c 1 { } 0 @ Q e b J e e Q Q b e b o z e R d y . ! $ b e ",
+"b {.,.m b b b J ,.J _.,.,.m m ,.|.J _.b |.J J m ) _ 8 > * ' (.y _.b v g.q ) Q b {.) (.' [.m ; *.^./.<.<.<.<././.<.<.%.>.Q e z $.- ; W D 3.3 H o o 8 n @.# (.) ' J Q % :.g.=.4.A j p ' n Y C S g b ! Q % =.u | 0 Q Q e c y e e J Q Q e J d N b z J e e c O r j ",
+"{.b b b ,.m J b {.[.c _.m {._.J |.b m J b J J J m | y V 3 x y ' x $ b J ^ b ) ,._.b |.b ) ) 7 <.<.<.<.<.<.;.<.<././.<./.M 7.7.$ W W W W i 3 H o o R 5.$ x (.) J 7.) H =.g.4 *.9 0 n + n Y X P ,.k n z ! r Y S ~ Q Q Q b m e e e b e Q z k @ z v Q e b v @ y z ",
+",.b b m ,.b m m J b ,.m m J J _._.,.,.J J c J J _.] ^ ^ ^ [ C ^ C C ^ ` 2 J b _.[.b {.+ e H d./.<.<.t U { @ n T <././.<.<.o 7.Q D > D D i 3 H o o > v ) ' x (.{.(.D A 1.9 *.1.5 ; ' @ N O s j [.y K b *.S M X Q Q e J Q e e e Q e e b h f b y _.e y =.{ ].e Q ",
+"b ,.,.b m b b b m m m m m J J J J J J J _.J m b # @ y _._.@ 3.- a _.y b _.7.) |._.J [.[.Q _ <.<.<.;.n e b Q e e o }.<./.<.S Q e e .  . .>  .H H # v (.v v ) _.# o 4.9 8 9 j 9 { n ' @ ] 1 H $ > a ) P O j } f c Q Q |.b Q e e Q e Q e v N ) N e $ k { D e e e ",
+",.,.,.,.m b m m m m m _.[.J J _.c J c c _.b ) @ + ) J K i._., k ~ v _._.|.{.b ,.[.m [.[.Q : <.<./.O {.,.Q e b e e $.%.<.<.r c m e 7.z H E H H D . . x v x ) , H A P j j j O X O Y _ 8 r T D ~ $ @ ; 1 =.[ C a e Q Q |.Q Q e e e Q e e z y ~ z e Q b 1 | y e e ",
+"{.b b m b m b ,.m m m m m J [.J _.J _.c m J . , ' _.b J y _.y ~ > ! i.J b [.,.J [.J ) ) Q _ <.<.<. .e $ * {.7.e Q b #.<.<.r ) $ [.7._.D I E > @ ' . x ' ) , o A A n 8 P 7 A p O ( 1 : q p ' $ , - j l g 2.*.J |.e ,.|.|.Q Q Q Q ,.e ,.@ c y *.Q e > O } j e e ",
+"b b ,.b m m m m m m m J m J J J m c _.m _.+ ~ v {.y v x ' y J _.* 3.V Q @.Q |.[.[.{.[.) Q : <.<.<.$.e @  .; J x ~ ) #.<.<.} 7.$ ; ' 7._.; > @ (.. @ x ) @ o A *.F o n j A l P 0 S ` : l @ ~ % i n S j =./ ].b Q Q Q Q |.Q e e Q e e z h e ! j N b ! 0 2.{ . e ",
+",.,.,.b ,.b m b m m m m J [.J J [.) _.,.(.@ + [.. {.m _.) y ' (._.= w @ '.|.J |.J J [.[.Q _ <.<.<. .Q [.+ o  .= + @ j.<.<.} e . > = _.7.' % @ ' v (.' # 3.*.5 8 d 3 n 7 n P 1.0 Y Y | P . N D ' p 0 *.r X Q b e Q Q Q Q Q Q Q e Q m @ K J @ p J e e n r l Q e ",
+",.b ,.m m m m m m m m J m [._.J _.{.{.) ' ' ) ) m x ' ) ) x @ (.J x & N ^.e b ) J J [.[.Q : <.<.<.H Q b a H 3 = + @ j.<./.[ ) ' N ; ; + |._.# ' (.' = o 9 p F o H H o 7 n = P Y O C Y ` j =.e.X 0 I 0 2.i b ,.b b |.Q Q Q Q Q Q Q e Q b Q g k K h 0 0 2.X ' e ",
+"b b b ,.,.,.b m m m m m J J m J ) J [.) ) {.J ) ) { ^ 2 2 h.( ^ ( ^ / ^ %.* ) Q J J _.) Q _ <.<./.n 7.J , - V @ (.x s <.<.} ) ) @ ;  .@.V ) v (.x = o A A F o n H n H G G # @ O ` Y S 1 } } / _ 0 =.[ Y J ) e ,.b Q e e Q Q Q e e Q J Q ,.e _.e e I 7 l | j e ",
+",.b ,.m m m b m m m m J m _._.J ) _.J J J J ) ) ) F o o G H ..:.A F  .3 :.* a (.J J J [.Q 2.<.<./.o e # = x x v # & }.<.<.} [.~ @ z ; I  .$ ' v $ R 5 { G o H n o H n j G @.# @.Y 4./ S 7 o { Y 0 O S h K Q J e b |.Q e e Q Q e Q ,.a N a c e Q e Q @ N c Q b ",
+",.,.m ,.,.b b m m m m m m m m J J J c _._.) _.[._.. ) ) (.) a |.J ,.|.,.Q . - ' |.J ) J Q : <.<.<.H b @ v ' (.@ W D U <.<.} b , > ; ; = o R % ' R *.5 j R n 8 o H o F 9 { n . $ 0 { 7 j j ` 0 P 0 | 0 @ b b ,.,.Q Q Q Q |.Q Q Q e c . ].~ e Q Q e e $ i y c ].",
+",.,.b m {.m b ,.b b b m m m [.J _.J _._.J c _.) b ) ' ) ) ) _.(.[.) b Q e 7.+ ; a J J ) e _ <.<.<.o J (.(.a V $ & ; }.<.<.[ Q @ > > D >  .R H H F :.:.8 P o R R H n j G 2 Y P D j l j *.{ { j n 0 1 O N b ,.Q ,.b ,.|.Q Q Q Q e Q Q ) h ! J Q b e Q y z . _.$ ",
+"m ,.b ,.,.m b m m b b m m _.m [.J J J J c _.) [.' ) (.x _.(.y v ' . ,.Q ,.e e ) - ' _.[.e : <./.<.n |.[.) V = & x # j.<.<.B b ~ ; -  .D ; 3 o :.7 8 n P R R o n o 3 P 9 A G G C j 0 0 O O 7 f P 0 Y 7 $ ,.Q b J Q Q Q Q Q Q e Q Q e v f $.v Q e Q e e y ! ! a ",
+",.,.m m b m m b m m m m m m J J _.J _._._._._.) ,.b @ :.F D y ) + [.' o 7 ) e |.v * v |.7.: <.<.<.d 7.[.+ = = # . @ #.<.<.} Q . > ;  .E 3. .H F ~.P o R R R o o H P 9 d E 7 { 0 p 1.O 4.p j o G Y O $.y b Q Q Q b ,.|.Q Q Q Q e Q e _.J e e e Q Q e e e ,.@ @ ",
+"m ,.,.,.b m m m m m b m m J m [._._.J _._._.) _.) } ^ o P : S 0./ q '.2 $.b e e Q $ , x |._ <.<.<.I e v & % @ v + @ #.<.<.r [.~ D - W  .H H 5.R +.6 F P R n 8 o 8 :.1.` 1.` =.0 =.1.0 0 7 G 0 O X R a Q ,.m Q Q Q Q Q |.Q Q Q Q e b v _.e e e e e e ,.e e _.].",
+"{.,.b b b ,.m b b m m m m m m m [._.J _._._._.) (.7 m _.' |.; q W + _._.c e e Q e ,.@ = ) _ /.<.<.I Q $ , . x + . + s <.<.&.K z - N = 3 8 R 5.H n 6 :.+.R R P o o 9 / ^ 0 { =.O 2 { A l o  .j =.n N b Q J m b m b |.Q Q |.Q Q Q Q J y Q e e e Q e e e e Q e b ",
+",.,.b b b m b m m b b m m J m m [._.[.[._.[.[.J ) 1 n o o o P } R R P o d c e e e e b # v [ /.<./.g [.@ v . . + ~ @ s <.<.r c @ ~ =  .o 8 :.F -.o n :.:.F P R R F R ` q B 1.7 =.{ 0 G h @ J * d ! y Q c c b b Q Q Q |.|.Q Q Q e Q _.J e e e e Q e e e e e e e ",
+"m ,.b b b b b b m b ,.{.m m m m [.[._._._.) _._.|.j I P d P I l j F n I o K Q e Q Q e Q @ b.<././.n J ) ) . @ + . + #.<.<.} J . ~ = 3 3 w H :.o R H R :.:.o o P :.F 7 *.G 0 ^ _ ` O o y _.J ' % @ J b _.[.b _.m ,.Q Q Q Q Q Q Q e a ) e Q e e e b e e e e Q ,.",
+"Q b b b {.{.b ,.|.J @ @ {.|.) ) J J J _._.c c _._.. {.J J ' b |.' , ' J ) [.' ' 7.7.Q 7.|.C <.;.t z Q ' ' a x @ @ ~ [ <./.` Q . = ..F D D H H F R ..o R F 6 0.o H H o P 9 C A C | 0 z J b N  .j D & y ) ' |.|.(.|.m |.Q Q Q e Q {.' b e e e e e e e e e e e e ",
+"b ,.b J J J m ,.b & W v J {.[.m J J J c J c c _.) |.' ) J _.J b Q . @ b Q {.) (.J |.|.7.e a | u n Q Q ) . v v ~ ' x H } : - Q ' i H 8 3 w 3.H R 8 R P R 8 0.R o E o ..4 ] *.# . y J y $ 8 p S F > W = i W y m Q Q ,.,.|.Q Q e e b c Q e e e e e e e e e e e Q ",
+"m Q b J J b ,.J v D > K J ) [.{._.c c J _.) ) ) ) [.) b . . J + ) ) + ~ 7.|.{.V x b 7.|.,.e e b b Q ' x a a a ' , , ; x {.) (.D w =  .o  .5.3 o F F P P R R 0.0.6  .+.{ H v b ,.b J b >.=.C *.! x ; - i 5.5.3 y Q b b |.e e Q e b J e e Q e e e e e e e e e Q ",
+"J Q Q b b Q b (.D - x J y x ) [.[.J [._.J c c c b > $.j k E j E o f $.n z _.Q b $ v b 7.7.Q z i ! J ) ) (.@ v v v d W ' |.. D $ - $ D 8 8 8 8 P o R 8 8 0.P F j F H :.*., |.) _._.b J k 1 O W x m # @ $ W F A ..' b Q ,.e e b Q J Q e e Q e e e e e e e e e e ",
+",.,.,.,.Q b y % ; (.,.J ) (.x ) ) ) _._.[.J c c a u d o P j d o j f f P _ ) Q b _.a @ b 7.p t /.j.- . @ ' (.' $ D D . ~ , $ D = , = i ..8 o o o H o P P ....+.6 3 *.F W $ ) b {.,.Q b m p _ - _.(.(.. (.$ ; D p ; ) Q |.Q e Q b _.Q e Q Q e e e e e e e e e e ",
+"|.,.b m J . # = ) b J J ,.J . (.(.y ) [._.J c c 7.1 K y ) . ' _.,.. . e | b @ b {.J @ ' J | <.;.<.D . = $ a @ W = (.@ ; D ; + , , D D  . .i 5.o o R P P P 0.+.F G R ; J m b b ) _._.c J z 1 $ ) ) ) x ) , W v i i . Q |.b e Q b J e e e e e e e e e e e e e e ",
+",.,.,.b . # $ . |.J _._.J {.) ) x ' (.) _._._.c a u Y C X 9 $.j j f R 0 '.c b @ J 7.) (.) _ <./.<.D b @ , $ a @ ' , , D - @ W $ D  .i D i @.o o o R R P +.P F 6 :.x b J x x ) [.J 7.) Q . D N . ' . . ) i p i v D $ J Q ,.Q Q b Q e Q e e e e e e e e e e e e ",
+"m ,.,.,.+ $ x Q J ) b J (.[.{.(.V v a (.(.) ) y J z o o g o o o R R $.o c e ,.) ) ,.J J ) : <.<.<.d e J - ! , y @ $ D W $ - , =  .i ; W 5. .o 3 o o R R +.6 ~.~.) [.# x = $ [.) b ' Q . m @ ) c ' . ) (. .A I ) ; , ' Q ,.Q Q b e e Q e e e e e e e e e e e e ",
+",.,.[.v . (.J b J J J J [.J [.) _.@ V ' ) ' c ,.m @ Q . . ' ' _._.K b b Q e e e $ . _.b Q : <.<.<.I Q _., 3 w ' = W - v $ , W i W - ; i i @.3 P R R P R -.4 6 @ ) @ $ , - ; = ; % b [.b ) (.' . ) @ ' J I p ; $ + . m ,.Q Q e e Q e J K Q e e e e e e e e e e ",
+"|.m ) x (._.J J J J J J [._.J J J _.v V v ' ) [.) |.a ,.) _.@ ' y ' y 7.e e Q e |.' + ) 7.2.<.<.<.$.Q v a ~ - 3 , $ , @ $ = W W ; - ; i  .E 3 H R -.o P 6 7 ..a b |.) v @ - D D i @ [.) W = @ ' ) ' ' K H 9 ~ ~ , . |.e e e b % $.$ d ! e Q e e e e e e e e e ",
+"|.[.(.) J J J _.J J J J J [.[._._._.) @ , # (.) ) J ) _._.' b J ' J y b e Q e e e |.) . J _ <.<.<.H b a y (.! ..= @ @ $ $ - ; $ , ; D i H R o 3 R H 0.>.5 5 P 5.' Q Q [._.~ = # D ; ) . I - ' ' v @ y + d G $ v ; ' ) J {.. ! d k $ j d e e e Q e e e e Q e e ",
+"b [.J b b _.J b J J J [._._.[.J J _._.y V = , ' ' I ' ) _.' y . K ) c Q Q e Q e Q e 7.' ' [ /.<.<.n Q m ' - D - W $ ~ ~ , = - $ = D i i 3 P 8 o H R 9 5 ~.+.....w ' ,.b J ' . J ; w @ i :.$ ' @ K @ y _.> P ~ J m e J ,.b > g k J b ! n @ e b y e e e e e e e ",
+"J [._.b b _._.b J J J [.[.) _._.) y J J ' $ , $ a h.Z } '.Y { d J @ c 7.b e e e Q e e 7.b } <./.<.d Q ) = 5.= ' = = $ $ z = $ = - D  .w i H F 8 R 7 5 :.0...o R  ., ) ,.J ) v $ W W , 0.{ = @ . v N K _.D j $ b b |.J e b ].$ Q e Q c i k J e Q e e e e e e e ",
+",.[.) _.b J _._.J J J J J _.[._.) J J _._._.a - $ $ @ b ) % d O Y _ X C 0 b e e Q e Q 7.7.2.<.<.<.I Q $ ; , x @ v $ + @ , , ~ ; - W i > > 3.o 8 9 A *.P o 0.R H i ; ~ ) [.c N 3 $ - - :.4.$ . y @ z v v E l z J m _.Q ,., ~ b Q K J b K k h e e e e Q e e e e ",
+"|.b ) i.i.J b J J J [.[.[._.J [.) m _.y _.b ' , $ = a @ ' d j X / Y Y Y 0 J e e e e e ,.e 1 ;.<.<.d b $ $ (.' ; @ + @ ~ z , = ; ; W W D 3.5.H 8 4 *.F o H o ..H D ; , @ y ' ; H @ i 3 *.4.= @ v K N ' ' i 7 - ,.|.b e z $.' e J J Q e e a ! c e e b J Q e e e ",
+",.,.J (.i.i.J b J J J [.[.) [.) J [.) _._._.i.i.> q j.S 2 *.n ) ' ) ' 7.Q e Q Q e 7.e e e M <.;./.j J ) ) x @ = ; ~ ~ ~ ~ $ ! D D W D H H 3 3 ..:.F :.:.8 F *.{ ; % - ! + @ > i @ o ..9 { D @ ' $ i N ' @.{ $._.m Q ' P g {.Q Q e J e e Q y N c e b y J Q e e ",
+"Q b b ,.) x i.J J J J J [.[.[.[.[.) [.[._._.J J _.5 h.| : ^ ( ^ A n c J e e e e e e Q e e 1 <.<.<.d Q (.$ ; $ a W W $ $ - W i - $ - W D o R 3 R 3 P F +.:.A 9 H % - > ; . . d W W P I H 4.j = ' ' g g y ' P j ~ m ,.].i ~ m e Q e e e e e b J b e Q a @ Q e Q ",
+"b b b b ,._.(.K b J _.y [.b b ) [.) ) ) ) _._._.' m - w $ @ $ J  .E s T T Q Q e e e Q e e S <.<.<.o Q x $ = @ ' @ ; H @ , H , @ - i 3.3.0.4 P H ....P 4 g.4 o W W $ W ' ,.%  .i - o 4.7 { 0 N ' @ 8 G = . D P o . . k h Q e b J Q e e e e Q Q e e Q v N c e e ",
+"b b b Q Q b ) v J J J ) _.J m ) ) [.J [._.) ) ) J y $ 7 ^ S '.^ < X O f b e e e Q e e e e S <.<.<.o Q ) @ , + v @ @ D H = ; 3 , = ; 3.H :.F 3 H H ..5 ^ 4.F H i > = ) . ' ) o - . j Y ` ^ A # @ @ h E ].) . i j - z h a e Q _.b b J Q e e e e e e Q @ ! a e e ",
+"Q Q b J b Q {.(.V ' b ,.J ) J J ) ) ) _._._._.J @ q | { h.w , V $ ) ,.m e J b e ,.e e e e _ <.<.<.o e _.. ~ @ $ ' , x D H = W o = ; 5.0.:.o 5.o o 4 ^ { R o R H W ' _.' . . > D ' p ` ] ^ o @ . x @ $ N ) J # D k D $ ,.,.b 7.b J J Q e e e e e e Q a i N b e ",
+"b Q b J J ,.,.,.% v y J b ) ) b _.) J _.[.[._._.Q ' a J y w w @ - _.x Q Q e e Q e e Q Q |.: <.<.<.d e m ' @ @ = @ a $ v W i $ D D 5.i  .H o o o *.5 *.0.o P 0.i . ,.J ' @ ) % * ' H p X A % ' # # @ . . K ) _.) N i ].v v ' m ,.Q e e e e e e e e e a k z Q Q ",
+"c Q Q Q b b ,.Q _.. $ V J b J _.J ) ) ) ) _._._.y y J y ' x & W $ $ v b Q Q e e e 7.[.) _.M <./.<.o Q ) x . . $ W ' $ , . W  ., i 5.w D w 5.P ~.4 :.o o F P i # # = . * = b % ) ) . p 1 G * . N # # @ ' y ) _.{._.N W W N ].! K b e e e e e e e e e y i N e Q ",
+"b b b Q b b b b ,.[.@ $ v b b ) _._.J _._.) ) _.) ) J V ) Q = w k - $ b |.e {.) e b (.) _._ <.<.<.o Q ' . x a $ , D a $ = ~ D D 5.i D 5. .3 :.{ R o o :.j i z D o > D D > @ ) # @ ) o 1.o * @ @ . @ @ ' ) _._._.' ' y v @ z f > K c b Q e e e e e e c ; @ e e ",
+"7.,.b Q b J b Q b e {.$ , i.J _.) ) ) ) _.J ) _._.J x b _.x ,.a ! w $ $ |.{.) b ,.) . ) ,.1 /.<.<.o e _.' ' v - $ = D , @ = $ - ; W = - i 0.*.6 o 0.0.F 3 @ ; 0 > ; W p A ~ ' ' # # ' W ].' N @ @ @ @ . ' ) _.J J y b K $ K N ! $ a K y J e e e e e {.z @ e Q ",
+",.b b J b b J J ,.,.,.J V = v Q _.J J ) _.) ) _.J x J ) x _.' ) ' ! k a b _.b {._.) J ,.Q 2./.<.<. .|.x (., W v , $ = W , $ = = ; ; W  .3 D 5.F ..H 0.F > (.+ H i D D  .E ; . ) . # * N V @ @ N # $ # @ # $ ' Q b J J J Q ,.c ' N z $ K y K J e e e b b Q e e ",
+",.{.b b b b b b J J ,.,.) V , v ,.J y i.J J ) _.b ) _.y (.[.y y i.@ w ! y m b J _.J J ) ) [ <.<.<.P e b ; W . v a , = - D ; $ = , - > i & [.+ o 0.o R :.o = ' _.d  .N y * @.; ) ' ) @ = ; N @ % @ # . . @ N , % J _.J J b Q Q Q Q a z N @ K c b e e Q e e e e ",
+",.,.,.b m b b m _.J ,.,.b ' V = K i.J J _._.J ) y b ) ) ) _.J y _.J @ w = V _.b J J {.' . r <.<./.j {.) ~ W , (.$ = $ = i D = , - ; , x {.b y , o R 0.0.8 o = J @ + . + W H $.= ' . @ N - = = N % # @ ' ' + N ! % a ) J Q Q 7.e e Q b c $ ].a e e e e e e e e ",
+",.,.b b {.m b b m J J J Q ,.) V > $ J b _.) J (.i.J _.y v x ) (._.$ a y , D , b J b b _.) [ <.<.<.$._.$ (.~ D , , , , = ; D i ; ! % c Q |.. ' _.= o :.0.0.:.8 D Q Q # E o  .@.E # + + @ % * ; ; = * # @ ' _.) @ z N @ a ) c ,.Q Q e e e b c b e e e e e e e e ",
+",.,.b b b m m m J ,.b J {.Q Q J = * v J J _._.) J v _.[.) _.(.J ' 3.! b . * W b J J J b Q M <.<.<.I Q $ , v v i v @ W - $ - i i % c e ,.) [.(.v _.= H P P F 8 ..% J ' k H k  .H # + + & N + # ; z # @ @ . ) ) ) _.a N ].z a c J e |.Q e e e e e e e e e e e e ",
+"b ,.b b b b m ,._.J J J _.{.,.{.b , - v J _.y _.) H y J J |.i W , ' $ , H ' , ) J ) (.{.e : <.<.<.o e ) = - + $ @ = = , = , v $ y Q e b _.[.' + (.y $ o :.+.o R o % J ' i P d = + - W $ + ~ N # * # @ @ @ ' ' ' ,.) a @ a . K a K c Q e e e e e e e e e e e e ",
+",.,.,.,.b m ,.J b b b J J b b J 7.i.- * ' _._.) x g.x ) . ) 2 1.$ Q _.& ^ v . ) b J ) _.Q M <.<.<.o |.) ' ; - (.= = $ $ = + |.e Q e e Q b ' . ) V (.' = o P +.P P E N . = d  .N @.o E * . N * @ = * N # @ ' ) ) _.J J b b J y . @ K J Q e e e e e e e e e e e ",
+"b ,.,.,.,.m b J ,.b J J J J b ,.J ,.@ 3.; (.J y J ^ ) J x J 1 4.) v ) 7.1 = a b J b {.m e _ <.<.<.d e ) ' v @ , , @ , = x b Q e Q e e J J J ' v + $ V ' & o +...H P H ; # @ > o 4.G o H > # @ * # % N % + ' c _._.[.J J b ,.7.e J Q e e Q e e e e e e e e e e ",
+",.,.b b b b {.b b b b b J J J J ,.{.|._.; D V J _.L ^.u j.j.%.%.c.j.}.j.^.' $ = b ,.b b e 2.<./.<.d Q ) (.(.. @ , = ~ ) Q e Q e e e Q m _.) . . # $ $ # v @ D P H H F G H & &  .p 9 1.1.H % % = & $ * = * . ) ) _.J J J m b b Q Q Q e Q Q Q e e e e e e e e e ",
+",.,.,.b m b J J J J J b J J J b J J ) J (.; D V b K b @ ' J . ) ' @ ' Q ' 7.V = _._.J (.' r <.<.<.H Q . . x x @ @ $ . |.e e Q e e e Q b J ) ' ' ' . ' ' ) [.(.+ % N * = ; % + + o 9 A j o P o * & $ & = = @ ) ) c _.J b b b b Q Q Q Q e e e e e e e e e e e Q ",
+",.,.,.b b J b b b b b J b J J J y m J {.,.x - 3.J i._.{.,.) _.K (.) ' x J ,.|.J > y |.' ~ } ;.<.<.o b v + x ' . @ ~ y e e e Q e e Q Q Q b J _.) ) _.) y ) [.,.b . @ $ # % ; $ [.(.- W , i A ] G i ; # @ . (.) ' [._._.J b Q Q Q Q Q e Q Q e e e e e e e e e e ",
+",.b ,.,.b m m J J J J J J J J J c [.Q ,.{.b (.D > J y x _.) ' c [.' . ) Q ' [.Q v & @ b Q } <./.<.d Q . + + . + @ v ) e e e Q e e Q |.,.b m _._.' ) ) ' ' ) {.|.b K $ % N z * @ J J J y N D n 7 7 8 k = ~ . ) ) J J J J m b b Q Q Q e e Q Q e e e e e e Q e e ",
+"b ,.b b b b b b b b b J b J J J ,.' ' J J ,.J K  .= ) {.. J ' _.(.(.x ) ' Q |.|.Q @ W + e _ <./.<. .e ) @ @ + . . c ,.e e Q e Q Q Q Q Q m _.c ) ' ' ' ) ) (._._.7.J a N z z z z @ _.J @ N @ # ! E $.$.I @.z K _._._._.m b ,.Q Q Q Q Q Q e e e e e e e Q e e e ",
+"b b b J m J J J J J b J J J J J {._.@ % (.b b b V S < =.: ^ } _ | g.] ] { ' Q |.J 7.(.* ' S /.<.<.$.e ) a ' _.|.|.e e e Q Q e Q e e b b m _.y ) ) ' . ' ) ) [.[.J ,.J v * z z N N K _.y a $ # a ) ' a N N # K ) J J J J b ,.,.,.Q Q e Q e e e e e e e Q e e c ",
+"b b b b b b b b b ,.J J b J J J ) ,.(.= V _.b b Q , H D ) x g.P _.x ' b J Q [.m b b b [.{.Z <./.<.d e y _.b e e e e e e e e Q Q Q Q Q Q m [.) y _.) ' ) ) ) J |.b Q Q _.v N N N ].* @ J ,.@ $ c c c _.J _.c c c c _.J b b b Q Q Q Q Q e Q e e e e e e e e J N ",
+",.b b b b J J J J ,.b {.J _.[.[.[.) {.) $ , J ,.i.@ w = ) . ] n _.) ) ) |._.|.Q e _.) |.Q < <.<.<.d e J Q e e Q 7.Q Q Q Q Q Q e Q Q b ,.m m J _.) ' . . + $ ~ @ ) ' ) _.) @ N $ $ N ].@ J ' # ) c c c c c J b ,.J c _.J b b Q ,.Q Q Q e Q e e e e e e e b $ i ",
+"b ,.,.b m b b b b J J J {.{.[._.J ) _.J i.V ~ ' - j.^.'.j.c.j.j.j.'.j.c.'.. Q ~ [.,.|.|.) < <.<./.j e K Q e Q e e e Q e e e 7.b ,.e e Q m ' $ W H H n j G G G j n o o o d E $.E = N % N @ _._.K J c c c b b J b J J J m m b b Q Q e e Q Q Q Q e e e e e y ! k ",
+"b b b b m m b {.J {.b {.J _._.) {._.) ) {.) V % -  ., ) ,.Q Q y (.a _.,.x Q J -  .7.b v _.1 <.<.<.2.c b b J Q e e e e e J b e Q Q m K z k P 9 p 0 A p p *.G G j P P j G 9 9 G 9 1.9 R i = # (.,._.c J c _.b J m b b b b b ,.Q Q e Q b Q e e e e e e e K ! k k ",
+"b b b b b b b b J ,.{.{.) _._.J J {.) ) b b x V ; (._._.b & (.7.J J (.- . ' b i n $ e ) |.H <.<.<./.}.u s T u T T T T T s O c @ ! i o P j 9 j n H 3  .D - & $ $ , , & D  .H F 9 p 2 2 A F o i % ' _.J _.c _.,.b b ,.,.b b Q b ,.e b Q e e e e e e Q a h i i h ",
+"b b b b b J J {.{.,.{._.) ) _._.) b {.) _._.) J V (.(._.Q 3 i J J b @ ; |.7.,.F n 9 [.7.m ) u <.<.<.<.;./.<.<./.<.<.<./.<.q z H d n 0.o D ; @ x |.b J ) y y ) J ,.Q Q ,.J J (.a = o *.A 5 5 4 j D $ [.,.{.J J _.,.,.b ,.b Q Q ,.Q Q e e Q Q e e b N i k h h i ",
+"b b ,.b J ,.{.J ,.J ) ) _.{._.) ) _._._._.(.) {.b # ,.) ,.E P i Q [.* ) e Q , o F o w 7.b Q i U ;.<.<.<.<.<.<./.<.<./.;.<.r @ W E W + J |.b (.@ W D  .o R ......H 3 5. .D = a (.|.J $ i R 9 A 4.0 o = . J ,.b J ,.,.Q Q Q Q Q Q b e e Q Q e e Q ].i k h h i i ",
+"b b b b b b b m J ) ) _.J b J ) ,.) ) b ,.b _.) . p v [.Q D j 0.; ' ) 7.{.Q i 8 :.o R . Q e e z S }.;.;./.;.;.;././.<.<.<.} + x J Q 7.J @ > o :.~.~.*.*.*.~.:.F R 0.F 9 *.9 F 8 D $ ' (.v , 3 *.1.A G E * ) |.7.b b ,.,.,.,.Q Q b e Q Q e e Q y k i i i k i i ",
+"b b b b b J b b ) _.) _.J J J J ) ) {.Q ,.Q b ' ) < n E E 1./ C : 0  .I 3 ) 3 F H F 0.D ,.J y e e c $ @ ; $ N $ k h D k  .$ e |.Q (.- o :.~.:.:.:.:.:.6 F F +.P F n 8 :.9 9 9 9 9 F n o W @ v # E 8 :.F o D # ) {.b ,.Q Q Q Q b Q Q e Q e e K ! h i i k i h h ",
+"b b b b ,.b b ,.. ) J J ) ) _.b , @ _._.V y ,.) ) } n E d 1./ : ^ ( :.o w @ F P ..o o  .b Q Q c |.e b y $ @ ! ; @ K ) {.e 7.|.a w H F F R R F ~.:.:.~.7 ~.:.6 8 R o n :.9 9 :.:.:.:.j :.j R  .W # ;  .o P F H ; J {.,.|.Q Q Q Q ,.Q Q e b K h o h k k h h k k ",
+"b m ,.,.Q J ) x ) J {.i.' b J > V b ,.b $.8 = ,.{.p ' e _.E :.G 0...P - ,.5.~.H R :.= J Q _.J e Q { !.;.;.<.<.;.}.C J e ' W W 3 R -.H ..+.F F F ~.~.~.:.~.:.F +.R 8 F j 9 ~.9 :.j F :.F R o F 9 G H % . w o o o o % ,.Q b Q e m ,.m e |.z I $.k k $.k i i i i ",
+",.m |.Q b x . ) _._.) ' ) ,._.> * i.b ,.> G n  .Q ) 7.[.,. .:.P ~...6 -.~ H :.0.j @ [.7.J _.e ].}.;.<.<./.;.<.<.<.;.U n 3 d H H o o o P +.8 F :.:.:.~.:.:.:.F F ..R +.F ~.~.~.~.:.:.:.:.F ..P :.p A 8 ; @ v ; H 3 o W [.7.,.m Q e e Q ) z $.I i k k k i i i i ",
+"m ,.Q ,.' @ x |.b _.(._._._.@ , ; v ) {.$ j n F 3 x 7.[.(.n :.:.R 6 +.R n R ..:.> Q c Q J 7.* }.<.<.;.<.<.<.<.<.<.<.<.L 0 o H H H -...P 0.+.6 :.~.~.:.~.~.:.F 8 R R 8 :.:.~.:.:.:.F :.~.F P ....j 4.1.:.i $ v $ R 0.E = (.7.e ,.Q 7.) @ ~ ! k k k i i k i h h ",
+"{.Q J . + ) b |.b _.) ,._.$ > = v x ' J ) o o 8 F H D . J 3.R 7 - 3 6 6 ..R -...) ,.Q J Q b : <.;.<.<.t L L U <.<.<.;.<.}.i j 0.o o o ..R 8 6 :.:.:.:.:.:.:.F 8 P P +.:.~.*.~.:.:.F :.~.:.P R ..R :.p 5 4.F - _.$ 3 0.d ; ) Q e b J . ~ . @ ! I k h h k $.i k ",
+"|.b (.+ ' |.Q y ) J ,.,._.$ * , J ) ) ,.b o 8 8 o P :.5.$ $.+...$ ' ..7 o ..R N |.) Q ) Q z t <.<.<.e.d . |.b D j.<./.<.<.F H 0.F P o o P 6 :.:.~.~.:.~.~.:.6 F ..R 8 :.~.~.:.:.:.6 F ~.:.F 8 P R R F 9 5 A 8  .b . i j n ~ b ' ' @ + a . . $ i $.k k k k i i ",
+"{.' . ) ,.b ) a J b b _.v i.,.,.{._.J ,.Q W n R F :.:.R P 6 G +.= ) $ 5.~.F = |.m _.J ) 7.*.<.<.<.#.@ e e m % ~ - r /.<.;.^ % o F +.....0.F :.F :.~.:.:.~.:.F P R P P F ~.7 ~.~.:.6 F ~.~.F F :.+.R P F ~.5 A *. .' b - i K J N . @ + . ~ @ K N k k $.k k i k ",
+". . (.|.,.) x (.J _.J K , $ _.,.J Q ,.,.,.+ 0.8 R ..F R G ..+.{ - ' e ) n  .m e ) J m e e S <.<.<.X e Q , D H D % R <.<.<.Y , $.F F :.P R F 6 :.~.:.:.~.:.6 F +.P ..F :.:.9 ~.:.:.F :.~.~.:.~.~.F +.P 0.8 9 5 9 A o . e |.a @ a @ @ . @ @ @ a a ! k $.k i i i ",
+"= . b b ' v ' J _.@ ) J ! P H ; ' {.,.{.{._.F *.3.J $.:.P +.0 4 ~ |.Q |._.) m Q e c y Q Q [ ;.<./.f Q % i 0.H R I $.L <.<.[ . D 8 :.~.:.P 0.6 :.~.~.:.~.:.:.F P R R F :.~.~.~.:.:.:.:.~.~.:.:.9 6 +.+...o 8 *.*.*.{ d . ,.) @ ~ . K ~ ~ ' ' @ @ $ h $.k i $.$.",
+") |.|.y . y J b v & = J ' o P ..P 3 , ' Q _.3 ~...J |., R g.4 P v ,.b ,.e e |.e e |._.Q c } <.<./.I ) I n R n j n o ^.<.<.r . D ..:.~.:.:.:.+.F ~.~.~.:.~.~.:.F R P P :.:.9 :.:.6 6 :.:.9 ~.~.~.~.6 F F ..H 0.9 { o - @ . @ @ K . D ~ . @ $ K a K N k $.i k $.",
+"J b ) V v b b ' > - v ,.J w :.F P ..o o D = 3 o 6 ' e ) , 3 F ~.' ,.,.b e e Q e b e e ' ! '.<.;.<.o + H n +.F :.0.o U <.<.e.. > o :.7 ~.*.~.6 :.:.6 ~.~.~.6 +.+...P P :.~.7 ~.:.F :.~.~.~.9 ~.~.*.~.6 F F n P j P ; @ % % . @ z n l > + K ~ . a a $ ! k $.$.$.",
+"Q _.v a J b y , $ v {.b 7.(.o R ..+.F ~.8 ..P 6 :.w J J . . = k ) Q ,.b e e Q e |.e |.> d '.<.<.<.P ~ o 0.0.F :.P o U <.<.r . > o :.9 *.4 *.~.~.F F :.*.*.:.8 F R ..+.:.~.~.~.:.:.6 :.:.~.~.~.~.~.7 *.F F :.0.H , ' . , ~ . @ $ G { n N ' @ a @ a @ $ h $.k i ",
+"J ' ' b ,.x = - [.J J y |.|.W P ..P 0.~.~.F P P P H + ' ' Q b ) m Q ,.Q e e Q e e ,.$ P d q <.<.<.j ~ 3 R 0.P 8 P R ^./.<.r . W H +.~.~.4 A *.4 :.~.*.5 4 ~.8 +.R R P F ~.~.~.:.F 6 ~.:.~.~.~.~.6 ~.~.F :.G  .+ |.+ N @ + > > ' > 7 { $.. . a @ v @ v N k $.k ",
+"a . J Q J $ $ . J b ) [.b Q ) 3 0.R 3 D H ..P 6 +.0.v ,.J e ,.Q ,.Q Q b e Q Q e e ~ I G W [ <.<./.j $  .o 0.P F F R U <.<.r K ! o F ~.9 4 5 5 5 *.*.4 { 5 *.F P P P F :.:.~.~.:.:.F :.~.~.~.~.~.*.:.6 9 :.3 + Q ' , - ' z 9 G - . d O o $ ~ @ K a v K @ h k k ",
+"x J Q {.' ) {.Q [.|.b |.J b Q = :.0.W m ' = 5.+.{ A $ Q Q |._.m b b Q 7.e e e e Q i *.:.v _ /.<.<.j $ 3 ..+.0.F F R ^.<.<.r K ! o F ~.:.*.4 5 { 5 { { g.5 5 ~.P ..R +.:.~.~.~.:.:.6 :.~.9 ~.~.~.4 :.9 A H . |.) - ~ + , o g.{ P + - P h . @ ~ a a @ v v z i $.",
+"J |.b (.) ,.|.(.b Q 7.7.{.Q e b 0.*.o x |.m m @ o .., |.|.|.b ,.Q b b Q Q e Q Q @ d 7 I |.S /.<.<.G #  .P P P 6 0...U <.<.r . W o F :.~.*.4 4 5 5 { { 5 { 5 *.F R P 8 :.~.~.~.:.F F :.:.~.~.~.~.~.*.*...$ |.J % , + , o p { { 4.$.@ ; ~ . ~ @ @ a ~ @ K @ ! $.",
+",.y V a J b $ I D W $ $ V v $ v - F :.= (._.b ' Q ) b Q b b ,.b b J b e e Q e Q H R H $ Q [ <.<.<.j +  .P P ..F 8 R ^.<.<.r . W H F ~.~.4 4 *.4 5 { { 5 { O 4 F ..P 0.F ~.~.~.~.:.:.~.~.9 ~.~.~.~.*.o + |.' % N @ z R { g.4.5 { p v ~ @ @ @ + @ v @ $ v v ; $.",
+"i.- ~ J y J ) W :.9 6 P P F :.....0.0.F = ) @ b |.|.,.,.,.b b b Q b J e b Q e ~ o n $ e ' q <.<.<.F $ H 8 8 F :.P R U <.<.e.x D o F :.7 4 5 4 5 4.5 5 5 4 A { g.6 ..R ~.*.9 :.:.~.0.F *.F :.*.F *...@ |.@ z ~ ~ k 4.] { 4.g.{ *.].% @ ~ $ ~ + . @ @ a $ @ $ k ",
+"~ , y b $ $ _._.H :.~.G 6 P R R R ..+.5 R v b |.|.|.,.,.,.,.b ,.,.b b e b e e ; n  .m |.- u <.<.<.F ~ H R R P F P R U /.<.Z x W -.F :.~.4 5 4 5 5 4.4.4.{ 4 4 4 *.F R F :.9 *.A 8 9 :.:.p G :.{ 0.% ) ~ ; N ~ ! p *.4.{ 4 { *.W @ K $ % ) a ! - @ @ a $ @ @ h ",
+"* a b b ' @ (.Q $ o 6 ~.7 +.P 7 6 +.+.*.9 * 7.|.,.,.,.b b b b b b J b Q e e ) $.P , e + I q <.<.<.j $ 3 R ..R +.P o ^.<.<.r x w H F ~.*.4 5 *.4 5 4.5 { 5 5 4 4 { A :.8 F ~.5 { 9 :.:.9 :.*.9 n % ) x ; z . ! F ] 4.*.4.] 9 > . @ @ z ~ . D P n + @ v v v @ ].",
+"y b J m m ) x ) |.= o G ~.H - - o 8 :.F :. .m b ,.b Q b b ,.b b b J Q b e e % P d {.Q D o q <.<.<.j ~  .d o o R 8 o ^./.<.Z ' W -.F :.*.4 5 *.4 A 4 5 { { { A *.{ 5 4 ~.~.A O O =.9 j G j p n @ [.@ - $ ' , 0.g.{ { 5 g.g.i ' ~ $ z @ ' > l p j @ a @ @ v K N ",
+"|.b _.(.|.{.) (.|._.- 0.~...$ Q |.y a _.. + b 7.Q b b b b b {.b m J Q b e b i j W e . o I e.<./.<.P @ k H H H n P R U <.<.B . w H F ~.~.*.*.*.4 5 5 A 5 { { { 5 4 5 5 A { =.g.{ ] 1.*.:.7 o z ) . z % @ W 0.{ g.{ 4 g.{ k ~ ~ $ N @ @ W j { A p , a @ @ @ @ @ ",
+"' [.{.{.b J _.m (.|.b , -.~.o * v J J 7.e ,.b J b b b b b b b b m J Q Q Q @ d o (.e D n D q <.<.<.F + i E H o P P R ^.<.<.e.x W H :.9 7 A A *.A A 5 A 5 { { g.{ *.A { { =.h.=.6.=.1.g.1.n N @ N z N N i *.9.O O h.g.9 i @ v N N $ K > p { { A 0 i @ ~ $ @ @ a ",
+". (.|.Q b ,.|.{.x J |.m - +.6 F $ J Q |.|.Q Q |.b b b b {.b {.m J ,.b 7.b h P $.e x d R i q <.<.<.n @ i 3 H o P F o U <.<.r a w H F 7 9 *.*.*.*.5 4 { 5 5 5 5 { 5 5 5 { =.h.h.g.=.4 ` A ; . z ].z N  .5 h.{ 5 9.{ A i . ~ % a $ @ ! P { 4.9 A A P @ @ @ v $ . ",
+"Q ) J ,.,.7.7.[._.$ , ~ w o o :.I $ m m m b b Q b b b b b b b b J ,.m e J d G D e W o H  .u <.<.<.n . i 3 H o 8 P o U <.<.r x D H F 7 *.*.*.*.4 4 4 { 5 5 5 A 4.g.5 4 5 6.=.h.h.{ =.p @., N - z N > 9 2 O 0 O O 5 D + $ % % ~ . z 7 g.p A { 4.4.0 ~ @ $ K $ . ",
+"b ,.) @ v = 3 3 o -.+.G +.....0.:.$.x e m J e b b b b b {.J J J ,.,.b 7.$ d P - b I ..H I Z <.<./.j @ D E o R F P ..U <.<.e.~ = 3 F ~.~.4 *.*.*.5 5 4 A 4.4.{ 5 A 5 { 5 5 { g.h.C :.> ~ N ; ; N - l ] g.5 g.g.4 - ~ @ % $ @ @ , 4.0 { 4.4.A A p 4.$.. $ @ v K ",
+"{._.# E j 9 :.....n R +.*.6 P P 9 n - _.b Q e J b b b b b b b b c _.m ,.! j P v J H 0.d 3 q <.<.<.l ~ D  .E R ~.F n U <.<.} v D o F ~.:.7 *.4 4 *.4 5 5 5 4 4 4 4 5 O O { { g.C *.5.& N - N N ; F ` h.{ O ^ 1.H ~ + % - $ v W :.4.A 4.A 5 4.4 p 4.o . @ @ @ a ",
+",.Q _.& E n 8 P H +.+.6 6 R $.W ; - ~ _.b Q e {.b b {.b J J {.m Q b b m > j H [., 0.0.o d q <.<.<.j @ D E H o 9 R o }.<.<.} x W 3 8 :.7 A 5 4 5 5 5 5 4 5 5 { { A 5 4.1.=.C g.9 > % # * - z i P ` ^ ` h.] 4.R , + - - @ + D 7 ` A A A 5 A 4 A 4.A :.% a $ $ $ ",
+"J b ,.{.v , 5.~.G +.n ! _.|.J {.|.|.|.Q m b Q b {.b b b b J b m Q _.J ,.a - , b E 0.o o H q <.<./.o . k o o H 8 :.n U <.<.r . D o 6 ~.7 4 4 7 *.5 5 5 4 5 { { 4 *.5 A A ] C 9 D + % * ~ % $.p ] g.{ 1.^ A D % ~ $ - $ ' ; *.] 4 4.4.5 5 5 5 4 4.A p ! @ $ . @ ",
+"b J b b {.{.v w 6 G ~.H a Q b ) J m Q ,.m _.b {.b b {.J J m m m J ) Q Q e e ,.b 3 0.0...I q <.<.<.l @ i $.@.3.H j 8 ^./.<.e.+ W o F ~.~.4 4 4 5 4 5 5 4 5 { 5 *.A 4 5 O g.p  .@ $ - z # > 9 ] 2 { g.{ A I ~ @ % - a . D ~.{ 5 A 5 4.4 5 5 5 4 A 4.{ D @ $ y a ",
+") _.{._.(.J ) a -.7 ~.o 3.' Q _.{.[.m m b b b {.J b b b m m m J J _.7.J b 7.7.Q $ H :.0. .q <./.<.P c ' J Q Q J * ; U <.<.r v ; 3 +.7 *.5 5 4 4 5 { 5 5 5 { { 4 4 5 1.g.G D % N z ~ @ - P g.] { g.^ *.D @ N ! % . v > *.g.5 9 4.4.4.4 4 7 0 4 A *.l ; ) $ @ @ ",
+". (.b |.,.J J ) ) ; H 8 G E @ _.,.,.b ,.,.b J J b {.{.m m m [.J b ) {.- D , [.Q b , o F 3 q <./.<.P Q Q e 7.7.Q Q _.#.<.<.r . ; o :.~.+...H D 5.~.5 g.5 4 5 5 5 4 4 5 j i # $ - N ~ - P g.] g.g.2 g.H ~ @ z h % + i 9 4.{ A 5 5 { { 5 5 5 7 4 *.F R ].Q ' $ $ ",
+". . ) J b {.) y _.) > R n G F ; # a ' J |.,.c y b b b m m m m J ,.[.|.> j P W ' Q m - 0...q <.<.<.d e Q ) V V v {.,.T <.<.B + D o R 3 = ' y y ' @ H 4 { 4.5 5 5 4 5 F ; @ * ].N N ].n ` 2 4.4.^ 1.n = , z ~ N % i ~.g.5 *.4 4.A { { 5 5 5 4 4 *.R R > e {.@ a ",
+") + v {.Q Q b v n 8 8 R R P F *.0.' Q m c ' _.,.m ,.,.,.m J J J _.Q {. .....0.3 b Q ) 3 I './.<.<.d e * 3 o H :.o [.u <.<.q ) W o o @ b @ w W , @ (.; A { { 5 4 { F ; @ N z N N @.A h.g.1.h.g.4.D - N N ! N . i ` 5 4 5 5 5 { { A { { 4 A 5 :.H d o  .Q e e Q ",
+"Q Q |.J ' , 3...F G :.F 8 P H w . e Q _._.m ,.|.b b ,.m [._.J b m ,.J  .R R 0.H ' J |.5.o Z <.<./.$.) E H R o R R  .#./.<.} @ W I ; J v o 4 4 9 - x $ n 4.5 5 4 P D + @ - % ~ ].p 1.1.{ C ^ ~.D , $ - ; N + ! *.{ 5 4 5 { 5 4.4.5 4.5 4.*.F ..H o o k Q Q Q b ",
+"7.{.$ i ..P +.R o ~.A n w @ _.|.Q Q ) ' _.m Q ,.b b _._._.m b m J ,.[.3 P o ..R & |.e W H e./.<.<.$.) E H ..o n l j %.<.<._ + W d + b D 4 4.{ O o @ v i { 4.{ 5 3.~ . , ].z > 8 ` =.{ { h.5  .@ $ z ].z N i *.` { 5 5 5 { 5 4 A 4.p A { p ..3 o H R  .Q e e Q ",
+") = ..:.6 ~.6 -.P H ; (.J _.J |.|.J ) m b b Q b m m _._.m b b m J J [.3 0.H o 8 w e |.= H q /.<./.l . d R H o 8 o P t <.<.| ) D  .) b  .5 *.*.{ p , v ; { 4 { 4 @ @ $ z z - n ^ 1.4.O ^ { H , , - ! z $ z d ` ` 5 5 6.5 5 5 A 4.5 A A 5 9 0.H H H o  .Q Q e b ",
+"|.' D o o ..6 6 n 5.$ i._.m b {._.J ) ,.|.m Q ,.J _._.m m m m m _.J J 5.0.o R P > Q |.; 3 Z <./.<.M @ - n o H o o S <.<.<.=.c D I + J 3 A 4.4.O :., + W g.4.5 4 $ ~ @ $ % N $.4.1.g.g.^ ] :.D = z ! N z z ].R g.5 O 5 5 5 4.A 5 4 4.4.A A 9 F H H R k Q e Q Q ",
+"x b |._.' @ 5.6 P +.F R D # b e ) b _.J b b Q Q _.J J m ,.m m J b b b i R R 0.o ' ,.7.D H =.<.<.<.t 0 $.3  .d F r t <.<.<.7 . k o , b $ ..*.A ~.W v = H g.{ { 4.o ; . ~ - , z  .4.g.g.O h.h.*.o $ z z z % . - d 5 O 5 5 5 4 +.0.:.A 4.A 4 A :.H H R  .Q e e b ",
+"@ ' m ,.|.Q Q _.H -.P 6 ~.P 3 w @ Q Q |.Q Q ,.J _.J b ,.b b m m m ,.{.i ..8 0.5.|.,.J H ....U <.;.<.d.#.q < q %.<.<.;.<.%.> $ k F H . m @ W W , @ @  .A g.5 { { { n - % - N % z I A ` 4.g.^ 2 g.$.! z N $ , ~ $ n 4.O 5 5 F H H ..:.*.4.A ~.+.o H o k Q Q Q Q ",
+"(.@ ' ,.Q ,.Q Q |.$ k -.-.8 :.:.d ' ,.b ,.b _.) m m ,.b J m b ,.J m _. ...8 o = |.Q ; R R W ^ /.<./.<.<.<.<.d.<.<./.<./.C {.- $.0.9 D ) b ) a ' a - 6 ^ g.5 5 5 ` A 3 ~ ~ z z z @ o { g.g.O O g.] i , z % , ~ $ , n 4.{ 7 +.o ..H ..~.{ 4.0.o o d R  .Q e e b ",
+"|.) . ' b Q Q |.J ' w R :.6 P H ) Q b Q Q ) c m m b m m ,.m m m _.,.|.> ~. .$ Q Q ) H +...3 i ^ <.<.<.<./.<.<.<./.<.;.{ c @ D H P 0.0.3 , _.y , H 7 g.{ 5 { 5 5 *.{ A $.@ @ ].].- % I { g.O h.^ g.4. .~ $ z % % @ $ o p 6 ..R H 0.o n 7 F H H o o n W e Q Q e ",
+"J J _.' [.Q Q [.& 3 6 P P F W 7.,.e ,.b b [.m ,.m m b m m b b m Q J b ' $ b b Q [.W F o o R W W { c.<.<.<./.<./.<.q P . _.W I P 9 9 *.9 R 3 o ~.*.{ g.5 4 5 5 5 5 4 { 4 H z N N N ].z I { g.5 g.O ] :.W ~ ~ ~ z ].+ @ D 0...-...o 3 H R ..d o o H n z e Q e Q ",
+"{.,.J _.J ,.(.= F ..P :.3 v ,.Q m Q m ) _.J m _.m m m m m m b m Q J ,.Q Q 7.|.Q  .8 F -.P F H i + D 9 ^ _ : S /  .' ) + W I H F F :.9 *.j n :.A g.O 5 4 4 4 4 4 5 7 5 ^ 4.H z $ ].N $ z I 5 h.O { ^ g.:. ., @ $ a y Q {.= o ..H o o o o H o R ..o R @ e Q e e ",
+"' J Q Q _.= H F P P ..; [.e e _.,.{.c _.m ,.,.,.,.m m ,.m m m b m [.|.|.v $ $ b  .n o o +.o ..0...; . v + ' ) ) ~ $ W D i o 0.~.F 6 :.9 :.o ..:.g.{ 5 7 { { { 5 5 7 4 =.] 1.n W z $ z - , I 4.h.g.] ] ] A H , ~ ' {.|.e |.= 0...o ....o H H H o o d _.e b e Q ",
+"' [.|.(.D P 0.-.o F H # {._._.Q e ,.,.,.,.,.,.,.m b ,.m b m ,.m J b Q J  .P E [.~ 0.0...-.o 0.H o ..H W = ; W > ; i ..H ..:.F F ~.:.9 *.:.0.R 8 7 5 0 5 5 O 5 4 5 5 5 5 { ^ g.P N z N $ ]., I g.` g.g.g.g.*. ., $ _.m J e |.W F H H d o o o o o R  .b e b e e ",
+"7.,.+  .F 6 0.o F o E H o I i i ! - ' ,.,.,._._.b m m b b m b m {.,.|.{.i j d ) @ 0.F ....-.+...R ....H H H  .5.H o F :.:.+.P 7 6 F :.9 j R R :.7 { 6.0 7 5 5 5 5 5 5 { 5 g.C g.$.% K z ! N z I { ] h.{ { g.5 o $ . _.m |.e J - 0.0.o o R ..o d n W Q e Q e e ",
+"Q J ~ D 5.i H F 8 :.8 n F F 0...A P % m ,.,.m m m {.m m m m m m b b m Q $ H o $ [.k 0.R P ....o +.n o P 0.o ..F 0...0.~.4 G P 6 ~.:.~.9 j n F ~.4 5 5 7 4 5 5 { 5 *.{ O 8.{ =.g.A D ].].N z ! $ R 4.g.{ 6.h.9.4 W , ' J J Q e e W H 0.R R R o o ..$ 7.Q e e e ",
+"Q Q ,.Q Q |.) ) ~ N N > 3 -.+.4 F k ) Q m ,.,.,.m ,.m b {.m m ,.b m [.7.. I 0.! Q i 8 o o R P R -.+.+.R P :.F o P :.F P 6 7 :.+.6 F :.~.F 0.:.5 5 0 5 6.5 5 5 { 4.*.5 O O 8.O 5 C { I $ $ z z ; N d 4.g.O O 8.O ~.W # @ _.e b b Q = o o d H o o o . e Q e Q Q ",
+",.m _.Q Q J |.Q 7.,.7.Q D :.6 +.W |.e [.|.Q Q [.,.m m m m b ,.m Q c b e b W n  .e + o 0.o R R ....n P P P P P +.+.+.+.+.6 6 7 7 +.F ~.*.*.~.*.5 4 5 7 5 5 5 4 4 5 5 5 { { O { { 5 { { j W @ $ z , $ 3 O h.{ 6.{ O 5 E ~ K y Q b e Q ~ d R o o o D ,.e Q e b e ",
+"Q ,.' ) {.b Q Q m e Q , 0.7 6 H (.Q ,._.b [.,.,.m b m b b m ,.,.b J ,.e e % n H m b  .F H o R ..R P ..n P +.P P P +.+.+.6 6 ~.~.~.:.~.9 *.*.*.4 4 5 5 5 4 4 4 4 5 5 0 { 6.{ { 1.{ g.] ` F ! $ - , ~ ; o *.g.h.4 5 g.4 I % y Q e Q Q b - n o H n % e e Q e Q e ",
+"Q Q . @ J Q e ,.,.e ~ 0.:.F 5.' |.b {.Q Q |.,.|.b b m b m ,.J J J ,.b Q e ' I n $ e , j o 8 8 o R ..R +.P P +.+.F +.P 8 +.F 6 ~.*.~.:.7 *.*.7 A 4 4 4 4 5 5 4 4 4 5 5 5 { { O { { g.O ] ` o , $ - ]., $  .5 g.5 5 { ] A $.~ ' J e Q e {.- ..R o ) e e Q e Q e ",
+"|.e _.) |.Q Q b e v o A 0.5.@ e Q b b |.) ) b ,.b ,.m m m b m m _.,.Q Q e ,.W P  .e {.3 8 R n R P P R P n P P +.P F +.8 +.F F 6 *.7 *.4 4 *.4 4 4 4 5 4 4 5 4 4 4 5 5 { { { { { A { { { ` 4.I $ $ ].; $ , 3 *.g.O *.5 g.p i @ . J |.b e ,.! R $.Q e Q Q e Q e ",
+"b e |.,.Q b Q Q )  .:.0.o D $ @ - W 3.H R > ' {.b b ,.,.b m J J b b ,.Q e Q v d n + Q % 8 R P P R P n P P P P P F +.+.+.+.F +.6 :.:.*.4 4 7 ~.*.4 5 4 5 5 4 4 4 4 4 5 5 { { { O { O O 4.O ] 5 H z % N , $ $  .{ { { *.{ g.F = + . Q Q ,.e b , ! e e b Q e e Q ",
+",.Q |.Q Q b Q J o 9 F ..F 0.H j F 0.0.:.0.$ |.Q b b m m J {.J b Q m ,.Q ,.e {.D 0.i |.{. .o R 8 P +.P R P n P P P +.+.P +.6 F F +.6 *.4 A 7 7 4 4 4 4 A 4 4 4 4 A 4 A 5 4.{ { O ` 4.g.g.4.` ] { P W ~ z z + ~ i A ] 1.4 1.{ +.3 % K J ,.Q e |._.e e b e e e e ",
+"Q Q ,.|.b |._.W A ~.0.R 0.P 0.F R 0.0.R > ) |.{.,.b m _.J b b ,.,.Q Q e Q e e + o n , Q @ H H ..P ..P P P P P P +.P 8 F F F 6 6 :.F ~.4 5 4 4 *.4 4 4 5 5 5 5 4 *.A 4.4.{ { { { { { { { { O g.h.` j ; # , ~ . ~ $.A { *.4 g.O 1. .; K ,.Q Q e e e Q Q Q e e e ",
+"e ,.b |.b b v :.3 D  .i = z % J ; H F .., |.Q b |.b m _._.{.Q Q J Q Q Q Q Q e ) d n H Q |.H H H P P P R P ..P R 8 +.+.F F F F F ~.F F 7 { { 5 *.A 4 4 4 4 A 4 4 *.*.A 4.{ { { O 4.{ O g.] ] g.g.2 { o ~ ~ - z $ @ I { g.4 *.5 4.0 W @ . Q e b Q Q e e Q Q e e ",
+"|.e ,.m e m $ (.m |.m |.Q b Q Q 5.P :.; J b Q |.Q ) _.,.b e e J Q Q b e Q Q Q e ; o j $ Q = n o -.0.6 +...+.P R P P 8 F F :.6 :.F F :.~.7 A 5 { 7 4 5 5 5 4 4 5 A 4.A 4.{ g.{ 4.{ O { 5 A g.h.O 5 2 4. .$ $ - $ % . i { { *.A 4.F % ~ ~ ' _.e Q e |.b Q e e e ",
+"Q ,.|.|.b J m Q b b m b b |.|.@ ..F ..v Q |.|._.z o ; Q e y y e Q b b Q Q Q Q Q ' I o 3 . _. .n H o ..P P R P F P +.+.+.+.F F 6 6 6 :.:.~.4 5 4.4 4 5 5 5 4.4 4 *.A 4.{ 4.{ { { g.{ A ~.~.4.] g.O g.g.4.H + ' , . N -  .p g.4.4.$ ~ D > @ y Q Q e e e Q Q e e ",
+"|.|.b (.x y J b |.J b b m Q (. .8 ..3.y J , W H :.P a ,.J Q ,.b b Q b Q e Q |.e e $ 3 l D Q . E ..H H 0.:.8 o +.8 8 8 F P F :.F :.:.6 ~.9 7 4 5 5 A 4 4 5 5 5 5 *.A 5 4.4.4.{ g.{ *.~.F 0.9 g.h.=.O =.^ 4.3 $ $ $ % $ @ D p A k .  .{ j z @ a c c e e e Q e e ",
+"J |.x = y |.J J m ) J J b |., 0.H R E 5.o P n P F H |.e ,.e Q e J Q Q Q Q Q |.e e ,.- R o @ 7.. ..R o o F :.n R R 0.0.+.8 F :.F F F :.~.~.~.4 5 5 5 4 5 4 A 4 A 7 A 5 4.{ { { { *.F F F :.*.{ g.g.h.O { g.g.0., % ~ ~ a @ k  .. D p ` g $ @ $ a a J Q e e e Q ",
+"J J @ a |.|.J b J y m m |.) 3 j +.F 0.R F :.:.:.n D |.Q [.e b ) J Q |.b Q Q |.Q Q e ) - F H {.Q = o R 3 H F ~.6 8 P 0.8 +.F F :.:.:.6 :.~.*.7 *.4 5 { 5 5 4 4 5 5 4 4 5 { O 5 A :.0.0.:.:.p g.g.O ^ ^ 4 A 2 { P x % ~ + ~ . . - 9 { *.! K v N @ $ @ ) Q e e b ",
+"_.$ x |.|.) J b b m J |.|.= F 0.R F F 8 H i H 0.P % 7.Q |.|.$ d y Q Q Q e Q |.e e Q e . H P D b 7.= P P H o F :.8 8 8 8 0.F F :.6 F ~.~.~.*.*.4 7 5 { { 5 4 4 4 5 5 5 5 { { A 6 0.R n F l A ` g.{ g.h.g.{ { 1.{ i % ' ~ z a v ! { O o % @ $ N @ v $ $ m e e b ",
+"$ $ y |.J ) b |.b b {.Q y 3 8 H F o D W x (. .o H # |.e [.; n P y b Q b e e Q e Q |.e |.~ H n = 7.J w R o o R ..:.F F 8 8 8 F F F :.:.~.*.7 4 4 *.4 5 { { 5 A 7 5 7 5 5 { 4 :.0.F 0.0.n :.4.] ` g.O g.h.g.4.4.] 4. .# ~ ~ $ z ~ o 0.- @ @ v @ v @ ].i z Q e Q ",
+", b Q J [.{.m m J J J Q # 0.R i - @ J ) |.J 3 8 H b Q @ i n 8 P . b Q ,.e e |.e |.e b e Q  .R R - b ' 3 ..H o o :.F F +.F F F 6 F 6 :.~.9 *.*.4 4 4 7 A 5 { 5 7 7 4 5 5 5 7 0...0.0.F 0.j { ] { g.g.g.g.g.g.{ { g.A i + ~ @ . ~ ' W @ a $ $ $ @ $ h g k _.e Q ",
+"b b ,.b b {.{.{.m |.|.J ' ' b b e J . |.e + R ..D $ i n n o o +.x ,.,.e $ > e e Q e Q e e J h j n D b |.D R 3 o H 6 9 F ..P :.:.6 :.6 ~.7 7 7 7 4 5 4 7 5 5 { 5 4 7 5 7 6 P 0.F R 0.R o F A { { 1.{ 1.g.g.g.{ { O P - @ . @ % @ ~ @ ~ $ $ @ @ @ h f d d k ' e ",
+"b b b {.b m J J m |.|.b m b |.b J a # b |.W 0.H ..3 0.F o n 0.+.$ Q Q . $.o @ e Q Q e Q b e c k n o ; Q 7.; 8 0.E 0.:.F +.F F +.6 G 6 ~.7 7 4 7 7 7 5 4 0 5 5 6.5 4 7 6 0.+.P P 0.F F 8 F 4 { { g.{ g.g.1.5 g.g.0.~ x 0.G % ' z % @ a @ $ @ $ N f d f d o ! c ",
+",.{.{.{.{.{.J {.{.|.Q b b b b ) W , ) e e 3 0...H ..G d ; H 0.0.a |.) $.g n  .) e b Q Q Q e e _. .0.H & b e + n ..F :.9 ~.:.:.F 6 :.~.~.~.4 7 4 4 7 5 5 7 7 4 O 5 7 F P +.8 F 0.8 8 0.0.0.9 { h.5 O g.g.5 ] g.7 + , I 0 { I ~ ' $ @ @ $ v a N h R g f f R o - ",
+"b b b {.b b b {.b b b b b b ) v $ (.|.Q _.o o ..F R i + |.> R 0.' ) > j o d n > e e Q b Q e b e _.k P H W {.7.' :.F F :.7 ~.:.F 6 6 6 ~.~.7 7 7 7 4 5 5 5 7 5 5 *.:.P R P 8 P R P R R 8 R F *.{ ` O 4 { h.] n $ = n { 2 A D @ @ ~ @ @ ~ a v ! d d d o d f o f ",
+"{.{.{.b {.{.{.b b b {.J J J (.+ _.J {.b . n d R H ; ) e Q  .F n & $ o P I o H I # e e b Q e e Q e ) D j n i @ |., i F *.9 6 F 6 :.:.~.~.~.*.*.4 4 4 4 5 5 { 4 7 P +.8 P P P 8 8 R 8 F j F F j ~.{ g.g.{ *.i , ; p ` { 7 $.@ . % @ $ @ v ~ ].k g $.f o d k $.g ",
+"{.b {.b b b b b b {.J [.J {.[.) _.J ,.Q ; G H W ) m Q |.J I 8 R E H j k N @.H n I , Q e Q Q e Q Q e J ! o P H i b (.; 3 P 6 :.6 6 :.:.~.~.7 *.7 4 4 4 7 4 5 ~.F H R 8 F 8 8 8 8 8 j F P P j G G *.1.~.D , , 3 A ` =.n - @ ~ % @ $ @ @ $ ! $.f d f $.f o f I d ",
+"b {.J {.b b b b J J b J J b m _._.,.,.J $.I - b |.,.,.,.7.h R P 8 P d ' Q , o 0...o z b e b Q Q e _.Q e , P j j H = b b % ..:.8 :.:.:.~.9 *.*.A *.4 *.4 *.~.F ..o o R 8 8 P 8 P n 8 P P j 9 G F n  .% + D 9 ` O *.I $ ~ @ . ~ ~ ~ @ @ ].$.d d $.g $.$.d o f f ",
+"J {.{.{.b b b b J b |.J _.J J J _.,._._.> J |.Q {.{.,.J ,.k R R P P - Q 7.$ 0.5.o ..H z e e Q Q ,.e e b {.+  .n A 9  .' Q y w ..F :.:.~.9 *.*.A *.*.*.A *.F ..o ..R o R 8 P F 8 n P j :.l 9 o 3.v |.# F { { { 0 i z . $ $ ~ % a a @ - $.g d f $.o d f f f f d ",
+"_.J b b {.{.b J b b J b b J b J b b ,.b ,.J |.|.J ) Q Q Q D n n *.W ,.Q Q b ..o ..E n k Q e m e Q e Q J m Q ) D p j F P D ) |.(.- H 9 *.~.:.~.9 *.A A *.j R R P o o o R n F 8 8 j F :.l n ; (.,._.= o 7 ` =.G W ~ % , % ~ ~ $ $ @ ].$.g d f f d f f f f f f f ",
+"b {.{.J J b {.J m b J m b J b J b b ,.b ,.J J J J b ,._.,.> P :.i + Q e 7.Q i o o R H N 7.e Q e e Q b {.b m ) . ; I :.9 G H = ' |.) ,  .0.9 A 4.A A A ~.:.0.R R H o n j :.j P P P d D $ _.,.' = o P l G P I D % + ~ ~ $ % ~ @ . ].i f d f f f d f f I f I f f ",
+"7.Q J [.[.J b b b b b b J J J J J {.{.,.J _.) x ,.J ) _.7.i 0.D ) {.Q e e e $ ..H n z Q Q 7.e Q e ,.m b m c _.Q |.@ > k o A 7 H  .= . x + $ W  .0...d H H H H H H o o o E  .D > ' _.J ' z  .P l p l d ! @ y K ~ ~ ~ % % ~ $ z ! f f d d f f d o f f f f f f f ",
+"7.Q ,.J _.[.[.b b b J b J J J J b b {.{.b [.) ' _.) J |.Q D D b |.b {.Q e e ) o R  .) 7.7.7.7.|.J Q ,._._.J _.m |.b J ) + i j p G :.F 0.H W , @ ) b |.Q |.b b ,.Q ,.,.,.,.b {.[.z @.n j j l l l k z . J |.Q _.@ N $ @ . @ ! I n n R g d f f f o I $.f $.$.f f ",
+"Q 7.Q |.J ) [.b m m b m b m J J b b J J J {._.(.@ ) |.,.[.. _.Q b J J e Q e Q $.o @ Q 7.e 7.|.,.[.|.m ) J b _._.) J ,.b {.c ~ W j G p 7 G ~.9 7 D W , $ # @ ' (.(.. # * >  .o j G j j j 9 P i ~ ' ) J J J J J J $ ~ K K - I P P P n o o o d f $.$.f $.f f I I ",
+",.7.e Q ,._._.{.{.J b b b b J J b b {.J [.{.b J ' a ' b |.|.|.b J J b e e Q Q ; i b e Q e e [.J |.[.' c m b m Q _.c _.c J {.J _.' , H :.A { *.:.F F P 8 0.8 8 n o R P j j G j j j l l f - a _.c J c ) c _.{.{.,.c @ z > $.o n o g o o f f o f $.f f I f $.$.f ",
+",.Q 7.Q Q ,.[.) ) J b b b b b b J J J m [.J J b J @ @ [.e b _.J [._.Q e e e e v . e e Q e ,.) b b . . [.,.J m Q b b J b _.y y _.J ) ' @ - i d o n n F P P 0.n n n P j j :.P o H > z . _._.c y J y y c J b Q b c Q ' h d g I I n g o f f f f f f $.$.$.$.f f $.",
+"Q b Q Q Q e b ) [.[.J b b b b J _.J J m [.) J m J b x . m b _.J ) _.Q Q e e e J e Q e e Q J J J (.+ x [.[._.J _._.m m J c c J _.) m _.(.) b b b + ~ ; W ! ; ! D ! ; ; ! - N . c m ,.b J c ) y c c c c c c b b J b J $ $.n d I d n g f $.$.$.f f f f f $.$.f f ",
+"Q Q Q Q Q ,.Q Q ) (.[.b b b m J J J J b m m [.J J b b ) ) _.J J [.[._.Q e Q |.Q e e Q ,.b ,._.' a y ) [.) ) ) [.m m {._.c y ) c c ) ) _.m b b {.|.,.,.|.|.,.|.Q 7.Q b b m J J _.J J c c ) c c _.y c c J J m J J J _.e {.i o $.$.$.d g f k $.$.$.$.k k $.$.$.I ",
+"Q Q Q Q Q Q Q Q [.) ) [.b b b J J b J J {.J [.[.b [._.b ) v x b ) J ,.{.,.e e ,.e ,.[.m {.[.' . ) J J J ) ) (.' ' ' ) J m J J ) y c J b b ,.b b b Q ,.b b b b ,.Q b m J ) c c _._._.c c c c c c c _._.c c c c c c ,.b b y ! g f f $.$.$.I $.$.d $.$.$.$.$.$.f ",
+"Q Q Q Q Q |.Q |.,.[.(.(.[.b b J b m J J J J m m b ) [.b m @ V y b J J |.|.b b m |.m _.{.J ) ' ' J J J ) (.' ' ' ' . . ' _._._._.y c b ,.|.b b m ,.b b b b b ,.b b b J y c ) c J c c J J J {.c c c ) y ' K y y c c Q J Q e K $.d I k i f k $ $ $.f $.$.$.$.$.$.",
+"Q Q Q Q Q ,.Q Q Q ,.J (.) ) {.b b b b J J {.{.b ) ) J J {._.x $ _.J _.|.7._.. ,.b |.|.|.J ' (.J J _._.) ) ) ) ' ' ' . . K ' K y c m Q 7.Q b J b b b m m m b b b Q b b c c J _.b J J J J c c c y K a a a . y c J J J b Q Q Q a i f f $.k $ e e ! $.$.$.$.$.$.$.",
+"Q Q Q Q Q Q Q Q Q Q |.J (.(.[.b b b b b J J m m ) b J ) m |._.@ % (.J b |.|.m [.{.|.Q J ) _.b b b [.(.y ) ) ) ) ' ) ) ' + ~ @ @ b b Q Q ,.m m m ,.b b J J J ,.|.b b {.{.J c J c b {.c c y K @ @ $ ~ v . ' y c J J J b ,.c e e a k I k $ Q e y i $.k k k k k $.",
+"Q Q Q Q Q Q |.Q |.Q Q |.) ' (.J J J m b b J J {.m m J _._.[.J J v # _.|.J {.b ) b b {.) ) J b J b J [.) ) ) ) (.. ' ' . @ ~ K _.e e Q Q b b J J m m J J J J b b b b c y y ' y ' K K a a @ @ $ $ @ ~ a K ' ) ) c c J b Q Q Q Q e K z $ e e a i $.$.k k k k k $.",
+"Q Q Q Q Q Q Q |.,.Q 7.Q |.[.) ' ) _.b b b b J J {.{.J J [._.b b b a @ b Q ) x ) b J y ) {.|.b ) b {.) ) ) ) ' ) ' ' . @ ~ K b e e e Q b b m J J J c c y ) c _.J Q {.c a @ v a K @ @ @ @ @ @ a a @ a a K y y c c _.J m b e Q b e e b b e e % $.i i k i i k k k "};
Index: /branches/gui/src/lib/gui/qt/gui_audio.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_audio.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_audio.cc	(revision 8140)
@@ -0,0 +1,100 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_audio.h"
+
+#include <QtGui/QLayout>
+#include <QtGui/QLCDNumber>
+#include "debug.h"
+#include "globals.h"
+
+#include "qt_gui_elements.h"
+
+namespace OrxGui
+{
+  /**
+   *  Creates the Audio-Option-Frame
+  */
+  GuiAudio::GuiAudio(OrxGui::Gui* gui)
+      : Element(CONFIG_SECTION_AUDIO, gui), QGroupBox()
+  {
+    QGridLayout* layout = new QGridLayout(this);
+
+    {
+      QtGuiCheckBox* disableAudio = new QtGuiCheckBox(CONFIG_NAME_DISABLE_AUDIO, this, false);
+      layout->addWidget(disableAudio, 0, 0);
+
+
+      QLabel* soundCardLabel = new QLabel("Soundcard");
+      layout->addWidget(soundCardLabel, 1,0);
+      QtGuiComboBox* soundCard = new QtGuiComboBox(CONFIG_NAME_SOUNDCARD, this, "");
+      layout->addWidget(soundCard, 1, 1, 1, 2);
+      soundCard->addItem("Not supportet yet");
+
+
+      QtGuiSlider* channels = new QtGuiSlider(CONFIG_NAME_AUDIO_CHANNELS, this, 16, Qt::Vertical);
+      layout->addWidget(channels, 1, 3, 3, 1);
+      QLabel* channelsLabel = new QLabel("Channels");
+      layout->addWidget(channelsLabel, 5,3);
+      QLCDNumber* channelNumber = new QLCDNumber();
+      connect(channels, SIGNAL(valueChanged(int)), channelNumber, SLOT(display(int)));
+      layout->addWidget(channelNumber, 4, 3);
+
+
+      QLabel* musicLabel = new QLabel("Music Volume");
+      layout->addWidget(musicLabel, 2, 0);
+      QtGuiSlider* musicVolume = new QtGuiSlider(CONFIG_NAME_MUSIC_VOLUME, this, 80);
+      layout->addWidget(musicVolume, 3, 0, 1, 2);
+
+      QLCDNumber* musicNumber = new QLCDNumber();
+      connect(musicVolume, SIGNAL(valueChanged(int)), musicNumber, SLOT(display(int)));
+      layout->addWidget(musicNumber, 2, 1);
+
+
+      QLabel* effectsLabel = new QLabel("Effects Volume");
+      layout->addWidget(effectsLabel, 4, 0);
+      QtGuiSlider* effectVolume = new QtGuiSlider(CONFIG_NAME_EFFECTS_VOLUME, this, 80);
+      layout->addWidget(effectVolume, 5, 0, 1, 2);
+
+      QLCDNumber* effectsNumber = new QLCDNumber();
+      connect(effectVolume, SIGNAL(valueChanged(int)), effectsNumber, SLOT(display(int)));
+      layout->addWidget(effectsNumber, 4, 1);
+
+    }
+
+
+  }
+
+  /**
+   *  Destructs the Audio-stuff
+  */
+  GuiAudio::~GuiAudio()
+  {
+    // nothing to do here.
+  }
+
+
+}
Index: /branches/gui/src/lib/gui/qt/gui_audio.h
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_audio.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_audio.h	(revision 8140)
@@ -0,0 +1,25 @@
+/*!
+  \file gui_audio.h
+  \brief File that holds the class that creates the Audio-Options.
+*/
+#ifndef _GUI_AUDIO_H
+#define _GUI_AUDIO_H
+
+#include "../gui_element.h"
+#include <vector>
+#include <string>
+#include <QtGui/QGroupBox>
+
+namespace OrxGui
+{
+  //! Class that creates the Audio-Options.
+  class GuiAudio : public OrxGui::Element, public QGroupBox
+  {
+  public:
+    GuiAudio(OrxGui::Gui* gui);
+    virtual ~GuiAudio();
+
+  };
+}
+
+#endif /* _GUI_AUDIO_H */
Index: /branches/gui/src/lib/gui/qt/gui_control.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_control.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_control.cc	(revision 8140)
@@ -0,0 +1,299 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_control.h"
+
+#include <QtGui/QLayout>
+#include <QtCore/QEvent>
+#include <QtGui/QKeyEvent>
+#include <QtGui/QMouseEvent>
+
+#include "sdlincl.h"
+#include "lib/event/key_names.h"
+
+#include "globals.h"
+#include "debug.h"
+#include "qt_gui_elements.h"
+
+#include "lib/event/key_mapper.h"
+#include "lib/event/key_names.h"
+
+namespace OrxGui
+{
+  /**
+   *  Creates the Control-Option-Frame
+  */
+  GuiControl::GuiControl(OrxGui::Gui* gui)
+      : Element(CONFIG_SECTION_CONTROL, gui), QGroupBox()
+  {
+    QGridLayout* layout = new QGridLayout(this);
+
+    {
+      //QLabel* keyLabel = new QLabel;
+
+      const KeyMapper::KeyMapping* map = KeyMapper::getKeyMapping();
+      unsigned int i = 0;
+      while(!map->pName.empty())
+      {
+        QLabel* label = new QLabel(QString().fromStdString(map->pName));
+        layout->addWidget(label, i, 0);
+
+        GuiControlInput* input = new GuiControlInput(map->pName, this, EVToKeyName(map->defaultValue));
+        layout->addWidget(input, i, 1);
+
+        ++map;
+        ++i;
+      }
+    }
+
+
+  }
+
+  /**
+   *  Destructs the Control-stuff
+  */
+  GuiControl::~GuiControl()
+  {
+    // nothing to do here.
+  }
+
+  GuiControlInput::GuiControlInput(const std::string& name, SaveableGroup* group, const std::string& defaultValue)
+      : QPushButton(QString().fromStdString(name)), Saveable(name, group, defaultValue)
+  {
+    this->bListening = false;
+
+    connect(this, SIGNAL(released()), this, SLOT(listen()));
+
+  }
+
+  void GuiControlInput::load()
+  {
+    Saveable::load();
+    this->setText(QString().fromStdString(this->value().getString()));
+  }
+
+  void GuiControlInput::save()
+  {
+    this->value() = this->text().toStdString();
+    Saveable::save();
+  }
+
+
+  bool GuiControlInput::event ( QEvent * e )
+  {
+    if (this->bListening && (e->type() == QEvent::KeyPress || e->type() == QEvent::MouseButtonPress))
+    {
+      this->bListening = false;
+      this->releaseKeyboard();
+      this->releaseMouse();
+      /// KEY IS PRESSED:
+      if (e->type() == QEvent::KeyPress)
+      {
+        QKeyEvent* event = dynamic_cast<QKeyEvent*>(e);
+
+        int ev = QtKToSDLK(event->key());
+        if (ev != -1)
+        {
+          this->setText(QString().fromStdString(SDLKToKeyname(ev)));
+        }
+        return true;
+      }
+      /// MOUSE BUTTON PRESSED:
+      if (e->type() == QEvent::MouseButtonPress)
+      {
+        QMouseEvent* event = dynamic_cast<QMouseEvent*>(e);
+        if (event->button() != Qt::NoButton)
+        {
+          this->setText(QString().fromStdString(QtKToString(event->button())));
+        }
+
+      }
+
+    }
+
+    return QPushButton::event(e);
+  }
+
+  void GuiControlInput::listen()
+  {
+    this->bListening = true;
+    this->grabKeyboard();
+    this->grabMouse();
+  }
+
+  int GuiControlInput::QtKToSDLK(int key)
+  {
+
+    switch(key)
+    {
+      case Qt::Key_Backspace: return SDLK_BACKSPACE;
+      case Qt::Key_Tab: return SDLK_TAB;
+      case Qt::Key_Clear: return SDLK_CLEAR;
+      case Qt::Key_Return: return SDLK_RETURN;
+      case Qt::Key_Escape: return SDLK_ESCAPE;
+      case Qt::Key_Space: return SDLK_SPACE;
+      case Qt::Key_exclamdown: return SDLK_EXCLAIM;
+      case Qt::Key_QuoteDbl: return SDLK_QUOTEDBL;
+        //case Qt::Key_Hash: return SDLK_HASH;
+      case Qt::Key_Pause: return SDLK_PAUSE;
+      case Qt::Key_Dollar: return SDLK_DOLLAR;
+      case Qt::Key_Ampersand: return SDLK_AMPERSAND;
+      case Qt::Key_QuoteLeft: return SDLK_QUOTE; /// TODO check if correct
+      case Qt::Key_ParenLeft: return SDLK_LEFTPAREN;
+      case Qt::Key_ParenRight: return SDLK_RIGHTPAREN;
+      case Qt::Key_Asterisk: return SDLK_ASTERISK;
+      case Qt::Key_Plus: return SDLK_PLUS;
+      case Qt::Key_Comma: return SDLK_COMMA;
+      case Qt::Key_Minus: return SDLK_MINUS;
+      case Qt::Key_Period: return SDLK_PERIOD;
+      case Qt::Key_Slash: return SDLK_SLASH;
+      case Qt::Key_0: return SDLK_0;
+      case Qt::Key_1: return SDLK_1;
+      case Qt::Key_2: return SDLK_2;
+      case Qt::Key_3: return SDLK_3;
+      case Qt::Key_4: return SDLK_4;
+      case Qt::Key_5: return SDLK_5;
+      case Qt::Key_6: return SDLK_6;
+      case Qt::Key_7: return SDLK_7;
+      case Qt::Key_8: return SDLK_8;
+      case Qt::Key_9: return SDLK_9;
+      case Qt::Key_Colon: return SDLK_COLON;
+      case Qt::Key_Semicolon: return SDLK_SEMICOLON;
+      case Qt::Key_Less: return SDLK_LESS;
+      case Qt::Key_Equal: return SDLK_EQUALS;
+      case Qt::Key_Greater: return SDLK_GREATER;
+      case Qt::Key_Question: return SDLK_QUESTION;
+      case Qt::Key_At: return SDLK_AT;
+      case Qt::Key_BracketLeft: return SDLK_LEFTBRACKET;
+      case Qt::Key_Backslash: return SDLK_BACKSLASH;
+      case Qt::Key_BracketRight: return SDLK_RIGHTBRACKET;
+        ///case Qt::Key_Caret: return SDLK_CARET;
+      case Qt::Key_Underscore: return SDLK_UNDERSCORE;
+        //case Qt::Key_Backquote: return SDLK_BACKQUOTE;
+      case Qt::Key_A: return SDLK_a;
+      case Qt::Key_B: return SDLK_b;
+      case Qt::Key_C: return SDLK_c;
+      case Qt::Key_D: return SDLK_d;
+      case Qt::Key_E: return SDLK_e;
+      case Qt::Key_F: return SDLK_f;
+      case Qt::Key_G: return SDLK_g;
+      case Qt::Key_H: return SDLK_h;
+      case Qt::Key_I: return SDLK_i;
+      case Qt::Key_J: return SDLK_j;
+      case Qt::Key_K: return SDLK_k;
+      case Qt::Key_L: return SDLK_l;
+      case Qt::Key_M: return SDLK_m;
+      case Qt::Key_N: return SDLK_n;
+      case Qt::Key_O: return SDLK_o;
+      case Qt::Key_P: return SDLK_p;
+      case Qt::Key_Q: return SDLK_q;
+      case Qt::Key_R: return SDLK_r;
+      case Qt::Key_S: return SDLK_s;
+      case Qt::Key_T: return SDLK_t;
+      case Qt::Key_U: return SDLK_u;
+      case Qt::Key_V: return SDLK_v;
+      case Qt::Key_W: return SDLK_w;
+      case Qt::Key_X: return SDLK_x;
+      case Qt::Key_Y: return SDLK_y;
+      case Qt::Key_Z: return SDLK_z;
+      case Qt::Key_Delete: return SDLK_DELETE;
+        /*      case Qt::Key_KP0: return SDLK_KP0;
+        case Qt::Key_KP1: return SDLK_KP1;
+        case Qt::Key_KP2: return SDLK_KP2;
+        case Qt::Key_KP3: return SDLK_KP3;
+        case Qt::Key_KP4: return SDLK_KP4;
+        case Qt::Key_KP5: return SDLK_KP5;
+        case Qt::Key_KP6: return SDLK_KP6;
+        case Qt::Key_KP7: return SDLK_KP7;
+        case Qt::Key_KP8: return SDLK_KP8;
+        case Qt::Key_KP9: return SDLK_KP9; */
+        /*      case Qt::Key_KP_Period: return SDLK_KP_PERIOD;
+              case Qt::Key_KP_Divide: return SDLK_KP_DIVIDE;
+              case Qt::Key_KP_Multiply: return SDLK_KP_MULTIPLY;
+              case Qt::Key_KP_Minus: return SDLK_KP_MINUS;
+              case Qt::Key_KP_PLUS: return SDLK_KP_PLUS;
+              case Qt::Key_KP_ENTER: return SDLK_KP_ENTER;
+              case Qt::Key_KP_EQUALS: return SDLK_KP_EQUALS;*/
+      case Qt::Key_Up: return SDLK_UP;
+      case Qt::Key_Down: return SDLK_DOWN;
+      case Qt::Key_Right: return SDLK_RIGHT;
+      case Qt::Key_Left: return SDLK_LEFT;
+      case Qt::Key_Insert: return SDLK_INSERT;
+      case Qt::Key_Home: return SDLK_HOME;
+      case Qt::Key_End: return SDLK_END;
+      case Qt::Key_PageUp: return SDLK_PAGEUP;
+      case Qt::Key_PageDown: return SDLK_PAGEDOWN;
+      case Qt::Key_F1: return SDLK_F1;
+      case Qt::Key_F2: return SDLK_F2;
+      case Qt::Key_F3: return SDLK_F3;
+      case Qt::Key_F4: return SDLK_F4;
+      case Qt::Key_F5: return SDLK_F5;
+      case Qt::Key_F6: return SDLK_F6;
+      case Qt::Key_F7: return SDLK_F7;
+      case Qt::Key_F8: return SDLK_F8;
+      case Qt::Key_F9: return SDLK_F9;
+      case Qt::Key_F10: return SDLK_F10;
+      case Qt::Key_F11: return SDLK_F11;
+      case Qt::Key_F12: return SDLK_F12;
+      case Qt::Key_F13: return SDLK_F13;
+      case Qt::Key_F14: return SDLK_F14;
+      case Qt::Key_F15: return SDLK_F15;
+      case Qt::Key_NumLock: return SDLK_NUMLOCK;
+      case Qt::Key_CapsLock: return SDLK_CAPSLOCK;
+      case Qt::Key_ScrollLock: return SDLK_SCROLLOCK;
+        ///case Qt::Key_RSHIFT: return SDLK_RSHIFT;
+      case Qt::Key_Shift: return SDLK_LSHIFT;
+        ///case Qt::Key_RCTRL: return SDLK_RCTRL;
+      case Qt::Key_Control: return SDLK_LCTRL;
+        ///case Qt::Key_RALT: return SDLK_RALT;
+      case Qt::Key_Alt: return SDLK_LALT;
+        //case Qt::Key_RMETA: return SDLK_RMETA;
+      case Qt::Key_Meta: return SDLK_LMETA;
+      case Qt::Key_Super_L: return SDLK_LSUPER;
+      case Qt::Key_Super_R: return SDLK_RSUPER;
+      case Qt::Key_Mode_switch: return SDLK_MODE;
+      case Qt::Key_Help: return SDLK_HELP;
+      case Qt::Key_Print: return SDLK_PRINT;
+      case Qt::Key_SysReq: return SDLK_SYSREQ;
+        ///case Qt::Key_Break: return SDLK_BREAK;
+        ///case Qt::Key_Menu: return SDLK_MENU;
+        ///case Qt::Key_Power: return SDLK_POWER;
+        ///case Qt::Key_Euro: return SDLK_EURO;
+        return -1;
+    }
+  }
+
+  std::string GuiControlInput::QtKToString(int button)
+  {
+    if( button == Qt::LeftButton) return "BUTTON_LEFT";
+    if( button == Qt::MidButton) return "BUTTON_MIDDLE";
+    if( button == Qt::RightButton) return "BUTTON_RIGHT";
+    //if( button == Qt::) return "BUTTON_WHEELUP";
+    //if( button == EV_MOUSE_BUTTON_WHEELDOWN) return "BUTTON_WHEELDOWN";
+    return "UNKNOWN";
+  }
+
+}
Index: /branches/gui/src/lib/gui/qt/gui_control.h
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_control.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_control.h	(revision 8140)
@@ -0,0 +1,55 @@
+/*!
+  \file gui_control.h
+  \brief File that holds the class that creates the Control-Options.
+*/
+#ifndef _GUI_CONTROL_H
+#define _GUI_CONTROL_H
+
+#include "../gui_element.h"
+#include <vector>
+#include <string>
+#include <QtGui/QGroupBox>
+#include <QtGui/QPushButton>
+#include "../gui_saveable.h"
+
+namespace OrxGui
+{
+  //! Class that creates the Control-Options.
+  class GuiControl : public OrxGui::Element, public QGroupBox
+  {
+  public:
+    GuiControl(OrxGui::Gui* gui);
+    virtual ~GuiControl();
+
+  private:
+  };
+
+  class GuiControlInput : public QPushButton, public OrxGui::Saveable
+  {
+    Q_OBJECT
+  public:
+    GuiControlInput(const std::string& name, SaveableGroup* group, const std::string& defaultValue);
+
+    virtual void load();
+    virtual void save();
+
+
+    virtual bool event(QEvent* e);
+
+    static int QtKToSDLK(int key);
+    static std::string QtKToString(int button);
+
+    public slots:
+    void listen();
+  signals:
+    //    void optionChanged();
+
+    private:
+      bool bListening;
+  };
+
+
+
+}
+
+#endif /* _GUI_CONTROL_H */
Index: /branches/gui/src/lib/gui/qt/gui_general.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_general.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_general.cc	(revision 8140)
@@ -0,0 +1,106 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_general.h"
+
+#include <QtGui/QLayout>
+#include <QtGui/QFileDialog>
+
+#include "debug.h"
+#include "globals.h"
+
+#include "qt_gui_elements.h"
+
+namespace OrxGui
+{
+  /**
+   *  Creates the General-Option-Frame
+  */
+  GuiGeneral::GuiGeneral(OrxGui::Gui* gui)
+      : Element(CONFIG_SECTION_GENERAL, gui), QGroupBox()
+  {
+    QGridLayout* layout = new QGridLayout(this);
+    {
+      QLabel* dataDirLabel = new QLabel("DataDirectory");
+      layout->addWidget(dataDirLabel, 0,0);
+      this->dataDir = new QtGuiInputLine(CONFIG_NAME_DATADIR, this, DEFAULT_DATA_DIR);
+      layout->addWidget(dataDir, 0, 1, 1, 2);
+      QPushButton* dataFileDialogButton = new QPushButton("browse");
+      layout->addWidget(dataFileDialogButton, 0, 3, 1, 1);
+      connect(dataFileDialogButton, SIGNAL(released()), this, SLOT(openDataFileDialog()));
+
+
+      QLabel* debugLabel = new QLabel("debug-mode");
+      layout->addWidget(debugLabel, 1,0);
+      QtGuiComboBox* debug = new QtGuiComboBox(CONFIG_NAME_DEBUG_LEVEL, this, "3 - information");
+      layout->addWidget(debug, 1, 1, 1, 2);
+
+      debug->addItem("0 - minimal");
+#if DEBUG_LEVEL >=1
+      debug->addItem("1 - errors");
+#endif
+#if DEBUG_LEVEL >=2
+      debug->addItem("2 - warnings");
+#endif
+#if DEBUG_LEVEL >=3
+      debug->addItem("3 - information");
+#endif
+#if DEBUG_LEVEL >=4
+      debug->addItem("4 - debug");
+#endif
+#if DEBUG_LEVEL >=5
+      debug->addItem("5 - extremely debug");
+#endif
+    }
+  }
+
+  /**
+   *  Destructs the General-stuff
+  */
+  GuiGeneral::~GuiGeneral()
+  {
+    // nothing to do here.
+  }
+
+  void GuiGeneral::openDataFileDialog()
+  {
+    QString browsePath = this->dataDir->text();
+    if (browsePath.isEmpty())
+      browsePath = ".";
+
+    QString s = QFileDialog::getOpenFileName(
+                  this,
+                  "Choose the ORXONOX DATA DIRECTORY",
+                  browsePath,
+                  "ORXONOX DATA INDEX (" DEFAULT_DATA_DIR_CHECKFILE ")" );
+
+    s.remove("data.oxd");
+    if (!s.isNull())
+      this->dataDir->setText(s);
+  }
+
+
+}
Index: /branches/gui/src/lib/gui/qt/gui_general.h
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_general.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_general.h	(revision 8140)
@@ -0,0 +1,35 @@
+/*!
+  \file gui_general.h
+  \brief File that holds the class that creates the General-Options.
+*/
+#ifndef _GUI_GENERAL_H
+#define _GUI_GENERAL_H
+
+#include "../gui_element.h"
+#include <vector>
+#include <string>
+#include <QtGui/QGroupBox>
+
+
+namespace OrxGui
+{
+  class QtGuiInputLine;
+
+  //! Class that creates the Audio-Options.
+  class GuiGeneral : public QGroupBox, public OrxGui::Element
+  {
+    Q_OBJECT
+
+  public:
+    GuiGeneral(OrxGui::Gui* gui);
+    virtual ~GuiGeneral();
+
+  public slots:
+    void openDataFileDialog();
+
+  private:
+    QtGuiInputLine* dataDir;
+  };
+}
+
+#endif /* _GUI_GENERAL_H */
Index: /branches/gui/src/lib/gui/qt/gui_video.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_video.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_video.cc	(revision 8140)
@@ -0,0 +1,161 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_video.h"
+
+#include <QtGui/QLayout>
+#include "globals.h"
+#include "debug.h"
+
+#include "qt_gui_elements.h"
+
+namespace OrxGui
+{
+  /**
+   *  Creates the Video-Option-Frame
+  */
+  GuiVideo::GuiVideo(OrxGui::Gui* gui)
+  : Element(CONFIG_SECTION_VIDEO, gui), QGroupBox()
+  {
+    QGridLayout* layout = new QGridLayout(this);
+
+    {
+      QtGuiCheckBox* fullscreen = new QtGuiCheckBox(CONFIG_NAME_FULLSCREEN, this, false);
+      //fullscreen->setName();
+      layout->addWidget(fullscreen, 0, 0);
+
+      QtGuiCheckBox* wireframe = new QtGuiCheckBox(CONFIG_NAME_WIREFRAME, this, false);
+      layout->addWidget(wireframe, 1, 0);
+
+      {
+        QComboBox* resolution = new QtGuiComboBox(CONFIG_NAME_RESOLUTION, this, "640x480");
+        resolution->setEditable(true);
+        layout->addWidget(resolution, 2, 0);
+        std::vector<QString> resolutions;
+        this->getResolutions(resolutions);
+        for (unsigned int i = 0; i < resolutions.size(); ++i)
+          resolution->addItem(resolutions[i]);
+      }
+
+
+      QGroupBox* advanced = new GuiAdvancedVideo(gui);
+
+
+      layout->addWidget(advanced, 0, 2, 4, 1);
+
+    }
+  }
+
+  /**
+   *  Destructs the Video-stuff
+  */
+  GuiVideo::~GuiVideo()
+  {
+    // nothing to do here.
+  }
+
+  /**
+   *  sets all resolutions to the menu
+   * @param menu the Menu to set The resolutions to.
+  */
+  void GuiVideo::getResolutions(std::vector<QString>& resolutionList)
+  {
+    SDL_Init(SDL_INIT_VIDEO);
+    SDL_Rect **modes;
+    int i;
+    int x = 0,y =0; // check for difference
+    char tmpChar[100];
+
+    /* Get available fullscreen/hardware modes */
+    modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
+
+    /* Check is there are any modes available */
+    if(modes == (SDL_Rect **)0)
+    {
+      PRINTF(2)("No video-modes available!\n");
+      exit(-1);
+    }
+
+    /* Check if our resolution is restricted */
+    if(modes == (SDL_Rect **)-1)
+    {
+      PRINTF(2)("All resolutions available.\n");
+    }
+    else
+    {
+      /* Print valid modes */
+      PRINT(5)("Available Modes\n");
+      for(i = 0; modes[i] ;++i)
+      {
+        if (x != modes[i]->w || y != modes[i]->h)
+        {
+          PRINTF(5)("  %d x %d\n", modes[i]->w, modes[i]->h);
+          sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
+          resolutionList.push_back(QString(tmpChar));
+          x = modes[i]->w; y = modes[i]->h;
+        }
+      }
+    }
+    SDL_QuitSubSystem(SDL_INIT_VIDEO);
+    SDL_Quit();
+  }
+
+
+
+  GuiAdvancedVideo::GuiAdvancedVideo(OrxGui::Gui* gui)
+  : Element(CONFIG_SECTION_VIDEO_ADVANCED ,gui)
+  {
+    {
+      QGridLayout* advLayout = new QGridLayout(this);              //!< Advanced Layout
+      {
+        QtGuiCheckBox* shadows = new QtGuiCheckBox(CONFIG_NAME_SHADOWS, this, true);         //!< CheckBox for shadows
+        advLayout->addWidget(shadows, 0,0);
+        QtGuiCheckBox* fog = new QtGuiCheckBox(CONFIG_NAME_FOG, this, true);                 //!< CheckBox for fog.
+        advLayout->addWidget(fog, 1,0);
+        QtGuiCheckBox* reflections = new QtGuiCheckBox(CONFIG_NAME_REFLECTIONS, this, true);  //!< CheckBox for reflections
+        advLayout->addWidget(reflections, 2, 0);
+        QtGuiCheckBox* textures = new QtGuiCheckBox(CONFIG_NAME_TEXTURES, this, true);       //!< CheckBox for textures
+        advLayout->addWidget(textures, 3, 0);
+          /*
+        Menu* textureDetail;      //!< Menu for the Texture-Detail.
+        Label* modelDetailLabel;  //!< Label for model-detail.
+        Menu* modelDetail;        //!< model-detail.
+        CheckBox* particles;   //!< If the Particles should be enabled
+        Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
+        Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
+        Label* filterMethodLabel; //!< Label for filtering-Method.
+        Menu* filterMethod;       //!< Menu for filtering Method.
+        Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
+          */
+      }
+    }
+  }
+
+  GuiAdvancedVideo::~GuiAdvancedVideo()
+  {
+  }
+
+}
Index: /branches/gui/src/lib/gui/qt/gui_video.h
===================================================================
--- /branches/gui/src/lib/gui/qt/gui_video.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/gui_video.h	(revision 8140)
@@ -0,0 +1,34 @@
+/*!
+  \file gui_video.h
+  \brief File that holds the class that creates the Video-Options.
+*/
+#ifndef _GUI_VIDEO_H
+#define _GUI_VIDEO_H
+
+#include "../gui_element.h"
+#include <vector>
+#include <string>
+#include <QtGui/QGroupBox>
+
+namespace OrxGui
+{
+  //! Class that creates the Video-Options.
+  class GuiVideo : public OrxGui::Element, public QGroupBox
+  {
+  public:
+    GuiVideo(OrxGui::Gui* gui);
+    virtual ~GuiVideo();
+
+  private:
+    void getResolutions(std::vector<QString>& resolutionList);
+  };
+
+  class GuiAdvancedVideo : public OrxGui::Element, public QGroupBox
+  {
+    public:
+      GuiAdvancedVideo(OrxGui::Gui* gui);
+      virtual ~GuiAdvancedVideo();
+  };
+}
+
+#endif /* _GUI_VIDEO_H */
Index: /branches/gui/src/lib/gui/qt/q_image_widget.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/q_image_widget.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/q_image_widget.cc	(revision 8140)
@@ -0,0 +1,67 @@
+/***************************************************************************
+                          QImageWidget.cpp  -  description
+                             -------------------
+    begin                : Fri Nov 17 2000
+    copyright            : (C) 2000 by Rainer Lehrig
+    email                : lehrig@t-online.de
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+#include "q_image_widget.h"
+#include <QtGui/QPainter>
+#include <QtGui/QPaintEvent>
+
+QImageWidget::QImageWidget( QWidget *parent)
+             : QWidget( parent)
+{
+  image = QImage(); // construct a null image
+  x = y = w = h = 0;
+}
+
+QImageWidget::~QImageWidget()
+{
+}
+
+void QImageWidget::setImage(const QImage& newimage)
+{
+  this->image = newimage.copy();
+  w = this->image.width();
+  h = this->image.height();
+  this->setMinimumSize(w, h);
+}
+
+void QImageWidget::paintEvent( QPaintEvent *e )
+{
+  if( !image.isNull() )
+  {
+    QPainter p;
+    p.begin(this);
+    p.setClipRect(e->rect());
+    p.drawLine(0,0,100,100);
+    p.drawImage(QPoint(0,0), this->image);
+    p.end();
+    /*
+    QPainter painter(this);
+    painter.setClipRect(e->rect());
+    painter.drawImage(QPoint(0,0), image);
+    */
+  }
+}
+
+void QImageWidget::setGeometry(int nx, int ny, int nw, int nh)
+{
+  x = nx;
+  y = ny;
+  w = nw;
+  h = nh;
+  move(x,y);
+  resize(w,h);
+  repaint(0,0,w,h);
+}
Index: /branches/gui/src/lib/gui/qt/q_image_widget.h
===================================================================
--- /branches/gui/src/lib/gui/qt/q_image_widget.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/q_image_widget.h	(revision 8140)
@@ -0,0 +1,42 @@
+/***************************************************************************
+                          QImageWidget.h  -  description
+                             -------------------
+    begin                : Fri Nov 17 2000
+    copyright            : (C) 2000 by Rainer Lehrig
+    email                : lehrig@t-online.de
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+#ifndef _QIMAGE_WIDGET_H_
+#define _QIMAGE_WIDGET_H_
+
+#include <QtGui/QWidget>
+#include <QtGui/QImage>
+
+class QImageWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    QImageWidget(QWidget *parent=0);
+    ~QImageWidget();
+    virtual void         setGeometry(int nx, int ny, int nw, int nh);
+    void	          setImage(const QImage& newimage);
+
+protected:
+    virtual void paintEvent( QPaintEvent * );
+
+private:
+    int		  conversion_flags;
+    int           x,y,w,h;
+    QImage	  image;			// the loaded image
+};
+
+
+#endif
Index: /branches/gui/src/lib/gui/qt/qt_gui.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/qt_gui.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/qt_gui.cc	(revision 8140)
@@ -0,0 +1,117 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "qt_gui.h"
+
+#include <QtGui/QApplication>
+#include <QtGui/QToolBox>
+#include <QtGui/QGridLayout>
+
+#include "qt_gui_elements.h"
+#include "q_image_widget.h"
+
+#include "gui_general.h"
+#include "gui_video.h"
+#include "gui_audio.h"
+#include "gui_control.h"
+
+#include "banner.xpm"
+
+namespace OrxGui
+{
+  QtGui::QtGui(int argc, char** argv)
+  : QApplication(argc, argv)
+  {
+
+    this->mainWindow = new QMainWindow();
+    this->mainWindow->setMinimumSize(500, 200);
+
+    QGroupBox* groupBox = new QGroupBox(this->mainWindow);
+    QGridLayout* mainLayout = new QGridLayout(groupBox);
+    {
+      QImageWidget* bannerWidget = new QImageWidget();
+      QImage bannerImage(banner_xpm);
+      bannerImage.save("test.bmp", "bmp");
+      bannerWidget->setImage(bannerImage);
+      mainLayout->addWidget(bannerWidget, 0,0, 3, 1);
+
+
+      QToolBox* toolBox = new QToolBox(groupBox);
+      {
+        toolBox->addItem(new GuiGeneral(this), "General");
+        toolBox->addItem(new GuiVideo(this), "Video");
+        toolBox->addItem(new GuiAudio(this), "Audio");
+        toolBox->addItem(new GuiControl(this), "Control");
+      }
+      mainLayout->addWidget(toolBox,1,1, 1, 3);
+
+
+      QPushButton* start = new QPushButton("start");
+      connect(start, SIGNAL(released()), this, SLOT(startApp()));
+      mainLayout->addWidget(start, 2,2);
+
+      QPushButton* quit = new QPushButton("quit");
+      connect(quit, SIGNAL(released()), this, SLOT(quitApp()));
+      mainLayout->addWidget(quit, 2,3);
+
+    }
+
+    connect(this->mainWindow, SIGNAL(destroyed()), this, SLOT(quitApp()));
+    this->mainWindow->setCentralWidget(groupBox);
+    this->mainWindow->show();
+
+    this->loadAll();
+    this->exec();
+    this->saveAll();
+
+  }
+
+  QtGui::~QtGui()
+  {
+    delete this->mainWindow;
+  }
+
+  void QtGui::startGui()
+  {
+  }
+
+  void QtGui::stopGui()
+  {}
+
+  void QtGui::suspend()
+  {}
+
+    //! Update the Gui.
+  void QtGui::update()
+  {
+    this->processEvents();
+  }
+
+
+  void QtGui::quitApp()
+  {
+    Gui::quitEvent();
+    this->quit();
+  }
+
+  void QtGui::startApp()
+  {
+    Gui::startEvent();
+    this->quit();
+  }
+
+}
Index: /branches/gui/src/lib/gui/qt/qt_gui.h
===================================================================
--- /branches/gui/src/lib/gui/qt/qt_gui.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/qt_gui.h	(revision 8140)
@@ -0,0 +1,42 @@
+/*!
+ * @file qt_gui.h
+ * @brief Definition of ...
+*/
+
+#ifndef __QT_GUI_H
+#define __QT_GUI_H
+
+#include "../gui.h"
+#include "../gui_element.h"
+#include <QtGui/QApplication>
+#include <QtGui/QMainWindow>
+
+namespace OrxGui
+{
+  class QtGui : public QApplication, public OrxGui::Gui
+  {
+    Q_OBJECT
+    public:
+      QtGui(int argc, char** argv);
+      virtual ~QtGui();
+
+    //! Start the Gui
+      virtual void startGui();
+    //! Stop the gui
+      virtual void stopGui();
+    //! Suspend the Gui.
+      virtual void suspend();
+    //! Update the Gui.
+      virtual void update();
+
+    public slots:
+      void quitApp();
+      void startApp();
+
+    private:
+      QMainWindow*              mainWindow;
+      std::list<Element*>       elements;       //!< A List of Elements within the QTGui
+  };
+}
+
+#endif /* __QT_GUI_H */
Index: /branches/gui/src/lib/gui/qt/qt_gui_elements.cc
===================================================================
--- /branches/gui/src/lib/gui/qt/qt_gui_elements.cc	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/qt_gui_elements.cc	(revision 8140)
@@ -0,0 +1,127 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "qt_gui_elements.h"
+
+namespace OrxGui
+{
+
+
+
+  QtGuiCheckBox::QtGuiCheckBox(const std::string& name, SaveableGroup* group, bool defaultValue)
+  : QCheckBox(QString().fromStdString(name)), Saveable(name, group, defaultValue)
+  {
+    //this->load(this->value());
+  }
+
+  void QtGuiCheckBox::load()
+  {
+    Saveable::load();
+    if (this->value().getBool())
+      this->setCheckState(Qt::Checked);
+    else
+      this->setCheckState(Qt::Unchecked);
+  }
+
+
+
+  void QtGuiCheckBox::save()
+  {
+    this->value() = this->checkState();
+    Saveable::save();
+  }
+
+
+
+
+
+  QtGuiSlider::QtGuiSlider(const std::string& name, SaveableGroup* group, int defaultValue, Qt::Orientation orientation)
+  : QSlider(orientation), Saveable(name, group, defaultValue)
+  {
+
+  }
+
+  QtGuiSlider::~QtGuiSlider()
+  {}
+
+  void QtGuiSlider::load()
+  {
+    Saveable::load();
+    this->setValue(this->Saveable::value().getInt());
+  }
+
+  void QtGuiSlider::save()
+  {
+    this->Saveable::value() = this->QSlider::value();
+    Saveable::save();
+  }
+
+
+
+
+
+
+
+  QtGuiComboBox::QtGuiComboBox(const std::string& name, SaveableGroup* group, const std::string& defaultValue)
+  : QComboBox(), Saveable(name, group, defaultValue)
+  {
+
+
+  }
+
+  void QtGuiComboBox::load()
+  {
+    Saveable::load();
+    int index = this->findText(QString().fromStdString(this->value().getString()));
+    if (index == -1)
+      index = 1;
+    this->setCurrentIndex(index);
+  }
+
+  void QtGuiComboBox::save()
+  {
+    this->value() = this->currentText().toStdString();
+    Saveable::save();
+  }
+
+
+  QtGuiInputLine::QtGuiInputLine(const std::string& name, SaveableGroup* group, const std::string& defaultValue)
+  : QLineEdit(), Saveable(name, group, defaultValue)
+  {
+
+
+  }
+
+
+  void QtGuiInputLine::load()
+  {
+    Saveable::load();
+    this->setText(QString().fromStdString(this->value().getString()));
+  }
+
+
+
+  void QtGuiInputLine::save()
+  {
+    this->value() = this->text().toStdString();
+    Saveable::save();
+  }
+
+
+
+
+}
Index: /branches/gui/src/lib/gui/qt/qt_gui_elements.h
===================================================================
--- /branches/gui/src/lib/gui/qt/qt_gui_elements.h	(revision 8140)
+++ /branches/gui/src/lib/gui/qt/qt_gui_elements.h	(revision 8140)
@@ -0,0 +1,88 @@
+/*!
+ * @file qt_gui_elements.h
+ * @brief Definition of ...
+*/
+
+#ifndef __QT_GUI_ELEMENTS_H
+#define __QT_GUI_ELEMENTS_H
+
+#include "../gui_saveable.h"
+#include <list>
+
+// grouping
+#include <QtGui/QGroupBox>
+#include <QtGui/QProgressBar>
+#include <QtGui/QLabel>
+
+// events
+#include <QtGui/QPushButton>
+
+// options
+#include <QtGui/QCheckBox>
+#include <QtGui/QSlider>
+#include <QtGui/QLineEdit>
+#include <QtGui/QComboBox>
+
+namespace OrxGui
+{
+  class QtGuiCheckBox : public QCheckBox, public Saveable
+  {
+    Q_OBJECT
+  public:
+    QtGuiCheckBox(const std::string& name, SaveableGroup* group, bool defaultValue = false);
+    virtual ~QtGuiCheckBox() {};
+
+    virtual void load();
+    virtual void save();
+
+  public slots:
+    //    void setCheckValue(int);
+
+  signals:
+    //    void checkValueChanged();
+  };
+
+  class QtGuiSlider : public QSlider, public Saveable
+  {
+    Q_OBJECT
+
+  public:
+    QtGuiSlider(const std::string& name, SaveableGroup* group, int defaultValue = 0, Qt::Orientation orientation = Qt::Horizontal);
+    virtual ~QtGuiSlider();
+
+    virtual void load();
+    virtual void save();
+
+  public slots:
+    //   void setSliderValue(float);
+
+  signals:
+    //    void sliderValueChanged(float);
+  };
+
+
+  class QtGuiComboBox : public QComboBox, public OrxGui::Saveable
+  {
+    Q_OBJECT
+
+  public:
+    QtGuiComboBox(const std::string& name, SaveableGroup* group, const std::string& defaultValue);
+
+    virtual void load();
+    virtual void save();
+  };
+
+  class QtGuiInputLine : public QLineEdit, public OrxGui::Saveable
+  {
+    Q_OBJECT
+
+  public:
+    QtGuiInputLine(const std::string& name, SaveableGroup* group, const std::string& defaultValue);
+
+    virtual void load();
+    virtual void save();
+  };
+
+}
+
+#endif /* __QT_GUI_ELEMENTS_H */
Index: /branches/gui/src/lib/math/rect2D.cc
===================================================================
--- /branches/gui/src/lib/math/rect2D.cc	(revision 8139)
+++ /branches/gui/src/lib/math/rect2D.cc	(revision 8140)
@@ -36,5 +36,6 @@
 Rect2D::Rect2D(float x, float y, float width, float height)
 {
-  this->setLeft(x), this->setTop(y);
+  this->setLeft(x),
+  this->setTop(y);
   this->setSize(width, height);
 }
Index: /branches/gui/src/orxonox.cc
===================================================================
--- /branches/gui/src/orxonox.cc	(revision 8139)
+++ /branches/gui/src/orxonox.cc	(revision 8140)
@@ -30,5 +30,5 @@
 #include "globals.h"
 
-#include "gui/qt_gui/qt_gui.h"
+#include "gui/qt/qt_gui.h"
 
 #include "file.h"
