guipsy.src

        Copyright (c) Kapteyn Astronomical Institute, Groningen 2013
        All Rights Reserved.

Name:         guipsy.src
Creator:      susana
Host:         dae53
Date:         Mar 22, 2013
Contents:     guipsy.make guipsy.dc1 packager.py clip.ui combin.ui
              copy.ui editPlotDlg.ui editset.ui ellint.ui extend.ui
              fileBrowser.ui fitsHeaderDlg.ui galmod.ui gipsyHeadersDlg.ui gipsySet.ui
              helpFile.ui help.ui historyDlg.ui images.ui insert.ui
              launch.ui meanSum.ui minbox.ui moments.ui plotTableWindow.ui
              potential.ui pplot.ui profil.ui regrid.ui reswri.ui
              rfits.ui rotcur.ui setbrowser.ui shuffle.ui slice.ui
              snapper.ui tablebrowser.ui tableHeadersDlg.ui table.ui tablePreview.ui
              text.ui transform.ui transpose.ui velfi.ui viewtask.ui
              wfits.ui workflow.ui workspaceBrowser.ui guipsy.pyw

#>            guipsy.make
#----------------------------------------------------------------------
# Makefile for task GUIPSY (guipsy.make)
#
# Pack sources into guipsy.src with:      > make -f guipsy.make pack
# Unpack source files with:              > $gip_exe/xfile guipsy.src
# Install source file with:              > p -reserve guipsy.src
#                                        > p -install guipsy.src
#
#----------------------------------------------------------------------

SHELL   = /bin/sh

DOCUMENTS = guipsy.dc1 packager.py clip.ui combin.ui copy.ui editPlotDlg.ui editset.ui ellint.ui \
            extend.ui fileBrowser.ui fitsHeaderDlg.ui galmod.ui gipsyHeadersDlg.ui  gipsySet.ui helpFile.ui help.ui \
            historyDlg.ui images.ui insert.ui launch.ui meanSum.ui minbox.ui moments.ui \
            plotTableWindow.ui potential.ui pplot.ui profil.ui regrid.ui reswri.ui rfits.ui rotcur.ui \
            setbrowser.ui shuffle.ui slice.ui snapper.ui tablebrowser.ui tableHeadersDlg.ui \
            table.ui tablePreview.ui text.ui transform.ui transpose.ui velfi.ui \
            viewtask.ui wfits.ui workflow.ui workspaceBrowser.ui
 
SOURCES   = guipsy.pyw

default:: guipsy

guipsy : guipsy.pyw
	cp guipsy.pyw guipsy
	chmod +x guipsy

pack::
	$$gip_sys/pack.csh guipsy.src guipsy.make \
        $(DOCUMENTS) $(SOURCES)

#<

#>            guipsy.dc1
Program:       GUIPSY

Purpose:       Task launcher and documentation system

Category:      USER-INTERFACE

File:          guipsy.src

Author:        S. Sanchez Exposito

Keywords:      This task does not require any keywords

Updates:       Apr 14, 2011: <i>SSE</i> document created.

Notes:	
</pre>
<h1>Demo</h1>
This is the <b>first</b> version of this demostration program


#<

#>            packager.py
#!/usr/bin/env python
import os
import sys
import getopt

def usage():
  print "Usage: packager.py -i --indir input_directory -o --outputfile path_name_output_file"
def main(argv):                         
                    
    try:                                
        opts, args = getopt.getopt(argv, "i:o:", ["indir=", "outputfile="]) 
    except getopt.GetoptError:           
        usage()                          
        sys.exit(2)
    if len(opts) !=2:
      usage()
      return
    
    for o, a in opts:
        if o in ("-i","--indir"):
            if(os.path.isdir(a)):
                indir=a
            else:
                usage()
                sys.exit(2)
        elif o in ("-o", "--outputfile"):
            outputname=a

    try:
        foutput=open(outputname,'w')
    except:
        print "Unable write in %s"%outputname
        sys.exit(2)
    foutput.write("\
#!/usr/bin/env python\n\
import gipsy\n\
from gipsy import *\n\
import sys\n\
import functools\n\
import os\n\
import re\n\
import matplotlib\n\
import glob\n\
import operator\n\
import decimal\n\
import time\n\
import pickle\n\
import math\n\
#import sampy\n\
#import astropy\n\
import numpy\n\
import numpy.ma as ma\n\
#from astropy.io.votable import parse_single_table\n\
#from astropy.table import Table as astroTable\n\
#from astropy.io.votable.tree import VOTableFile\n\
#import networkx as nx\n\
#import networkx.algorithms.traversal\n\
from types import *\n\
from xml.sax.saxutils import escape \n\
import xml.sax \n\
import xml.sax.handler \n\
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas\n\
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar\n\
from matplotlib.figure import Figure\n\
from PyQt4.QtCore import *\n\
from PyQt4.QtGui import *\n\
from PIL import Image\n\
from PIL.ImageQt import ImageQt\n\
\
")
    #First the resources
    f="./"+indir+"/resources_rc.py"
    print f
    try:
        tmp=open(f,"r")
    except:
        print "Unable to read %s"%f
        sys.exit(2)  
    start="####START %s\n"%f
    end="####END %s\n"%f
    foutput.write(start)
    for line in tmp:
        if line.strip().startswith("import") or line.strip().startswith("from"):
            line="#"+line
        foutput.write(line)
    tmp.close()

    #Second the exception
    f="./"+indir+"/new_exceptions.py"
    print f
    try:
        tmp=open(f,"r")
    except:
        print "Unable to read %s"%f
        sys.exit(2)  
    start="####START %s\n"%f
    end="####END %s\n"%f
    foutput.write(start)
    for line in tmp:
        if line.strip().startswith("import") or line.strip().startswith("from"):
            line="#"+line
        foutput.write(line)
    tmp.close()
    
    #Third the general
    f="./"+indir+"/general.py"
    print f
    try:
        tmp=open(f,"r")
    except:
        print "Unable to read %s"%f
        sys.exit(2)  
    start="####START %s\n"%f
    end="####END %s\n"%f
    foutput.write(start)
    
    for line in tmp:
        if line.strip().startswith("import") or line.strip().startswith("from"):
            line="#"+line
        foutput.write(line)
    tmp.close()

    #Fourth the compiled UI files 
    for item in os.listdir(indir):
        f="./"+indir+"/"+item
#        if os.path.isfile(f):
#            basename=str(os.path.basename(f))
#            if os.path.splitext(f)[1]==".py" and os.path.basename(f).startswith("Ui_"):
#                print f
#                try:
#                    tmp=open(f,"r")
#                except:
#                    print "Unable to read %s"%f
#                    sys.exit(2)
#                start="####START %s\n"%f
#                end="####END %s\n"%f
#                foutput.write(start)
#                for line in tmp:
#                    if line.strip().startswith("import") or not line.strip().startswith("from"):
#                        line="#"+line
#                foutput.write(line)
#                tmp.close()
#                foutput.write(end)
        if os.path.isdir(f): #Only two levels
            for item2 in os.listdir(f):
                g=f+"/"+item2
                if os.path.isfile(g):
                    basename=str(os.path.basename(g))
                    if os.path.splitext(g)[1]==".py" and basename.startswith("Ui_"):
                        print g
                        try:
                            tmp=open(g,"r")
                        except:
                            print "Unable to read %s"%f
                            sys.exit(2)
                        start="####START %s\n"%g
                        end="####END %s\n"%g
                        foutput.write(start)
                        for line in tmp:
                            if line.strip().startswith("import") or line.strip().startswith("from"):
                                line="#"+line
                            foutput.write(line)
                        tmp.close()
                        foutput.write(end)

    #Fourth the NOT compiled UI files 
    for item in os.listdir(indir):
        f="./"+indir+"/"+item
#        if os.path.isfile(f):
#            basename=str(os.path.basename(f))
#            if os.path.splitext(f)[1]==".py" and not basename.startswith("Ui_"):
#                print f
#                try:
#                    tmp=open(f,"r")
#                except:
#                    print "Unable to read %s"%f
#                    sys.exit(2)
#                start="####START %s\n"%f
#                end="####END %s\n"%f
#                foutput.write(start)
#                for line in tmp:
#                    if line.strip().startswith("import") or not line.strip().startswith("from"):
#                        line="#"+line
#                    foutput.write(line)
#                tmp.close()
#                foutput.write(end)
        if os.path.isdir(f): #Only two levels
            for item2 in os.listdir(f):
                g=f+"/"+item2
                if os.path.isfile(g):
                    basename=str(os.path.basename(g))
                    if os.path.splitext(g)[1]==".py" and not basename.startswith("Ui_"):
                        print g
                        try:
                            tmp=open(g,"r")
                        except:
                            print "Unable to read %s"%f
                            sys.exit(2)
                        start="####START %s\n"%g
                        end="####END %s\n"%g
                        foutput.write(start)
                        for line in tmp:
                            if line.strip().startswith("import") or line.strip().startswith("from"):
                                line="#"+line
                            foutput.write(line)
                        tmp.close()
                        foutput.write(end)

    #Last the main file
    f="./"+indir+"/guipsy.pyw"
    print f
    try:
        tmp=open(f,"r")
    except:
        print "Unable to read %s"%f
        sys.exit(2)  
    start="####START %s\n"%f
    end="####END %s\n"%f
    foutput.write(start)
    for line in tmp:
        if (line.strip().startswith("import") or line.strip().startswith("from")) and line.find('networkx')==-1 and line.find("sampy")==-1 and line.find("astropy")==-1:
            
            line="#"+line
        foutput.write(line)
    tmp.close()

    foutput.close()  
    
    


if __name__ == "__main__":
    main(sys.argv[1:])
#<

#>            clip.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>clip</class>
 <widget class="QFrame" name="clip">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="clipLayout">
   <item>
    <widget class="QGroupBox" name="groupBox_3">
     <property name="title">
      <string>Range</string>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>Min</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="minLine"/>
      </item>
      <item>
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>Max</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="maxLine"/>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Inside Box</string>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QCheckBox" name="insideBlank">
        <property name="text">
         <string>BLANK</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string>Value</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="valueInside"/>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox_2">
     <property name="title">
      <string>Outside Box</string>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout_3">
      <item>
       <widget class="QCheckBox" name="outsideBlank">
        <property name="text">
         <string>BLANK</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>Value</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="valueOutside"/>
      </item>
      <item>
       <spacer name="horizontalSpacer_2">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            combin.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>combin</class>
 <widget class="QFrame" name="combin">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>500</width>
    <height>420</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Sets in Session</string>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0" colspan="2">
       <widget class="QComboBox" name="setsBox"/>
      </item>
      <item row="0" column="2">
       <widget class="QPushButton" name="addSetButton">
        <property name="focusPolicy">
         <enum>Qt::NoFocus</enum>
        </property>
        <property name="text">
         <string>Add Set to List</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="combinSets">
     <property name="title">
      <string>Combin Sets</string>
     </property>
     <layout class="QVBoxLayout" name="combinLayout"/>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QPushButton" name="clearButton">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="text">
         <string>Clear Combin Sets</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox_3">
     <property name="title">
      <string>Options</string>
     </property>
     <property name="flat">
      <bool>false</bool>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="1" column="0">
       <widget class="QComboBox" name="operationBox">
        <item>
         <property name="text">
          <string>Inside</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Outside</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QComboBox" name="complementaryBox">
        <item>
         <property name="text">
          <string>Blanks</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Transfers</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>Operation Box</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>Operation in complementary box</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox_4">
     <property name="title">
      <string>Result</string>
     </property>
     <layout class="QGridLayout" name="gridLayout_3">
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>Operation</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="operationLine"/>
      </item>
      <item row="0" column="2">
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
         <pixmap resource="../resources.qrc">:/help.gif</pixmap>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            copy.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>copy</class>
 <widget class="QFrame" name="copy">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>322</width>
    <height>78</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox_3">
     <property name="title">
      <string/>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QCheckBox" name="checkBlank">
        <property name="text">
         <string>Fill output set only with blanks</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            editPlotDlg.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>editPlotDlg</class>
 <widget class="QDialog" name="editPlotDlg">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>278</width>
    <height>230</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Label</string>
     </property>
    </widget>
   </item>
   <item row="5" column="0" colspan="4">
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>Color</string>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>Style</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLineEdit" name="plotLabel"/>
   </item>
   <item row="2" column="1">
    <widget class="QComboBox" name="styleList">
     <item>
      <property name="text">
       <string>Solid Line</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Dashed Line</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Dash-Dot Line</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Dotted Line</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QComboBox" name="colorList">
     <item>
      <property name="text">
       <string>Blue</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/blue.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Green</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/green.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Red</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/red.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Cyan</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/cyan.jpeg</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Magenta</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/magenta.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Yellow</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/yellow.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Black</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/black.gif</normalon>
       </iconset>
      </property>
     </item>
     <item>
      <property name="text">
       <string>White</string>
      </property>
      <property name="icon">
       <iconset>
        <normalon>:/white.gif</normalon>
       </iconset>
      </property>
     </item>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>editPlotDlg</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>editPlotDlg</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            editset.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>editset</class>
 <widget class="QFrame" name="editset">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>93</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox_3">
     <property name="title">
      <string/>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="label">
        <property name="text">
         <string>Expression</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="expressionLine"/>
      </item>
      <item>
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string/>
        </property>
        <property name="pixmap">
         <pixmap resource="../resources.qrc">:/help.gif</pixmap>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            ellint.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>ellint</class>
 <widget class="QFrame" name="ellint">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>647</width>
    <height>450</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label_4">
     <property name="text">
      <string>CENTRE</string>
     </property>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_8">
     <property name="text">
      <string>RADII</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1" colspan="4">
    <widget class="QLineEdit" name="radiiLine"/>
   </item>
   <item row="4" column="0">
    <widget class="QLabel" name="label_9">
     <property name="text">
      <string>WIDTH</string>
     </property>
    </widget>
   </item>
   <item row="4" column="1" colspan="4">
    <widget class="QLineEdit" name="widthLine"/>
   </item>
   <item row="5" column="0">
    <widget class="QLabel" name="label_10">
     <property name="text">
      <string>PA</string>
     </property>
    </widget>
   </item>
   <item row="5" column="1" colspan="4">
    <widget class="QLineEdit" name="paLine"/>
   </item>
   <item row="6" column="0">
    <widget class="QLabel" name="label_11">
     <property name="text">
      <string>INCL</string>
     </property>
    </widget>
   </item>
   <item row="6" column="1" colspan="4">
    <widget class="QLineEdit" name="inclLine"/>
   </item>
   <item row="10" column="1">
    <widget class="QPushButton" name="loadParamsButton">
     <property name="text">
      <string>LOAD PARAMS</string>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>RANGE</string>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label_5">
     <property name="text">
      <string>OPTION</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1" colspan="2">
    <widget class="QComboBox" name="optionBox">
     <item>
      <property name="text">
       <string>Stats</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Surface brightness</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Mass surface density</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="2" column="3">
    <widget class="QLabel" name="label_6">
     <property name="text">
      <string>ORDER</string>
     </property>
    </widget>
   </item>
   <item row="2" column="4" colspan="2">
    <widget class="QComboBox" name="orderBox">
     <item>
      <property name="text">
       <string>Segments in rings</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Rings in segments</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="4" column="5">
    <widget class="QPushButton" name="widthButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="5" column="5">
    <widget class="QPushButton" name="paButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="6" column="5">
    <widget class="QPushButton" name="inclButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="3" column="5">
    <widget class="QPushButton" name="radiiButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="7" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>SEGMENTS</string>
     </property>
    </widget>
   </item>
   <item row="8" column="0">
    <widget class="QLabel" name="massLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>MASS</string>
     </property>
    </widget>
   </item>
   <item row="8" column="1">
    <widget class="QLineEdit" name="massLine">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="maximumSize">
      <size>
       <width>100</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="9" column="0">
    <widget class="QLabel" name="distanceLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>DISTANCE</string>
     </property>
    </widget>
   </item>
   <item row="10" column="0">
    <widget class="QPushButton" name="saveParamsButton">
     <property name="text">
      <string>SAVE PARAMS</string>
     </property>
    </widget>
   </item>
   <item row="8" column="2">
    <widget class="QLabel" name="moLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>Mo</string>
     </property>
    </widget>
   </item>
   <item row="9" column="1">
    <widget class="QLineEdit" name="distanceLine">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="maximumSize">
      <size>
       <width>100</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="9" column="2">
    <widget class="QLabel" name="mpcLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>Mpc</string>
     </property>
    </widget>
   </item>
   <item row="8" column="3">
    <widget class="QLabel" name="label_15">
     <property name="text">
      <string>SUBPIX</string>
     </property>
    </widget>
   </item>
   <item row="8" column="4">
    <widget class="QLineEdit" name="xsubpixLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="8" column="5">
    <widget class="QLineEdit" name="ysubpixLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="9" column="3">
    <widget class="QCheckBox" name="overlapCheck">
     <property name="text">
      <string>OVERLAP</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="7" column="1" colspan="4">
    <widget class="QListWidget" name="segmentList">
     <item>
      <property name="text">
       <string>0 360</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string/>
      </property>
      <property name="flags">
       <set>ItemIsSelectable|ItemIsEditable|ItemIsDragEnabled|ItemIsUserCheckable|ItemIsEnabled</set>
      </property>
     </item>
    </widget>
   </item>
   <item row="1" column="3">
    <widget class="QLabel" name="rangeLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="xrangeLine">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="minimumSize">
      <size>
       <width>125</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLineEdit" name="xcentreLine">
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <widget class="QLineEdit" name="ycentreLine">
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="1" column="2">
    <widget class="QLineEdit" name="yrangeLine">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="minimumSize">
      <size>
       <width>125</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="0" column="3">
    <widget class="QCheckBox" name="checkSampCentre">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="3" column="6">
    <widget class="QCheckBox" name="checkSampRadii">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            extend.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>extend</class>
 <widget class="QFrame" name="extend">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>425</width>
    <height>431</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="ctypeLabel">
     <property name="text">
      <string>CTYPE</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QComboBox" name="ctypeBox"/>
   </item>
   <item row="0" column="2">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>172</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="naxisLabel">
     <property name="text">
      <string>NAXIS</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="naxisLine"/>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="crpixLabel">
     <property name="text">
      <string>CRPIX</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1">
    <widget class="QLineEdit" name="crpixLine"/>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="cunitLabel">
     <property name="text">
      <string>CUNIT</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1">
    <widget class="QComboBox" name="cunitBox"/>
   </item>
   <item row="4" column="0">
    <widget class="QLabel" name="crvalLabel">
     <property name="text">
      <string>CRVAL</string>
     </property>
    </widget>
   </item>
   <item row="4" column="1">
    <widget class="QLineEdit" name="crvalLine"/>
   </item>
   <item row="5" column="0">
    <widget class="QLabel" name="cdeltLabel">
     <property name="text">
      <string>CDELT</string>
     </property>
    </widget>
   </item>
   <item row="5" column="1">
    <widget class="QLineEdit" name="cdeltLine"/>
   </item>
   <item row="6" column="0">
    <widget class="QLabel" name="crotaLabel">
     <property name="text">
      <string>CROTA</string>
     </property>
    </widget>
   </item>
   <item row="6" column="1">
    <widget class="QLineEdit" name="crotaLine"/>
   </item>
   <item row="7" column="0">
    <widget class="QLabel" name="dunitLabel">
     <property name="text">
      <string>DUNIT</string>
     </property>
    </widget>
   </item>
   <item row="7" column="1">
    <widget class="QLineEdit" name="dunitLine"/>
   </item>
   <item row="8" column="0">
    <widget class="QLabel" name="drvalLabel">
     <property name="text">
      <string>DRVAL</string>
     </property>
    </widget>
   </item>
   <item row="8" column="1">
    <widget class="QLineEdit" name="drvalLine"/>
   </item>
   <item row="9" column="0">
    <widget class="QLabel" name="freqLabel">
     <property name="text">
      <string>FREQ0</string>
     </property>
    </widget>
   </item>
   <item row="9" column="1">
    <widget class="QLineEdit" name="freqLine"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            fileBrowser.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>fileBrowser</class>
 <widget class="QWidget" name="fileBrowser">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QTreeView" name="fileTree"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            fitsHeaderDlg.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>fitsHeaderDlg</class>
 <widget class="QDialog" name="fitsHeaderDlg">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>642</width>
    <height>662</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QTextBrowser" name="headerArea">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="sizePolicy">
      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="palette">
      <palette>
       <active>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>239</red>
           <green>235</green>
           <blue>231</blue>
          </color>
         </brush>
        </colorrole>
       </active>
       <inactive>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>239</red>
           <green>235</green>
           <blue>231</blue>
          </color>
         </brush>
        </colorrole>
       </inactive>
       <disabled>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>255</red>
           <green>255</green>
           <blue>255</blue>
          </color>
         </brush>
        </colorrole>
       </disabled>
      </palette>
     </property>
     <property name="readOnly">
      <bool>true</bool>
     </property>
     <property name="html">
      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
     <property name="textInteractionFlags">
      <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Close</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>fitsHeaderDlg</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>fitsHeaderDlg</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            galmod.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>galmod</class>
 <widget class="QFrame" name="galmod">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>590</width>
    <height>529</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>CENTRE</string>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>VSYS</string>
     </property>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>RADII</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1" colspan="5">
    <widget class="QLineEdit" name="radiiLine"/>
   </item>
   <item row="4" column="0">
    <widget class="QLabel" name="label_4">
     <property name="text">
      <string>VROT</string>
     </property>
    </widget>
   </item>
   <item row="4" column="1" colspan="5">
    <widget class="QLineEdit" name="vrotLine"/>
   </item>
   <item row="4" column="6">
    <widget class="QPushButton" name="vrotButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="5" column="0">
    <widget class="QLabel" name="label_5">
     <property name="text">
      <string>VDISP</string>
     </property>
    </widget>
   </item>
   <item row="5" column="1" colspan="5">
    <widget class="QLineEdit" name="vdispLine"/>
   </item>
   <item row="5" column="6">
    <widget class="QPushButton" name="vdispButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="6" column="0">
    <widget class="QLabel" name="label_6">
     <property name="text">
      <string>DENS</string>
     </property>
    </widget>
   </item>
   <item row="6" column="1" colspan="5">
    <widget class="QLineEdit" name="densLine"/>
   </item>
   <item row="6" column="6">
    <widget class="QPushButton" name="densButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="7" column="0">
    <widget class="QLabel" name="label_7">
     <property name="text">
      <string>Z0</string>
     </property>
    </widget>
   </item>
   <item row="7" column="1" colspan="5">
    <widget class="QLineEdit" name="zoLine"/>
   </item>
   <item row="7" column="6">
    <widget class="QPushButton" name="zoButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="8" column="0">
    <widget class="QLabel" name="label_8">
     <property name="text">
      <string>INCL</string>
     </property>
    </widget>
   </item>
   <item row="8" column="1" colspan="5">
    <widget class="QLineEdit" name="inclLine"/>
   </item>
   <item row="8" column="6">
    <widget class="QPushButton" name="inclButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="9" column="0">
    <widget class="QLabel" name="label_9">
     <property name="text">
      <string>PA</string>
     </property>
    </widget>
   </item>
   <item row="9" column="1" colspan="5">
    <widget class="QLineEdit" name="paLine"/>
   </item>
   <item row="9" column="6">
    <widget class="QPushButton" name="paButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="10" column="0">
    <widget class="QLabel" name="label_10">
     <property name="text">
      <string>CDENS</string>
     </property>
    </widget>
   </item>
   <item row="10" column="1">
    <widget class="QLineEdit" name="cdensLine"/>
   </item>
   <item row="10" column="3">
    <widget class="QLabel" name="label_11">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>10^20 atoms/cm^2</string>
     </property>
    </widget>
   </item>
   <item row="10" column="4">
    <widget class="QLabel" name="label_12">
     <property name="text">
      <string>NV</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     </property>
    </widget>
   </item>
   <item row="10" column="5">
    <widget class="QLineEdit" name="nvLine"/>
   </item>
   <item row="11" column="3">
    <widget class="QLabel" name="label_13">
     <property name="text">
      <string>Layer Type</string>
     </property>
    </widget>
   </item>
   <item row="11" column="4" colspan="2">
    <widget class="QComboBox" name="layerBox">
     <item>
      <property name="text">
       <string>Gaussian</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Sech2</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Exponential</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Lorentzian</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Box</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="13" column="0">
    <widget class="QLabel" name="label_14">
     <property name="text">
      <string>ISEED</string>
     </property>
    </widget>
   </item>
   <item row="13" column="1">
    <widget class="QLineEdit" name="iseedLine"/>
   </item>
   <item row="3" column="6">
    <widget class="QPushButton" name="radiiButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="14" column="0">
    <widget class="QPushButton" name="saveParamsButton">
     <property name="text">
      <string>SAVE PARMAS</string>
     </property>
    </widget>
   </item>
   <item row="14" column="1">
    <widget class="QPushButton" name="loadParamsButton">
     <property name="text">
      <string>LOAD PARAMS</string>
     </property>
    </widget>
   </item>
   <item row="11" column="1">
    <widget class="QRadioButton" name="cmode0Radio">
     <property name="text">
      <string>CMODE 0</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
     <attribute name="buttonGroup">
      <string>buttonGroup1</string>
     </attribute>
    </widget>
   </item>
   <item row="12" column="1">
    <widget class="QRadioButton" name="cmode1Radio">
     <property name="text">
      <string>CMODE 1</string>
     </property>
     <attribute name="buttonGroup">
      <string>buttonGroup1</string>
     </attribute>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <property name="lineWidth">
      <number>0</number>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <property name="spacing">
       <number>0</number>
      </property>
      <property name="margin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLineEdit" name="xcentreLine">
        <property name="maximumSize">
         <size>
          <width>70</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="ycentreLine">
        <property name="maximumSize">
         <size>
          <width>70</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item row="1" column="1" colspan="2">
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <property name="lineWidth">
      <number>0</number>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <property name="spacing">
       <number>0</number>
      </property>
      <property name="leftMargin">
       <number>0</number>
      </property>
      <property name="topMargin">
       <number>0</number>
      </property>
      <property name="rightMargin">
       <number>12</number>
      </property>
      <property name="bottomMargin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLineEdit" name="vsysLine">
        <property name="maximumSize">
         <size>
          <width>70</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="label_15">
        <property name="text">
         <string>KM/S</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label_16">
     <property name="text">
      <string>DRVAL3</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1" colspan="2">
    <widget class="QLineEdit" name="drvalLine"/>
   </item>
   <item row="1" column="3">
    <widget class="QCheckBox" name="emptyCheck">
     <property name="text">
      <string>EMPTY</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="0" column="3">
    <widget class="QCheckBox" name="checkSampCentre">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="1" column="4">
    <widget class="QCheckBox" name="checkSampVsys">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
   <item row="3" column="7">
    <widget class="QCheckBox" name="checkSampRadii">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
   <item row="4" column="7">
    <widget class="QCheckBox" name="checkSampVrot">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
 <buttongroups>
  <buttongroup name="buttonGroup1"/>
 </buttongroups>
</ui>
#<

#>            gipsyHeadersDlg.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>gipsyHeaderDlg</class>
 <widget class="QDialog" name="gipsyHeaderDlg">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>495</width>
    <height>713</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QScrollArea" name="scrollArea">
     <property name="widgetResizable">
      <bool>true</bool>
     </property>
     <widget class="QWidget" name="scrollAreaWidgetContents">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>475</width>
        <height>591</height>
       </rect>
      </property>
      <layout class="QGridLayout" name="headerLayout"/>
     </widget>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Add a new header item</string>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLineEdit" name="newHeaderName1">
        <property name="maxLength">
         <number>8</number>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="newHeaderData1">
        <property name="maxLength">
         <number>72</number>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="newHeaderButton1">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/add_icon.png</normaloff>:/add_icon.png</iconset>
        </property>
       </widget>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Close</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>gipsyHeaderDlg</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>gipsyHeaderDlg</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            gipsySet.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>setWidget</class>
 <widget class="QScrollArea" name="setWidget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>779</width>
    <height>756</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>ScrollArea</string>
  </property>
  <property name="widgetResizable">
   <bool>true</bool>
  </property>
  <widget class="QWidget" name="scrollAreaWidgetContents">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>777</width>
     <height>754</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QGroupBox" name="groupBox_2">
      <property name="title">
       <string>Set Properties</string>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout_3">
       <item>
        <widget class="QTextBrowser" name="PropertiesText">
         <property name="enabled">
          <bool>true</bool>
         </property>
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <property name="palette">
          <palette>
           <active>
            <colorrole role="Base">
             <brush brushstyle="SolidPattern">
              <color alpha="255">
               <red>239</red>
               <green>235</green>
               <blue>231</blue>
              </color>
             </brush>
            </colorrole>
           </active>
           <inactive>
            <colorrole role="Base">
             <brush brushstyle="SolidPattern">
              <color alpha="255">
               <red>239</red>
               <green>235</green>
               <blue>231</blue>
              </color>
             </brush>
            </colorrole>
           </inactive>
           <disabled>
            <colorrole role="Base">
             <brush brushstyle="SolidPattern">
              <color alpha="255">
               <red>255</red>
               <green>255</green>
               <blue>255</blue>
              </color>
             </brush>
            </colorrole>
           </disabled>
          </palette>
         </property>
         <property name="readOnly">
          <bool>true</bool>
         </property>
         <property name="html">
          <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
         </property>
         <property name="textInteractionFlags">
          <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QFrame" name="frame">
         <property name="frameShape">
          <enum>QFrame::StyledPanel</enum>
         </property>
         <property name="frameShadow">
          <enum>QFrame::Raised</enum>
         </property>
         <layout class="QHBoxLayout" name="horizontalLayout_2">
          <item>
           <widget class="QPushButton" name="sampButton">
            <property name="text">
             <string>Send associated fits to SAMP</string>
            </property>
           </widget>
          </item>
          <item>
           <spacer name="horizontalSpacer">
            <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
              <width>40</width>
              <height>20</height>
             </size>
            </property>
           </spacer>
          </item>
          <item>
           <widget class="QPushButton" name="historyButton">
            <property name="text">
             <string>HISTORY</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="headerButton">
            <property name="text">
             <string>HEADER</string>
            </property>
           </widget>
          </item>
         </layout>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="title">
       <string>Set Comments</string>
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout"/>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            helpFile.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>helpFile</class>
 <widget class="QWidget" name="helpFile">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>493</width>
    <height>300</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>Courier 10 Pitch</family>
    <stylestrategy>PreferAntialias</stylestrategy>
    <kerning>false</kerning>
   </font>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QTextBrowser" name="textBrowser">
     <property name="font">
      <font>
       <family>Sans Serif</family>
       <pointsize>10</pointsize>
      </font>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <spacer name="horizontalSpacer_2">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QLabel" name="label">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="text">
         <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Courier 10 Pitch'; font-size:12pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;&quot; cellspacing=&quot;2&quot; cellpadding=&quot;0&quot;&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/help.gif&quot; /&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;The process information of this &lt;br /&gt;task is sent to HERMES screen&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
        </property>
       </widget>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QPushButton" name="launchButton">
        <property name="text">
         <string>Launch Task</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            help.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>help</class>
 <widget class="QWidget" name="help">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Search task:</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QLineEdit" name="lineEdit"/>
   </item>
   <item>
    <widget class="QSplitter" name="splitter">
     <property name="orientation">
      <enum>Qt::Vertical</enum>
     </property>
     <widget class="QListWidget" name="listWidget"/>
     <widget class="QTextBrowser" name="textBrowser"/>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            historyDlg.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>historyDlg</class>
 <widget class="QDialog" name="historyDlg">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>HISTORY</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QPlainTextEdit" name="historyArea">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="palette">
      <palette>
       <active>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>239</red>
           <green>235</green>
           <blue>231</blue>
          </color>
         </brush>
        </colorrole>
       </active>
       <inactive>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>239</red>
           <green>235</green>
           <blue>231</blue>
          </color>
         </brush>
        </colorrole>
       </inactive>
       <disabled>
        <colorrole role="Base">
         <brush brushstyle="SolidPattern">
          <color alpha="255">
           <red>255</red>
           <green>255</green>
           <blue>255</blue>
          </color>
         </brush>
        </colorrole>
       </disabled>
      </palette>
     </property>
     <property name="readOnly">
      <bool>true</bool>
     </property>
     <property name="plainText">
      <string/>
     </property>
     <property name="textInteractionFlags">
      <set>Qt::NoTextInteraction</set>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Close</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>historyDlg</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>historyDlg</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            images.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>images</class>
 <widget class="QWidget" name="images">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QGraphicsView" name="graphicsView"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            insert.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>insert</class>
 <widget class="QFrame" name="insert">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>488</width>
    <height>149</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <property name="bottomMargin">
    <number>8</number>
   </property>
   <item row="0" column="0">
    <widget class="QPushButton" name="outsetButton">
     <property name="text">
      <string>OUTSET</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLabel" name="outsetLabel">
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <widget class="QPushButton" name="outHeaderButton">
     <property name="text">
      <string>HEADER</string>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QPushButton" name="outboxButton">
     <property name="text">
      <string>OUTBOX</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLabel" name="outboxLabel">
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            launch.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>launch</class>
 <widget class="QWidget" name="launch">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>311</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QPlainTextEdit" name="plainTextEdit"/>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>73</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QPushButton" name="launchButton">
        <property name="text">
         <string>Launch</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            meanSum.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>meanSum</class>
 <widget class="QFrame" name="meanSum">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>345</width>
    <height>100</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Plain</enum>
  </property>
  <property name="lineWidth">
   <number>0</number>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="spacing">
    <number>0</number>
   </property>
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QGroupBox" name="groupBox_3">
     <property name="title">
      <string/>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>Operation</string>
        </property>
        <property name="alignment">
         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QComboBox" name="comboOperation">
        <property name="minimumSize">
         <size>
          <width>150</width>
          <height>0</height>
         </size>
        </property>
        <item>
         <property name="text">
          <string>Mean</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Sum</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="0" column="2">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>WEIGHT</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="weightLine"/>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            minbox.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>minbox</class>
 <widget class="QFrame" name="minbox">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>416</width>
    <height>239</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Margin</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLineEdit" name="marginLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QGroupBox" name="resultGroup">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="title">
      <string>Results</string>
     </property>
     <layout class="QGridLayout" name="resultLayout">
      <item row="0" column="0">
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item row="4" column="0" colspan="2">
    <widget class="QLabel" name="label_2">
     <property name="font">
      <font>
       <family>Century Schoolbook L</family>
       <pointsize>9</pointsize>
       <weight>50</weight>
       <italic>false</italic>
       <bold>false</bold>
      </font>
     </property>
     <property name="text">
      <string>The outset is not mandatory</string>
     </property>
     <property name="alignment">
      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>40</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="1" column="0" colspan="3">
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <layout class="QVBoxLayout" name="verticalLayout">
      <property name="spacing">
       <number>0</number>
      </property>
      <property name="margin">
       <number>0</number>
      </property>
      <item>
       <widget class="QCheckBox" name="squareCheck">
        <property name="text">
         <string>Adjust box sizes to form a squaress</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            moments.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>moments</class>
 <widget class="QFrame" name="moments">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>332</width>
    <height>156</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>OPTION</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1" colspan="2">
    <widget class="QComboBox" name="optionBox">
     <item>
      <property name="text">
       <string>Zeroth Moment</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>First Moment</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Second Moment</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>RANGE</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="minLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="1" column="2">
    <widget class="QLineEdit" name="maxLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="1" column="3">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>40</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            plotTableWindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>plotTableWindow</class>
 <widget class="QMainWindow" name="plotTableWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>600</width>
    <height>796</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QFrame" name="plot_frame">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
      <layout class="QVBoxLayout" name="plot_frame_Layout"/>
     </widget>
    </item>
    <item>
     <widget class="QFrame" name="frame_2">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Expanding">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
        <widget class="QGroupBox" name="groupBox">
         <property name="title">
          <string>Data</string>
         </property>
         <layout class="QGridLayout" name="gridLayout">
          <item row="0" column="0">
           <widget class="QLabel" name="label">
            <property name="text">
             <string>Table</string>
            </property>
           </widget>
          </item>
          <item row="1" column="0">
           <widget class="QLabel" name="label_2">
            <property name="text">
             <string>X Axis</string>
            </property>
           </widget>
          </item>
          <item row="2" column="0">
           <widget class="QLabel" name="label_3">
            <property name="text">
             <string>Y Axis</string>
            </property>
           </widget>
          </item>
          <item row="5" column="0">
           <widget class="QLabel" name="label_4">
            <property name="text">
             <string>Plot Label</string>
            </property>
           </widget>
          </item>
          <item row="5" column="1">
           <widget class="QLineEdit" name="plotLabel"/>
          </item>
          <item row="0" column="1" colspan="2">
           <widget class="QComboBox" name="tableList">
            <property name="sizeAdjustPolicy">
             <enum>QComboBox::AdjustToMinimumContentsLength</enum>
            </property>
            <property name="minimumContentsLength">
             <number>15</number>
            </property>
           </widget>
          </item>
          <item row="1" column="1">
           <widget class="QComboBox" name="XAxis"/>
          </item>
          <item row="2" column="1">
           <widget class="QComboBox" name="YAxis"/>
          </item>
          <item row="5" column="2">
           <widget class="QPushButton" name="addButton">
            <property name="text">
             <string>ADD</string>
            </property>
           </widget>
          </item>
          <item row="3" column="1">
           <widget class="QComboBox" name="XError">
            <property name="enabled">
             <bool>false</bool>
            </property>
           </widget>
          </item>
          <item row="4" column="1">
           <widget class="QComboBox" name="YError">
            <property name="enabled">
             <bool>false</bool>
            </property>
           </widget>
          </item>
          <item row="3" column="0">
           <widget class="QCheckBox" name="xerrorCheck">
            <property name="text">
             <string>X Error</string>
            </property>
           </widget>
          </item>
          <item row="4" column="0">
           <widget class="QCheckBox" name="yerrorCheck">
            <property name="text">
             <string>Y Error</string>
            </property>
           </widget>
          </item>
         </layout>
        </widget>
       </item>
       <item>
        <widget class="QGroupBox" name="groupBox_2">
         <property name="title">
          <string>Plots</string>
         </property>
         <layout class="QGridLayout" name="gridLayout_2">
          <item row="0" column="2">
           <spacer name="horizontalSpacer_2">
            <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
              <width>40</width>
              <height>20</height>
             </size>
            </property>
           </spacer>
          </item>
          <item row="0" column="0" rowspan="3">
           <widget class="QListWidget" name="plotList"/>
          </item>
          <item row="0" column="1">
           <widget class="QPushButton" name="delPlotButton">
            <property name="text">
             <string>DELETE</string>
            </property>
           </widget>
          </item>
         </layout>
        </widget>
       </item>
       <item>
        <widget class="QGroupBox" name="groupBox_3">
         <property name="title">
          <string>Legend</string>
         </property>
         <layout class="QGridLayout" name="gridLayout_3">
          <item row="3" column="2">
           <widget class="QPushButton" name="plotButton">
            <property name="text">
             <string>PLOT</string>
            </property>
           </widget>
          </item>
          <item row="1" column="0" colspan="3">
           <widget class="QFrame" name="legendFrame">
            <property name="enabled">
             <bool>false</bool>
            </property>
            <property name="frameShape">
             <enum>QFrame::StyledPanel</enum>
            </property>
            <property name="frameShadow">
             <enum>QFrame::Raised</enum>
            </property>
            <layout class="QGridLayout" name="gridLayout_4">
             <item row="1" column="0">
              <widget class="QLabel" name="label_5">
               <property name="text">
                <string>Title</string>
               </property>
              </widget>
             </item>
             <item row="1" column="1" colspan="3">
              <widget class="QLineEdit" name="titleLine">
               <property name="inputMask">
                <string/>
               </property>
              </widget>
             </item>
             <item row="2" column="0">
              <widget class="QLabel" name="label_6">
               <property name="text">
                <string>Position</string>
               </property>
              </widget>
             </item>
             <item row="2" column="1">
              <widget class="QDoubleSpinBox" name="xposSpin">
               <property name="maximum">
                <double>1.000000000000000</double>
               </property>
               <property name="singleStep">
                <double>0.100000000000000</double>
               </property>
              </widget>
             </item>
             <item row="2" column="2">
              <widget class="QDoubleSpinBox" name="yposSpin">
               <property name="maximum">
                <double>1.000000000000000</double>
               </property>
               <property name="singleStep">
                <double>0.100000000000000</double>
               </property>
              </widget>
             </item>
             <item row="2" column="3">
              <widget class="QComboBox" name="positionCombo">
               <item>
                <property name="text">
                 <string>&lt;-- Position</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>best</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>upper right</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>upper left</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>lower left</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>right</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>center left</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>center right</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>lower center</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>upper center</string>
                </property>
               </item>
               <item>
                <property name="text">
                 <string>center</string>
                </property>
               </item>
              </widget>
             </item>
             <item row="3" column="0">
              <widget class="QLabel" name="label_7">
               <property name="text">
                <string>Num. Col</string>
               </property>
              </widget>
             </item>
             <item row="3" column="1">
              <widget class="QSpinBox" name="ncolSpin"/>
             </item>
             <item row="4" column="0">
              <widget class="QLabel" name="label_8">
               <property name="text">
                <string>Text Size</string>
               </property>
              </widget>
             </item>
             <item row="4" column="1">
              <widget class="QSpinBox" name="textSizeSpin"/>
             </item>
             <item row="5" column="0">
              <widget class="QCheckBox" name="fancyBox">
               <property name="text">
                <string>Fancy Box</string>
               </property>
              </widget>
             </item>
             <item row="6" column="0">
              <widget class="QCheckBox" name="shadowBox">
               <property name="text">
                <string>Shadow</string>
               </property>
              </widget>
             </item>
            </layout>
           </widget>
          </item>
          <item row="0" column="0">
           <widget class="QCheckBox" name="showLegendBox">
            <property name="text">
             <string>Show legend</string>
            </property>
           </widget>
          </item>
          <item row="3" column="1">
           <widget class="QPushButton" name="saveButton">
            <property name="enabled">
             <bool>false</bool>
            </property>
            <property name="text">
             <string>Save to Table</string>
            </property>
           </widget>
          </item>
         </layout>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>600</width>
     <height>25</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            potential.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>potential</class>
 <widget class="QFrame" name="potential">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>166</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Box to include in calculation:</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QLineEdit" name="box2Line"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            pplot.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>pplot</class>
 <widget class="QFrame" name="pplot">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>546</width>
    <height>120</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Plain</enum>
  </property>
  <property name="lineWidth">
   <number>0</number>
  </property>
  <property name="midLineWidth">
   <number>0</number>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="spacing">
    <number>6</number>
   </property>
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <property name="lineWidth">
      <number>1</number>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="2" column="1">
       <widget class="QLineEdit" name="filenameLine"/>
      </item>
      <item row="2" column="2">
       <widget class="QPushButton" name="browserFileButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/fileopen.png</normaloff>:/fileopen.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>Filename</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0" colspan="3">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>File where the profile data will be written:</string>
        </property>
       </widget>
      </item>
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>PROFILE</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="profileLine"/>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            profil.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>profil</class>
 <widget class="QFrame" name="profil">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>440</width>
    <height>201</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Plain</enum>
  </property>
  <property name="lineWidth">
   <number>0</number>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="spacing">
    <number>6</number>
   </property>
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QPushButton" name="contSetButton">
        <property name="text">
         <string>Continuum</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLabel" name="contSetLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QPushButton" name="contHeaderButton">
        <property name="text">
         <string>HEADER</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QPushButton" name="contBoxButton">
        <property name="text">
         <string>BOX</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLabel" name="contBoxLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>WTYPE</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QComboBox" name="wtypeBox">
        <item>
         <property name="text">
          <string>No Weighting</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Continuum weighting</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Continuum squared</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Mean</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>THRESHOLD</string>
        </property>
       </widget>
      </item>
      <item row="0" column="3">
       <widget class="QLineEdit" name="thresholdLine">
        <property name="maximumSize">
         <size>
          <width>70</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>Filename</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1" colspan="2">
       <widget class="QLineEdit" name="filenameLine"/>
      </item>
      <item row="2" column="3">
       <widget class="QPushButton" name="browserFileButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/fileopen.png</normaloff>:/fileopen.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="0" colspan="2">
       <widget class="QCheckBox" name="line_checkBox">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="text">
         <string>Line/continuum ratio</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            regrid.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>regrid</class>
 <widget class="QFrame" name="regrid">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>188</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>AXNAME</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QComboBox" name="axnameBox"/>
   </item>
   <item row="0" column="2">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>152</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>CDELT</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="cdeltLine"/>
   </item>
   <item row="1" column="2">
    <widget class="QLabel" name="unitLabel">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>UNIT</string>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>IPOL</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1">
    <widget class="QComboBox" name="ipolBox">
     <item>
      <property name="text">
       <string>Linear</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Sinc</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Spline</string>
      </property>
     </item>
     <item>
      <property name="text">
       <string>Average</string>
      </property>
     </item>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_4">
     <property name="text">
      <string>WIDTH</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1">
    <widget class="QLineEdit" name="widthLine"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            reswri.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>reswri</class>
 <widget class="QFrame" name="reswri">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>586</width>
    <height>590</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <property name="margin">
       <number>9</number>
      </property>
      <item row="1" column="0">
       <widget class="QPushButton" name="HIBoxButton">
        <property name="text">
         <string>BOX</string>
        </property>
       </widget>
      </item>
      <item row="0" column="0">
       <widget class="QPushButton" name="HISetButton">
        <property name="text">
         <string>HI</string>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QPushButton" name="HISetHeaderButton">
        <property name="text">
         <string>HEADER</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLabel" name="HISetLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLabel" name="HIBoxLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <property name="margin">
       <number>9</number>
      </property>
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>BUNIT</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="bunitLine"/>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>CENTRE</string>
        </property>
       </widget>
      </item>
      <item row="1" column="3">
       <widget class="QCheckBox" name="centreCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string>VSYS</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="vsysLine"/>
      </item>
      <item row="2" column="2">
       <widget class="QLabel" name="label_7">
        <property name="text">
         <string>KM/S</string>
        </property>
       </widget>
      </item>
      <item row="2" column="3">
       <widget class="QCheckBox" name="vsysCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="3" column="0">
       <widget class="QLabel" name="label_8">
        <property name="text">
         <string>RADII</string>
        </property>
       </widget>
      </item>
      <item row="3" column="1" colspan="3">
       <widget class="QLineEdit" name="radiiLine"/>
      </item>
      <item row="3" column="4">
       <widget class="QPushButton" name="radiiButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="5" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>WIDTHS</string>
        </property>
       </widget>
      </item>
      <item row="5" column="1" colspan="3">
       <widget class="QLineEdit" name="widthsLine"/>
      </item>
      <item row="5" column="4">
       <widget class="QPushButton" name="widthsButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="7" column="0">
       <widget class="QLabel" name="label_9">
        <property name="text">
         <string>VEXP</string>
        </property>
       </widget>
      </item>
      <item row="7" column="1" colspan="3">
       <widget class="QLineEdit" name="vexpLine"/>
      </item>
      <item row="7" column="4">
       <widget class="QPushButton" name="vexpButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="7" column="5">
       <widget class="QCheckBox" name="vexpCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="8" column="0">
       <widget class="QLabel" name="label_10">
        <property name="text">
         <string>PA</string>
        </property>
       </widget>
      </item>
      <item row="8" column="1" colspan="3">
       <widget class="QLineEdit" name="paLine"/>
      </item>
      <item row="8" column="4">
       <widget class="QPushButton" name="paButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="8" column="5">
       <widget class="QCheckBox" name="paCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="9" column="0">
       <widget class="QLabel" name="label_11">
        <property name="text">
         <string>INCL</string>
        </property>
       </widget>
      </item>
      <item row="9" column="1" colspan="3">
       <widget class="QLineEdit" name="inclLine"/>
      </item>
      <item row="9" column="4">
       <widget class="QPushButton" name="inclButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="9" column="5">
       <widget class="QCheckBox" name="inclCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="10" column="0">
       <widget class="QLabel" name="label_12">
        <property name="text">
         <string>FREEANGLE</string>
        </property>
       </widget>
      </item>
      <item row="10" column="1">
       <widget class="QLineEdit" name="freeangleLine"/>
      </item>
      <item row="10" column="2">
       <widget class="QLabel" name="label_13">
        <property name="text">
         <string>DEG</string>
        </property>
       </widget>
      </item>
      <item row="10" column="3">
       <widget class="QLabel" name="label_14">
        <property name="text">
         <string>FIT TOLERANCE</string>
        </property>
       </widget>
      </item>
      <item row="10" column="4">
       <widget class="QLineEdit" name="fittoleranceLine"/>
      </item>
      <item row="12" column="0" colspan="3">
       <widget class="QLabel" name="label_15">
        <property name="text">
         <string>Kinematic harmonic coefficients</string>
        </property>
       </widget>
      </item>
      <item row="12" column="3" colspan="2">
       <widget class="QLineEdit" name="kinematicLine"/>
      </item>
      <item row="12" column="5">
       <widget class="QPushButton" name="kinematicButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/fileopen.png</normaloff>:/fileopen.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="13" column="0" colspan="3">
       <widget class="QLabel" name="surfaceLabel">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="text">
         <string>Surface density harmonic coefficients</string>
        </property>
       </widget>
      </item>
      <item row="13" column="3" colspan="2">
       <widget class="QLineEdit" name="surfaceLine">
        <property name="enabled">
         <bool>false</bool>
        </property>
       </widget>
      </item>
      <item row="13" column="5">
       <widget class="QPushButton" name="surfaceButton">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/fileopen.png</normaloff>:/fileopen.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="14" column="0">
       <widget class="QPushButton" name="saveParamsButton">
        <property name="text">
         <string>SAVE PARAMS</string>
        </property>
       </widget>
      </item>
      <item row="14" column="1">
       <widget class="QPushButton" name="loadParamsButton">
        <property name="text">
         <string>LOAD PARAMS</string>
        </property>
       </widget>
      </item>
      <item row="11" column="3">
       <widget class="QLabel" name="label_16">
        <property name="text">
         <string>FIT ORDER</string>
        </property>
       </widget>
      </item>
      <item row="11" column="4">
       <widget class="QLineEdit" name="fitorderLine"/>
      </item>
      <item row="1" column="1">
       <widget class="QFrame" name="frame_3">
        <property name="frameShape">
         <enum>QFrame::NoFrame</enum>
        </property>
        <property name="frameShadow">
         <enum>QFrame::Plain</enum>
        </property>
        <property name="lineWidth">
         <number>0</number>
        </property>
        <layout class="QHBoxLayout" name="horizontalLayout">
         <property name="spacing">
          <number>0</number>
         </property>
         <property name="margin">
          <number>0</number>
         </property>
         <item>
          <widget class="QLineEdit" name="xcentreLine">
           <property name="maximumSize">
            <size>
             <width>60</width>
             <height>16777215</height>
            </size>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLineEdit" name="ycentreLine">
           <property name="maximumSize">
            <size>
             <width>60</width>
             <height>16777215</height>
            </size>
           </property>
          </widget>
         </item>
        </layout>
       </widget>
      </item>
      <item row="4" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>VROT</string>
        </property>
       </widget>
      </item>
      <item row="4" column="1" colspan="3">
       <widget class="QLineEdit" name="vrotLine"/>
      </item>
      <item row="4" column="4">
       <widget class="QPushButton" name="vrotButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="4" column="5">
       <widget class="QCheckBox" name="vrotCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="1" column="4">
       <widget class="QCheckBox" name="checkSampCentre">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
        <property name="checked">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="2" column="4">
       <widget class="QCheckBox" name="checkSampVsys">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
       </widget>
      </item>
      <item row="4" column="6">
       <widget class="QCheckBox" name="checkSampVrot">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
       </widget>
      </item>
      <item row="3" column="5">
       <widget class="QCheckBox" name="checkSampRadii">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
       </widget>
      </item>
      <item row="0" column="5">
       <widget class="QComboBox" name="sideBox">
        <item>
         <property name="text">
          <string>Both</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Approaching</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Receding</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="0" column="4">
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>SIDE</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            rfits.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>rfits</class>
 <widget class="QFrame" name="rfits">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>433</width>
    <height>146</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="2" column="0">
    <widget class="QLineEdit" name="fitsPathLine"/>
   </item>
   <item row="1" column="0" colspan="2">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Fits File:</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1">
    <widget class="QPushButton" name="fitsBrowseButton">
     <property name="text">
      <string>Browse</string>
     </property>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>Setname:</string>
     </property>
    </widget>
   </item>
   <item row="4" column="0">
    <widget class="QLineEdit" name="setPathLine">
     <property name="enabled">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="4" column="1">
    <widget class="QPushButton" name="setBrowseButton">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="text">
      <string>Browse</string>
     </property>
    </widget>
   </item>
   <item row="0" column="0" colspan="2">
    <widget class="QLabel" name="labelMessage">
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            rotcur.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>rotcur</class>
 <widget class="QFrame" name="rotcur">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>626</width>
    <height>573</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <property name="margin">
       <number>0</number>
      </property>
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>BUNIT</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="bunitLine">
        <property name="maximumSize">
         <size>
          <width>70</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>CENTRE</string>
        </property>
       </widget>
      </item>
      <item row="1" column="3">
       <widget class="QCheckBox" name="centreCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string>VSYS</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="vsysLine"/>
      </item>
      <item row="2" column="2">
       <widget class="QLabel" name="label_7">
        <property name="text">
         <string>KM/S</string>
        </property>
       </widget>
      </item>
      <item row="2" column="3">
       <widget class="QCheckBox" name="vsysCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="3" column="0">
       <widget class="QLabel" name="label_8">
        <property name="text">
         <string>RADII</string>
        </property>
       </widget>
      </item>
      <item row="3" column="1" colspan="3">
       <widget class="QLineEdit" name="radiiLine"/>
      </item>
      <item row="3" column="5">
       <widget class="QPushButton" name="radiiButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="5" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>WIDTHS</string>
        </property>
       </widget>
      </item>
      <item row="5" column="1" colspan="3">
       <widget class="QLineEdit" name="widthsLine"/>
      </item>
      <item row="5" column="5">
       <widget class="QPushButton" name="widthsButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="7" column="0">
       <widget class="QLabel" name="label_9">
        <property name="text">
         <string>VEXP</string>
        </property>
       </widget>
      </item>
      <item row="7" column="1" colspan="3">
       <widget class="QLineEdit" name="vexpLine"/>
      </item>
      <item row="7" column="5">
       <widget class="QPushButton" name="vexpButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="7" column="6">
       <widget class="QCheckBox" name="vexpCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="8" column="0">
       <widget class="QLabel" name="label_10">
        <property name="text">
         <string>PA</string>
        </property>
       </widget>
      </item>
      <item row="8" column="1" colspan="3">
       <widget class="QLineEdit" name="paLine"/>
      </item>
      <item row="8" column="5">
       <widget class="QPushButton" name="paButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="8" column="6">
       <widget class="QCheckBox" name="paCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="9" column="0">
       <widget class="QLabel" name="label_11">
        <property name="text">
         <string>INCL</string>
        </property>
       </widget>
      </item>
      <item row="9" column="1" colspan="3">
       <widget class="QLineEdit" name="inclLine"/>
      </item>
      <item row="9" column="5">
       <widget class="QPushButton" name="inclButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="9" column="6">
       <widget class="QCheckBox" name="inclCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="10" column="0">
       <widget class="QLabel" name="label_12">
        <property name="text">
         <string>FREEANGLE</string>
        </property>
       </widget>
      </item>
      <item row="10" column="1">
       <widget class="QLineEdit" name="freeangleLine"/>
      </item>
      <item row="10" column="2">
       <widget class="QLabel" name="label_13">
        <property name="text">
         <string>DEG</string>
        </property>
       </widget>
      </item>
      <item row="10" column="3">
       <widget class="QLabel" name="label_14">
        <property name="text">
         <string>FIT TOLERANCE</string>
        </property>
       </widget>
      </item>
      <item row="10" column="5">
       <widget class="QLineEdit" name="fittoleranceLine"/>
      </item>
      <item row="12" column="0">
       <widget class="QPushButton" name="saveParamsButton">
        <property name="text">
         <string>SAVE PARAMS</string>
        </property>
       </widget>
      </item>
      <item row="12" column="1">
       <widget class="QPushButton" name="loadParamsButton">
        <property name="text">
         <string>LOAD PARAMS</string>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>SIDE</string>
        </property>
       </widget>
      </item>
      <item row="11" column="0">
       <widget class="QLabel" name="label_15">
        <property name="text">
         <string>WEIGHT</string>
        </property>
       </widget>
      </item>
      <item row="11" column="1">
       <widget class="QComboBox" name="weightBox">
        <item>
         <property name="text">
          <string>COSINE</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>UNIFORM</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>COS-SQUARED</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="0" column="3">
       <widget class="QComboBox" name="sideBox">
        <item>
         <property name="text">
          <string>Both</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Approaching</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Receding</string>
         </property>
        </item>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QFrame" name="frame">
        <property name="frameShape">
         <enum>QFrame::NoFrame</enum>
        </property>
        <property name="frameShadow">
         <enum>QFrame::Plain</enum>
        </property>
        <property name="lineWidth">
         <number>0</number>
        </property>
        <layout class="QHBoxLayout" name="horizontalLayout">
         <property name="spacing">
          <number>7</number>
         </property>
         <property name="sizeConstraint">
          <enum>QLayout::SetMinimumSize</enum>
         </property>
         <property name="margin">
          <number>0</number>
         </property>
         <item>
          <widget class="QLineEdit" name="xcentreLine">
           <property name="maximumSize">
            <size>
             <width>60</width>
             <height>16777215</height>
            </size>
           </property>
           <property name="alignment">
            <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLineEdit" name="ycentreLine">
           <property name="minimumSize">
            <size>
             <width>60</width>
             <height>0</height>
            </size>
           </property>
           <property name="maximumSize">
            <size>
             <width>60</width>
             <height>16777215</height>
            </size>
           </property>
          </widget>
         </item>
        </layout>
       </widget>
      </item>
      <item row="1" column="5">
       <widget class="QCheckBox" name="checkSampCentre">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
        <property name="checked">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="2" column="5">
       <widget class="QCheckBox" name="checkSampVsys">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
        <property name="checked">
         <bool>true</bool>
        </property>
       </widget>
      </item>
      <item row="3" column="6">
       <widget class="QCheckBox" name="checkSampRadii">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
       </widget>
      </item>
      <item row="4" column="1" colspan="3">
       <widget class="QLineEdit" name="vrotLine"/>
      </item>
      <item row="4" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>VROT</string>
        </property>
       </widget>
      </item>
      <item row="4" column="5">
       <widget class="QPushButton" name="vrotButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>20</width>
          <height>20</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="4" column="6">
       <widget class="QCheckBox" name="vrotCheck">
        <property name="text">
         <string>Fixed</string>
        </property>
       </widget>
      </item>
      <item row="4" column="7">
       <widget class="QCheckBox" name="checkSampVrot">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="toolTip">
         <string/>
        </property>
        <property name="whatsThis">
         <string/>
        </property>
        <property name="styleSheet">
         <string notr="true">QCheckBox { color: green }</string>
        </property>
        <property name="text">
         <string>SAMP</string>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            setbrowser.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>setbrowser</class>
 <widget class="QDialog" name="setbrowser">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>556</width>
    <height>386</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>Set Path:</string>
     </property>
    </widget>
   </item>
   <item row="0" column="3">
    <widget class="QPushButton" name="browseButton">
     <property name="text">
      <string>BROWSE</string>
     </property>
    </widget>
   </item>
   <item row="3" column="0" colspan="4">
    <widget class="QFrame" name="axisFrame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="axesLayout">
      <item row="1" column="0">
       <spacer name="verticalSpacer_2">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>40</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item row="8" column="0" colspan="4">
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLabel" name="setpathLabel">
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_5">
     <property name="text">
      <string>Set Name:</string>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <spacer name="horizontalSpacer_2">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>40</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="2" column="0">
    <widget class="QPushButton" name="composerEnableButton">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="text">
      <string>Compose</string>
     </property>
    </widget>
   </item>
   <item row="5" column="0" rowspan="3" colspan="4">
    <widget class="QFrame" name="manualEditFrame">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>Set/subset</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="subsetLine"/>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>BOX</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="boxLine"/>
      </item>
     </layout>
    </widget>
   </item>
   <item row="4" column="0">
    <widget class="QPushButton" name="editEnableButton">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="text">
      <string>Edit</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="setnameLine"/>
   </item>
   <item row="1" column="3">
    <widget class="QPushButton" name="headerButton">
     <property name="text">
      <string>HEADER</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>setbrowser</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>setbrowser</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            shuffle.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>shuffle</class>
 <widget class="QFrame" name="shuffle">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <property name="lineWidth">
   <number>0</number>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QFrame" name="frame_2">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QPushButton" name="maskSetButton">
        <property name="text">
         <string>Maskset</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLabel" name="maskSetLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QPushButton" name="maskHeaderButton">
        <property name="text">
         <string>HEADER</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QPushButton" name="maskBoxButton">
        <property name="text">
         <string>BOX</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLabel" name="maskBoxLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>NMAX</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>CDELT</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="nmaxLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="cdeltLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            slice.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>slice</class>
 <widget class="QFrame" name="slice">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>445</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox_2">
     <property name="title">
      <string>Line</string>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>POSITION</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="xposLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QLineEdit" name="yposLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>ANGLE</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="angleLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="2">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>DEG</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>POINTS</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="pointsLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="3">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Output Options</string>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0">
       <widget class="QLabel" name="label_5">
        <property name="text">
         <string>GRIDOUT</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="gridoutLine"/>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>UP SLICES</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="upslicesLine"/>
      </item>
      <item row="1" column="2">
       <widget class="QLabel" name="label_7">
        <property name="text">
         <string>DOWN SLICES</string>
        </property>
       </widget>
      </item>
      <item row="1" column="3">
       <widget class="QLineEdit" name="downslicesLine"/>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_8">
        <property name="text">
         <string>SPACE</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="spaceLine"/>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            snapper.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>snapper</class>
 <widget class="QFrame" name="snapper">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>161</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>REPSIZE</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QLineEdit" name="repsizexLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <widget class="QLineEdit" name="repsizeyLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="0" column="3">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>154</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>OLDVAL</string>
     </property>
    </widget>
   </item>
   <item row="1" column="1">
    <widget class="QLineEdit" name="oldvalLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="1" column="2">
    <widget class="QCheckBox" name="oldvalCheck">
     <property name="text">
      <string>BLANK</string>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>NEWVAL</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1">
    <widget class="QLineEdit" name="newvalLine">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="2" column="2">
    <widget class="QCheckBox" name="newvalCheck">
     <property name="text">
      <string>BLANK</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            tablebrowser.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>tablebrowser</class>
 <widget class="QDialog" name="tablebrowser">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>438</width>
    <height>265</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="4" column="0" colspan="3">
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
   <item row="2" column="0" colspan="2">
    <widget class="QLabel" name="tablePathLabel">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_2">
     <property name="maximumSize">
      <size>
       <width>75</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="text">
      <string>Columns</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1">
    <widget class="QComboBox" name="columnsBox"/>
   </item>
   <item row="1" column="0" colspan="3">
    <widget class="QComboBox" name="tableBox"/>
   </item>
   <item row="3" column="2">
    <spacer name="horizontalSpacer">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="sizeHint" stdset="0">
      <size>
       <width>40</width>
       <height>20</height>
      </size>
     </property>
    </spacer>
   </item>
   <item row="0" column="0">
    <widget class="QLabel" name="label">
     <property name="sizePolicy">
      <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="text">
      <string>Select a table in session:</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>tablebrowser</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>tablebrowser</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            tableHeadersDlg.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>tableHeadersDlg</class>
 <widget class="QDialog" name="tableHeadersDlg">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QPlainTextEdit" name="plainTextEdit"/>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>tableHeadersDlg</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>tableHeadersDlg</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            table.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>table</class>
 <widget class="QWidget" name="table">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>717</width>
    <height>567</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QScrollArea" name="scrollArea">
     <property name="widgetResizable">
      <bool>true</bool>
     </property>
     <widget class="QWidget" name="scrollAreaWidgetContents">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>697</width>
        <height>547</height>
       </rect>
      </property>
      <property name="sizePolicy">
       <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
        <widget class="QTableView" name="tableData">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QTableView" name="tableStat">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <property name="maximumSize">
          <size>
           <width>16777215</width>
           <height>100</height>
          </size>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QWidget" name="widget" native="true">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <layout class="QGridLayout" name="gridLayout">
          <item row="0" column="1">
           <widget class="QLabel" name="label">
            <property name="text">
             <string>Mean</string>
            </property>
           </widget>
          </item>
          <item row="1" column="1">
           <widget class="QLabel" name="label_2">
            <property name="text">
             <string>Deviation</string>
            </property>
           </widget>
          </item>
          <item row="1" column="9">
           <widget class="QPushButton" name="addRowButton">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="toolTip">
             <string>Add row</string>
            </property>
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="../resources.qrc">
              <normaloff>:/row_add.ico</normaloff>:/row_add.ico</iconset>
            </property>
           </widget>
          </item>
          <item row="1" column="10">
           <widget class="QPushButton" name="delRowButton">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="toolTip">
             <string>Delete row</string>
            </property>
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="../resources.qrc">
              <normaloff>:/row_delete.ico</normaloff>:/row_delete.ico</iconset>
            </property>
           </widget>
          </item>
          <item row="0" column="0">
           <widget class="QLabel" name="label_3">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="minimumSize">
             <size>
              <width>15</width>
              <height>15</height>
             </size>
            </property>
            <property name="palette">
             <palette>
              <active>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>228</red>
                  <green>229</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>134</red>
                  <green>136</green>
                  <blue>170</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>228</red>
                  <green>229</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </active>
              <inactive>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>228</red>
                  <green>229</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>134</red>
                  <green>136</green>
                  <blue>170</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>228</red>
                  <green>229</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </inactive>
              <disabled>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>228</red>
                  <green>229</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>134</red>
                  <green>136</green>
                  <blue>170</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>100</red>
                  <green>102</green>
                  <blue>127</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>201</red>
                  <green>204</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </disabled>
             </palette>
            </property>
            <property name="autoFillBackground">
             <bool>true</bool>
            </property>
            <property name="text">
             <string/>
            </property>
           </widget>
          </item>
          <item row="1" column="0">
           <widget class="QLabel" name="label_4">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="minimumSize">
             <size>
              <width>15</width>
              <height>15</height>
             </size>
            </property>
            <property name="palette">
             <palette>
              <active>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>236</red>
                  <green>255</green>
                  <blue>227</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>145</red>
                  <green>170</green>
                  <blue>133</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>236</red>
                  <green>255</green>
                  <blue>227</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </active>
              <inactive>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>236</red>
                  <green>255</green>
                  <blue>227</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>145</red>
                  <green>170</green>
                  <blue>133</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>236</red>
                  <green>255</green>
                  <blue>227</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </inactive>
              <disabled>
               <colorrole role="WindowText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Button">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Light">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Midlight">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>236</red>
                  <green>255</green>
                  <blue>227</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Dark">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Mid">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>145</red>
                  <green>170</green>
                  <blue>133</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Text">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="BrightText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>255</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ButtonText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>108</red>
                  <green>127</green>
                  <blue>99</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Base">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Window">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="Shadow">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="AlternateBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>217</red>
                  <green>255</green>
                  <blue>199</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipBase">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>255</red>
                  <green>255</green>
                  <blue>220</blue>
                 </color>
                </brush>
               </colorrole>
               <colorrole role="ToolTipText">
                <brush brushstyle="SolidPattern">
                 <color alpha="255">
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </brush>
               </colorrole>
              </disabled>
             </palette>
            </property>
            <property name="autoFillBackground">
             <bool>true</bool>
            </property>
            <property name="text">
             <string/>
            </property>
           </widget>
          </item>
          <item row="0" column="3" colspan="3">
           <spacer name="horizontalSpacer">
            <property name="orientation">
             <enum>Qt::Horizontal</enum>
            </property>
            <property name="sizeHint" stdset="0">
             <size>
              <width>40</width>
              <height>20</height>
             </size>
            </property>
           </spacer>
          </item>
          <item row="0" column="6" colspan="5">
           <widget class="QFrame" name="frame">
            <property name="frameShape">
             <enum>QFrame::NoFrame</enum>
            </property>
            <property name="frameShadow">
             <enum>QFrame::Plain</enum>
            </property>
            <property name="lineWidth">
             <number>0</number>
            </property>
            <layout class="QHBoxLayout" name="horizontalLayout_2">
             <property name="spacing">
              <number>6</number>
             </property>
             <property name="margin">
              <number>0</number>
             </property>
             <item>
              <widget class="QPushButton" name="headersButton">
               <property name="text">
                <string>View Headers</string>
               </property>
               <property name="icon">
                <iconset resource="../resources.qrc">
                 <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
               </property>
              </widget>
             </item>
             <item>
              <widget class="QPushButton" name="plotButton">
               <property name="text">
                <string>Plot Table</string>
               </property>
               <property name="icon">
                <iconset resource="../resources.qrc">
                 <normaloff>:/plot.gif</normaloff>:/plot.gif</iconset>
               </property>
              </widget>
             </item>
             <item>
              <widget class="QPushButton" name="sampButton">
               <property name="text">
                <string>Send it to SAMP</string>
               </property>
              </widget>
             </item>
            </layout>
           </widget>
          </item>
          <item row="1" column="8">
           <widget class="QPushButton" name="delColumnButton">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="toolTip">
             <string>Delete column</string>
            </property>
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="../resources.qrc">
              <normaloff>:/column_delete.ico</normaloff>:/column_delete.ico</iconset>
            </property>
           </widget>
          </item>
          <item row="1" column="7">
           <widget class="QPushButton" name="addColumnButton">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="toolTip">
             <string>Add column</string>
            </property>
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="../resources.qrc">
              <normaloff>:/column_add_after.ico</normaloff>:/column_add_after.ico</iconset>
            </property>
           </widget>
          </item>
         </layout>
        </widget>
       </item>
      </layout>
     </widget>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
 <designerdata>
  <property name="gridDeltaX">
   <number>10</number>
  </property>
  <property name="gridDeltaY">
   <number>10</number>
  </property>
  <property name="gridSnapX">
   <bool>true</bool>
  </property>
  <property name="gridSnapY">
   <bool>true</bool>
  </property>
  <property name="gridVisible">
   <bool>true</bool>
  </property>
 </designerdata>
</ui>
#<

#>            tablePreview.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>tablePreview</class>
 <widget class="QDialog" name="tablePreview">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>505</width>
    <height>288</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QTextEdit" name="textEdit">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="lineWrapMode">
      <enum>QTextEdit::NoWrap</enum>
     </property>
     <property name="readOnly">
      <bool>true</bool>
     </property>
     <property name="html">
      <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="label">
        <property name="text">
         <string>Number of header lines:</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="numberLines"/>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>tablePreview</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>tablePreview</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            text.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>text</class>
 <widget class="QWidget" name="text">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>311</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QPlainTextEdit" name="plainTextEdit"/>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            transform.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>transform</class>
 <widget class="QFrame" name="transform">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>486</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::NoFrame</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Center</string>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="label">
        <property name="text">
         <string>X POS</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="xposLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="label_2">
        <property name="text">
         <string>Y POS</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="yposLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <spacer name="horizontalSpacer_2">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QComboBox" name="operationBox">
        <item>
         <property name="text">
          <string>Translation</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Rotation</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Scaling</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>X Reflection</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Y Reflection</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>PC Reflection</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>X Shear</string>
         </property>
        </item>
        <item>
         <property name="text">
          <string>Y Shear</string>
         </property>
        </item>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QGroupBox" name="groupBox_2">
     <property name="title">
      <string>Parameters</string>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0">
       <widget class="QLabel" name="label_3">
        <property name="text">
         <string>TRANSLXY</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="translxLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QLineEdit" name="translyLine">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="0" column="3">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string>ANGLE</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="angleLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="1" column="2">
       <widget class="QLabel" name="label_5">
        <property name="enabled">
         <bool>false</bool>
        </property>
        <property name="text">
         <string>Degrees</string>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_6">
        <property name="text">
         <string>SCALEXY</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="scalexLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="2" column="2">
       <widget class="QLineEdit" name="scaleyLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="3" column="0">
       <widget class="QLabel" name="label_8">
        <property name="text">
         <string>XSHEAR</string>
        </property>
       </widget>
      </item>
      <item row="4" column="0">
       <widget class="QLabel" name="label_9">
        <property name="text">
         <string>YSHEAR</string>
        </property>
       </widget>
      </item>
      <item row="3" column="1">
       <widget class="QLineEdit" name="xshearLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="4" column="1">
       <widget class="QLineEdit" name="yshearLine">
        <property name="maximumSize">
         <size>
          <width>75</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            transpose.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>transpose</class>
 <widget class="QFrame" name="transpose">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>451</width>
    <height>180</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QGroupBox" name="groupBox">
     <property name="title">
      <string>Axes</string>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="0" column="0" colspan="3">
       <widget class="QListWidget" name="axesList">
        <property name="midLineWidth">
         <number>-4</number>
        </property>
       </widget>
      </item>
      <item row="2" column="2">
       <widget class="QPushButton" name="upButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/arrowUp.png</normaloff>:/arrowUp.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>24</width>
          <height>24</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QPushButton" name="downButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/arrowDown.png</normaloff>:/arrowDown.png</iconset>
        </property>
        <property name="iconSize">
         <size>
          <width>24</width>
          <height>24</height>
         </size>
        </property>
       </widget>
      </item>
      <item row="2" column="0">
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            velfi.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>velfi</class>
 <widget class="QFrame" name="velfi">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>492</width>
    <height>329</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Frame</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label_4">
     <property name="text">
      <string>CENTRE</string>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>VSYS</string>
     </property>
    </widget>
   </item>
   <item row="2" column="1" colspan="2">
    <widget class="QLineEdit" name="vsysLine"/>
   </item>
   <item row="2" column="3">
    <widget class="QPushButton" name="vsysButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="4" column="0">
    <widget class="QLabel" name="label_2">
     <property name="text">
      <string>VROT</string>
     </property>
    </widget>
   </item>
   <item row="4" column="1" colspan="2">
    <widget class="QLineEdit" name="vrotLine"/>
   </item>
   <item row="4" column="3">
    <widget class="QPushButton" name="vrotButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="5" column="0">
    <widget class="QLabel" name="label_9">
     <property name="text">
      <string>VRAD</string>
     </property>
    </widget>
   </item>
   <item row="5" column="1" colspan="2">
    <widget class="QLineEdit" name="vradLine"/>
   </item>
   <item row="5" column="3">
    <widget class="QPushButton" name="vradButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="6" column="0">
    <widget class="QLabel" name="label_10">
     <property name="text">
      <string>PA</string>
     </property>
    </widget>
   </item>
   <item row="6" column="1" colspan="2">
    <widget class="QLineEdit" name="paLine"/>
   </item>
   <item row="6" column="3">
    <widget class="QPushButton" name="paButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="7" column="0">
    <widget class="QLabel" name="label_11">
     <property name="text">
      <string>INCL</string>
     </property>
    </widget>
   </item>
   <item row="7" column="1" colspan="2">
    <widget class="QLineEdit" name="inclLine"/>
   </item>
   <item row="7" column="3">
    <widget class="QPushButton" name="inclButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="8" column="0">
    <widget class="QPushButton" name="saveParamsButton">
     <property name="text">
      <string>SAVE PARAMS</string>
     </property>
    </widget>
   </item>
   <item row="8" column="1">
    <widget class="QPushButton" name="loadParamsButton">
     <property name="text">
      <string>LOAD PARAMS</string>
     </property>
    </widget>
   </item>
   <item row="0" column="1">
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <property name="lineWidth">
      <number>0</number>
     </property>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <property name="spacing">
       <number>8</number>
      </property>
      <property name="margin">
       <number>0</number>
      </property>
      <item>
       <widget class="QLineEdit" name="xcentreLine">
        <property name="maximumSize">
         <size>
          <width>60</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLineEdit" name="ycentreLine">
        <property name="maximumSize">
         <size>
          <width>60</width>
          <height>16777215</height>
         </size>
        </property>
       </widget>
      </item>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>40</width>
          <height>20</height>
         </size>
        </property>
       </spacer>
      </item>
     </layout>
    </widget>
   </item>
   <item row="2" column="4">
    <widget class="QCheckBox" name="checkSampVsys">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
   <item row="4" column="4">
    <widget class="QCheckBox" name="checkSampVrot">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
   <item row="3" column="1" colspan="2">
    <widget class="QLineEdit" name="radiiLine"/>
   </item>
   <item row="3" column="0">
    <widget class="QLabel" name="label_8">
     <property name="text">
      <string>RADII</string>
     </property>
    </widget>
   </item>
   <item row="3" column="3">
    <widget class="QPushButton" name="radiiButton">
     <property name="text">
      <string/>
     </property>
     <property name="icon">
      <iconset resource="../resources.qrc">
       <normaloff>:/table.jpg</normaloff>:/table.jpg</iconset>
     </property>
     <property name="iconSize">
      <size>
       <width>20</width>
       <height>20</height>
      </size>
     </property>
    </widget>
   </item>
   <item row="3" column="4">
    <widget class="QCheckBox" name="checkSampRadii">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
    </widget>
   </item>
   <item row="0" column="2">
    <widget class="QCheckBox" name="checkSampCentre">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="styleSheet">
      <string notr="true">QCheckBox { color: green }</string>
     </property>
     <property name="text">
      <string>SAMP</string>
     </property>
     <property name="checked">
      <bool>true</bool>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections/>
</ui>
#<

#>            viewtask.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>viewtask</class>
 <widget class="QDialog" name="viewtask">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>439</width>
    <height>309</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>TASK</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QFrame" name="insetFrame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <widget class="QPushButton" name="insetButton">
        <property name="text">
         <string>INSET</string>
        </property>
       </widget>
      </item>
      <item row="0" column="2">
       <widget class="QPushButton" name="headerButton">
        <property name="text">
         <string>HEADER</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QPushButton" name="boxButton">
        <property name="text">
         <string>BOX</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLabel" name="insetLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLabel" name="boxLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="frame">
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Plain</enum>
     </property>
     <property name="lineWidth">
      <number>0</number>
     </property>
     <layout class="QVBoxLayout" name="horizontalLayout">
      <property name="spacing">
       <number>0</number>
      </property>
      <property name="margin">
       <number>0</number>
      </property>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="outsetFrame">
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QGridLayout" name="gridLayout_2">
      <item row="1" column="0">
       <widget class="QLabel" name="label_7">
        <property name="text">
         <string>Outset Name</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1" colspan="3">
       <widget class="QLineEdit" name="outsetNameLine"/>
      </item>
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="text">
         <string>Outset Path:</string>
        </property>
       </widget>
      </item>
      <item row="1" column="4">
       <widget class="QPushButton" name="replaceButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/replace.jpg</normaloff>:/replace.jpg</iconset>
        </property>
       </widget>
      </item>
      <item row="0" column="4">
       <widget class="QPushButton" name="browserButton">
        <property name="text">
         <string/>
        </property>
        <property name="icon">
         <iconset resource="../resources.qrc">
          <normaloff>:/fileopen.png</normaloff>:/fileopen.png</iconset>
        </property>
       </widget>
      </item>
      <item row="0" column="1" colspan="3">
       <widget class="QLabel" name="outsetPathLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QFrame" name="advise_panel">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="sizePolicy">
      <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
       <horstretch>0</horstretch>
       <verstretch>0</verstretch>
      </sizepolicy>
     </property>
     <property name="frameShape">
      <enum>QFrame::NoFrame</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
     <layout class="QVBoxLayout" name="advise_panel_layout">
      <item>
       <widget class="QLabel" name="status">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="errorMsg">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QFrame" name="extra_panel">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="frameShape">
         <enum>QFrame::NoFrame</enum>
        </property>
        <property name="frameShadow">
         <enum>QFrame::Raised</enum>
        </property>
        <layout class="QVBoxLayout" name="extra_panel_layout"/>
       </widget>
      </item>
     </layout>
    </widget>
   </item>
   <item>
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Apply|QDialogButtonBox::Close|QDialogButtonBox::Help</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources>
  <include location="../resources.qrc"/>
 </resources>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>viewtask</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>viewtask</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
#<

#>            wfits.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>wfits</class>
 <widget class="QFrame" name="wfits">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>439</width>
    <height>120</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Save set as Fits</string>
  </property>
  <property name="frameShape">
   <enum>QFrame::StyledPanel</enum>
  </property>
  <property name="frameShadow">
   <enum>QFrame::Raised</enum>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QLabel" name="label_3">
     <property name="text">
      <string>Save set:</string>
     </property>
    </widget>
   </item>
   <item row="1" column="0">
    <widget class="QLabel" name="setPathLabel">
     <property name="text">
      <string/>
     </property>
    </widget>
   </item>
   <item row="2" column="0">
    <widget class="QLabel" name="label">
     <property name="text">
      <string>as:</string>
     </property>
    </widget>
   </item>
   <item row="4" column="0">
    <widget class="QLineEdit" name="fitsPathLine"/>
   </item>
   <item row="4" column="1">
    <widget class="QPushButton" name="browseButton">
     <property name="text">
      <string>Browse</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            workflow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>workflow</class>
 <widget class="QWidget" name="workflow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QVBoxLayout" name="verticalLayout">
   <item>
    <widget class="QLabel" name="label">
     <property name="font">
      <font>
       <family>Sans Serif</family>
       <pointsize>14</pointsize>
       <weight>75</weight>
       <bold>true</bold>
      </font>
     </property>
     <property name="text">
      <string>Workflow</string>
     </property>
    </widget>
   </item>
   <item>
    <widget class="QPushButton" name="saveButton">
     <property name="maximumSize">
      <size>
       <width>100</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="text">
      <string>Save as a file</string>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            workspaceBrowser.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>workspaceBrowser</class>
 <widget class="QWidget" name="workspaceBrowser">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <layout class="QHBoxLayout" name="horizontalLayout">
   <item>
    <widget class="QTreeWidget" name="workspaceTree">
     <column>
      <property name="text">
       <string notr="true">1</string>
      </property>
     </column>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections/>
</ui>
#<

#>            guipsy.pyw
#!/usr/bin/env python
import gipsy
from gipsy import *
import sys
import functools
import os
import re
import matplotlib
import glob
import operator
import decimal
import time
import pickle
import math
#import sampy
#import astropy
import numpy
import numpy.ma as ma
#from astropy.io.votable import parse_single_table
#from astropy.table import Table as astroTable
#from astropy.io.votable.tree import VOTableFile
#import networkx as nx
#import networkx.algorithms.traversal
from types import *
from xml.sax.saxutils import escape 
import xml.sax 
import xml.sax.handler 
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from matplotlib.figure import Figure
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PIL import Image
from PIL.ImageQt import ImageQt
####START ./../development/resources_rc.py
# -*- coding: utf-8 -*-

# Resource object code
#
# Created: Wed Nov 28 19:37:16 2012
#      by: The Resource Compiler for PyQt (Qt v4.6.2)
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore

qt_resource_data = "\
\x00\x00\x0d\x60\
\x47\
\x49\x46\x38\x39\x61\x20\x00\x20\x00\xe7\xde\x00\x16\x61\xa7\x18\
\x62\xa8\x1a\x63\xa9\x1c\x64\xaa\x1e\x65\xab\x20\x66\xac\x11\x6b\
\xb0\x22\x67\xad\x14\x6c\xb1\x24\x68\xae\x16\x6d\xb2\x25\x69\xaf\
\x27\x6a\xb0\x29\x6d\xad\x2b\x6e\xae\x2c\x6e\xaf\x2e\x6f\xb0\x2f\
\x70\xb1\x30\x71\xb2\x32\x72\xb3\x33\x73\xb4\x35\x74\xb6\x36\x75\
\xb7\x37\x76\xb8\x36\x77\xb2\x38\x79\xb4\x3a\x7a\xb5\x44\x78\xb4\
\x3b\x7b\xb6\x3c\x7c\xb8\x3e\x7d\xb9\x3f\x7e\xba\x40\x7f\xbb\x41\
\x80\xbc\x43\x81\xbd\x44\x82\xbe\x4e\x83\xba\x4f\x84\xbb\x50\x85\
\xbc\x51\x86\xbd\x52\x87\xbe\x54\x89\xc0\x56\x8a\xc1\x74\x90\x30\
\x7a\x8f\x30\x57\x8b\xc2\x7b\x90\x31\x58\x8c\xc3\x7c\x91\x32\x59\
\x8d\xc4\x5f\x8c\xbe\x60\x8d\xbf\x59\x90\xc1\x61\x8e\xc0\x62\x8f\
\xc1\x5b\x92\xc3\x5c\x93\xc4\x64\x91\xc3\x5d\x94\xc5\x65\x92\xc4\
\x5f\x95\xc6\x60\x96\xc7\x68\x95\xc7\x61\x97\xc8\x62\x98\xca\x85\
\x9c\x43\x68\x98\xc4\x86\x9d\x44\x69\x99\xc5\x87\x9e\x45\x6a\x9a\
\xc6\x88\x9f\x46\x87\x9f\x4c\x6b\x9b\xc7\x88\xa0\x4d\x6d\x9c\xc8\
\x89\xa1\x4e\x6e\x9d\xc9\x6f\x9e\xca\x71\xa0\xcd\x72\xa2\xce\x73\
\xa3\xcf\x74\xa4\xd0\x7b\xa4\xcb\x7c\xa5\xcc\x7d\xa6\xcd\x7e\xa7\
\xcf\x7f\xa9\xd0\x80\xaa\xd1\x81\xab\xd2\x82\xac\xd3\x83\xad\xd4\
\xa2\xb0\x6c\x9d\xb2\x6c\x85\xaf\xd6\x8b\xb0\xd2\x8c\xb1\xd3\x8d\
\xb2\xd4\xa5\xb5\x76\x8e\xb3\xd5\xa6\xb6\x77\x8f\xb4\xd6\xa7\xb7\
\x78\x90\xb5\xd7\xa8\xb8\x79\x91\xb6\xd8\xa9\xb9\x7a\x93\xb7\xd9\
\xaa\xba\x7b\x94\xb8\xda\x95\xb9\xdb\x99\xb9\xd6\x9a\xba\xd7\xac\
\xbe\x85\x9b\xbb\xd8\xae\xbf\x86\x9c\xbc\xd9\xb3\xbe\x86\xb4\xbf\
\x87\x9e\xbe\xdb\xb5\xc0\x88\x9f\xbf\xdc\xb6\xc1\x89\xa0\xc0\xdd\
\xb5\xc2\x90\xb7\xc3\x91\xa2\xc2\xde\xa3\xc3\xe0\xb8\xc5\x92\xa4\
\xc4\xe1\xb9\xc6\x93\xa5\xc5\xe2\xba\xc7\x94\xa6\xc6\xe3\xbb\xc8\
\x95\xaa\xc6\xdd\xbc\xc9\x96\xab\xc7\xde\xbb\xca\x9d\xac\xc8\xdf\
\xad\xc9\xe0\xae\xca\xe1\xaf\xcb\xe3\xb0\xcc\xe4\xc5\xcd\xa2\xb1\
\xcd\xe5\xb8\xcc\xe5\xb3\xce\xe6\xb9\xcd\xe6\xb4\xcf\xe7\xb7\xcf\
\xe1\xb8\xd0\xe2\xbb\xcf\xe8\xba\xd1\xe3\xc8\xd3\xad\xbb\xd2\xe4\
\xc1\xd1\xe4\xc2\xd2\xe6\xc3\xd3\xe7\xbd\xd5\xe7\xcc\xd7\xb1\xc4\
\xd4\xe8\xcd\xd8\xb2\xc5\xd5\xe9\xbf\xd7\xe9\xc7\xd6\xea\xc8\xd7\
\xeb\xc9\xd8\xec\xd4\xda\xbc\xca\xd9\xed\xcd\xd9\xe7\xd5\xdb\xbd\
\xcf\xdb\xea\xd0\xdd\xeb\xd2\xde\xec\xd3\xdf\xed\xd4\xe0\xee\xd5\
\xe1\xef\xd6\xe2\xf0\xd7\xe3\xf1\xd8\xe4\xf3\xd9\xe5\xf4\xdd\xe5\
\xee\xde\xe6\xef\xdf\xe7\xf0\xe0\xe9\xf1\xe1\xea\xf2\xe2\xeb\xf3\
\xe3\xec\xf4\xe4\xed\xf5\xea\xee\xdd\xe8\xef\xe4\xe5\xee\xf7\xeb\
\xef\xde\xe9\xf0\xe5\xec\xf0\xdf\xe7\xef\xf8\xeb\xf1\xe6\xe8\xf0\
\xf9\xe9\xf1\xfa\xf2\xf1\xe8\xec\xf3\xe7\xf3\xf2\xe9\xea\xf3\xfb\
\xed\xf4\xe9\xee\xf3\xf6\xef\xf5\xf7\xf0\xf6\xf8\xf2\xf7\xf9\xf3\
\xf8\xfb\xf6\xf8\xf4\xf4\xf9\xfc\xf5\xfa\xfd\xf6\xfb\xfe\xf9\xfb\
\xf8\xfa\xfc\xf9\xf7\xfd\xff\xfb\xfd\xfa\xf8\xfe\xff\xf9\xff\xff\
\xfc\xff\xfb\xfe\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xff\x0b\x4e\
\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\
\xfe\x11\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x47\
\x49\x4d\x50\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\
\x00\x20\x00\x20\x00\x40\x08\xfe\x00\xff\x75\x1b\x48\xb0\xa0\xc1\
\x83\x08\x13\x52\x02\xc0\xb0\xa1\x80\x25\xa5\xa6\x0d\xec\xe5\xc7\
\x43\xc3\x86\x0a\xa6\x15\xd4\x36\xe0\x22\x80\x46\x09\x13\xa2\xf0\
\x48\xc5\xe0\xb2\x02\x00\xce\x0c\xec\xb3\xa2\xa5\x4b\x97\x45\x8a\
\x75\xc3\x06\x04\x80\x94\x90\x03\x97\x11\x2b\xd8\xc8\x63\x05\x63\
\x05\x7b\x69\xc3\x19\xab\xe1\x1d\x9c\x05\x3f\x30\x34\x11\xf2\x09\
\xc3\x01\xc6\x0a\x66\xe3\xb2\x22\x48\x30\x83\x63\x18\x0a\x48\x85\
\x13\x94\x8b\x97\x60\xc3\xae\x60\xc2\x0c\x69\xc2\x3b\x0d\x07\x34\
\x1b\xc8\xb6\xad\x5b\xb6\xae\x04\x78\x9c\x4b\x97\x21\x89\xb7\x6d\
\x6f\x34\x14\xf1\x0c\x2f\xdb\x4c\x02\x1a\x66\x7a\x6b\xeb\xc7\x81\
\x86\x4b\xfc\xe2\x85\x76\x11\x04\x1d\xb6\x4b\x3c\x8e\x51\x8c\x37\
\x82\xc7\x52\x6f\x51\x34\xd4\x35\x90\x0d\xd8\x21\xc3\x06\x9e\x69\
\xd8\x48\x71\x96\x31\x03\x21\x89\x0d\xab\xa4\xd8\x40\x29\xc4\xfc\
\x4a\xd3\x53\xc7\x8e\x1d\x3c\x7a\xf4\xf4\xd9\xcd\x5b\x10\x21\x42\
\x86\x0c\x21\x42\xa4\x08\x15\x65\xbf\xd5\xb6\xa8\xa0\x41\xe9\xb8\
\xf3\xb6\x29\x2e\xfa\x79\xee\x96\x11\x01\x00\x4e\x42\x65\x22\x42\
\xf7\xc1\x1a\x56\x93\x4c\xac\x00\x08\x61\x4c\xb1\x95\xba\x0c\x11\
\x1c\x40\x0f\x60\x96\x62\x0b\x17\x35\xcc\xf2\x0b\x67\xc0\x45\x2f\
\x94\x3f\x30\x54\x40\xcc\x39\x9c\x86\x77\xf8\x45\x8c\x07\x0c\x29\
\x50\x0d\x75\x87\x34\xb4\x86\x5b\x20\x78\x24\x07\x75\x03\x6d\xe0\
\xd1\x20\x03\x25\xe0\x51\x22\x10\x76\x63\x82\x47\x58\x0c\xa4\x4d\
\x26\x36\x34\x14\xc3\x5b\xd6\x98\xe1\xcb\x5b\xbb\x34\x54\x40\x15\
\xb1\xbc\xd5\x0c\x01\x0c\x4d\xd1\x96\x18\x2e\x0d\x11\x0c\x5b\xce\
\x3c\xc0\x90\x11\x94\xa9\xc0\xd0\x19\x03\xd5\x21\x56\x11\xc5\x74\
\x53\x0d\x0f\x0c\x65\xa2\x58\x18\x00\x94\x31\x10\x22\xab\xb9\x74\
\x44\x31\xdd\x68\xd3\x44\x01\xcf\xf8\x45\xcd\x40\x9a\xb0\x10\x25\
\x58\x4a\x20\x73\x5c\x37\xab\xc0\xf0\xe5\x6a\x4c\x28\x33\xe6\x9a\
\xc7\x05\x04\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\
\x00\x20\x00\x20\x00\x40\x08\xfe\x00\xff\x75\x1b\x48\xb0\xa0\xc1\
\x83\x08\x13\x0e\x24\x01\xa0\x21\x00\x01\x46\x42\x45\x1b\xd8\x2b\
\x4f\x07\x87\x18\x01\xb8\x2a\x58\x22\x63\x23\x85\x08\x51\x60\x94\
\xe1\xac\xe0\x0d\x87\x65\x06\xf6\x59\xc1\xb2\x65\xcb\x22\xc5\xba\
\x61\x13\x72\x08\xe4\x40\x58\x16\x00\x7c\x90\xd5\x4d\x1b\xa7\x09\
\x19\x4d\xd9\x1c\x78\xaa\xcc\x05\x87\x77\x86\x0e\xfc\xd0\x70\x80\
\xc2\x35\x0d\x07\x18\x2b\x98\x8d\xcb\x8a\x20\xc1\x0c\x8e\xc9\x88\
\xa2\x1a\x42\x51\x2e\x5c\x8a\x1d\xbb\x82\x09\x33\xa5\x09\x97\x38\
\x54\x81\x96\xe0\xa7\x8c\x70\x31\x3e\x18\x53\xe9\x8b\x86\x17\xcd\
\x14\xca\x72\x18\xc2\x19\xc8\x4c\x02\x30\x12\x31\x28\x22\xe3\x92\
\xb6\xd0\x1c\xbe\x41\xd8\xc8\x61\x99\xb6\xdd\x22\x64\x1c\x63\xb0\
\x07\x46\x5d\x03\xd9\x88\x1d\x52\x6c\xe0\x99\x86\x02\x5c\x25\x7c\
\x66\x61\xcc\x40\x48\x64\xc7\x2a\x29\x36\x54\x9a\x9e\x3a\x76\xec\
\xe0\xd1\xa3\xa7\x8f\xed\xdb\x82\x08\x11\x32\x64\x08\x11\x22\x45\
\xa8\x20\x17\x74\x56\xc5\xc8\x1a\x67\xc2\x07\x56\x7b\x85\xad\xe0\
\xad\x01\x0e\x07\x60\x83\xbc\xac\x01\xc6\x09\x0b\xe2\x76\x38\xd6\
\xf6\x19\x81\xb8\x00\x0c\x99\x14\x00\xdf\xf0\x05\xc8\x0e\x0e\x35\
\xc8\x4a\xf8\x46\x00\x5c\x58\x08\xa3\x8d\x68\xa8\xa0\xd7\x50\x37\
\x18\x75\x19\x74\x93\x51\x01\x35\xb4\x87\x38\x44\x8c\x41\x10\x64\
\x24\x07\x64\x1b\x34\x94\xc0\x27\x05\xf5\x02\x04\x46\x89\x40\x66\
\x42\x46\x6b\x18\xd4\x42\x43\x33\x1c\x74\x0d\x1a\xbe\x1c\xb4\x0b\
\x5c\x93\x18\x94\x87\x43\x53\x14\x44\x46\x4b\x43\xfc\x42\x90\x33\
\x0f\x34\xf4\x80\x1f\xc6\x1c\x64\x0a\x46\x67\x0c\x34\x07\x59\x45\
\x14\xd3\x4d\x35\x37\x00\x60\x84\x42\x5a\x34\x34\xc6\x40\x88\xa4\
\xd6\xd2\x11\xc5\x74\xa3\x0d\x2f\x20\x3d\x33\x90\x26\x2e\x18\x29\
\x96\x12\xc8\x0c\xb5\x0a\x0c\x52\xa6\xc6\x84\x32\xc9\x25\x17\x10\
\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x20\x00\
\x20\x00\x40\x08\xfe\x00\xff\x75\x1b\x48\xb0\xa0\xc1\x83\x08\x13\
\x12\xbc\x00\xa0\xa1\x00\x23\xa1\xa2\x75\xd3\xd6\x2b\x4f\x87\x86\
\x18\x31\xae\x31\x48\xcd\x06\xc6\x46\x0a\x11\xa2\x68\xe8\xe1\x20\
\xa7\x8c\x65\x06\xf6\x59\xc1\xb2\x65\xcb\x22\xc5\xba\x61\x03\x53\
\x2d\x24\x41\x29\x18\x05\x58\xc9\xd4\x68\x49\x46\x00\x31\x6c\x36\
\xfa\x09\xe0\x8e\x4d\x82\x1f\x30\x2e\xd0\x75\xd0\x98\x80\x86\x03\
\x8c\x15\xcc\xc6\x65\x45\x90\x60\x06\xc7\x10\xe5\x85\x50\x94\x0b\
\x97\x60\xc3\xae\x60\xc2\xec\x28\x41\x6a\xd1\x0e\xe6\x68\xd8\xe0\
\x94\xd9\x82\x37\x88\xca\x05\xa0\xe5\x28\xb6\x5e\x5f\x30\x86\x70\
\x16\x32\x93\x00\xa2\xac\x08\x36\xf9\xb9\xe4\x6d\x37\x68\x18\xe9\
\x24\x9c\xd0\xb0\x8c\xe1\x6e\x13\x32\x76\x88\xd6\xad\xf2\x1a\xa2\
\xba\x2a\xb3\x01\x3b\xa4\x58\xe5\x33\x18\x17\x98\xe8\x41\xab\xb2\
\x69\x6d\xb4\xa2\x55\x86\x24\x36\xac\x92\x62\xa6\x63\xcb\x96\xa6\
\xa7\x8e\x1d\x3b\x78\xf4\xe8\xe9\xc3\xbb\xb7\x20\x42\x84\x0c\x19\
\x42\x84\x48\x11\x2a\xd9\xc8\x93\xc7\xa6\xd6\x88\xd3\x34\xe5\xd0\
\xbb\x69\x03\x93\xe0\x40\xa5\xd8\x7e\x32\xfe\x88\x9e\x5c\xc3\xdc\
\x9f\x11\xb0\xac\x71\x97\xdd\x44\xae\x81\x02\x44\x79\x98\x72\x75\
\xe7\x90\x36\xe8\x6b\x30\x6a\x90\x95\x5c\xdb\x1a\x01\x44\x17\x40\
\x33\x8d\x8d\xc6\x4f\x05\xbd\x8c\xe7\xc6\x4f\x1a\x50\x63\xda\x13\
\x3f\x29\x40\xcd\x78\x95\x1d\x82\x51\x15\xb2\xe1\xa2\x01\x46\x00\
\xc8\xc1\xa0\x69\x1b\x34\xf4\x45\x72\xbc\x60\x94\xc8\x85\x95\x99\
\x80\x91\x13\xd4\x20\xa7\x41\x43\x33\x20\x77\x0d\x1a\xbe\x20\xb7\
\x0b\x85\x0d\xa9\x62\x9a\x36\x36\x50\x38\x45\x6c\x64\xb4\x34\xc4\
\x2f\xa6\x39\xf3\x00\x8c\x21\xc4\xe6\x04\x8c\x67\x54\x36\x87\x58\
\x45\x14\xd3\x4d\x35\x37\x00\xc0\x03\x34\xca\x01\x01\x80\x00\x65\
\x54\x86\x48\x6b\x2d\x1d\x51\x0c\x88\xdd\x68\xe2\x02\x96\x60\x29\
\x81\xcc\x78\xab\xc0\x00\x66\x6b\x4c\x28\xc3\xe5\x9a\xa6\x05\x04\
\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x20\x00\
\x20\x00\x40\x08\xfe\x00\xff\x75\x1b\x48\xb0\xa0\xc1\x83\x08\x13\
\x12\x8c\x02\xa0\xa1\x80\x25\xa5\xa8\x0d\x24\xe6\xe7\x43\xc3\x86\
\x2a\x6c\x69\x6b\x56\xed\x20\xb5\x8b\x8d\x14\x22\x44\xd1\x70\xca\
\x41\x58\x29\x5a\xd8\x58\x70\x66\x60\x9f\x15\x30\x63\xc6\x2c\x52\
\xac\x1b\xb6\x2c\x99\x78\xe1\xaa\x26\xb2\x9b\x9c\x8b\x00\x04\x2c\
\x91\x33\x26\x04\x50\x00\xb1\x14\xa6\x3a\x0a\x20\x4f\x4f\x82\x1f\
\x8e\x8e\x20\x88\xad\x06\xd0\x01\xc6\x0a\x66\xeb\xb2\x22\x88\x2f\
\x83\x63\x8e\xa6\x48\x08\xca\x85\xcc\xb3\x68\x57\x28\x61\xf6\x94\
\x20\xb4\x35\x37\x18\x19\xac\xc6\xe3\xc1\x0f\x5a\x6d\x0b\xba\x61\
\xca\x17\x00\x27\x91\x5a\x98\x8a\x78\x26\x92\xd3\x00\xa6\x55\x0a\
\xda\x9a\x70\x71\x49\xde\x6e\xd0\x2e\x12\xc8\x75\x30\xd6\xc5\x31\
\x8f\xbb\x45\x68\x98\xa0\x57\x41\x57\x7c\x75\x0d\x54\x73\x76\xc8\
\xaf\x81\x67\x98\xae\x11\x09\x29\x2d\x5a\x25\xc5\x9e\x4a\xd3\x53\
\xc7\x0e\x1e\x3c\x7a\xf4\xf4\xd9\xbd\x5b\x90\x20\x42\x84\x0c\x19\
\x42\x84\x48\x11\xaa\xcc\xc8\x9f\xf6\x9a\x70\x11\x13\x41\x6d\x4b\
\x2e\x2e\x68\x96\xd9\x4f\x5f\xa6\xba\x1e\x6b\x0b\xc1\x54\x41\x02\
\xa6\x25\xaa\x94\x29\xd4\xe6\x67\xcd\x9a\x11\x17\x3b\xcc\x4a\x28\
\x67\x00\xd3\x09\xc4\x08\x46\x3b\x70\xf4\x01\xb1\xa7\x70\x98\x62\
\x20\xb8\x4c\x01\x50\x05\xd5\xe4\x95\x08\x50\x16\xe4\x62\x50\x26\
\x17\xc9\x91\xd9\x06\x0d\xdd\x80\x90\x36\x17\x25\x92\x99\x09\x0d\
\xf5\x70\x10\x36\x2f\x5c\x14\xc3\x41\xd6\x98\xe1\xcb\x41\xbb\x00\
\xa5\xc1\x2e\x04\x71\xc2\x94\x14\x05\x89\x11\xd3\x10\xc1\x10\xe4\
\xcc\x03\x47\x91\x40\x90\x36\x1a\x1c\x75\xc6\x40\x73\xa4\x55\x44\
\x31\xdd\x54\xc3\x03\x50\x1a\x40\x93\x50\x34\x03\x21\xe2\x5a\x4c\
\x47\x14\x93\x99\x26\x2c\x1c\x79\x96\x12\xc5\x3c\x85\x0a\x0c\x4e\
\xba\xc6\x84\x32\xc9\x25\x17\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\
\x00\x2c\x00\x00\x00\x00\x20\x00\x20\x00\x40\x08\xfe\x00\xff\x75\
\x1b\x48\xb0\xa0\xc1\x83\x08\x11\x26\x1a\x20\x00\x43\x02\x00\x10\
\x05\x2c\x29\x45\x6d\x20\x31\x3f\x1f\x20\x42\x9c\x50\x2d\x61\xb7\
\x59\x1a\x1b\x79\x44\x88\x02\xe2\x80\x59\x1e\x5f\x9c\x19\xd8\x67\
\x85\xcb\x97\x2f\x8b\x14\xeb\x86\x0d\x88\xc6\x35\x23\x09\xc6\xd0\
\x08\x40\x00\x95\x4c\xa1\xb4\x0c\xd0\x68\xc2\x23\xb6\x17\x3c\xf3\
\xe4\x24\xf8\x81\x27\xc4\x49\x03\x2f\x38\x1d\x60\xac\x60\xb6\x2e\
\x2b\x82\x04\x33\x38\x46\xe3\x07\x6d\x1e\x41\xb9\x80\x49\xb6\xec\
\x0a\x25\xcc\x96\x16\x3c\x96\x03\x22\x8f\x83\xd0\x8c\xa9\x35\x78\
\xc7\xa9\x5d\x8d\x37\x3c\x9e\xb1\x2b\xe2\xd9\xc8\x4d\x02\x34\xda\
\xf0\x33\xe9\xd8\x41\x0b\x10\x97\xcc\xed\x06\xcd\x2e\xa7\x81\xb0\
\x2c\xf0\x1c\xb3\xb8\x5b\x04\x88\x6b\x0c\xce\x8a\x60\x57\xd7\x40\
\x36\x64\x87\xfc\x1a\x78\xc6\x2e\xb1\x91\x90\xcc\x96\x55\x52\x6c\
\xa9\x34\x3d\x75\xec\xe0\xc1\xa3\x47\x4f\x9f\xdb\xb7\x05\x09\x22\
\x44\xc8\x90\x21\x44\x88\x14\xa1\xaa\xdc\x0d\x9a\x2d\xe2\x39\xa3\
\xf0\x5c\x54\x90\x94\x01\x00\x3b\x8e\x55\xd6\x36\xe1\xae\xdd\x09\
\x39\xa1\x51\xeb\x46\x6d\x8c\xdd\x06\x09\xee\x99\x2e\xf1\x48\xec\
\x80\x5d\x0d\xb3\x12\xc2\x19\xa0\xb1\x4a\x42\x39\x4e\x1f\x10\x5b\
\x0a\xc7\xee\x04\x6a\x05\x89\x09\x80\xa8\xa0\xda\xdc\x42\x76\x9d\
\x61\xd0\x03\x10\xc9\x51\xd9\x06\x1a\x3d\x30\x49\x41\xd1\x98\xa0\
\x51\x22\x95\x99\x00\x51\x0f\x06\x7d\xe0\x54\x0c\x07\x59\x63\x86\
\x2f\x07\xed\xa2\xd1\x18\x06\x19\x61\xd7\x14\x05\x89\xf1\xd2\x10\
\xc1\x10\xe4\xcc\x03\x3c\x49\x61\x90\x36\xd4\xd8\xc2\x03\x44\x67\
\x0c\x34\x87\x59\x45\x14\xd3\x4d\x35\x3c\xf0\xc4\x00\x35\x09\x45\
\x33\x10\x22\xaa\xbd\x74\x44\x31\xdd\x68\xe3\x85\x09\x56\x68\x33\
\x92\x26\x2c\x14\x49\x96\x12\xc5\x2c\x85\x0a\x0c\x52\xaa\xc6\x84\
\x32\xc8\x21\x17\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\
\x00\x00\x00\x20\x00\x20\x00\x40\x08\xfe\x00\xff\x75\x1b\x48\xb0\
\xa0\xc1\x83\x08\x11\xfa\x00\xc0\xb0\x21\x00\x01\x4b\x4a\x4d\x1b\
\xd8\xcb\x8f\x07\x87\x00\x2a\x21\x3c\xa5\xc1\x61\xa3\x84\x09\x51\
\x60\x9c\x84\x50\xc5\x99\x81\x7d\x56\xa8\x5c\xb9\xb2\x48\xb1\x6e\
\xd8\x80\x34\x6c\x04\xd2\xa0\x0a\x8c\x4f\x78\x75\x8b\xa6\x85\xe1\
\x92\x6a\x35\xe9\x34\xbc\x53\xb3\xe0\x87\x86\x29\xce\xd0\x22\x98\
\x89\x80\xc3\x01\xc6\x0a\x66\xe3\xb2\x22\x48\x30\x83\x63\x1a\x3e\
\xab\x09\xca\x05\xcb\xaf\x60\x57\x30\x61\x56\xf4\xe0\xa9\x86\x02\
\x72\x95\x45\x58\x09\x84\x11\x49\x96\x7a\x60\x9c\xeb\x90\x04\xc8\
\x59\x03\x1c\x8a\x78\x56\x33\x93\x00\x86\x26\x6a\x6a\x60\xb8\x64\
\xed\x40\x68\x73\xfd\x0c\x9c\x80\x71\x8c\xe1\x81\x11\x18\x82\x88\
\x96\xd0\x49\x43\x5d\x03\xd9\x7c\x1d\x32\x6c\xe0\x19\x87\x8d\xca\
\x42\x0a\x0b\x56\x49\xb1\x81\x51\xb6\x24\x94\xa6\xa7\x8e\x1d\x3b\
\x78\xf4\xe8\xe9\x43\xbb\xb6\x20\x42\x84\x0c\x19\x42\x84\x48\x11\
\xaa\xc7\x03\x43\x4d\x21\x42\x09\x78\xd1\x30\x0e\x8d\x18\xac\x25\
\xcb\x78\x37\x3f\x74\x01\x3c\x20\xe0\xb0\x0a\x48\x59\x04\xa2\x33\
\x44\x70\x20\xba\x16\x90\x37\xe6\x94\x6a\x98\x95\x10\xce\x80\x86\
\x7e\x6a\x3a\x69\xa8\x80\x58\x59\x38\x0d\xd7\x80\xdc\xc2\x50\x41\
\x35\xc3\x87\x30\x1e\x20\x46\x50\x1b\x96\x86\x72\x00\xb7\x01\x46\
\x61\x0c\xa4\x01\x46\x89\x00\x67\x42\x43\x17\x34\x42\x50\x0b\x18\
\xc5\x70\x90\x35\x66\xf8\x72\xd0\x2e\x0d\x55\x72\x10\x34\xa5\xfc\
\xd0\xd0\x14\x05\x89\xb1\xd2\x10\xc1\x10\xe4\xcc\x03\x0d\x4d\x03\
\x92\x33\x07\x00\x70\xc6\x40\x75\x84\x55\x44\x31\xdd\x54\xc3\x43\
\x43\x13\x44\x03\x52\x29\x03\x21\x42\xda\x4a\x47\x14\xd3\x8d\x36\
\x4d\x30\x74\x4b\x4d\x9a\xb0\xf0\xe3\x57\x4a\x20\xd3\x8d\x36\xda\
\x80\xb4\x0a\x0c\x4b\x92\xc6\x84\x32\xce\x39\x17\x10\x00\x3b\
\x00\x00\x07\xa0\
\x47\
\x49\x46\x38\x39\x61\x30\x00\x30\x00\xf7\x00\x00\x00\x00\x00\xff\
\xff\xff\xff\x00\xff\xfc\x00\xfc\xb8\xb8\xd0\xa8\xa8\xcc\xa8\xac\
\xcc\xac\xac\xd0\xb0\xb0\xd4\xb4\xb4\xd8\xb8\xb8\xd8\xbc\xbc\xdc\
\xc0\xc0\xdc\xc0\xc0\xe0\xc4\xc4\xe0\xc4\xc4\xe4\xbc\xc0\xe0\xd4\
\xd4\xdc\x84\x88\xcc\x48\x4c\xc0\x48\x50\xc0\x4c\x50\xc0\x54\x58\
\xc0\x64\x68\xc8\x60\x64\xc0\x64\x68\xc0\x68\x6c\xc4\x74\x78\xc8\
\x78\x7c\xcc\x7c\x7c\xcc\x7c\x80\xcc\x84\x88\xd0\x8c\x8c\xd4\x90\
\x90\xd4\x90\x94\xd8\x98\x9c\xdc\x9c\x9c\xdc\x9c\xa0\xdc\xa0\xa0\
\xdc\xa4\xa4\xdc\xa4\xa4\xe0\xa8\xa8\xe0\xa8\xac\xe0\xac\xb0\xe0\
\xd0\xd0\xd4\x6c\x74\xcc\x78\x80\xd4\xc4\xbc\xa8\xf0\xe4\xbc\xf0\
\xe0\x9c\x68\x68\x98\x3c\x3c\x70\x50\x50\x80\x54\x54\x88\x58\x58\
\x90\x60\x60\x94\x64\x64\x9c\x6c\x6c\xa4\x70\x70\xb0\x78\x78\xb8\
\x80\x80\xc0\x90\x90\xcc\xa0\xa0\xd8\x90\x90\xd8\x98\x98\xdc\xa0\
\xa4\xdc\xa4\xa8\xe0\xc4\xc0\xd4\x64\x6c\xc8\xe8\xdc\xa4\xfc\xec\
\x9c\xf0\xd0\x90\x38\x38\x68\xf8\xf8\xf8\xfc\xfc\xfc\xf4\xf4\xfc\
\x94\x94\xe0\x94\x98\xd8\x94\x98\xdc\xc0\xc0\xd4\xa4\x9c\x90\xd0\
\xc0\xa4\xbc\xac\xa0\x38\x38\x6c\x88\x8c\xd4\x8c\x90\xd8\x64\x6c\
\xcc\x40\x48\xbc\x44\x48\xbc\x44\x48\xb8\x8c\x8c\xbc\x88\x88\xbc\
\x8c\x8c\xc0\x90\x90\xc0\x98\x98\xc4\x9c\x9c\xc4\xa0\xa0\xc8\xa4\
\xa4\xc8\xac\xac\xcc\xb0\xb0\xd0\x98\x98\xe0\xb4\xb4\xe4\xcc\xd0\
\xec\xd0\xd0\xec\xd8\xd8\xf0\xec\xec\xf8\xf4\xf4\xf8\xe4\xe4\xf4\
\xc4\xc4\xd8\x68\x70\xcc\x5c\x64\xc8\x5c\x64\xc4\xe8\xe8\xf0\xe4\
\xe4\xf0\x9c\x9c\xe0\x70\x78\xd0\xb8\xc4\xf8\xc8\xd4\xfc\xc8\xd4\
\xf8\xec\xf0\xf8\x7c\x84\xd4\x5c\x64\xcc\xc0\xcc\xfc\xc0\xd0\xfc\
\xc0\xcc\xf8\xb8\xb8\xd4\xb4\xb4\xd4\xa4\xa4\xcc\xc4\xc4\xd4\x80\
\x88\xd4\xbc\xc8\xf8\xd0\xd0\xe4\xcc\xcc\xe4\xd8\xd8\xe8\xe8\xe8\
\xf4\xec\xec\xf4\x80\x8c\xd4\xcc\xcc\xe0\xbc\xbc\xd8\xc4\xc4\xdc\
\xd4\xd4\xe4\xd4\xd4\xe8\xdc\xdc\xec\xc4\xd0\xfc\xe8\xec\xf8\xc8\
\xc8\xe0\xf8\xf8\xfc\xf8\xfc\xfc\xe8\xe8\xf8\x60\x64\xcc\xbc\xcc\
\xf8\xe0\xe0\xec\xf4\xf8\xfc\x60\x68\xcc\xcc\xd4\xfc\xe4\xe8\xf4\
\xcc\xd8\xfc\xc4\xd0\xf8\xf0\xf0\xf4\x98\x9c\xe0\xf0\xf0\xfc\xf0\
\xf4\xfc\x84\x8c\xd4\xd0\xdc\xfc\xc8\xd0\xf8\x9c\x9c\xc8\x94\x94\
\xc0\xec\xf0\xfc\xd4\xdc\xfc\xe8\xec\xfc\xe0\xe4\xf4\xd8\xe0\xfc\
\xcc\xd8\xf8\xe0\xe4\xfc\xe4\xe8\xfc\xe4\xec\xfc\x64\x68\xcc\xd0\
\xd8\xf8\xbc\xbc\xe0\xac\xac\xdc\xa8\xa8\xe8\xdc\xe4\xfc\xe0\xe0\
\xf4\xd4\xdc\xf8\xf4\xf4\xf4\xe0\xe0\xe8\xa8\xa8\xc4\x94\x94\xb8\
\x80\x80\xb0\x6c\x6c\xa8\x6c\x70\xac\x80\x84\xc0\x90\x94\xd0\x9c\
\xa4\xe0\xa8\xb0\xec\xb0\xbc\xf4\xd0\xd8\xfc\xe0\xe8\xfc\xd4\xd4\
\xf0\x70\x70\x9c\x44\x44\x74\x58\x58\x88\x70\x74\xa4\x88\x90\xbc\
\x9c\xa0\xd0\xac\xb4\xe0\xbc\xc8\xf4\xcc\xd4\xf8\xbc\xc4\xf0\xd8\
\xdc\xf4\xbc\xbc\xe8\xc8\xc8\xd4\xd4\xe0\xfc\xbc\xc8\xfc\xa4\xb0\
\xf0\x94\xa0\xe8\x8c\x94\xe4\x74\x7c\xd8\x68\x70\xd0\x40\x44\xbc\
\x50\x54\xc0\x74\x78\xcc\xa4\xa4\xd4\xb4\xc0\xf0\xa4\xac\xe8\x94\
\x9c\xe4\x78\x80\xd8\x6c\x74\xd0\x5c\x60\xc8\x60\x68\xc8\x80\x84\
\xcc\x98\x9c\xcc\xb0\xb0\xcc\xc8\xc8\xd0\x78\x80\xd0\x44\x4c\xc0\
\x98\xa0\xe0\xa0\xa4\xe4\x80\x88\xd8\x74\x7c\xd0\x60\x64\xc8\x98\
\x9c\xd0\x64\x68\xc4\xfe\x00\xfe\xa8\xa8\xce\xa8\xaa\xce\xaa\xaa\
\xce\xaa\xac\xce\xac\xae\xd0\xb2\xb2\xd6\xb6\xb6\xd8\xb8\xb8\xda\
\xc2\xc2\xde\xc2\xc2\xe0\xc4\xc6\xe2\xc6\xc6\xe4\x2c\x00\x00\x00\
\x00\x30\x00\x30\x00\x00\x08\xff\x00\x03\x08\x1c\x48\xb0\xa0\xc1\
\x83\x08\x13\x2a\x5c\xc8\xb0\xa1\xc3\x87\x10\x15\x62\xa0\x40\xb1\
\x42\x05\x6e\x16\x32\x92\x73\x03\xaf\x9c\x86\x16\x73\xd4\xe1\xf9\
\xf0\xe1\x87\x08\x11\x4d\x46\x8c\x28\x61\x02\x85\x90\x14\x2a\x54\
\xac\x48\xb1\x10\xdd\xb8\x39\x18\xbe\xe8\xa2\x52\x12\x85\x09\x20\
\x25\x56\xa0\x28\x41\xb4\x84\x4a\x12\x45\x8b\x9a\x68\x29\xe4\x65\
\x4c\x9a\x0a\x0b\xcc\x99\x03\x05\x46\x11\x05\x2a\xca\xc4\x6c\x72\
\x42\xc8\x88\x2a\x60\xa9\x88\xa5\x02\xb6\x2c\xd8\x1f\x40\x54\x96\
\x70\xba\xb0\xc0\x38\x6d\x52\x8a\x14\x49\x20\x22\xa3\x5d\x72\x1b\
\xe1\x75\xbc\x60\xa5\x05\xc8\x39\x1c\x44\x7e\xa8\x62\x32\xe5\xca\
\x12\xb3\xf2\xe5\x4b\x90\x40\x81\x02\x06\x03\xdd\x6a\xe3\x15\x25\
\xca\x8a\x16\xea\xdc\xbc\xd9\xd2\xc3\x03\x07\x0f\x55\x78\x52\x19\
\x21\xe2\xc7\x0f\xc3\x2a\x47\x20\x4d\x8a\x58\x31\x63\xc7\x0a\x08\
\x08\x94\x3c\x21\xe3\x04\x72\xea\xde\x14\x81\x61\xd5\x44\xb3\x15\
\x2b\x4a\xc8\x4c\xd1\xa4\x89\x93\xe2\x28\x9d\x1c\x46\x91\xa2\x79\
\x62\xd7\x8d\x63\xcf\x1e\x67\xe1\xca\x95\x09\xb5\x71\xca\x2d\x12\
\xc5\xc4\x8a\x32\x65\xbc\x97\xff\x59\xd1\x92\xb9\x53\xe0\xe8\x81\
\xa7\x38\xf1\xdc\xb5\x82\x31\xd3\xad\xbb\x99\xe3\xae\x1c\x1e\x0c\
\x47\x62\xc4\x28\x52\x46\x9a\xff\x15\xfe\x69\x85\xc2\x80\x43\x31\
\xe5\x12\x4c\x2a\x98\xe0\x83\x37\xde\x3c\xc7\x18\x3a\xb3\xcd\x31\
\x01\x1d\xa4\xd8\x11\xcb\x1c\x55\xc0\xb3\x83\x2e\x5e\x7c\x80\x07\
\x60\x1c\x70\x00\x52\x88\x22\xe1\x41\x56\x15\x28\xad\x64\xc2\x4b\
\x25\x30\xc3\x60\x83\x8b\x31\x00\x5f\x00\x52\x91\xb3\xc7\x1e\x15\
\xd2\x87\x97\x1b\x3c\x96\x63\xc5\x8f\x6d\xfc\x15\xa2\x07\x78\x8c\
\x44\x98\x70\x00\xfe\xf3\xcf\x19\x83\x0c\x92\x4b\x2e\x70\x78\xe2\
\x49\x2e\xb2\xd1\x38\x87\x8d\x37\x92\x32\x87\x38\x16\xe0\x95\xd7\
\x05\x6d\x8c\x24\x42\x53\xd2\x28\x69\x4b\x31\x94\x20\x74\x87\x94\
\x6c\x4a\x09\x47\x95\x35\xde\x78\x23\x97\xe4\x30\x31\xcc\x37\x7c\
\xac\x52\x0c\x9a\x77\xf4\xa9\x86\x1a\x49\x24\xb1\xd0\x9a\x6d\xba\
\x09\xe7\x1c\x16\xc8\xb9\x07\x97\xd7\xe0\x68\xe1\x2a\x7a\xf6\xe9\
\x67\xa0\x82\x2a\x44\x68\xa1\x6f\x46\x98\xa8\x9c\xee\x58\xd0\x28\
\x29\x15\xc6\x02\x29\x25\x92\xde\x01\x68\xa0\x96\x16\x6a\xa8\xa6\
\x8a\x76\xda\x28\x8e\xa1\xea\xff\x49\xaa\xa4\xa7\x56\x7a\xd0\xa5\
\x6d\x66\x6a\x25\x96\x37\xba\x2a\x27\xa8\x8f\xf2\x59\x2a\xa5\x08\
\x51\xa2\xea\x94\x87\xf2\xba\x87\xaf\xbf\xda\x61\xe1\x9e\xc5\x94\
\x5a\xeb\x41\xc6\xaa\x4a\x65\x84\xe4\x80\xda\xab\xa7\x8a\xc2\x6a\
\x87\x9e\x7b\x96\x7a\x07\xa5\xb6\x0a\x54\x6d\xa1\xd7\xee\x6a\x87\
\xb6\xee\x90\xf3\xaa\xa2\xa0\x8a\x0a\xad\xb8\xd3\x0e\x44\x49\x94\
\xe8\x26\xeb\x2c\xa8\xed\xbe\x0b\xef\xb7\xe0\x46\x2b\x2d\xb1\xe6\
\xe2\xdb\x66\xba\x35\xc6\xb2\x6f\xbb\xe0\x74\xfb\xab\xa8\x90\xee\
\x39\xab\xa9\xf5\x16\x63\x30\x9b\x08\x5f\x19\x8b\xc2\x76\x20\x42\
\x0e\x38\xa4\x38\x9c\x25\xc4\xe0\x4e\xfc\x27\xb1\xb6\x5c\x2c\x65\
\xc6\xe4\x6c\xac\x70\x15\x1f\x6b\x2b\x32\x29\x24\x4b\x3c\x70\xa0\
\x29\xc3\xa1\xf3\xce\x2c\xaf\xe2\x32\xcc\xe0\xac\x1b\xb2\xc8\x7b\
\xd4\x2c\x6c\x9f\x94\xae\xb2\xf3\xd2\x3d\xaf\x32\x4a\x2c\x55\xb8\
\x21\xcc\xbe\x43\x8b\xfc\x68\xc9\xc3\x26\x11\xcd\xd2\x3c\x27\x0b\
\xa9\xd3\x51\x0b\xc3\xb1\xcc\x33\x1b\x3d\xeb\x9f\x68\x40\xc9\x75\
\xd3\x90\x56\x51\x8e\xd8\x63\x57\x6d\x35\xc4\x36\xf7\x99\x36\xd7\
\x70\x14\x92\x6c\x31\x5f\xbb\xff\x0d\x77\xdc\x44\x8f\x1c\xb1\xb0\
\xc6\xa8\xbd\x74\x04\x7b\xf3\xbd\x0a\x13\x6f\xfb\xbc\x31\xd5\x72\
\x77\x1b\x2b\xb4\xab\x48\xf3\x24\xd7\x88\x63\x4b\x39\xe3\x65\x40\
\xfa\x74\xdc\x91\xc3\x7b\x23\x1f\x7c\x38\x23\x8c\x30\x4f\xa6\x0e\
\x47\x2e\x99\xef\x0a\x6d\x31\x4c\x5c\x30\xcc\xd7\x2e\x43\x7e\x23\
\x1d\xc3\x0c\x23\x8c\x35\xd7\x5c\x83\x0d\x36\x4c\x30\x01\x4e\x19\
\x67\x14\x92\x3a\x94\xac\xc3\x99\xd9\xeb\x4c\x58\x31\x3b\xed\xa4\
\x90\xae\xbb\x30\xbd\x57\xdf\x3b\x38\xc2\xf4\xb7\xe4\x19\x8d\x14\
\xe2\xfd\xf1\xc9\xcf\xc6\x25\xe5\x40\x93\xe2\xcc\x37\xd3\x9f\x0e\
\x0e\xf6\xd9\x4b\xf3\xc0\x3f\x66\xc4\x2f\x7f\xfc\x67\x70\x5f\x48\
\x04\xf8\xa7\xce\x02\x9c\xe3\x5c\xc1\x4d\x39\x13\xb8\x42\x39\xae\
\x50\x05\xf4\x95\xe1\x1b\xdf\x70\x86\x33\xcc\x70\x06\x63\x38\xf0\
\x0c\xf3\x8b\xa0\xfc\xea\x87\xbf\x0a\xe2\x0f\x0c\x55\x0a\x40\x00\
\xad\x73\x85\x37\x20\x4a\x08\xc6\x88\x86\x08\x45\x88\x86\x12\x3a\
\xd0\x18\xf5\x83\xa0\x04\xe7\x37\x88\x48\x30\xe0\x3d\xf4\x28\x00\
\x18\xba\x50\x10\x2f\xa0\xa3\x4a\x3d\xc8\x40\x33\x2e\x71\x89\x11\
\x92\xd0\x84\x8d\x68\x44\x0a\x85\xe5\xd7\x00\x59\xe4\xc3\x1b\xcc\
\xf0\x42\x0f\xb6\xc0\x85\x2e\x38\x11\x0c\xba\x80\x90\x42\x72\xb8\
\x43\x1e\xf6\x70\x84\x25\x6c\x44\x24\x20\x90\x8f\x20\x30\xa3\x07\
\x12\xe0\xc1\x2f\xb6\x40\xc6\x2d\x78\x01\x0c\x05\xc8\xa0\x43\x7a\
\xa0\x81\x13\x58\xd1\x0c\x0d\xe8\x22\x33\x24\xe0\x81\x1d\xd8\x91\
\x07\x78\xe4\x41\x0f\xbc\x10\xc5\x88\x1c\x44\x02\x12\xd0\x80\x07\
\x3c\xa0\x81\x42\xda\xf1\x90\x12\xe8\x01\x18\xa4\xe8\xc7\x85\x74\
\xa1\x90\x90\xf4\xc0\x1e\x19\xd9\xc8\x88\xa0\xe3\x86\x95\xcc\xa4\
\x26\x37\xc9\xc9\x4e\x7a\xf2\x93\xa0\x64\x48\x40\x00\x00\x3b\
\x00\x00\x06\x61\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x06\x28\x49\x44\x41\x54\x58\x85\xb5\x97\xdf\x6f\x54\xc7\
\x15\xc7\x3f\x33\x3b\x7b\xf7\xfa\x7a\x0d\x66\x6d\x63\xaf\x1d\x9c\
\x18\xc5\x98\x46\x2a\x24\xa1\x84\x52\x70\xdd\x14\x12\x64\x90\x50\
\x79\x68\x24\x4b\x95\x12\x50\xd5\x2a\x52\xa3\x52\x45\x95\xda\x3f\
\xa2\x95\x2a\xa5\x12\xa2\xea\x0b\x8d\x44\x95\x97\x24\x0a\x20\xd2\
\x2a\x0a\x7d\x68\x70\x78\x70\x6d\x6a\xb5\xc1\x05\x6c\x60\x0d\x36\
\xd8\xde\x65\xd7\xbb\x7b\xf7\xde\x3b\x33\x7d\x70\xfc\x0b\x0c\xfe\
\x51\xf7\x48\x57\xba\xbb\x67\x66\x3e\xdf\x39\x67\x7e\x9c\x2b\x58\
\xc6\x4e\x9f\xfe\xb8\x29\x9d\x4e\xf5\x7b\x9e\xeb\x2e\xd7\x76\xa1\
\xdd\xbe\x3d\x3a\x70\xfc\xf8\x0f\xbe\x07\xd8\xa7\xb5\x53\xcb\x0d\
\x14\x45\xe1\xd6\x9d\x3b\xdb\x1b\xb7\x6c\x69\x7c\x6a\x3b\x6b\xc1\
\x62\xb1\x16\xa4\x10\x7c\xfe\xb9\xdd\x05\xd4\x02\xd9\xff\x49\xc0\
\x4a\x4c\x1b\x8b\x31\x16\x6d\x2d\xda\x58\x1c\x15\x5b\x71\x5f\xb9\
\x5c\x83\x28\x0a\xb1\xf6\xc9\x51\x7c\x14\x6e\x0c\x58\x6b\xd1\x5a\
\xaf\x8f\x80\x20\x08\x30\xc6\xac\x10\x6e\xd1\xc6\x60\xe1\xff\x2f\
\x60\x69\xf8\xcc\x6f\xac\x45\xeb\x68\xbd\x04\x54\x1e\x13\xf0\x34\
\xf8\xec\x7b\x14\xad\x93\x80\x30\x0c\xb0\x76\x5e\xc0\x72\xf0\x20\
\xd4\xab\x8a\xc0\xb2\xbb\x60\x36\x02\xf6\x11\xf8\x2c\xd8\x3c\x02\
\x37\x5a\x63\xed\x3a\x45\xa0\xbb\xbb\x3b\x9e\xc9\x0c\x75\x1b\x63\
\x31\x76\x65\x70\xad\xcd\xac\x00\xb5\x77\xef\xde\xef\xac\x29\x02\
\x87\x0f\x1f\x7e\x0e\xd8\xa9\xb5\x7e\xf3\xe5\x97\x77\x1c\x33\xc6\
\x60\x0d\x2b\x82\x9b\x68\x26\x02\x52\x8a\x44\x67\x67\xe7\x27\x89\
\x44\xe2\xb7\x9e\xe7\x9d\x07\x7a\x2f\x5c\xb8\x50\x7e\xa2\x80\x23\
\x47\x8e\x74\x68\xad\x7f\xb7\x7b\xf7\xde\xd7\x76\xef\xfe\xb6\x6c\
\x6e\x7e\x06\xcf\xf3\xb8\x74\xe9\xaf\x58\x6b\x30\xac\x0c\x3e\x93\
\x02\xf0\x7d\x9f\x37\xde\xe8\x11\x6f\xbd\xf5\xf6\xbb\xb9\x5c\xee\
\xdd\xe1\xe1\xeb\xb4\xb7\x77\xdc\xbb\x7a\xb5\xff\x23\xcf\xf3\x7e\
\x7d\xfe\xfc\xf9\x87\x73\x02\xba\xbb\xbb\x7f\xdc\xd3\xf3\xe6\x1f\
\xf6\xed\xeb\x44\xca\xf9\xac\x48\x29\xc8\xe5\x72\x18\x63\xf0\x03\
\x43\xa1\x1c\x51\xaa\x68\x4a\x81\xa6\x5c\xd1\xe4\x4b\x11\x12\x43\
\x5c\x42\x5c\x58\xe2\xd2\xa2\xa4\x25\x15\x69\xb4\xd6\xe4\xf3\x39\
\x1a\x1a\x9a\xa9\xae\xf6\x68\x69\x69\x66\xff\xfe\xef\xa6\xcb\x65\
\xff\xed\xf7\xdf\xff\xe3\x89\x4c\x26\xb3\x63\x60\x60\x60\x48\x1d\
\x3d\x7a\xb4\xa6\xad\xed\xf9\xdf\x77\x75\xbd\xfa\x58\x2a\x1c\x47\
\x91\x15\x9b\xb9\x1b\xd5\x31\x79\x3d\x47\x22\x2e\x49\x28\x49\x22\
\x2e\x48\x55\x2b\x9a\x6b\x1d\x22\x63\x09\x42\x43\x10\x59\x2a\x91\
\xa1\x14\x59\xfa\x6f\x97\xd9\xb8\xbd\x8b\x89\x7b\x97\xd9\xb4\xa9\
\x80\x94\x02\x29\x25\x42\x08\xa4\x14\xf4\xf4\x1c\x4f\xf4\xf6\x7e\
\x71\x0a\x38\xa0\x8c\x31\xaf\x9f\x38\xf1\x13\x27\x16\x13\x4b\xac\
\x06\x43\xaa\xb5\x83\xf6\xb6\xd4\x92\x0b\x28\x64\xe6\xaa\x33\x0a\
\xa4\x85\x84\xb5\xc4\x2d\x54\x59\xa8\x69\x80\x4b\x83\x21\xed\xcf\
\x5b\xa2\xc8\x70\x2f\x77\x9f\x1b\xe1\x5d\xf6\x37\x7c\x13\x80\xae\
\xae\x83\x9d\x03\x03\x03\x4d\xca\x5a\xfb\x5a\x7d\x7d\x1d\xb1\xd8\
\xe3\x1b\x22\x9f\xcf\x62\x36\xb5\x30\x94\x5f\xec\x8b\x8c\x25\x1f\
\x42\x21\x80\x7c\x60\xd1\x73\x57\xc5\xe2\x49\xdc\x2a\x6d\xe0\x58\
\xb2\x0a\xdf\x0f\x88\xb9\x92\xec\xbd\x02\x4e\xcb\xcc\xb2\xdb\xb7\
\xaf\x4b\x7d\xf8\xe1\x07\x07\x94\x94\xf2\x99\x78\x3c\x8e\x58\xd0\
\xd7\x18\x8b\xef\x57\x98\x9a\x9a\xa4\xec\xbd\xc0\x8d\xc2\x8c\xd3\
\x8f\xe0\x46\xde\x92\x99\x16\x0b\x2e\xf9\xa5\x22\x37\x63\x65\xbd\
\x19\xd7\x8d\xa3\xb5\xa1\xad\x2e\x4d\x5b\x5d\x7a\xce\x97\x4a\x6d\
\xc2\x71\x9c\x56\x95\x4a\xa5\x1a\x95\x9a\x9f\x61\x18\x46\x94\x4a\
\x15\xac\xb5\xdc\x1c\x2f\x52\x48\x79\xe4\x1e\xc2\x3f\xa7\xe0\xab\
\x2c\x68\xfb\x64\xe0\xa3\x16\xb7\x4d\x04\x41\x19\xc7\x71\x1e\xf3\
\xc5\x62\x1e\xf1\x78\xbc\x5e\x81\xac\x0b\x82\x10\xd7\x4d\x10\x86\
\x11\x41\x10\x32\x2b\xe8\xef\x63\x2e\xd3\x09\xc1\x85\x61\xb8\x5f\
\x5a\x31\x77\xce\x44\x94\x62\x7a\x7a\x98\x54\xaa\x61\xb1\xb0\x78\
\x8c\x9b\x37\xc7\x50\x4a\xa5\x54\x10\x04\xf2\xcb\x2f\xbf\xc2\x75\
\x1d\x3a\x3a\x5a\xa8\xa9\xf1\x30\xc6\x22\x84\xe0\x76\x61\x23\xbd\
\x7d\x70\xbf\xb8\x7a\x38\x80\xc5\x63\xe0\x76\x91\x43\x4d\x69\x62\
\x31\x49\x10\x44\x8c\x8f\xe7\x18\x1d\x9d\x20\x93\x19\x41\x08\x11\
\x57\x4a\xc5\x1f\x02\xf8\x7e\xc0\xc0\xc0\x30\x00\xc9\x64\x15\x0d\
\x0d\xb5\xfc\xe8\x5b\x49\x9e\x1b\xce\x30\x9a\xd5\x8c\xe5\x2d\x53\
\xe5\x18\x85\xd0\xa1\xa4\x1d\xca\xc6\xa1\x62\x5d\x62\x68\x12\xa2\
\x42\x55\x2c\xa0\x5a\x05\x6c\x70\x02\xea\x3d\x4b\x7a\xa3\xa4\xa5\
\x56\xf2\x42\x5b\x33\x23\x23\xe3\x4c\x4c\xe4\x89\xa2\xf9\x1a\x41\
\x29\x85\xd6\x7a\x4a\x95\xcb\xc5\xb1\x58\x4c\xee\x10\x0b\x56\xa1\
\xef\x07\xdc\xb9\x73\x9f\x6a\xe0\x50\x03\x88\xcd\xe0\x79\x2e\x9e\
\x97\x20\x16\x2b\x13\x8b\x49\x5c\xd7\x41\x29\x01\x48\x2a\x95\x90\
\x20\x88\xd0\x5f\x9f\x88\xd3\xd3\x3e\xbe\x1f\x00\x30\x7e\x8b\x05\
\xd0\xf9\x52\x2d\x0c\x7d\xa2\x28\x9a\x50\xc6\xe8\x71\x63\x42\xaa\
\xab\x93\x73\xce\x42\xe1\x21\x7d\x7d\xbd\x6b\x8b\xfb\x12\x56\x55\
\xe5\xf1\xca\x2b\x9d\x8b\xfe\xab\x54\xca\x84\x61\xf8\x40\x01\xe3\
\x61\x58\xc6\x75\xe7\x0f\x9b\x07\x0f\xf2\x7c\xf6\xd9\xb9\x75\x13\
\xd0\xd0\xd0\xc8\xfe\xfd\xaf\x2e\x3a\xe6\x2b\x95\x22\x95\x4a\x65\
\x4c\x09\x21\x86\x2a\x95\x12\xae\x3b\xbf\x55\x84\x80\xda\xda\x5a\
\x5c\xd7\xe5\xe4\xc9\x93\x2c\x4c\xcf\x6a\x6c\x74\x74\x94\x33\x67\
\xce\xb0\x61\xc3\x06\x84\xd0\xb8\x0b\x3e\x2d\x8a\xc5\x82\xce\x64\
\x32\x43\xca\x71\x9c\xbf\x8c\x8e\x8e\xf0\xd2\x4b\xbb\xe6\x9c\xf5\
\xf5\x29\x0e\x1e\x7c\x9d\x74\xba\x85\x74\x3a\xbd\xd4\xd8\xcb\x9a\
\xb5\xb0\x65\xcb\x16\xae\x5d\x1b\xa6\xb1\xb1\x9e\x64\xd2\x25\x91\
\x98\x11\xa0\x75\xc4\xc8\xc8\xf5\x5b\x93\x93\x93\x77\xd4\xd9\xb3\
\x67\x6f\xb9\x6e\xd5\x7f\x8e\x1d\xfb\x61\xfb\xec\x81\xb1\x6d\xdb\
\x76\x6a\x6b\x1b\x49\xa7\x53\xa4\xd3\x75\x6b\x82\x6b\x6d\x90\x52\
\x70\xe0\x40\x37\xcd\xcd\x8d\x28\x25\x99\xad\xee\x07\x07\xaf\x72\
\xf7\xee\xdd\xbf\x01\xd3\x12\x20\x9b\x9d\xfa\xc5\xc5\x8b\x9f\x44\
\x53\x53\x93\x73\x83\x64\xb3\xf9\x35\xc2\xed\xd7\xbb\x41\x13\x86\
\x11\xdb\xb6\xb5\x32\x32\x72\x07\x10\xe4\x72\x59\x06\x07\xaf\xf2\
\xe9\xa7\xe7\xff\x75\xe5\xca\x95\xdf\x00\x7a\x2e\xb9\xc9\x64\xd2\
\xdd\xb3\x67\xcf\x4f\x95\x52\x5b\x9b\x9a\x5a\x3a\xde\x79\xe7\x97\
\x87\x76\xed\xda\xbe\x06\xb8\x59\xf0\x68\xaa\xab\xab\x38\x75\xea\
\x4f\xa5\x73\xe7\xfe\xfc\x91\xef\xfb\x23\xfd\xfd\xfd\x17\xb3\xd9\
\xec\xbf\x81\x49\x9e\xf4\xdd\xf8\xde\x7b\x1f\xfc\x2a\x9f\x2f\xda\
\xd5\x98\x31\xc6\x86\x61\x64\x7d\x3f\xb0\xc5\xa2\x6f\xf3\xf9\xa2\
\xcd\x66\x0b\xb6\x58\xf4\xed\xe5\xcb\xff\xb0\x5d\x5d\xdd\xdf\x5f\
\x8a\xb5\x64\x51\xfa\xec\xb3\x4d\x3f\xab\xa9\xf1\x56\x39\x7b\xe6\
\x0a\x0e\xa5\x24\x8e\xa3\x48\x24\x1c\xa4\x14\xbc\xf8\xe2\x37\x68\
\x6d\xdd\xfa\xf3\xa5\xfa\x3d\x56\x94\x9e\x3e\xfd\x71\x52\x08\xd9\
\xd8\xd7\x77\x6d\xd5\x02\xb4\x8e\x88\xa2\x88\x28\x0a\x17\xbc\xcf\
\x3c\x35\x35\xd5\xdb\x81\x2a\x60\x51\x61\xfa\x5f\x15\x59\xfb\x56\
\x1b\x1f\x81\x0d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\
\x00\x00\x04\x7e\
\x00\
\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x16\x00\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\
\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0a\x00\
\x00\xf0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\
\x13\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x14\x00\x00\x00\
\x14\x00\x00\x00\x0a\x00\x1d\x01\x4f\x02\x41\x05\xac\x02\x3f\x04\
\xb1\x00\x1b\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x2d\x2d\x2d\x51\x8a\x7f\x7f\xd5\x89\x7d\x7d\
\xd0\x87\x7c\x7c\xcf\x8c\x7e\x7c\xcf\x67\x6d\x78\xd2\x35\x5d\x8b\
\xd0\x44\x61\xa0\xcc\x34\x7f\x59\xe8\x3a\xd7\x5d\xff\x2a\xcf\x4d\
\xff\x01\x3e\x01\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x44\x43\x43\x76\xfe\xed\xed\xff\xff\xf3\xf3\
\xff\xff\xf1\xf1\xff\xff\xf6\xf3\xff\xbc\xd0\xeb\xff\x52\xaf\xc2\
\xff\x37\xa5\x8f\xff\x2c\x9c\x53\xff\x4d\xde\x76\xff\x34\xd1\x5e\
\xff\x02\x5e\x05\xdf\x01\x3b\x03\xae\x00\x1b\x00\x71\x00\x00\x00\
\x00\x00\x00\x00\x00\x42\x41\x41\x71\xfa\xe8\xe8\xff\xff\xee\xee\
\xff\xff\xed\xed\xff\xff\xf2\xef\xff\xbf\xcb\xec\xff\x5e\xbe\x9c\
\xff\x33\xd5\x4d\xff\x3e\xdb\x68\xff\x4b\xe4\x7f\xff\x44\xdc\x74\
\xff\x39\xd8\x67\xff\x2c\xd5\x54\xff\x02\x40\x03\xab\x00\x00\x00\
\x00\x00\x00\x00\x00\x42\x42\x42\x71\xfb\xee\xee\xff\xff\xf4\xf4\
\xff\xff\xf3\xf3\xff\xff\xf8\xf5\xff\xbf\xcf\xed\xff\x6d\xc7\xa5\
\xff\x66\xee\x81\xff\x69\xef\x90\xff\x56\xea\x86\xff\x4b\xe4\x7e\
\xff\x5d\xe4\x86\xff\x4a\xdb\x6f\xff\x03\x3e\x05\xa3\x00\x00\x00\
\x00\x00\x00\x00\x00\x43\x43\x43\x71\xf1\xe9\xe9\xff\xf5\xee\xee\
\xff\xf3\xed\xed\xff\xfd\xf2\xef\xff\xb2\xca\xe3\xff\x4f\xad\xd4\
\xff\x4f\xaf\xc4\xff\x3e\xab\x6f\xff\x56\xea\x7d\xff\x3c\xdd\x65\
\xff\x0b\x5b\x0d\xc2\x09\x24\x0a\x49\x00\x10\x01\x26\x00\x00\x00\
\x00\x00\x00\x00\x00\x43\x44\x44\x71\xe6\xe4\xe4\xff\xe9\xe6\xe6\
\xff\xe7\xe6\xe6\xff\xf1\xeb\xe7\xff\xa5\xc2\xd8\xff\x32\x9b\xf4\
\xff\x43\xa4\xff\xff\x3f\xa9\x88\xff\x67\xe9\x79\xff\x4d\xe3\x70\
\xff\x00\x42\x03\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x45\x46\x46\x71\xfc\xfc\xfc\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7\xd5\xe8\xff\x4b\xb2\xf8\
\xff\x56\xbb\xff\xff\x5a\xbb\xdd\xff\x5b\xbd\xc5\xff\x30\x69\x52\
\xd1\x00\x0a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x46\x46\x46\x71\xfc\xfc\xfc\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb8\xd6\xe8\xff\x4d\xb4\xf8\
\xff\x54\xbb\xff\xff\x53\xba\xff\xff\x56\xbd\xff\xff\x29\x47\x5c\
\xb3\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x47\x47\x47\x71\xfd\xfd\xfd\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xba\xd9\xe8\xff\x56\xbc\xf8\
\xff\x5d\xc4\xff\xff\x5c\xc3\xff\xff\x5e\xc5\xff\xff\x2c\x4a\x5d\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x47\x47\x47\x71\xe7\xe7\xe7\xff\xe8\xe8\xe8\
\xff\xe6\xe6\xe6\xff\xef\xea\xe7\xff\xa9\xc7\xd9\xff\x46\xae\xee\
\xff\x4b\xb3\xf4\xff\x4a\xb2\xf4\xff\x4e\xb6\xfb\xff\x28\x47\x5b\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x49\x49\x49\x71\xf7\xf8\xf8\xff\xfa\xfb\xfb\
\xff\xf8\xf9\xf9\xff\xff\xfe\xfb\xff\xb6\xd5\xe4\xff\x56\xbd\xf5\
\xff\x5c\xc3\xfc\xff\x59\xc0\xfc\xff\x5a\xc2\xff\xff\x2b\x4b\x5d\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x4a\x4a\x4a\x71\xfe\xfe\xfe\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xbb\xda\xe8\xff\x5a\xc1\xf8\
\xff\x61\xc8\xff\xff\x5f\xc5\xff\xff\x60\xc7\xff\xff\x2d\x4c\x5e\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x4b\x4b\x4b\x72\xfe\xfe\xfe\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xba\xd9\xe8\xff\x54\xbd\xf8\
\xff\x5b\xc4\xff\xff\x5a\xc3\xff\xff\x5d\xc6\xff\xff\x2c\x4c\x5f\
\xb8\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x61\x61\x61\x77\xfa\xfa\xfa\xff\xfe\xfe\xfe\
\xff\xfc\xfc\xfc\xff\xff\xff\xfe\xff\xbd\xd8\xe8\xff\x5e\xbb\xf4\
\xff\x64\xc0\xfb\xff\x63\xc0\xfb\xff\x69\xc5\xff\xff\x33\x4e\x60\
\xb3\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x92\x92\x92\x32\x50\x50\x50\x77\x4a\x4a\x4a\
\x71\x4a\x4a\x4a\x71\x4a\x4a\x4a\x71\x45\x46\x46\x74\x3b\x41\x44\
\x72\x3b\x40\x43\x71\x3a\x3f\x43\x71\x3d\x43\x46\x77\x1e\x20\x20\
\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe7\x00\
\x00\xe0\x03\x00\x00\xe0\x01\x00\x00\xe0\x00\x00\x00\xe0\x00\x00\
\x00\xe0\x03\x00\x00\xe0\x03\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\
\x00\xe0\x07\xef\xc2\xe0\x07\x85\x42\xe0\x07\x86\x3f\xe0\x07\x30\
\xbf\xe0\x07\x30\x3f\xe0\x07\x86\x3f\xff\xff\x00\x00\
\x00\x00\x07\xa0\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\
\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
\xd3\x08\x1c\x13\x19\x0c\xfe\x17\x9f\xdd\x00\x00\x07\x2d\x49\x44\
\x41\x54\x78\xda\xc5\x97\x7f\x6c\x55\x67\x19\xc7\x3f\xe7\xdc\xdb\
\xdb\xde\xb6\xb7\x40\xa1\x80\x48\x87\x65\x8b\xc2\x0a\xad\x74\x73\
\xb0\x61\x1d\xc3\x65\x03\x2d\x6e\x66\x31\x04\xd0\x88\x26\x1a\xb3\
\xd6\x68\x62\x98\x46\x67\x4c\xa7\x38\x05\x9c\x5b\x06\x99\x3f\xc3\
\x1f\xca\xfc\xc3\x2c\x66\x9b\x19\xe2\xc6\xac\x94\xe2\xa0\x63\xd8\
\x0a\xf2\x63\xfc\x6c\x7b\x29\xed\x2d\xed\xfd\x7d\x7e\xbc\xbf\xfc\
\xe3\xdc\x5b\xa8\xa3\x22\x3a\xe5\x4d\xde\x9c\xf7\x9c\x93\xf3\x3e\
\xdf\xe7\xfb\x7c\x9f\xe7\x3c\xaf\x65\x8c\xe1\x66\x0e\x9b\x9b\x3c\
\xc2\x00\x96\x65\xbd\x2b\x9b\x3d\xbe\xf9\xe5\xba\x10\x25\x3b\x1d\
\xdf\xeb\xda\xd2\xfe\xd0\x77\x01\x1f\xd0\xff\x17\x06\xda\x7f\xb8\
\xa7\xbd\xa2\xbc\xe2\x6c\xcb\xc7\x1a\xee\xad\xac\xac\xf8\xe6\x9a\
\x47\x1e\x5b\x09\x44\x01\xeb\xba\x0c\xfc\x57\x86\xb7\xfc\x61\x09\
\x58\x3b\xeb\xe6\xcd\x68\xfc\xc4\xaa\xc5\x94\x46\xc2\x94\x46\x42\
\x24\x46\x92\x4f\x03\x2b\x0b\x2c\x88\x49\x37\xf8\x4f\x45\xf8\xe4\
\x8f\xf7\x4e\xdd\xfc\xa3\x57\xdb\xb7\x6d\xef\x30\x67\xce\x8d\x19\
\x21\x8c\xb9\x7c\xd9\x33\xc3\xc3\x79\x63\x8c\x31\xcf\xed\x3c\x68\
\xd6\x7d\xee\xe9\xad\x40\xf5\xbf\x62\xda\x32\xc6\x50\xb1\xb6\xb3\
\xc3\x28\x65\x1b\x6d\x2c\x8c\x09\x40\x99\x2b\xe0\x8c\x36\x68\x6f\
\xe4\xfb\xea\xb5\xf5\x7b\x01\xf1\xe4\x53\x7f\x5c\x61\xb0\x77\x2e\
\x78\xff\xec\x79\x6b\x56\xd5\xe3\x7b\x1a\x21\x14\x4a\x19\x94\x52\
\xd8\xb6\x45\x69\x59\x09\x4f\x6c\xd9\x93\xdd\xf7\xfa\xf3\x2d\x07\
\xf7\xef\xea\x06\x1c\xc0\x5c\x33\x04\xf7\x2e\xaa\xbe\xf7\xa5\x6f\
\xd7\x93\x04\xa4\x02\x57\x81\x27\xc1\x2f\xac\xf7\x1c\x4c\xb3\xed\
\x17\x7f\x7d\x25\xbc\xfa\xd7\xed\x5f\x5b\x39\xbd\x66\xda\xb4\xd8\
\xa3\x0f\xae\x5c\xc8\x2d\x73\xa7\xe0\xba\x1a\xad\x27\xee\x2b\xa5\
\xa6\xdc\xb6\xb9\x7f\xc5\x82\xca\xc4\xc8\xea\xa7\x0e\xee\xdf\xd5\
\x52\x08\x83\xb8\x26\x00\x63\x20\x0d\x0c\xe4\x41\xea\x60\x0a\x19\
\x5c\x7d\x05\x4b\x1a\xaa\xd8\xb4\xbe\x8e\xfc\x69\xf5\x9d\xe5\xcb\
\xdf\xc7\x87\x97\xd6\x61\x0c\x48\x39\x79\x88\xc6\xc6\x72\x3c\x70\
\xdf\x7c\x0e\xbd\xd5\xdf\xb4\xa8\xe5\x27\x5b\x8f\x9e\x3c\xb3\x8d\
\xb7\xb7\x1e\x05\xd4\xd5\x4c\x84\x29\x22\x98\x64\x68\x01\x17\xdf\
\x3c\xce\xec\x6c\x9a\x96\x8d\x4b\x99\x55\x53\x8e\x31\xa0\xf5\xf5\
\x75\x32\x32\xe2\xf2\xe9\x4f\x35\x71\xf2\xdc\xe8\x86\x93\x43\x3a\
\x25\xe0\x71\x20\x03\xc8\x09\x00\xb4\x01\x75\x0d\x0c\xe9\xc1\x0c\
\x7d\x87\x7a\xb9\xbb\x69\x1e\x77\x2e\x59\x78\xc3\x42\xf5\x7d\xc9\
\x9c\xd9\x31\x1e\x7a\xf0\x03\xa4\x92\xc3\x75\x2f\x77\x33\xad\xa0\
\x85\x89\x00\x8c\x36\x13\x00\x48\x1f\xce\xec\x3f\x4a\x54\xfb\x6c\
\x5c\xbb\x94\x58\xe5\x8d\x65\xeb\xb1\x0b\x59\x7e\xdf\x3d\x02\xda\
\x60\x85\x2c\x22\xe1\x10\x7d\x62\xf6\xea\x92\x65\x3f\x7f\x42\xe8\
\xe8\x45\x08\x8b\xc0\x6b\xd1\x13\x30\x50\x88\xfb\x38\xf2\x9c\xc4\
\x4f\xa5\xd8\xf8\xd9\xe5\x37\xec\xf5\xd1\x0b\x39\x1e\xfe\x5e\x0f\
\x1f\x5c\x30\x83\xdb\xde\x3b\x25\xd0\x89\x67\x68\x5c\xb6\x88\x5b\
\x17\x79\x1b\x94\x21\x69\x8c\x31\x7b\xff\xd2\x17\xcb\x5d\x1a\xfc\
\x55\x18\x40\x99\x89\x0c\x94\x4f\x0b\x13\xa9\xae\xa6\xfb\xc8\x00\
\x1f\x5a\x32\xf7\xdf\x36\x9e\xca\x09\xbe\xfc\xdc\x09\x9a\x9b\xe6\
\xf0\xe8\xba\x7a\x4e\x0e\x05\x22\x06\x88\x94\xc0\xd0\xb0\xcf\xd0\
\x58\xde\x73\x32\xee\xa5\x5c\xfe\xcc\x62\xb2\x27\x4e\x4c\xaa\x81\
\x3d\xe7\x4b\xd9\xf2\xd2\x59\xe6\xd5\x26\x31\x06\x8c\x0a\xea\x83\
\xd1\xba\x10\x32\x83\xd1\x66\xfc\xb9\xd6\x86\xbe\xa1\x3c\x8d\x0b\
\x6a\x68\xdd\x50\xcf\x0b\x47\x60\x34\x17\xec\x0d\x60\xdb\x10\x0e\
\x45\x38\x70\xe8\xe2\xac\x81\x3f\xf7\x6a\x2a\x84\xcd\x99\xad\x5d\
\x85\x10\x68\xa4\xba\x62\x7c\x70\x04\x5e\xdc\x17\x67\xd7\xa6\x46\
\x2a\x4b\x0c\xb1\x58\x29\x52\x81\xc4\x20\x34\x48\x65\x90\x12\x84\
\x32\x28\x0d\x42\x81\x94\x86\x68\x69\x09\x53\xa7\x97\xf1\x62\x0f\
\x64\xdc\x2b\xc6\x2d\x2b\x60\xe0\xd4\x1b\x17\x18\x3c\x70\x42\x13\
\xd6\x53\xf1\x47\x0e\x00\xfe\xb8\x06\xae\x66\xa0\xeb\xc8\x30\x8b\
\xeb\x62\xb4\xdc\x35\x85\xb3\xe7\xd3\x4c\xad\x2e\xa1\xa2\x2a\x4c\
\x06\x48\x0b\xc8\xe4\x21\xed\x04\x33\x97\x87\x8c\x03\x29\x01\x99\
\x31\xc8\xc4\x03\xe3\xa2\xe0\x90\x72\x05\xc9\xf8\x18\xc7\xf6\x9f\
\x62\x74\x38\xed\x90\xf5\x87\x98\x2a\xdf\x43\xf6\x5c\x17\xe0\x14\
\x00\x04\x9e\x14\x2b\xf6\x0b\xaf\xf6\xd1\xbe\x7e\x3e\x2e\x10\xad\
\xa9\xe2\xec\x85\x04\xb7\xdd\x5e\x83\x67\xc0\x17\xe0\x0a\x48\xa6\
\x21\x9e\x30\x8c\x65\x34\xfd\x83\x1e\xc9\xb4\x26\x95\x51\x64\xb2\
\x12\x37\xef\x23\x5c\x0f\x99\xc9\x31\x1a\x1f\x65\x74\x2c\x8f\x72\
\x44\x0a\x57\x24\x08\x99\x30\xb6\x29\x25\x75\xb0\x1b\xc8\x17\x44\
\x08\xb2\xc0\xc0\xdb\x7d\x92\xc1\x44\x9e\x96\x65\xd5\x78\x1a\x74\
\x04\xa8\x9a\xc2\xb1\xb3\x19\xaa\x67\xc5\x38\x1d\x87\xfe\x21\x4d\
\x32\xad\x48\xa6\x15\xa9\x8c\x22\x99\x51\xa4\x52\x92\xd1\xb4\x22\
\x97\xf5\x90\x8e\x8f\xcc\xe5\x19\x19\xbc\x8c\x92\x1a\x65\x97\x81\
\xf0\x83\x0a\x58\x4a\x05\x32\x7f\x9a\xd1\x8e\x3e\x20\x6f\x8f\x33\
\x50\x00\xb0\xbb\x33\x4e\xcb\xd2\x1a\xca\x23\x20\x0c\x78\x80\x28\
\x8f\x70\x6a\x18\xba\x4f\x18\x86\xc7\xc0\x13\x06\x5f\x04\x5a\x10\
\xca\x20\x04\xf8\x32\x58\x1b\x03\xe9\xb4\xc3\xa5\x44\x16\x1d\x89\
\x62\x55\x54\xe2\x7c\xf1\x33\xe3\xe1\x9d\x53\xa3\x2b\xf1\x2f\xf7\
\x10\x6c\xed\xda\xc5\x2c\x28\xd6\x81\x7d\x87\x87\x58\xb3\x74\x26\
\x1e\x90\xf1\xa1\x6f\x14\xe2\x49\xd0\x91\x18\x43\x89\x1c\xbe\x08\
\x0c\x4a\x05\xbe\x04\x21\x02\x31\x4a\x6d\x91\x77\x14\xf1\x78\x9a\
\xac\x67\x08\x57\xc6\xb0\xc2\x61\x92\x6b\x1f\xa1\xac\xb5\x06\xe7\
\xb1\xd6\x6a\x80\x8b\x69\x15\x25\xd9\xf5\x0a\x90\xbf\x4a\x84\x06\
\xa9\xa1\xef\x82\x24\x9f\xf3\xf9\xf8\xdd\xd3\x19\xc8\xc2\x40\x16\
\x72\x7e\xf0\xd3\x31\x36\x48\x2b\xc4\x68\xca\xc5\xb2\x23\xf8\xd2\
\x20\xa5\x09\x32\x40\xc1\x60\x22\xc7\x50\xc2\xc3\x8a\x96\x93\xbc\
\xff\x23\x00\x4c\xfb\xed\xef\x0a\x7e\xdf\x09\xec\x86\x52\x53\xe1\
\x7c\x69\x13\xc0\x2f\xa3\x6d\xcc\x1d\x07\xa0\x0a\x75\xe0\x37\xbb\
\xcf\xf3\xf0\xb2\x99\x24\x3c\xc8\x7a\x10\xb5\x82\x14\xb2\x6d\x08\
\x85\xc0\x54\x95\x12\x1f\xc8\x10\x2d\x0f\x11\x41\x12\xb1\x14\x11\
\x23\xc8\x8d\x66\x88\x86\x60\xf6\x8c\x32\x8e\xdf\x71\x0f\x65\xad\
\x0a\xb7\x37\xc4\x18\x9f\x84\x66\x80\x26\x68\xde\x8d\xc3\x57\xe7\
\xd0\x0c\x65\x0d\x0a\x87\xda\x81\x68\x5b\xbf\x1d\x30\x50\xc8\xe7\
\x8e\xee\x41\x9e\xdf\xd4\xc8\xc2\x18\x10\xbb\x92\x96\x4a\x81\x10\
\x0a\x29\x15\x72\x61\x09\x42\x78\xc1\x5a\x4a\xa4\xd4\x08\x11\x29\
\xac\x25\xc7\xc4\x9f\xa8\xdf\x71\x1f\x65\xad\x2b\xa0\xa1\x11\xb8\
\x1d\x98\x49\x59\xc3\x4f\xa1\xe1\xef\x40\x0f\xee\x8e\x0e\xa2\x6d\
\xfd\x31\x02\x62\x03\x0d\xbc\x76\x28\x4d\x08\xc3\xaa\xa6\xaa\x77\
\x76\xae\x36\x84\x42\x16\xb6\x5d\x9c\x36\xb6\x6d\x63\x59\x36\xb6\
\x6d\xfd\xd3\x3b\x8b\xbf\xdd\xf5\x3a\xee\x8e\x0e\xdc\xde\x67\x80\
\x99\xc0\x1d\xc0\x4c\xdc\xde\x67\x8a\xc6\xe7\x17\x9b\x93\x02\x00\
\x43\xe7\x9b\x83\x7c\xfe\x81\x6b\xd7\xfd\x20\x0c\x45\xc3\xa1\x71\
\x83\xa1\x90\x8d\x65\x15\x0d\x87\xb0\x6d\x9b\x50\x28\x00\x75\x9d\
\x91\x2f\x02\x18\xaf\x84\x47\x7a\x2f\xf1\xb3\x2f\xdc\x33\xe9\x17\
\x96\x15\x78\xaa\xf5\x3b\x99\xd0\xda\x10\x0a\x99\xf1\x77\xf5\x6f\
\x14\x42\x40\x23\x30\x0c\x1c\x06\x86\x29\x6b\xf8\x0a\x34\xf4\xe0\
\xd0\x71\x29\xda\xd6\x6f\x8d\x03\x38\x7d\xf6\x32\xb7\xde\x12\x63\
\xc1\x9c\x92\xc9\x0f\x10\x76\xa1\x64\x6b\x81\xe7\xfb\xb8\xae\x87\
\xe7\xb9\xb8\xae\x87\xeb\xfa\x38\xae\x8b\xeb\x79\x34\x1f\x5f\x57\
\x10\x61\x07\x74\x76\x10\x88\xee\x5b\xb8\xbd\x9b\xa1\x93\xe0\xbe\
\x55\xe1\x50\x6b\xa2\x6d\xfd\x56\xb8\xc8\xf1\x58\x5a\xf0\xd1\xaf\
\x1f\x06\x13\xa4\x65\xd0\x1d\x07\xed\x9a\x2e\xfc\xf9\xb4\x56\x68\
\xa9\x91\x4a\xa1\x95\x46\x2b\x85\x2c\x5c\xfb\x13\x1e\x99\x84\x00\
\xbd\x15\x87\x4d\x00\x44\x9f\xfd\x01\x0e\xdf\x80\x86\xb7\xa0\x13\
\xa2\x6d\xfd\xcd\xce\xf6\xda\x4e\xb7\x33\x44\x91\x01\xcb\x18\x83\
\x65\x59\x55\x40\x2d\x30\xe5\xdd\x3e\xfb\x39\xdb\x6b\xbb\xca\x5a\
\x6b\x70\x77\x24\x88\xb6\xf5\xd7\x03\x71\x82\x1e\xd8\x5c\x0d\xa0\
\xa4\x70\x8c\x2a\xf9\x5f\x1c\x40\x9d\xed\xb5\x23\xd1\xb6\xfe\xe9\
\x05\xe1\x4d\xe8\x09\xad\x9b\x7d\x3c\xff\x07\x19\xbf\x1f\xed\x82\
\xbb\x44\xa7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x06\xd0\
\xff\
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\
\x48\x00\x00\xff\xfe\x00\x0c\x41\x70\x70\x6c\x65\x4d\x61\x72\x6b\
\x0a\xff\xdb\x00\x84\x00\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\
\x02\x02\x01\x02\x02\x03\x02\x02\x02\x02\x02\x03\x03\x03\x02\x03\
\x04\x04\x04\x04\x04\x04\x04\x04\x04\x05\x06\x05\x04\x05\x06\x05\
\x04\x04\x05\x07\x05\x06\x06\x06\x07\x07\x07\x04\x05\x07\x08\x07\
\x07\x08\x06\x07\x07\x07\x01\x02\x02\x02\x02\x02\x02\x03\x02\x02\
\x03\x07\x05\x04\x05\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\
\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\
\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\
\x07\x07\x07\x07\x07\x07\x07\xff\xc4\x01\xa2\x00\x00\x01\x05\x01\
\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\
\x04\x05\x06\x07\x08\x09\x0a\x0b\x01\x00\x03\x01\x01\x01\x01\x01\
\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\
\x07\x08\x09\x0a\x0b\x10\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\
\x04\x04\x00\x00\x01\x7d\x01\x02\x03\x00\x04\x11\x05\x12\x21\x31\
\x41\x06\x13\x51\x61\x07\x22\x71\x14\x32\x81\x91\xa1\x08\x23\x42\
\xb1\xc1\x15\x52\xd1\xf0\x24\x33\x62\x72\x82\x09\x0a\x16\x17\x18\
\x19\x1a\x25\x26\x27\x28\x29\x2a\x34\x35\x36\x37\x38\x39\x3a\x43\
\x44\x45\x46\x47\x48\x49\x4a\x53\x54\x55\x56\x57\x58\x59\x5a\x63\
\x64\x65\x66\x67\x68\x69\x6a\x73\x74\x75\x76\x77\x78\x79\x7a\x83\
\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\x96\x97\x98\x99\x9a\
\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\xb4\xb5\xb6\xb7\xb8\
\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xd2\xd3\xd4\xd5\xd6\
\xd7\xd8\xd9\xda\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xf1\xf2\
\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\x11\x00\x02\x01\x02\x04\x04\x03\
\x04\x07\x05\x04\x04\x00\x01\x02\x77\x00\x01\x02\x03\x11\x04\x05\
\x21\x31\x06\x12\x41\x51\x07\x61\x71\x13\x22\x32\x81\x08\x14\x42\
\x91\xa1\xb1\xc1\x09\x23\x33\x52\xf0\x15\x62\x72\xd1\x0a\x16\x24\
\x34\xe1\x25\xf1\x17\x18\x19\x1a\x26\x27\x28\x29\x2a\x35\x36\x37\
\x38\x39\x3a\x43\x44\x45\x46\x47\x48\x49\x4a\x53\x54\x55\x56\x57\
\x58\x59\x5a\x63\x64\x65\x66\x67\x68\x69\x6a\x73\x74\x75\x76\x77\
\x78\x79\x7a\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x92\x93\x94\x95\
\x96\x97\x98\x99\x9a\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xb2\xb3\
\xb4\xb5\xb6\xb7\xb8\xb9\xba\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\
\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xe2\xe3\xe4\xe5\xe6\xe7\xe8\
\xe9\xea\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xff\xc0\x00\x11\x08\
\x00\x30\x00\x30\x03\x01\x21\x00\x02\x11\x01\x03\x11\x01\xff\xda\
\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xfe\xec\xfe\x2c\
\xea\x37\x7a\x4f\xc3\xff\x00\x11\xdf\x58\xca\x52\xe9\x22\x01\x58\
\x75\x19\x60\x0d\x7c\x77\xaa\x78\xb7\xc3\x1a\x5e\xa2\xfa\x3e\xad\
\xe2\xcb\x4b\x6d\x5b\xcb\x13\x18\x2e\x2f\x12\x39\x36\x36\x70\xd8\
\x66\x04\x8f\x94\xf3\xed\x40\x1c\x1e\xb5\xe3\x9f\x07\xc3\x17\x9a\
\x7e\x21\x58\xa4\x2d\xc0\x6f\xed\x48\xc0\x3d\x7b\xef\xff\x00\x64\
\xfe\x46\xbe\x7f\xf1\x07\xc6\x7d\x63\xe1\xa7\x8c\xfc\x1d\xe2\x5f\
\x07\x7c\x48\x49\xe0\xb8\xd4\x6d\xed\x2e\x2c\xce\xa4\x26\x86\x68\
\xe6\x95\x22\xc9\x4d\xc4\x60\x33\xaf\x23\xb9\x1e\xb4\x01\xfb\x11\
\xe0\x7f\x1c\xdb\x78\xb2\xde\xe2\xd6\xea\x03\x6b\xe2\x4b\x43\xe5\
\xdf\x58\xc9\xf7\xe1\x6f\x51\xfd\xe4\x3d\x43\x0a\xef\x68\x03\xcb\
\xbe\x33\x8c\xfc\x37\xf1\x20\xf5\x8d\x07\xfe\x3e\xb5\xf0\x0f\xc5\
\xc9\xad\x2c\x3c\x5b\x77\x24\xda\x9c\xb6\x62\xdf\x4c\x43\x2c\xb1\
\xde\x48\x80\x23\x3b\x06\x61\x11\xb5\x99\x4b\x28\x39\x05\x5b\x24\
\xed\x04\x0e\x28\x03\x8c\xf0\xc7\x86\x7c\x51\xe3\x4b\x59\xa5\xd2\
\x67\x59\xad\xad\x8b\xa4\x8a\x75\xb8\xf2\x1d\x93\x7a\x07\x07\x4f\
\x53\x92\xd8\xf6\x00\x93\xcf\x4a\xf1\xff\x00\x8b\x7f\x00\xfe\x30\
\xeb\x3a\x1c\xf3\x69\x36\x30\xdb\x6b\x36\xaf\x04\x9a\x79\x4d\x62\
\x39\x92\x36\x8d\xd5\xc1\x31\x9b\x25\x1c\x32\xab\x60\x1e\x48\xc1\
\xe0\x0a\x00\xe0\x7c\x1d\xf1\x37\xfe\x0a\x2b\xe1\x9f\x1b\x5a\xf8\
\xd7\xe2\x76\xaf\xa2\x6a\x96\x96\xde\x59\x22\x1b\x08\x61\x9a\x54\
\x3f\xeb\x63\x66\x82\x38\xc1\x03\xb1\x60\xd9\xeb\x81\x5f\xbd\x7f\
\x0e\xfc\x63\x6f\xe3\xef\x06\x68\x1e\x2c\xb7\x84\xc6\xb7\x90\x2c\
\x8d\x19\xeb\x1b\x74\x61\xf8\x1c\x8a\x00\xc7\xf8\xc2\x37\x7c\x3d\
\xd7\xd7\xd4\x46\x3f\xf1\xf5\xaf\x99\xbe\x24\x78\xab\xc5\x5e\x1a\
\xf1\x3c\x5a\x2e\x8d\x19\x74\x9a\x08\x5e\x21\xff\x00\x08\xfd\xd5\
\xda\xa9\x66\x65\x76\x69\xa3\x95\x14\x63\xe5\x38\x20\x00\x32\x72\
\x73\x80\x01\xc6\x8f\x1c\xf8\xf6\x2b\x89\x64\x9e\xdf\x36\x71\xc8\
\xbe\x6e\xcf\x0b\x5e\xee\x68\xdd\x15\x95\x89\xfb\x47\x6f\x99\x4f\
\x1d\x48\xe3\x1c\x9c\xb6\xf1\xcf\x8d\xee\xee\xa5\x83\xec\xf2\xbc\
\x12\x63\xca\xff\x00\x8a\x47\x50\x5f\x27\x38\x00\xb3\x99\xb6\x90\
\x39\x27\x14\x01\x53\x44\xbb\xd6\xb5\xdd\x4b\x54\xd2\x7c\x47\xa7\
\xb9\x70\xc1\x21\x31\xe8\xb7\x36\xc8\x06\x24\x3b\x99\xe4\x91\xc1\
\x52\x10\x63\xee\xe0\xb2\xe4\x7c\xc2\xbe\xd1\xf8\x05\x6e\xb6\x9f\
\x0d\x34\x8b\x55\x18\x48\xa6\xb9\x8c\x0f\x40\x26\x71\x40\x1b\x7f\
\x17\xce\x3e\x1f\xeb\xa7\xd0\x47\xff\x00\xa3\x16\xbe\x54\xf8\xd7\
\x17\x86\x13\xc7\xdf\x6d\xd4\xe1\xd3\x25\xbc\xb6\xb0\xb6\x2f\x15\
\xcd\xb6\x90\xd2\xbc\x66\x56\xc6\x24\xba\xb8\x8e\x45\x0a\x4e\xe0\
\x30\x17\xd0\x92\x71\x40\x1e\x35\x69\x65\xe1\x88\xda\xd6\x1b\xad\
\x3f\x4d\xbb\xb5\x92\x38\xbc\xdb\x3f\xb0\xf8\x69\x36\xc5\xb9\x0c\
\x71\xc8\xdf\x6c\x24\x82\x15\x1d\x48\xcf\xfa\xd4\x3c\xe3\x15\x63\
\x4b\xf0\x4d\x87\x89\x77\x1d\x1b\xc3\xd6\x5a\x8c\x96\xd0\x2b\xc5\
\x6f\x69\xa5\xe8\x0e\x6d\x43\x49\xb4\xe4\x25\xd9\x0d\x91\xb9\xb9\
\x00\x63\x38\x21\xb8\xa0\x0f\x43\xf8\x7b\xe0\x6f\x16\x68\x1e\x2c\
\xb6\x96\x7f\x06\xbd\xa6\x91\x2a\x49\x14\xb2\x47\xa5\xe9\x56\xca\
\x81\x97\x39\x76\x82\xe1\xe4\xc6\xe8\xe3\xe1\x43\x64\xed\xce\x00\
\x35\xf5\xd7\xc1\xa4\xf2\xbc\x13\x14\x63\xf8\x6f\xaf\x07\xfe\x4c\
\x49\x40\x16\xbe\x30\x73\xf0\xf7\x5f\x1e\xd1\xff\x00\xe8\xc5\xaf\
\x2e\xf8\x8d\xf1\x0a\xdb\xc2\xde\x29\x4d\x1a\xeb\x43\xd1\xe7\x8d\
\xed\xe2\xdb\x2d\xf4\xb7\x09\x37\x99\x21\x60\xa8\x15\x2d\xa5\x57\
\x52\x42\xf2\x1c\x63\x27\x23\xa5\x00\x79\xf5\xd7\xc5\xed\x39\xad\
\x52\xf5\xfc\x23\xe1\xc0\xb1\xa2\x4a\x5a\x49\xef\x08\x8a\x65\x03\
\x72\xee\xfb\x07\xca\x55\x77\x05\x62\x32\x70\x06\x06\x6a\xcb\xfc\
\x5b\xbe\xb4\x92\xf2\xcf\x47\xf0\xb7\x87\x4e\xbc\xa7\x61\x86\x2d\
\x56\xe5\x46\x47\xcb\x86\x71\x64\x00\xf9\xd9\x14\x64\xe0\xee\x27\
\x3c\x50\x07\x6d\xf0\xff\x00\xe2\x55\xb7\x8c\xee\x27\xd3\x2f\x8d\
\x8c\x7a\xc6\x59\xe1\x86\xc6\xe2\x79\xc3\xc4\xbd\x4b\x33\xc3\x1a\
\xa3\x0e\x01\x00\xb7\x27\x83\x5e\x9f\xf0\x87\xfe\x45\x03\xff\x00\
\x61\x0b\xdf\xfd\x28\x92\x80\x35\x7e\x25\x69\x77\xba\xc7\x82\xb5\
\xbb\x1d\x3e\x06\x96\xf1\x91\x59\x23\x5c\x65\xf6\xb0\x6c\x0c\xf1\
\x93\x8a\xf9\xb3\x5f\xf8\x8c\xfa\xce\xac\xd7\xf7\xdf\x00\x3e\x21\
\x1b\x94\x2a\xa0\xda\xdf\x41\x04\x6d\xb3\x20\x1d\x91\xde\xaa\xf3\
\x9e\x78\xe7\x8c\xf4\x14\x01\xcc\x2f\x88\x6c\x52\xde\xe2\xd9\x7e\
\x02\x7c\x50\xf2\xe5\x93\xcd\x7c\xeb\xa4\x9d\xd8\x23\x83\xfd\xa3\
\x90\x30\x7a\x0e\x38\x07\x1c\x0a\x86\x4d\x7e\xda\x5b\x89\x6e\x9f\
\xe0\x47\xc4\xf6\x76\x31\x30\x56\xd6\x94\xa2\x18\xd4\xa8\x2a\x3e\
\xdf\x81\x90\x7e\x6f\x53\xc9\xa0\x0f\x44\xb5\xf8\xdb\xaf\x41\x0d\
\xad\x94\x5f\xb3\xe7\x8d\xbc\xa8\xd1\x62\x56\x91\x74\xf7\x6c\x00\
\x00\x2c\xc6\xe8\xb3\x1e\x39\x27\x24\xf7\xaf\x74\xf8\x5d\xa7\x5f\
\x69\xbe\x10\xb4\x8f\x51\xb3\x7b\x7b\xa9\x67\x9e\xe4\xc1\x2e\x37\
\xc4\x25\x95\xe4\x0a\xd8\x24\x64\x06\x00\xe0\x9a\x00\xff\xd9\
\x00\x00\x01\x45\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x84\x11\x00\xf7\x90\x0e\xf7\
\x93\x0e\xf7\x94\x0e\xf7\x97\x0e\xf7\x99\x0e\xf7\x9e\x0e\xf7\xa0\
\x0e\xf7\xa2\x0d\xf7\xb2\x0d\xf8\xb8\x0d\xf8\xc4\x0d\xf8\xcd\x0d\
\xf8\xce\x0d\xf8\xd3\x0d\xf8\xe4\x0d\xf8\xe5\x0d\xf9\xeb\x0d\xf5\
\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\
\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\
\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\x21\xfe\x15\x43\
\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\
\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x1f\x00\x2c\x00\x00\
\x00\x00\x28\x00\x27\x00\x00\x05\xa9\xe0\x27\x8e\x64\x69\x9e\x68\
\xaa\x7e\x45\xd2\x3c\x4f\x93\x14\x6b\x6d\x2a\x50\xae\xef\xb9\x62\
\xab\x01\x9e\x70\x18\xf8\x95\x16\xc3\x24\x6f\x61\xfc\x00\x94\x50\
\x1e\xc0\x36\x88\x5a\x75\x83\x95\xe0\xca\x85\x08\x54\xdd\x6e\x2a\
\x1c\x3e\x1d\xc8\xdd\x83\x09\x5d\x26\x19\xd8\x5d\x03\x09\xde\x16\
\xd1\xc5\x22\xc2\x9d\x4b\x10\x21\xf6\x57\x08\x22\x0c\x80\x56\x0c\
\x22\x0e\x85\x51\x0e\x88\x8a\x50\x8c\x1f\x84\x8e\x49\x87\x1f\x7f\
\x93\x43\x82\x1f\x7a\x98\x42\x7d\x76\x9d\x3c\x73\xa1\x3b\x6e\xa4\
\x39\x72\xa3\xa4\x26\x67\xa1\x6a\x6b\xa1\x63\x98\x2a\x5b\x8e\x5f\
\x2a\x55\x85\x59\x35\x4f\x7b\x53\x46\x48\x6c\x4c\x4d\x22\x41\x64\
\x45\xc4\x25\x38\x51\x3e\xc9\x2a\x2d\x2f\x31\x33\xce\xd4\xd5\xd6\
\x3f\x21\x00\x3b\
\x00\x00\x03\x68\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\
\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdb\x05\x1e\
\x09\x2a\x1b\x26\xd4\xd7\xdb\x00\x00\x02\xe8\x49\x44\x41\x54\x68\
\xde\xed\xda\xbf\x4f\x13\x61\x18\xc0\xf1\xef\x7b\xd6\xc5\xe4\xee\
\xba\x2b\x89\x0e\x16\xb0\x6d\x44\x85\x9a\xb8\x14\x07\x57\xad\x40\
\x5d\x65\x04\x5d\xf8\x03\x8c\x41\x34\x1a\xa1\xad\x1a\x11\x7f\x47\
\x7e\xcc\x42\x05\x37\x07\x5a\x13\x6b\x84\x41\x94\x09\xdc\x75\xad\
\x83\x0b\xb4\xef\xe3\x50\x2a\x18\x11\xa9\x5c\xf5\x2e\xb9\x67\xe9\
\x8f\x7b\xef\xb9\xe7\xf3\xde\x9b\x7b\xaf\xef\x55\xb1\x21\x0e\xc7\
\xe3\xc1\x3d\x25\x75\x5e\x94\x4e\x88\xd0\x2e\x5a\xa3\x45\x10\xad\
\x11\x11\xf4\xda\xab\xc8\xcf\x9f\xb5\xd6\x88\x96\xdf\x6f\xdb\x24\
\xc7\xef\x72\x6d\xb1\x7f\x4e\x6b\x9d\x5d\x59\x59\x19\x05\xbe\x56\
\x6b\x56\xd5\x37\x27\xe2\xf1\x16\xc4\x98\x45\x08\x6a\x59\x3f\xa8\
\x7b\x00\x95\xfc\xe5\x72\xb9\x58\x2a\xad\xb6\x03\x1f\x00\x8c\x4a\
\xf1\xa7\x5a\x0c\x15\x78\xaf\x50\x41\x5c\x1e\x4a\xa9\x60\x20\xb0\
\x7b\x01\x38\x0c\x60\xc4\xe3\xf1\xe0\x2e\xa5\x67\xf1\x58\x28\x65\
\xe4\x00\xdb\xd0\xbb\x76\x77\xa3\xdc\xdf\xf3\x9b\x9d\x09\xa0\xdb\
\x50\xa8\x04\x9e\x0d\x95\x30\x94\x52\x71\xcf\x96\xaf\x54\xbb\x81\
\xc7\xc3\x07\xf8\x00\x37\x03\xf6\xed\xdb\xeb\x5d\x40\x67\x47\x07\
\xaf\x73\xb3\x74\x76\x76\x78\x0f\x70\x3c\x16\x63\xf0\xe6\x0d\x00\
\xd2\x43\x83\x74\xd5\x11\xe1\x38\xa0\xb9\xb9\x89\x91\x7b\xc3\x3f\
\x7d\x97\x4e\x0d\xd1\xd5\xd5\xe9\x7e\x80\x65\x9a\x4c\x8c\x8d\x61\
\x59\xe6\x2f\xdb\x32\xe9\x14\xc9\x3a\x20\x0c\x27\x8b\x1f\x1f\x7f\
\xb6\x69\xf1\x3f\x10\x99\x34\xc9\x64\x97\x3b\x01\xc3\x77\xef\xd0\
\xdc\xd4\xf4\xc7\x76\xb7\x6f\x65\x38\x97\x4c\xba\x0b\x70\xfd\xda\
\x55\x62\xb1\xb6\x6d\xb7\x1f\x18\xe8\x27\x1c\x3e\xe4\x0e\xc0\xc5\
\xde\x1e\xce\x26\xce\xd4\x36\xdc\x2c\x8b\xc9\xc9\xe7\x8e\x20\x76\
\x04\x48\x9c\x39\xcd\x85\xde\x9e\xbf\xda\xd7\xb6\x2c\xa6\x26\x27\
\x09\x87\xc3\xff\x07\xd0\xd6\x7a\x8c\x6b\x03\x57\x76\x74\x70\xdb\
\xb6\xc8\x4e\xed\x0c\xf1\x57\x80\xc6\xc6\x10\xb7\x33\x69\x47\xc6\
\xb0\x6d\xdb\xbc\xc8\x4e\xd1\xd0\xd0\xf0\x6f\x00\xa6\x69\xf2\xf4\
\xd1\x43\x4c\xd3\x74\xec\x4a\x62\xdb\x36\x13\x13\xe3\x58\x96\x55\
\x5f\x80\x69\x9a\x3c\x79\x78\xdf\xd1\xe2\xab\x11\x8d\x44\x98\x99\
\x9e\xae\x19\x51\x13\x20\x93\x1a\xa4\xb1\x31\x54\xb7\xfb\x9a\x68\
\x34\xc2\xcb\x99\x99\x9a\x10\xdb\x06\xf4\x5f\xbe\x44\xeb\xb1\xa3\
\x75\xbf\x3d\x8e\x46\xa3\xdc\x1f\x19\xd9\x76\xfb\xc0\x76\x1a\x85\
\x42\x07\xf9\xfc\xe5\x0b\x0f\x1e\x3d\x06\x01\x41\x40\xd6\x56\xe2\
\x00\x11\x21\xd6\xda\x5a\xd3\x64\x56\x28\xbc\xe5\x4d\xa1\x50\xc9\
\x43\x25\xd7\xc6\xdc\xd1\x48\x84\x8f\x8b\x8b\xce\x00\x96\x97\x3f\
\xb1\xb4\xb4\xbc\xe5\xf2\x1f\xbd\xbd\x35\x02\x0a\xa4\x52\xe9\x2d\
\x97\x16\xfd\x9f\x94\x3e\xc0\x07\xf8\x00\x1f\x50\xf7\x08\x38\x95\
\x68\x6e\x7e\x9e\xbb\xc3\x02\x54\x1f\x35\x09\xac\x4d\x72\x95\x49\
\x6a\x7d\xd2\x43\x84\x37\x85\xb7\x2e\x03\xcc\xcd\xf3\xee\xdd\x5c\
\x4d\xcf\xc8\xfc\x21\xe4\x03\x7c\x80\x03\x00\x11\xc9\x7b\xb5\x78\
\x11\xc9\x19\x82\x64\xbd\xdb\xff\x92\x35\x8c\xf2\xea\x28\x22\x45\
\x0f\xf6\x7e\x11\x18\x35\xf2\xf9\x7c\xb1\x2c\xc6\x49\xef\x01\x74\
\x3b\xf0\xd5\x00\x28\xe4\x5f\x2d\x68\x29\x1d\x11\xdc\x7f\x26\x44\
\xa4\x58\x2a\xad\xb6\xb0\xf1\xcf\x1e\x15\x44\x7e\xe1\x9b\xd2\x07\
\x44\x4b\x1f\x48\xce\x85\xa5\xe7\x44\x74\x5f\xa9\xb4\xba\xbf\x5a\
\x3c\xc0\x77\x49\x33\x2a\xfe\x56\x0b\x1f\x1b\x00\x00\x00\x00\x49\
\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x07\x32\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
\x79\x71\xc9\x65\x3c\x00\x00\x06\xc4\x49\x44\x41\x54\x78\xda\xec\
\x57\x6b\x8c\x54\xe5\x19\x7e\xce\x39\x73\xe6\xbe\xc3\xcc\x2e\x7b\
\x98\xbd\xb1\xb0\x57\x97\x2d\x08\x8a\x2b\x5a\xad\x56\xc4\xa8\x41\
\xa9\xd2\xf2\xa3\x86\xb6\xd2\x1f\xb6\xab\x46\x88\x01\x2f\xb4\x8d\
\x22\x89\x26\xd6\x6a\xa3\xd1\x34\x98\x90\xd4\xe8\x1f\x2f\xa0\x85\
\xd4\x44\x8d\x25\x52\x62\x37\xa6\x6e\x6c\xc3\xad\x58\x0b\x2b\x8e\
\x7b\x91\xd9\xb9\x9c\x99\x39\x67\xce\xf9\x8e\xcf\x77\x06\x29\x01\
\x71\xd7\x76\x1b\xff\xf4\x4c\xde\x9c\xcb\xf7\x7d\xef\xfb\x7c\xef\
\xfb\x7e\xef\xfb\x8c\xe2\x79\x1e\xbe\xc9\x2b\x30\xd5\x84\xf7\x32\
\x50\xe4\xdd\xae\xba\xa8\x54\x1d\x94\xac\x2a\x4a\x95\xaa\x52\x2c\
\x57\x51\x2c\xdb\x28\x94\x2d\x8a\x0d\x93\xef\x66\xc5\xf6\xcc\x4a\
\xd5\x9f\x53\xb6\x1c\x7f\xfe\xde\x2d\xd7\x7c\xe5\x0e\x95\x2f\xf3\
\x80\x34\xfa\xec\xab\xef\xea\xe3\xd9\xe2\xac\xbc\x69\x2d\x76\x85\
\xb8\x98\xf3\x5a\x38\x64\x08\xcf\x6b\x82\xe7\x03\x0f\xf0\xb9\x8b\
\xcb\x35\x6a\xf8\x07\xc7\x6d\x8a\xcb\xef\x9f\xf2\xdb\x28\x9f\x33\
\x7c\x1e\xf2\x14\xe5\x7d\xe1\x21\xeb\x04\x82\xf6\xf0\xa3\x2b\xbd\
\x29\x01\x48\xe3\xf7\x3f\xbd\x7b\x91\x5d\x75\x86\x13\xb1\x30\x3a\
\x5b\x52\xe8\xa6\x24\xe3\x61\xc4\xc2\x3a\x62\x91\x20\x08\x00\x82\
\x73\x93\xb1\x20\x5c\xae\x1f\xcb\x96\x50\x75\x5c\x38\xae\x00\x01\
\xa3\x50\xb2\x90\x2f\xd9\x38\x3a\x9a\xc3\xc8\x58\x5e\x7a\x8c\x63\
\xde\x65\x55\x3d\xb4\xef\x4c\x10\x67\x01\xb8\xf2\xde\xd7\x16\xa6\
\xe2\xa1\x0f\xd6\x5c\xd5\x8f\xa5\xbd\x69\x68\x5a\x00\xdc\x01\xaa\
\x54\x6e\x3b\x02\x16\x43\x21\xa5\x62\xc9\x70\x48\x37\x57\xfd\x77\
\x97\xe3\x12\x00\xbd\xe5\xeb\xd1\x55\x05\x91\x50\x00\x31\xca\x08\
\x81\xbc\x3e\xf4\xa1\x04\xfa\x9d\xa1\x27\x56\xbf\x73\xce\x1c\x90\
\xbb\xa7\x82\xc1\x9b\xaf\x38\x0f\x97\x7e\xab\x15\x36\x1d\x6a\x51\
\xa8\x97\xc6\x41\x63\x82\xb1\x75\xfd\xf8\xfa\x39\x50\xb1\x7d\x29\
\x33\xe6\x16\x27\x57\x38\x49\x7a\x42\x78\xc2\x4f\x1c\x09\xc0\x48\
\x84\x31\x2f\x3d\x0b\x37\x7e\xbb\x1b\xcf\xee\x1a\xfe\xf9\xe2\x8d\
\xbb\xf6\x9e\xee\x85\xb3\x92\x50\x08\xaf\x2b\x9d\x8c\xfa\x0a\x4e\
\x89\xf2\xef\x67\x79\x49\xaf\x79\xfe\xbd\x26\xc2\x97\x9a\x4e\x39\
\x57\xe5\x4c\x8d\x1e\x08\x06\x54\x04\x75\x0d\xba\xa6\xc2\x48\xc6\
\xe4\x70\xfb\x57\x9e\x82\xa5\x4c\x2f\x7a\xc0\xb7\xc3\xb5\xbe\x41\
\x79\x77\xa9\x5b\x93\x4a\x15\x95\x42\x85\xaa\x47\xa5\x0a\xc2\x5c\
\x1d\x0b\xa9\x0c\x41\xc0\x0f\x81\x74\x7f\x6d\x0d\x8d\xeb\x2a\xe2\
\xcc\x99\x59\xcc\x93\xfa\x78\x88\xee\x37\xa5\x5a\xed\xcc\x1c\x38\
\xcb\x03\xdc\xc8\xd1\xb1\x49\x13\x0b\x95\x46\xa8\x1a\x27\x9c\x4c\
\xb8\x20\x81\x84\x89\x26\x1a\x54\xe0\x84\x55\x99\x54\x74\x37\x93\
\x50\x30\xf9\xe8\x02\x4f\xd4\xf4\xd2\xb6\xbf\x7b\xb9\xeb\x10\x77\
\xaf\xa8\x35\x6f\xe4\x8a\x15\x39\x3c\x32\x65\x1d\xa0\x7b\x77\xfe\
\xe5\xc0\x27\xeb\x02\xa9\x66\x8c\x15\x3d\xcc\x4d\xaa\x48\x46\x14\
\x24\x43\x8a\x6f\x3c\x12\x50\xa0\x04\x02\xf0\xf0\x45\x18\x3c\xff\
\x54\xc8\x9b\x45\x2f\x64\x4d\x1b\xe3\x45\x1b\x1f\x8f\x17\xf1\x2f\
\x9e\x80\xc3\xc7\x26\xd0\x5c\x1f\xc6\xbb\x7f\x3b\x2e\xd5\x3f\x33\
\xad\x3a\xb0\x6c\xc3\xcb\xde\x03\x83\xab\xb0\x63\xbf\xe5\xbf\xd3\
\xdb\x48\x04\x3d\x84\x54\x81\xa0\x26\x20\x5c\x87\x0b\x5d\xdf\x2b\
\x36\x4f\xc1\xa4\x59\xe1\xd1\xb3\x79\x32\x6c\x64\x0b\x65\x64\xf3\
\x25\x7c\x96\xcd\xf1\xdd\x82\xc3\xf1\x9f\x5e\xb7\x04\xbb\xf7\x1d\
\xc6\xd0\xe3\xab\x95\x69\x55\x42\x09\x69\x81\xa1\xa1\x2a\x82\x38\
\xf2\x99\x8b\x83\xe3\x2e\xb2\x65\x1e\x43\x56\x36\xc7\xa9\xa2\x6a\
\x53\xaa\x36\xef\x36\x6c\xdb\xaa\x09\x8d\xdb\x55\xcb\x1f\x13\x8e\
\x3c\x0d\x8e\x6f\xfc\xfa\xcb\x17\x63\xc5\x45\x9d\xd8\xfd\xe7\x43\
\x5f\x5a\x09\xd5\x73\x96\x48\x62\x6d\xa7\xfb\x07\x5a\x4f\x62\x64\
\x02\x5e\x3e\x3f\x8c\x65\xed\x11\x8e\xd5\x36\xd2\xd3\x14\x47\x5f\
\x6b\x12\xfd\x73\x1b\x08\xac\x66\x70\x51\x4f\x3b\x16\x2f\xe8\x82\
\x65\xd5\x80\x75\xb6\xce\x41\x40\x53\xff\xf3\x5e\xa0\x9c\x86\xa8\
\x2d\xa9\xc1\x72\x14\xec\x3d\xf9\xb1\xc3\x88\xfa\xb1\xcf\x95\xb8\
\x6b\x21\x8b\x91\x0b\xa3\x3e\xc1\x53\x21\xf8\x5d\x4c\xab\x19\xa9\
\xf8\x86\xaf\xff\x03\x98\x11\x00\x6d\xa9\x20\x86\xb6\x2e\xc7\x05\
\xf3\xeb\xcf\x1a\x6b\x49\xea\x18\x68\x0b\xe3\xfc\xf9\x0d\xff\x1b\
\x00\xfd\x4d\x21\xac\x1d\x48\x61\xec\xf7\xdb\xb1\x7d\xf0\x12\x5c\
\xda\x11\x3b\x35\xb6\xe1\x7b\x4b\xf0\xc3\x8b\xea\x71\xec\xe9\xc7\
\xb0\xed\xae\xef\xce\x3c\x80\xfe\x74\x08\x57\x76\xc5\x90\x79\xe2\
\x31\x04\xd9\x18\x3e\xfe\xf5\xc3\xb8\xe9\xfc\x24\x2e\xeb\x8c\xe3\
\xce\x95\x8b\x70\xcf\xf7\x97\xe2\xe0\xe6\xf5\xd0\x79\x22\x8e\x3c\
\xf5\x08\xfe\x7a\xfb\x2d\x89\x19\x03\xd0\x63\x84\x70\xc5\x49\xe3\
\xb1\x86\x38\xa2\xae\x89\xba\xd9\x09\x1c\x7d\x64\x0b\xd6\x5c\x98\
\xc2\xa6\x9b\x97\xe0\xd0\xe6\x0d\x30\x9a\x9b\x91\xf0\x1c\xc4\xca\
\x65\xf6\x0b\xf7\x95\xa1\xdb\x7e\x90\xfe\x5a\x75\xe0\x5c\xd7\xc3\
\xab\x5a\x30\xfe\xfc\x73\x88\x34\x1b\x08\x7b\x65\xb8\x99\x11\x7a\
\x21\x86\xba\xfa\x3a\x7c\xb8\x75\x33\x5c\xab\x82\xc6\xa6\x34\xf4\
\xc9\x09\x38\xc5\x22\xea\x5a\xe6\xc3\xe8\xe9\x5f\xfe\xc9\x81\xf7\
\x7f\xc6\xe5\x0f\xfc\xd7\x1e\xb8\xef\xd5\xe3\x68\xbc\x65\x2d\xcc\
\xcc\x18\x4c\x36\x20\x44\x13\x10\x85\x1c\xc2\x95\x02\xd2\xad\x4d\
\x68\x6e\x9f\x0b\x3d\x7f\x02\x82\xc6\x95\x44\x3d\x26\xf3\x59\x64\
\x0e\x0c\xef\x22\x59\x79\x6a\x46\x42\x70\x78\xcc\xc2\x5b\x87\x4d\
\xb4\xdc\x75\x37\x8a\x6c\x3e\x25\xa1\x43\x89\xd6\x41\xe4\x73\x10\
\xc7\x3e\x82\x18\xf9\x27\x01\x15\x7c\xe3\x39\x56\xc9\x72\x72\x96\
\x64\x4a\x6b\x2e\xd9\xb6\x73\x62\xc6\x92\xf0\x10\x41\xbc\x71\xa8\
\x88\xb6\xf5\x9b\x50\x28\x9a\x70\x63\x49\x36\x32\x05\x1e\x1b\x95\
\xc7\xa6\xe4\xa9\x3a\xec\x68\x14\x25\x7e\xed\x1e\xbc\x07\xcb\xb6\
\xed\x28\xcf\xf8\x31\x4c\x84\x34\xff\xee\x9a\x26\x09\xa5\x0b\x8f\
\x4d\xc9\x93\xbc\x90\x04\xd6\x63\x73\x52\x25\x9f\x2c\x4c\x7e\xcd\
\x42\xf4\x05\xbf\x93\x3f\xe5\xdc\xc6\x97\xb6\x45\x70\xf1\xbc\x08\
\x8e\xfc\x6a\x13\x52\x0d\x29\x78\xa3\xc7\x6b\x3b\xd7\x48\xdd\x55\
\xb2\xe9\x32\x59\xd0\xa7\x19\xa4\xc2\x71\x0c\xff\xf2\x0e\xec\xbd\
\xf5\xfa\x8e\x69\x7b\xc0\x27\x95\xdc\x9c\xe4\x7e\xcb\x3b\x75\xac\
\x3a\x4f\x3f\x45\x4e\x6b\x05\x28\x82\x81\xf6\x9a\xf1\x86\x74\x23\
\xf4\xdc\xc4\xa9\x98\x3b\x8d\x06\x44\xba\x09\x4a\x3c\x01\x37\x9b\
\x45\x38\x5b\xc0\x6c\x41\x16\xe5\xb9\xbb\xf6\xfc\x68\xc5\xc2\x29\
\x01\x70\xff\xcf\xbc\xb4\xe7\x20\x22\xa4\x60\x09\x52\xb1\xbe\xc6\
\x00\xe6\xc4\xc9\x07\x49\x34\x23\xc1\xda\x92\x2d\x2b\x9b\x90\xd9\
\xfe\x3b\xc4\xd3\x73\x10\x24\x6b\x14\x32\x04\x7e\xc2\x91\x96\x59\
\x65\x8c\xf2\xf8\x99\xdc\x81\x4a\x10\x22\x9f\x47\x2c\x10\x86\xd1\
\xda\xd3\xc7\x36\x7d\xc3\x74\x3c\xf0\xe0\x8b\x7f\x3a\x80\x17\xde\
\xfc\x3b\x49\x86\xed\x73\xc2\x54\x54\x43\x43\x4c\x83\x11\xd7\xb0\
\xf1\x6a\x03\x1f\x64\x6c\x34\xdd\x7a\x1b\x79\xa0\xcb\x7f\x41\x16\
\xb4\xd6\x0e\xe4\xb9\xd0\x22\xf9\xe8\xde\xf4\x10\x16\x3c\xf8\x38\
\x81\x14\x61\x46\x74\xe8\xf3\x3a\x30\x51\x99\x44\xe6\xe8\xfe\x27\
\x09\xe0\xd1\x29\x39\xa1\xbc\x06\xd6\xbf\x14\x61\x18\x4a\x75\xd1\
\x10\xe6\xcd\x49\x60\x51\x97\x81\x56\x56\x3a\x23\x15\xf3\xc3\x93\
\xae\x8f\x23\x44\x82\x9a\x8e\x2b\xf8\xe8\x37\x0f\x21\xc0\xf8\x54\
\x58\x7c\xba\xef\xdd\x8a\x9d\x43\x23\x38\x91\x2b\x61\xdd\x8a\x5e\
\x0c\x6f\x5c\xc7\x3f\x28\x5c\xd3\xdb\x8b\xae\xb5\x77\x28\xd3\x22\
\xa5\xa7\x81\x90\x95\x52\xb6\xb1\x05\x94\xab\xb8\xba\x8f\xb3\x3b\
\xe5\x3f\x2f\x4a\x1f\xa9\x99\x3a\xd0\x63\xe0\xb7\x3f\xb9\x10\xa3\
\xaf\xbd\x08\x63\xe5\x6a\x6c\xd9\xb1\x7f\xdf\x1f\xdf\x3b\xb6\x87\
\xe3\x6f\xbf\xf2\x8b\x6b\x7b\x67\xdb\x27\x9e\x1c\x7b\xe3\x0f\x98\
\xfb\xe3\xdb\x25\x23\x1e\x3c\xd3\xc6\xe7\x02\x0c\x00\x49\xc6\x43\
\x5b\x90\xd8\x7e\x08\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
\x82\
\x00\x00\x06\x1c\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x05\xe3\x49\x44\x41\x54\x78\xda\xbd\x97\x09\x6c\x14\x65\
\x14\xc7\xdf\x1c\x3b\xbb\x3b\xdd\xa3\xdb\xed\xee\xd2\x22\xad\xa5\
\x54\x20\x62\x50\x40\x05\x11\x22\x87\xc6\x86\x20\xa5\x88\x4a\x2c\
\x89\x72\x18\x91\x94\x08\xd4\x28\x11\x62\x44\xa3\x60\x22\x09\x42\
\x4a\x62\x34\x51\xa8\x28\x09\xa0\x96\x04\x51\xa3\xd1\x88\xe5\x28\
\x2c\xe5\xb0\x69\xb0\xd0\x8b\x6d\x69\x77\xdb\xbd\xe7\x3e\x7c\xb3\
\x14\x6d\x48\x2f\xe8\xe2\x24\x2f\x73\x7f\xff\xdf\xf7\x7f\xef\xfb\
\xbe\x19\x02\xd2\xb4\x1d\x1d\x3b\xb6\x30\xd3\x6e\x7f\x5d\x10\xc5\
\x23\x73\x1b\x1a\x7e\x1a\xee\x7b\x44\x3a\xc4\xbf\x1f\x33\x86\x35\
\x5b\x2c\x89\xf6\x60\x90\x70\xdb\xed\x90\xe5\x74\x1e\x98\x75\xe9\
\xd2\x0b\xff\x1b\xc0\x77\x79\x79\xbf\xb7\xc7\x62\xb3\x19\x82\x00\
\x0a\xcf\x69\x92\x84\x3c\x9f\x2f\xa2\x29\xca\xfc\x39\x97\x2f\x9f\
\xbd\xab\x00\x3f\x1f\x3c\xf4\x49\xeb\xc6\x0d\xe5\xd1\x40\x00\x58\
\x9b\x0d\x48\x14\xa7\x8d\x86\x75\x1d\xbc\x4e\x27\xd8\x59\xf6\xe3\
\xd9\xf5\xf5\x15\x77\x05\xa0\xa1\xf6\xe8\xf4\xeb\x6a\xee\x09\xab\
\xdd\x04\xcd\xdb\xb6\x41\xcb\xbe\x7d\xc0\x3a\x1c\xc0\xd0\x34\xd0\
\xe8\x06\x68\x1a\x58\xf0\x78\x8c\xcf\xd7\x24\x0a\xc2\xdc\xf9\x8d\
\x8d\xcd\x69\x05\x90\xfc\x5b\xea\x42\x92\x73\x72\xd0\x51\x0a\x74\
\x86\x19\xe2\xe7\x6a\xa1\xa6\xac\x0c\x08\x49\x02\x0b\xcb\x82\x09\
\xdd\xa0\x6e\xba\x91\x99\x09\x84\x20\x58\x8b\x3b\x3a\x84\xb4\x00\
\x88\xfe\xad\x9b\x15\x39\xfa\x9e\xca\x37\x81\x28\xf4\x00\x5f\xf0\
\x01\x80\xeb\x41\x20\x09\x0e\x8e\xaf\x78\x19\x5a\x8f\x1c\x01\x1b\
\xa6\x80\xa2\xa8\x94\x1b\x14\x42\xb8\x68\x7a\xdc\xa2\xae\xae\x2b\
\x23\x06\x50\xea\xde\x1d\x2f\x49\x7c\x83\xc2\x5f\x03\x45\xe8\x00\
\x45\x0c\x80\xca\x37\x03\x71\x6f\x39\x28\x63\x3f\x04\x7b\x36\x05\
\x7f\xef\xdf\x0f\xbf\x2e\x5f\x0e\x16\x8b\x05\x70\x84\x00\xa9\xeb\
\xc7\x56\x87\xc3\xc5\x69\x49\x01\x5f\xbb\x39\xa0\x88\xed\xb9\x12\
\xdf\x01\xb2\xd0\x86\x8d\x68\x08\xd1\x05\xba\x14\x02\xdd\x9a\x07\
\xf1\xa2\x6f\x81\xf5\x14\x01\x29\x46\xe0\xc7\x45\x8b\x20\x5e\x57\
\xc7\x39\xdd\xee\xcc\x95\xa1\x90\x3c\x62\x00\xfe\xcc\x96\x3d\xaa\
\xd8\xf5\xaa\x21\xae\xa0\x38\xaa\x62\xad\xc9\x29\x27\x80\xd0\x80\
\xa4\xb0\xc7\xe6\x6c\xb8\xce\x96\x41\xd8\xb1\x0c\x72\xf2\xb3\xe0\
\xea\xde\x2f\x56\x3f\xb9\x71\xc3\x67\xfd\xb5\x77\x5b\x00\xe2\xd9\
\xb7\x1f\x97\xa5\xd8\x1f\xb2\xd0\x0e\x29\xfb\xe5\x6e\xa0\x19\x37\
\xc8\x7c\x1b\x68\x4a\x14\x74\x7c\x86\x75\x4c\x05\x55\xe9\x06\x5d\
\x68\x85\x38\x59\x00\x6d\xce\xed\xfe\x39\xf3\x8a\xa7\x0e\xd4\xe6\
\xb0\x01\xf4\x0b\x9b\x48\x8e\x93\x62\x0a\x1f\xc8\x50\xa4\x00\x48\
\x5c\x2b\x98\xd8\x02\x50\xa4\x20\xe6\xbf\x1d\x34\x9d\x03\x8b\x7d\
\x32\x3e\x49\x22\x4c\x0f\x5e\xef\x01\x50\xa3\x3d\xa3\x9f\x97\xdd\
\x83\xb5\x3b\x6c\x80\xe4\xe9\x8a\x6a\x55\xe8\x5c\x28\xf1\x01\xcc\
\x7b\x0b\x98\x18\x2f\xbe\x4d\x63\xee\xaf\xe1\xf9\x75\xa0\xcd\x39\
\xc0\xb0\x85\x37\x6a\x41\x0d\xe3\x3e\x0a\x34\xad\x3f\x34\x6a\x49\
\xac\x6e\xc4\x00\xdc\xa9\x0d\xcf\xa9\x72\xf4\x80\x24\xa0\xed\x5c\
\x00\x73\x2e\x82\xd9\x71\x7f\xaa\xf2\x8d\x5a\xd0\x35\x0e\x32\xdc\
\x4f\x80\x6a\xb8\x21\xa1\xb8\x12\xc6\x49\x88\xdf\x3e\x7a\x69\xfc\
\xad\xa1\xda\x1e\x12\x40\xf5\xaf\x77\x72\x3c\x1f\x91\x31\xe7\xaa\
\xd8\x81\x82\xad\x60\xf3\xcc\x4f\x15\x9d\x2c\x74\x62\x34\x41\x86\
\x6b\x16\xe6\x5f\x05\x4d\x8a\x80\xaa\x46\xd0\xfe\x70\xe3\x3d\x4b\
\xc3\x45\xc3\xe9\xdc\x90\x00\x89\x13\x6b\x4f\xa3\xd8\xc3\x0a\xf6\
\x54\xe0\x2e\x03\xeb\x9a\x89\xf3\x3d\x5a\x8f\x85\x68\xc0\x50\x4c\
\xf6\x0d\xeb\x25\x63\x18\xa2\x38\xe6\x9f\x22\xe4\x3c\xdf\xe2\x50\
\xdb\x88\x01\x12\x35\x6b\xd6\xa3\xa5\x3b\x70\xcc\x83\xc8\x35\x01\
\x65\xca\x02\x36\x73\x3a\x16\x60\x33\x18\xd7\x34\x25\x02\x6c\xd6\
\x6c\xb4\xbd\x13\x54\x39\x92\x2a\x3c\x5d\x4b\xae\xcb\x2d\xed\xdc\
\x35\x1c\xf1\x41\x01\xd4\x73\x15\x05\xc9\x78\xe0\xaa\xc4\x77\xa1\
\x58\x1b\xda\x1f\x02\x57\xfe\x4a\x90\xb9\x16\x3c\xef\x48\x41\xb0\
\x99\x8f\x61\x3d\xf0\xbd\x55\x1f\x31\x86\x62\x4d\xce\xe2\xb6\x99\
\xc3\x15\x1f\x14\x20\xee\xdf\x59\x25\x27\x1b\x5e\x94\xbb\x8f\x81\
\x51\xf9\x99\xf9\xab\x52\xab\x9b\x2c\x18\xa3\x00\x87\xa0\x79\x14\
\xda\xef\x46\xb0\x6e\x50\x30\xef\x9a\xd4\xa3\x9b\x69\xc5\xe1\x5a\
\xd0\x94\x48\x0b\x40\xd4\xbf\xeb\x94\x4a\xb0\x8f\x68\x12\x4e\xb5\
\xf1\x1a\x9c\x60\xa6\xa5\x84\x0d\x00\x4d\xc1\x31\xef\x9c\x8c\xe2\
\x5d\x68\xff\x8d\xbc\x13\x1a\xb7\xc4\xfb\x4c\xe3\xe1\xdb\x11\x1f\
\x14\x20\xec\xdf\xdd\x05\x24\xe3\xd1\x29\x2b\xf6\x94\x05\x32\x7e\
\x11\x94\xf0\xc9\x54\x9e\xad\xae\x29\x98\xf3\x28\x68\xa9\xbc\x87\
\x41\x53\x63\x87\x7c\x0b\xeb\x9f\xbd\x5d\xf1\x41\x01\xba\xfd\x7b\
\x74\x82\x36\x63\xc5\x33\x40\x98\x18\xd0\x4d\x76\x9c\x8d\xae\x00\
\x19\xfe\x13\x08\xc2\x82\xd3\x6d\xa4\x37\xef\x91\xb8\x77\xc1\x39\
\xc7\x9d\x88\x0f\x08\xa0\xb7\x7d\xed\x8e\x74\x27\x42\x04\x65\x46\
\x61\x04\xa0\x18\x5c\x64\x70\x4f\xb3\x78\x4c\x83\x7a\xed\x30\xa8\
\xe1\xf3\xa0\x6a\x02\xae\xff\xf2\x0c\x77\xf1\x99\x93\x69\x05\x48\
\xd6\x7f\x39\xcd\x64\x66\x6a\x79\x63\xf1\x24\x4d\x29\x00\x82\x64\
\xfe\x83\x31\x63\xf1\x05\x7f\x03\xf1\xea\x57\xbb\x3c\xc5\xc7\xd7\
\xdd\xa9\xf8\x80\x00\x2b\x96\x3d\xb5\xa4\x28\xdf\x77\xb0\x7c\x55\
\x09\x58\xf1\xd3\x2a\x21\xe8\xa9\x34\x90\x94\x01\x63\x01\x1d\x21\
\x68\x26\x63\xab\xc5\x71\xdf\x3b\x23\x11\x1f\x10\xc0\xeb\xf3\xbd\
\x11\x8d\x26\x3e\x12\x05\x0e\x3e\xdd\xb1\x11\x56\xbf\xb2\x14\x92\
\x51\x1e\x85\xcd\xf8\x89\x65\xda\x69\x75\xd8\xdf\x24\xcc\xe3\xc5\
\x91\x8a\x0f\x08\x50\x58\x58\xb8\x5b\x92\xa4\xb5\x82\x20\x40\x30\
\x18\x84\xf7\x37\xaf\x81\x4d\x15\x2f\x7d\xae\xaa\xb0\x9e\x71\x3f\
\x1a\x4f\x87\xf0\xa0\x00\x13\x27\x4e\xfc\x41\x14\xc5\xa7\x93\xc9\
\x24\xe8\xba\xfe\x4d\xce\x28\x4f\xf9\xf9\x0b\x7f\x85\xd2\x29\x3c\
\x28\xc0\x84\x09\x13\xae\x78\xbd\xde\x86\x49\x93\x26\xbd\x56\x59\
\x59\xd9\xb2\x77\xef\x3e\x8a\x20\x48\x52\xd5\x54\x60\xad\x16\x92\
\x20\x08\x73\x3f\xef\x1a\x1f\x44\x22\xde\xd3\x8c\x9f\x93\x9b\xd7\
\x4a\x4b\x4b\x95\x61\x01\x54\x55\x55\x4d\xc1\xdd\x03\x34\x4d\xe7\
\x44\xa3\xd1\x71\x1e\x8f\x87\x97\x65\xd9\xaa\x69\x9a\x4f\x55\x55\
\xa6\x8f\x88\xf1\xe3\xe3\x1a\x00\x00\x3f\x04\x40\xe9\xd3\xb6\x84\
\x11\xec\xbd\x67\x38\x18\xc1\x68\xc7\xb8\x58\x56\x56\xe6\xff\x17\
\xa0\xba\xba\x9a\x8c\xc5\x62\xf3\xf0\x70\x06\x46\x2e\xf6\x22\x1b\
\xad\xb7\xe1\xb1\x15\xc3\xd1\x47\x2c\x03\xc3\x3c\x44\x87\x0c\xd1\
\x44\xaf\xa8\xb1\x19\x35\xc3\xf5\x5e\xeb\xc6\x08\x60\xd4\xd8\x6c\
\xb6\x5f\x4a\x4a\x4a\xb4\x7e\x53\x80\x6e\x18\x1e\x92\xbd\xbd\x65\
\xfa\xdc\xb2\xdc\x72\xde\xdf\x66\xcc\x1e\x42\x1f\x00\xb9\x37\x34\
\xec\xb5\x76\xeb\xc3\xff\x00\xd1\xb6\xe4\x3f\x9f\x54\x9c\x8c\x00\
\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x02\xe5\
\xff\
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\
\x01\x00\x00\xff\xdb\x00\x43\x00\x09\x06\x07\x08\x07\x06\x09\x08\
\x07\x08\x0a\x0a\x09\x0b\x0d\x16\x0f\x0d\x0c\x0c\x0d\x1b\x14\x15\
\x10\x16\x20\x1d\x22\x22\x20\x1d\x1f\x1f\x24\x28\x34\x2c\x24\x26\
\x31\x27\x1f\x1f\x2d\x3d\x2d\x31\x35\x37\x3a\x3a\x3a\x23\x2b\x3f\
\x44\x3f\x38\x43\x34\x39\x3a\x37\xff\xdb\x00\x43\x01\x0a\x0a\x0a\
\x0d\x0c\x0d\x1a\x0f\x0f\x1a\x37\x25\x1f\x25\x37\x37\x37\x37\x37\
\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\
\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\
\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\x37\xff\xc0\x00\
\x11\x08\x00\x28\x00\x28\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01\
\xff\xc4\x00\x18\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x06\x07\x02\x08\xff\xc4\x00\x28\x10\x00\
\x01\x02\x05\x02\x05\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\
\x02\x04\x00\x03\x05\x06\x11\x12\x13\x21\x22\x51\x81\x91\x31\x32\
\x41\x61\xc1\x52\xff\xc4\x00\x16\x01\x01\x01\x01\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x04\x02\xff\xc4\x00\x1d\
\x11\x00\x02\x03\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\
\x00\x01\x02\x00\x04\x11\x03\x31\x12\x21\x41\xff\xda\x00\x0c\x03\
\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xd7\x2e\x3a\xf3\x3b\x7a\x9e\
\x5d\xbc\x56\x49\xe1\x2a\x52\x4f\x34\xc5\x74\x1f\xa7\xe2\x31\xea\
\xed\xed\x5a\xac\x4d\x5e\x5d\x2d\xab\x73\xed\x90\xdd\x45\x23\x1f\
\x67\xd4\xf7\xf1\x0b\xfe\xb3\x32\xb1\x71\xb9\xe7\xcb\x76\xca\x32\
\x64\xa4\x1e\x18\x07\x04\xf7\x39\x3e\x3a\x44\xdc\x37\x56\xaa\xa2\
\x86\x61\xfb\x07\xb3\x65\x9d\x8a\xa9\xfc\x9d\xee\x4c\xdc\xdc\xd6\
\xad\x7f\xd6\x78\xf9\x8a\x1a\x15\xed\x5a\xa3\xcd\x46\x1d\x2d\xd3\
\x71\xee\x90\xe1\x45\x43\x1f\x47\xd4\x76\xf1\x13\x70\x8a\xd9\x15\
\xc6\x30\xd9\x2a\xbb\x29\xd5\x33\xd0\xb6\xe5\x79\x9d\xc3\x4f\x0e\
\xd9\xab\x04\x70\x9b\x29\x47\x9a\x5a\xba\x1f\xc3\xf3\x08\xc7\xac\
\x0a\xcc\xca\x3d\xc6\xdb\x9f\x0d\xdc\xa8\x49\x9c\x92\x78\x60\x9c\
\x03\xd8\xe0\xf9\xeb\x08\x0e\xcd\x73\xc9\xf1\x7c\x8c\xd7\xee\x3a\
\x26\x9f\x64\xf4\xdd\x7b\xab\xdc\xce\xbd\x47\x56\x7a\xfc\xc7\x11\
\x49\x7f\xd1\xa6\x51\xee\x37\x3c\x98\x6e\xe5\x46\x74\x95\x01\xc3\
\x04\xe4\x8e\xc7\x23\xc7\x58\x9b\x86\xd1\x83\xa8\x61\xfd\x83\x3a\
\x95\x62\xa6\x21\x08\x46\xe6\x67\x72\xb5\xee\xa3\x6f\x3a\xf5\x0d\
\x38\xeb\xf1\x08\xa1\xb0\x28\xd3\x2b\x17\x1b\x6e\x4c\xb7\x6c\xa1\
\x3a\x72\x88\xe1\x80\x72\x07\x73\x81\xe7\xa4\x22\x2b\x36\x97\x93\
\x7c\xe6\xcb\x2b\xd6\x6e\xab\xf5\xb9\x36\x1b\x8e\x82\xce\xe1\xa7\
\x96\x8f\x13\x82\x38\xca\x9a\x91\xcd\x2d\x5d\x47\xe8\xf9\x8c\x7a\
\xbb\x64\xd6\xa8\xf3\x57\x96\xab\x74\xdc\x7b\x67\xb7\x49\x50\xc7\
\xd8\xf5\x1d\xfc\xc2\x11\x05\x5b\x0e\x8c\x14\x78\x65\xd6\x78\x23\
\xaf\xd1\xf6\x4f\x6d\xcc\xdc\xdb\xd0\xad\x7f\xce\x38\xf8\x8a\x1a\
\x15\x93\x5a\xac\x4d\x46\x1a\xad\xab\x73\xee\x9e\xe1\x25\x23\x1f\
\x43\xd4\xf6\xf3\x08\x42\x36\xbb\x37\x24\xd5\x87\x56\xe2\xbd\x1f\
\x1a\x6c\x36\xe5\x05\x9d\xbd\x4f\x0d\x19\xa7\x24\xf1\x9b\x35\x43\
\x9a\x62\xba\x9f\xc1\xf1\x08\x42\x03\x66\x2c\x74\xfb\x1a\x55\x0a\
\x30\x4f\xff\xd9\
\x00\x00\x00\xb2\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x79\x49\x44\x41\x54\x58\x85\xed\xd5\x41\x0a\x80\x30\
\x0c\x04\xc0\x8d\x2f\xca\x13\x7d\x62\x7e\x14\x0f\x1e\x44\x88\x9a\
\x04\x2b\x58\x36\xa7\xb6\x94\xec\x14\x02\x15\x07\x1c\x89\x12\x40\
\x32\xf7\x8e\x5a\x53\x7d\x97\x5a\xd3\xf7\x8b\x00\x02\x08\x20\xe0\
\xbf\x00\x55\xf5\x68\xfd\x09\x20\x0a\xec\x22\xca\x80\xbb\xa0\x0e\
\x42\x2a\xbf\x61\x36\xc0\xcc\x64\xce\xdf\x70\x7f\xd9\x79\x1f\x9d\
\x0d\x03\x3c\x05\x54\xc3\x5b\x80\xab\xa0\x4e\x38\x50\x1c\xc2\x5a\
\xeb\x19\x87\x90\x00\x02\x08\x20\x80\x80\x11\xb5\x01\xaa\x0d\x2b\
\x9d\xfc\x54\x45\x0d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
\x82\
\x00\x00\x08\x15\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
\x79\x71\xc9\x65\x3c\x00\x00\x07\xa7\x49\x44\x41\x54\x78\xda\x62\
\xfc\xff\xff\x3f\x03\x35\xc0\x9b\x99\x8c\xf7\xff\x8b\xe5\x29\xbc\
\xbd\xf5\x94\xe1\xd5\x99\x83\x1b\x7e\x7d\x78\x33\xd1\x65\xf7\xff\
\x03\x84\xf4\x01\x04\x10\x03\xc8\x01\x94\xe2\x37\x13\x19\x1c\x7e\
\x5e\xe6\xfb\xff\xff\xfd\xe6\xff\xff\x3f\xdc\xf9\xff\xfb\xe9\xb9\
\xff\x77\x67\xe5\xfd\xdf\xed\xc2\xd0\x4f\x48\x2f\x40\x00\x51\xc5\
\x01\xef\xe6\x32\xec\xff\xff\x9a\xf1\xff\xff\xbb\xfc\x40\xdc\x05\
\x76\x04\x08\x43\x1d\x11\x80\x4f\x2f\x40\x00\xb1\x80\x42\x61\xdd\
\xfa\x23\xff\x7f\xff\xfe\xc3\xf0\xfb\xd7\x5f\x06\x46\x46\x06\x86\
\x3f\x7f\xfe\x02\x31\x90\xff\x1b\x41\xa3\xb2\xff\x80\xd5\x80\x68\
\x59\xb6\x1b\x0c\x19\xfe\x8c\xd0\x78\xf8\xc4\xc0\xf0\xa5\x9c\x81\
\xe1\x56\x3f\x03\xc3\x4f\x7b\x06\xce\xa7\xe7\x41\xa2\x17\xf0\xc5\
\x00\x40\x00\xb1\xac\x5f\x7f\xf4\xbf\xad\xbd\x3e\xd0\xc0\x7f\x0c\
\x7f\xff\xfd\x63\x90\x91\x10\x04\x4b\x5c\xbe\xf9\x04\x45\xa1\xae\
\xba\x0c\x56\x03\xbe\x1f\x4f\x64\xe0\x50\x01\x32\xbe\x02\x1d\xf1\
\x05\x9a\x9e\xde\x70\x00\x25\xae\x30\xdc\x7e\x2b\xc4\xd0\xf6\xaf\
\xf8\xbe\x0b\x03\x03\x23\x2e\x07\x00\x04\x10\xcb\x6f\xa0\xaf\x7e\
\xfc\xfc\xcd\xf0\xf5\xdb\x4f\x86\x3f\x7f\x11\x0e\x30\xf5\x6f\x64\
\x90\x14\x15\x60\xe0\xe0\x60\x65\xe0\x60\x67\x65\x38\xbf\xa5\x11\
\x43\xf3\xbf\xcf\x0f\x18\xfe\x7f\x5f\x08\xe1\xbc\x66\x65\x60\x60\
\x02\x3a\xe0\x17\x13\xd0\x72\x6e\x86\xe7\x0f\x3e\x30\xdc\x94\x8e\
\x67\x70\x92\x96\x61\x90\x94\x0c\xfd\xff\xfc\xf9\x6a\xac\x8e\x00\
\x08\x20\x16\x50\x90\xfe\x05\x5a\xfc\xfb\x0f\x84\x86\x01\x6e\x2e\
\x76\x06\x23\x1d\x79\x06\x41\x3e\x2e\x06\x01\x7e\x2e\xac\xae\xff\
\x79\xa1\x89\x81\x53\x03\x68\xee\x6f\x90\xa5\x40\x35\x4c\x7f\x18\
\x18\xde\x0b\x81\xe5\x6e\x7f\x93\x63\xf8\xa8\xa0\xc3\xf0\xeb\xf9\
\x2b\x06\x16\x16\x26\x9c\x51\x00\x10\x40\x2c\xe0\xf8\x06\x5a\x0c\
\xc6\x40\x36\x0c\xb0\xb1\xb2\x30\x48\x8a\x09\x30\x08\x80\x1c\xc0\
\x87\xe9\x80\xff\xbf\x3e\x30\x30\xb1\x6c\x63\x60\x64\xe7\x64\x60\
\x78\x0e\xc4\x4c\xc0\xe4\xf4\x8b\x1d\x18\x0d\xfc\x0c\xef\x5f\x7f\
\x66\xb8\xcd\xe9\x0a\xf6\xd4\x87\x0f\x9f\x18\xfe\xfd\xfb\x87\xd3\
\x01\x00\x01\xc4\x02\x4a\x48\xa0\xb8\x07\x87\x04\x92\x42\x09\x51\
\x7e\xa0\x03\xf8\xa1\x0e\xe0\xc6\xf4\xfd\xc5\x09\x0c\xac\xd2\x40\
\xc6\x1f\x5e\xa0\xa5\xdc\x10\xdf\x7f\x06\xb2\x99\xd9\x18\x9e\xbd\
\xe5\x66\x78\xa9\xec\xc4\xf0\x09\x68\xf9\xf7\x6f\x3f\x80\x0e\xc0\
\x5d\xd6\x00\x04\x10\x38\x04\xfe\xfe\x01\x85\x00\x6a\x14\x04\xba\
\x19\x33\xe8\x6b\xca\x31\xf0\x00\xa3\x82\x87\x9b\x03\xc3\xf7\xff\
\x3f\x2f\x60\x60\x56\x01\x5a\xf8\x9a\x19\x68\x39\x10\xff\x65\x63\
\x60\xf8\x26\x08\x4c\x4f\xdf\x19\x04\xdd\x8b\x19\x3e\x9c\xf9\xc4\
\xf0\xed\xf3\x57\x86\x9f\xbf\x7e\x33\xe0\x2b\xec\x00\x02\x08\x9c\
\x08\x41\x96\xc3\xa2\x02\x06\xea\xf2\xfc\x70\x6a\xfa\x73\x7f\x03\
\x03\xbb\x1a\xd0\xf2\xff\x40\x8b\xbf\x82\x12\x1f\x50\xdf\x27\x50\
\x1a\xe0\x60\x78\x78\xf7\x0d\x03\xbf\xbf\x1f\xc3\x97\x7d\x6b\x18\
\x40\x66\xff\x06\x3a\x00\x5f\x14\x00\x04\x10\xcb\x1f\x70\x22\xfc\
\x0f\x54\xfc\x0f\x1c\x02\xb7\x1f\xbc\x04\x07\xd9\x3f\x50\x41\x01\
\xa5\x41\x06\x80\x3c\x01\x11\xff\xc7\xa0\xfa\x7c\x22\x03\x9f\x19\
\x30\xb7\xbc\x87\xfa\x8c\x09\x98\x76\xbe\x09\x31\xfc\xf8\xfe\x95\
\xe1\x16\xab\x25\xc3\x9b\x7d\xe7\x19\x7e\xfd\xfa\x03\x2e\x37\x7e\
\x11\x08\x01\x80\x00\x62\x81\xc5\x3d\x38\x2a\x80\xf4\xf5\x3b\xcf\
\x51\xf8\x7f\xa1\x09\x14\x46\x2b\xfc\xda\xc6\xa0\x6f\x09\x4c\x74\
\x8c\x40\x1f\x7f\x81\x59\xce\x06\xf6\xfd\xdd\xeb\x0f\x18\x76\xfd\
\xf6\x66\xf8\x76\xfa\x06\xc3\x1f\x50\xc1\x06\x72\xc0\xef\xdf\x78\
\xd3\x00\x40\x00\x41\xa2\x00\x1c\xfc\x7f\xe1\x85\x11\xcc\x42\x88\
\xa5\x90\x10\x82\xa5\x11\x15\x81\xf3\x0c\x2c\x12\xc0\x42\xe9\xcb\
\x1f\x50\x49\x00\x49\x7c\xdf\x84\x81\xf2\xbf\x18\x8e\xbd\x94\x64\
\xf8\xca\xc7\x0a\xb4\xf8\x37\xd8\xf7\x90\x92\x13\x7f\x08\x00\x04\
\x10\x24\x0a\x40\xb9\x00\x1c\x05\x7f\x31\x7c\x8c\x4c\x8b\xfd\x3d\
\xc7\x20\xab\x0a\x32\x0c\xe4\xfb\xdf\x10\xcb\xbf\xf3\x82\x43\xe3\
\xd1\x85\x2b\x0c\x17\x39\xfc\xc0\x3e\x06\x5b\x0c\xf5\xd8\x6f\x60\
\x54\xa0\x3b\x80\x91\xd1\x90\x13\x14\x76\xff\xff\x9f\xff\x0a\x10\
\x40\x2c\xbf\x61\xe5\x00\xb4\x20\x12\x16\xe4\x01\xc7\xf9\xdf\x7f\
\xff\xe1\xf4\x2f\x60\x49\xf9\xe3\xc7\x2f\x06\xd3\x3f\x9b\x18\x58\
\xe5\x0c\x81\x96\xfe\x02\x26\x40\x60\xe1\xc2\x0c\xcc\xfb\x7f\xf8\
\x18\x18\x58\x98\x19\x4e\x3d\x11\x62\xe0\x96\x91\x67\x60\x07\x59\
\x0a\xb4\xfc\xc1\x93\x57\xe0\x68\xf8\x05\x0d\x01\xa0\xa5\xcc\x10\
\x97\x83\x31\x13\xd4\x21\xac\x00\x01\x04\x29\x07\xa0\x41\x0d\x8a\
\x02\x17\x6b\x2d\xb8\x4b\x41\xe2\xdf\x80\x45\xf4\xcf\x9f\xbf\x80\
\xc5\xee\x7d\x06\xa1\xaf\x82\x10\xfd\xdf\xff\x43\x8c\xf8\x0d\x34\
\xf3\x3f\x2f\xc3\xf3\x2b\x17\x18\xe4\x83\xcb\x19\x64\x79\x25\xc0\
\x66\x80\x3c\xd3\x33\x6b\x3d\x98\xfe\xf5\xeb\x17\xd0\x1c\x50\x74\
\x31\x88\x61\x89\x01\x4e\x80\x00\x62\x81\xf9\x1c\xbd\x20\xfa\x09\
\xf4\xf5\x37\x60\x21\x02\xa9\x19\xff\x31\x70\x3d\x9d\xcd\xc0\x62\
\x6c\x01\x2c\xed\x7e\x02\x7d\xfd\x1b\x92\xf7\xff\xf0\x00\x7d\xcf\
\xc2\xf0\xe0\x01\xd0\x13\x7a\x40\xcb\x7f\x43\xb3\x33\x10\xff\xfc\
\xf1\x13\x6c\xc6\x8f\xef\x3f\xf0\xa6\x01\x80\x00\x02\xe7\x82\x3f\
\x48\xf1\x0c\x52\xfc\xf5\xeb\x0f\x70\xf6\x81\xf9\x06\x84\x39\x19\
\xaf\x03\x95\xab\x01\x7d\xff\x07\x9c\xe2\x19\x40\x29\xfb\x3f\x1f\
\xc3\xf3\x0b\xa7\x18\x7e\xe9\x46\x30\xfc\xfb\x0d\xc9\x72\x5f\xbf\
\x7e\x07\xe3\xef\x40\x8b\x61\xe5\x0b\x3e\x07\x00\x04\x10\x22\x0a\
\xa0\x16\x7d\xf9\xf2\x9d\xe1\xf4\xe9\xc7\x90\x1c\x01\x4e\x94\x90\
\x10\x72\x15\x50\x65\x60\xfb\x07\x2c\x72\xff\x7c\x05\x3a\x00\x58\
\xe6\xff\x06\x46\x05\x0b\x2b\xc3\xbd\xc7\xff\x18\x2e\x8b\x4a\x32\
\x7c\x7f\x71\x1f\xe8\xe3\x9f\x60\xf5\x32\x32\x82\xe0\x74\xf0\x0f\
\xda\xae\xc0\xe7\x00\x80\x00\x62\x81\xd5\x82\x20\xfa\x1b\xd0\xe7\
\x3f\x7e\xfc\x66\x90\x93\xe3\x87\x26\xca\xbf\xf0\x28\xf8\x0d\xaa\
\xe3\x7f\xdb\x30\x30\xb0\xdf\x05\x46\xc3\x5d\x70\x5a\x78\x7f\xff\
\x3a\xc3\x73\x06\x25\x06\x2e\xa0\x5b\xd8\xd9\xd9\x81\xea\x59\xe0\
\x8d\x99\xbf\xe0\x28\x05\x95\xb2\x38\x1d\x00\xaa\xf9\xbe\x03\x04\
\x10\x0b\x28\xa5\x82\x82\xff\xfb\xf7\x9f\x0c\xdf\x40\xc1\x06\xd4\
\xfc\xe1\xc3\x37\x78\xa8\x80\x1c\xc1\xfa\xe6\x24\x03\xa3\x28\x30\
\xef\x33\x02\x8b\x5d\x36\x0d\x30\xfe\xfc\xe6\x3a\xc3\xb1\xad\xab\
\x19\x5e\xe9\x64\x33\xfc\xf9\xf2\x13\x1e\x52\x20\x9a\x87\x87\x0d\
\x6c\xf1\x5f\x70\x3d\x83\x11\x05\xc0\x2c\xc4\xf0\x0d\x98\x05\xbf\
\x83\x38\x00\x01\x04\x0e\x01\x50\x70\x7d\xf9\xf2\x0d\xdc\xc4\x02\
\xa5\x89\x0f\x1f\xbe\xa3\x18\xc8\xf6\x11\xd8\x58\x91\x16\x87\x9b\
\xf0\xf9\xc1\x75\x86\xbd\xb3\xe6\x30\xdc\x51\x4a\x63\xf8\xfb\xf9\
\x27\x52\x54\xfd\x07\xd3\xec\xec\xcc\xe0\x2c\xf8\xf7\xff\x5f\xe4\
\x10\x00\x59\xf8\x15\x68\xf1\x6f\x64\xd7\x00\x04\x10\x38\x11\x82\
\xaa\xcc\x9f\xc0\xec\x02\x4a\xc5\xa0\x32\x5c\x56\x96\x0f\x9e\x26\
\x40\xf8\xdf\x1f\x2e\x86\x7d\x07\xae\x32\xe8\xb1\x28\x32\x70\xbd\
\xb8\xc8\x70\xf9\xd8\x59\x86\x2f\x96\x59\x0c\xa2\xd0\xac\x0b\x0b\
\x29\x78\xe9\x09\xd2\x07\x0c\xfe\xff\xa0\x3a\x04\x9c\xb3\x18\x81\
\x8e\x38\xff\x01\x5b\x3c\x00\x04\x10\x0b\xa8\xb6\xfa\x01\xcc\x32\
\xbf\x7e\xfe\x81\x36\x36\xff\x30\x5c\xbc\xf8\x1c\x6c\xe0\x3f\x68\
\x9d\xc0\xfe\xfa\x2d\xc3\xdf\xef\xbf\x19\xce\xae\x98\xc3\xf0\xf9\
\x07\x0f\xc3\x4b\x31\x37\x86\x3f\xb7\x5f\x43\x0a\x2a\xa8\x3a\xe4\
\x10\x90\x91\x11\x00\xe6\x10\xa0\xa5\xa0\xc2\xfa\x1f\x28\xaa\x71\
\x27\x42\x80\x00\x62\x01\xd5\xd7\xbf\xc1\x3e\xff\x0d\xa9\x40\x80\
\x58\x5a\x9a\x17\x25\x01\xfe\xfb\xc9\xc9\xf0\xe3\xfa\x09\x86\x5f\
\x52\x96\x0c\xff\x55\x1c\x19\x44\xfe\x21\x4a\xce\xbf\x28\x59\x8d\
\x11\x58\x2c\xb0\x30\xb0\xb2\x32\x81\x13\x20\xac\x80\xc3\x97\x0b\
\x00\x02\x08\x9c\x0d\xff\x40\xf3\x30\xac\xd9\xcd\xc6\xc6\x04\x64\
\x83\x8a\x4f\x08\xfe\x23\x24\x0d\x2c\x84\xa2\x18\x7e\x89\x68\x33\
\xf0\x20\x65\x4f\x70\x81\x03\x2c\x25\x41\x0d\x57\x26\x60\xc1\x04\
\x0b\x7e\x48\xd9\xf2\x17\x9c\x0d\xff\x82\xb3\x21\x33\x4e\x07\x00\
\x04\x10\xcb\x2f\x60\xb9\xfe\xe5\xed\x7b\x86\x4f\xc0\xc6\x23\x28\
\x31\xde\xbd\x7b\x07\x29\x07\xc0\x7c\x08\xa4\x99\x44\x19\xfe\xbe\
\x7e\x8e\x24\x8e\x54\x79\xa1\xab\x05\xd2\x5f\x5f\xbd\x00\x57\xc3\
\x7f\x80\x65\xc3\xff\xff\x5c\x38\x1d\x00\x10\x40\x8c\xa0\xe0\x31\
\x30\x48\xfd\xff\xf1\xe3\x17\x70\x02\x14\x10\xe0\x82\x37\xcd\x10\
\x3d\x18\x06\x78\x30\xa2\xf2\x11\x6c\x74\xb1\x97\x2f\xdf\x40\xd5\
\x83\x3a\x3a\x07\x70\xf6\x0b\x00\x02\x88\x91\x5a\x9d\x53\x72\x01\
\x40\x00\x31\x31\x0c\x30\x00\x08\xa0\x01\x77\x00\x40\x80\x01\x00\
\x7b\xd6\x28\xba\xe5\x29\x08\xf0\x00\x00\x00\x00\x49\x45\x4e\x44\
\xae\x42\x60\x82\
\x00\x00\x06\x3e\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x1d\x00\x00\x00\x1d\x08\x02\x00\x00\x01\xae\xf6\xc0\xce\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\
\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
\x46\x00\x00\x05\xb4\x49\x44\x41\x54\x78\xda\x62\xfc\xff\xff\xff\
\x8e\x1d\xbb\x18\xc0\x00\x20\x80\x18\xb6\x6f\xdf\xf9\xfe\xfd\xa7\
\x43\x87\x8e\x00\x49\x80\x00\x62\x04\x72\x3e\x7d\xfa\x34\xef\x16\
\xf7\x81\x73\x7c\x00\x01\xc4\x04\x94\x75\x73\x73\xbf\x77\xec\xea\
\x8b\x79\x7a\x00\x01\x04\x92\x81\xa8\xf7\xf0\x70\x03\x08\x20\x06\
\xa0\xd2\x7f\xff\xfe\x01\x49\xa0\x28\x40\x00\xb1\x00\x4d\xeb\xe8\
\x68\x97\x95\x55\x10\x11\x11\x01\x08\x20\x26\x46\x46\x46\x6e\x41\
\x39\x0f\x0f\x4f\xa0\x4a\x80\x00\x02\xe9\xb1\xb0\xb0\x04\xb2\xb8\
\xb9\x39\xbe\x7e\xfd\x01\xd1\x7f\xe2\xc4\x71\x80\x00\x02\x99\xcc\
\xcf\xcf\x03\x44\xbf\x7f\xff\xde\xb9\x73\x47\xce\x94\x63\x3f\x7f\
\xfe\x04\x0a\x02\x04\x10\x0b\x10\x7f\xfc\xf8\x05\x48\x6a\x4e\xf8\
\x2b\xf6\x4e\xa2\xde\xe1\xdd\x9d\x3b\xb7\x81\x5c\x80\x00\x62\x44\
\x71\x32\x0c\x00\x9d\x02\x10\x40\x8c\x47\x8e\x1c\xfb\xfc\xf9\x33\
\xb2\x28\x2f\x2f\x2f\x40\x00\x31\x02\x9d\x06\x64\x1d\x3e\x7c\x50\
\x56\x56\x5e\x41\x41\x01\x22\x01\x10\x40\x4c\x10\xca\xca\xca\xe6\
\xf7\xef\x1f\x70\xe5\x00\x01\x04\x75\xcc\x8b\x17\xcf\x94\x95\x95\
\x4f\x5f\xb8\x3a\x7d\x29\xc8\x1a\x80\x00\x02\x89\x9e\x3f\x7f\xe9\
\xe0\xc1\x43\xf5\x17\x04\x83\x97\x08\xbc\xfc\xcb\x08\x14\x01\x08\
\x20\x90\xfb\x94\xc0\x60\xc2\x84\x26\x0f\x66\x46\x3d\x1e\x59\xa0\
\x08\x40\x00\x31\xc1\xcd\x6a\xbd\xee\x6f\xab\x23\x1c\x14\x14\x02\
\x64\x03\x04\x10\x76\x97\x01\x04\x10\x48\x54\x5b\x5b\x87\x81\x08\
\x70\xf5\xea\x15\x80\x00\x62\x42\x33\x00\x28\x04\x74\xea\xc2\x85\
\xf3\x3e\x7e\xfc\x88\xa6\x1a\xa8\x12\x20\x80\xa0\xee\xb8\x72\xe5\
\xf2\xdf\xbf\x7f\x81\x0c\x88\x3d\xfe\xfe\xfe\x97\x2f\x5f\xc2\x34\
\x1e\x20\x80\xa0\xaa\xdf\xbc\x79\xf3\xfc\xf9\x13\x48\x6c\xdc\xbd\
\x7b\xf7\xc1\x83\x07\x7b\x78\x3c\x0d\x27\xfe\x49\xaf\xe8\xb5\x9b\
\xf5\xd1\x39\x7d\x19\x44\x19\x40\x00\x41\x55\x3b\x38\x38\xca\xc8\
\xc8\x03\xa3\x08\x88\x2a\xaf\x28\xb9\x4f\xe7\x38\xf8\x90\x41\xec\
\xd9\x9a\x83\x4a\x95\x37\x5e\x73\x6b\x73\x5f\x80\x28\x03\x08\x20\
\x16\x4c\xeb\xf6\xdc\xfe\x97\xa1\x77\x61\xef\x57\x53\xe5\x3f\xf7\
\x97\x87\xbc\x10\x12\x12\x62\x60\xe8\x82\x48\x01\x04\x10\x69\x61\
\x02\x10\x40\x8c\x57\xaf\x5e\x7f\xf4\xe8\x11\x41\xa5\x72\x72\x72\
\x00\x01\xc4\xf8\xe2\xc5\x6b\x76\x76\x76\x82\x4a\x81\x89\x0f\x20\
\x80\x98\xd0\xd4\x01\x43\x63\xdd\xba\xb5\x3f\x7f\xfe\x40\x53\x0a\
\x54\x06\x10\x40\x4c\x98\x06\x24\x26\xc6\x9f\x38\x71\x02\x53\x1c\
\x20\x80\xd0\x95\x5e\xba\x04\x8a\x88\x6b\xd7\xae\x61\x2a\x05\x08\
\x20\x90\xd2\x63\xc7\x8e\xc0\x23\xf6\xda\xb5\xeb\x40\xf2\xc3\x87\
\xf7\xc0\x94\x8f\xa6\x14\x20\x80\x40\xa1\xfb\xfe\xfd\x7b\x39\x39\
\x69\x20\x03\x28\xcd\xca\xca\x0a\xf1\xc4\xb7\x6f\xdf\xa6\xac\x3f\
\xf7\xe4\xcd\xef\xea\x08\x2d\x09\x09\x09\xa0\x20\x40\x00\x81\x4c\
\xb5\xb3\x73\x98\x3c\x79\xf2\xd7\xaf\x5f\x81\x79\x33\x38\x38\x08\
\xe8\x50\x1f\x77\xc7\x19\x8f\xc4\xb7\x1d\x79\xfe\xed\xdd\x1d\xcb\
\xf5\x4a\x67\xcf\x9e\x05\x2a\x03\x08\x20\x16\x48\x02\x0d\x0c\x0c\
\x39\x7a\xf4\xf8\xb3\x67\xcf\xde\xbf\x7f\xc7\xe2\x98\x7f\xeb\xde\
\x9e\x37\x8a\x0c\x5a\xdc\xb7\xaa\x52\xe3\xdf\x5e\x61\x3a\x76\xec\
\xa8\xb1\xb1\x31\x40\x00\x41\xb3\x17\x1c\xec\x3f\x71\xbe\xe2\xb2\
\xe1\xfb\xb7\x5f\x94\x5f\xac\x78\xa6\x1c\xf3\x91\x85\x9f\xe5\xc4\
\xce\x16\xcf\xe7\x11\x11\x91\x00\x01\x84\xae\x34\x78\xea\x3d\xd9\
\xc7\x4b\x1c\x2c\x74\x2b\x5e\x84\x35\x0a\x2e\xe6\xe2\xe2\x62\x63\
\x63\x33\x35\x35\x03\xa6\x07\x80\x00\x42\x4f\x34\x82\x9f\xee\xdc\
\x90\x89\x10\xfe\xf2\xe4\xfd\xab\x0f\x9c\x52\x9c\xbe\xbe\x7e\x70\
\x29\x80\x00\x42\x0f\xd7\xbe\x6c\x8b\xd7\xe7\x6f\x4c\xdd\x27\x12\
\xfd\xb9\x59\x4d\x4d\x0d\x59\x0a\x20\x80\x48\x48\x03\x00\x01\xc4\
\xf2\xf6\xed\x1b\x22\x53\x16\x40\x00\x81\x12\xe1\xbf\x7f\xff\x45\
\x45\x45\x89\x31\x9b\x18\xcb\x5f\xbf\x7e\xcd\xc4\xc4\x08\x10\x40\
\x2c\x40\xfb\x21\x45\x26\x56\x70\xe2\xc4\xb1\xff\xff\xff\xfd\xfd\
\xfb\x5f\x4b\x4b\x9b\x8f\x8f\x8f\x85\x85\x05\xbf\xb9\x40\xc7\xc9\
\xc8\xc8\x00\x4b\x5c\x80\x00\x62\x21\x64\xff\x2f\x3f\x3f\x1f\x70\
\x7a\xfb\xb0\x72\xe5\x6a\x4b\x4b\x2b\xa0\x36\x66\x66\x66\x82\x0e\
\x07\x08\x20\x26\xfc\xd2\x86\x86\x46\x3f\x7e\x80\xb2\x90\x80\x80\
\x80\xa4\xa4\xf8\xd1\xa3\x47\x9e\x3c\x79\x42\x4c\x80\x00\x04\x10\
\x01\x73\x81\x7e\xdf\xb5\x0b\x5a\x1b\xa8\xaa\xaa\x3e\x7f\xfe\xec\
\xd5\xab\x97\xc4\x98\x0b\x10\x40\x88\x70\xf8\xf4\xe9\x83\xac\xac\
\xcc\xc7\x8f\x9f\x80\x79\xf2\xf9\xf3\xe7\xac\xac\x6c\xf2\xf2\xf2\
\x32\x32\xb2\xbf\x7f\xff\x85\x95\x00\xfc\xc0\xfc\xf4\xf9\xf3\x97\
\x5f\xbf\x7e\x01\xd3\x28\x7e\x73\x01\x02\x08\x61\xee\xdd\xbb\xf7\
\x80\x55\x96\xa3\xa3\xa3\xad\xad\x0d\x4a\xc2\x0f\x0e\x04\xc6\x2d\
\x30\xe9\x00\x53\xba\xa1\xbe\xce\x8b\x37\x6f\x52\x16\xdf\x62\x53\
\x30\x7f\xfc\x89\xf1\xd5\xab\xef\x3f\x19\x19\xbf\x7e\xfd\x2b\x7c\
\xf7\x58\x7f\xf8\x3f\x5d\x6d\x4d\x70\xe9\x08\x02\x00\x01\x84\x30\
\xd7\xc0\xc0\x10\x58\x54\xef\xdd\xbb\xff\xda\xb5\xab\x2f\x5e\xbc\
\xfc\xf3\xe7\x37\x07\x07\x3b\x30\xbf\xca\xcb\xca\x0a\x09\x09\x4a\
\x8a\xf0\x73\xb0\xb0\xc8\x08\x71\xcc\x65\x09\x97\x60\x67\x58\xd5\
\xb3\x31\x48\x7c\x8b\xa7\x9c\x2c\xd0\x43\x47\xbf\xfc\xb9\xe5\x91\
\x1a\xbe\xe8\x54\xbf\xd3\x8e\xc8\xc8\x28\x88\x69\x00\x01\x84\x30\
\x17\x58\x28\x88\x82\x81\x89\x89\xe9\x9f\x3f\x7f\x20\xa5\xc8\xf7\
\xef\xdf\x7f\xfc\xf8\xde\x74\xe0\xcb\x36\x4e\xfe\x3f\x8c\x0c\x4f\
\xff\x85\xdf\xdd\xb7\x87\x85\x57\x48\x36\xc8\x7f\xeb\x75\x43\x8d\
\xf7\x17\xc5\x58\x39\x6f\xcb\x38\x3c\x7c\xf4\x57\xfa\xcb\x91\x37\
\x6f\x10\x85\x24\x40\x00\x61\x4f\x67\x2c\x60\xc0\xcd\xcd\x0d\x64\
\x17\xcd\x39\xf9\x4a\xc4\xe9\xc9\x94\xa9\x06\x9c\xe7\x3e\xfd\x96\
\x7e\xae\x5c\xc8\xf5\xe3\x93\xe7\xf9\x02\x76\x2e\xbe\x87\xbf\x05\
\xde\xdd\x66\x92\xbb\x7d\xd4\x51\xe8\xab\x9c\x9b\x8c\xbe\x3e\x22\
\x00\x01\x02\x88\x85\x70\xcd\xf0\x46\xe0\xc9\xcf\x6f\x9e\x92\xaf\
\xec\x8d\x9c\x4c\x4d\x4d\xf3\x56\x5c\x3d\xc5\x65\xfa\xf0\x85\x54\
\xb4\x95\x7c\x86\xb1\x31\x30\x7a\x81\x21\xc6\xce\xce\xc1\xc9\xc9\
\x89\x1c\x99\x00\x01\x44\xd8\xdc\x1a\xfb\x4f\x11\x2b\xee\x6f\x37\
\x6c\x7c\xcc\xce\xb0\xe0\x02\xc3\x39\x56\x45\xae\x73\xab\xb5\x95\
\xdf\xb3\xb3\xab\x71\x73\xf3\x00\x01\x56\x5d\x00\x01\x44\xd8\x5c\
\x6b\x73\xe3\xb3\x8a\x2f\xef\xdc\xd9\x7e\xe7\xce\x1d\x60\xae\x73\
\x64\x66\x16\x77\x17\x57\x53\xf3\x56\x54\x54\xc4\x65\x28\x10\x00\
\x04\x10\xad\xca\x1d\x80\x00\x03\x00\x45\xa3\x5a\xfa\x84\xa4\x48\
\xd8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x01\x1d\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\xe4\x49\x44\x41\x54\x58\x85\xc5\x97\x41\x0e\x84\x20\
\x0c\x45\x3f\x66\x2e\xe4\x4d\xbc\x91\x70\x42\xe6\x46\xce\x62\x46\
\x53\x11\x87\xd2\xd2\xda\x85\x01\x0c\xbc\x07\xdf\x44\x0d\xf8\x55\
\x8c\xd8\xe0\x58\x31\x22\x00\xf8\x5e\xbc\xe1\x54\x22\x50\xf8\xba\
\xda\x7a\xcc\xf3\x0c\x00\x58\x96\xf7\x31\x36\x79\xc3\x4b\xd6\xcb\
\x94\x5a\xc0\x73\xce\x97\x7b\xd3\x65\xc4\x11\x0e\x18\x9e\x00\x3d\
\xf2\x3b\xb8\x99\x40\x6b\xd7\xb4\x86\x47\xd0\x03\x1f\x2e\xd0\x0b\
\x07\x06\x45\xc0\xcd\xdb\x44\x40\xb2\x6b\x5a\xaa\x08\xb4\x70\x95\
\xc0\x08\x38\x20\x88\x40\x93\xb7\x5a\x60\xd4\xae\x69\xb1\x23\xb0\
\x80\xb3\x05\xac\xe0\x40\x23\x82\xd1\x79\x77\x09\x58\xee\x9a\x56\
\x35\x02\x2f\x78\x55\xc0\x13\x7e\x12\x48\x29\xb8\xc1\x53\x0a\x47\
\xfb\xf9\xaf\x62\xd2\x79\xee\xbf\x40\xb8\xc0\x46\xda\xe2\x75\x44\
\x13\x6b\xa7\x25\x95\xe8\x9e\xf4\x2f\x2a\x89\x44\xd7\xeb\x78\x87\
\x97\xa0\xbd\x2f\x79\x8e\xd8\x02\x77\x70\xad\x04\x4b\xa0\x05\xd7\
\x48\x34\x05\xb8\x70\xa9\xc4\x07\x10\x06\x72\xdd\x2a\x97\x62\xa0\
\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x81\x8e\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\
\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0a\xf0\x00\x00\x0a\xf0\
\x01\x42\xac\x34\x98\x00\x00\x00\x25\x74\x45\x58\x74\x53\x6f\x66\
\x74\x77\x61\x72\x65\x00\x4d\x61\x63\x72\x6f\x6d\x65\x64\x69\x61\
\x20\x46\x69\x72\x65\x77\x6f\x72\x6b\x73\x20\x4d\x58\x20\x32\x30\
\x30\x34\x87\x76\xac\xcf\x00\x00\x00\x16\x74\x45\x58\x74\x43\x72\
\x65\x61\x74\x69\x6f\x6e\x20\x54\x69\x6d\x65\x00\x30\x36\x2f\x30\
\x35\x2f\x30\x34\x4d\xbe\xe6\x71\x00\x00\x03\x50\x70\x72\x56\x57\
\x78\x9c\xed\x97\x5b\x6e\xdb\x30\x10\x45\x69\x49\x35\xa9\x44\xae\
\xdc\x52\x96\x48\x6e\xc3\x7b\xd2\x77\xb6\xc3\xcd\x74\x01\x05\xf7\
\xd2\x1d\x54\x9d\xe1\x43\xa2\x13\x07\xfd\xa8\x28\xa0\xc0\x1c\x0b\
\x76\x10\x7f\xdc\xb9\xf3\x22\xfd\xf3\xf7\x8f\x5f\xec\x8d\xbd\x2d\
\x88\x5b\x16\xbb\x2c\xf3\xb2\xdc\x17\xe7\x16\x67\x17\x37\x2f\x0e\
\xfe\x66\x8b\xbd\xc3\x77\xf8\x3f\xe7\xac\x5b\x2c\xbc\x5b\x78\xec\
\xec\xdc\x6c\xe1\xb1\xf3\xec\xe6\xd9\xde\xad\xbb\x5b\x7b\x9f\xdd\
\x7d\xb6\x8c\x20\x08\x82\x20\x08\x82\x20\x08\x82\x20\x08\x82\x20\
\xfe\x5f\xba\xfe\xfa\xfd\x36\x49\x23\x27\x29\xfb\xfe\x68\xf5\x5e\
\x4a\x39\xdd\xa6\x41\x0f\x5a\xdd\x94\x81\x30\xba\x23\xe5\x41\x5c\
\x4e\xe3\x24\xf5\x30\x81\xf6\x64\xe0\x6d\x38\x30\x80\x1e\xe4\xfb\
\x1e\x23\x00\xf3\x60\x1f\x1e\x65\xcc\x71\xfa\xd7\x09\xd3\xfd\x0a\
\x09\x30\x10\x03\x98\x37\x98\x81\xeb\x61\xfa\x90\xfe\xf0\x11\xe5\
\x95\x1e\x20\x82\xe1\x38\xfd\x69\xc4\x0f\x54\x57\xc1\x3d\xf6\xc0\
\x71\x05\xc0\x99\xfb\x7a\x91\x4a\x62\xe3\x83\xf6\xa8\x7c\x0c\x87\
\xe9\x63\xeb\x1b\x6c\x3f\x83\xdd\x17\xcc\x0f\xc7\xfa\x37\x52\xc5\
\xd9\xd7\x6a\x34\x46\x1d\xea\x1f\xcd\xe3\xe8\x43\xe2\xb5\x19\x34\
\x48\x8f\x87\xea\xe7\x60\xee\x43\xf9\xcb\xeb\x77\xbd\x5f\x7c\xa1\
\xf6\x3e\xff\x06\x93\x1f\xdc\x83\x7e\xcd\x6b\xde\xf0\xaa\x94\x7c\
\xef\xc5\xa3\x3c\xbe\xa0\xeb\x20\x84\x64\xdf\x30\x0e\xea\xf8\x94\
\x92\xf7\x67\x4e\xec\x7c\xac\xbd\xc2\xd2\x63\xe7\xaf\xfe\x41\x5d\
\xd4\xa2\x48\x00\x5d\xee\x5e\xfa\x63\x07\xe6\x7e\x4c\xe6\xbd\x7f\
\x81\xf9\x17\x5c\x9c\x0a\xe8\x7f\x74\x8f\xb3\xaf\xf4\xb8\xf5\x5f\
\x8d\xda\xb5\x80\x28\xf6\x97\x7f\xf5\xad\x77\x53\x28\x9f\x8e\xfd\
\xb8\x7b\x23\x03\x03\xf3\xde\xbe\x10\xfb\xeb\x77\x13\x06\x30\xe0\
\x91\x87\xc9\x87\xce\xbf\xc5\xc9\x4b\x15\xb8\x32\x81\xf2\xa2\x01\
\xfd\xfd\x0b\x80\xcd\xaf\x7c\xfe\xc1\xb9\x1e\xc2\xf0\xa5\xc9\xf3\
\x74\x15\xe4\x1f\xd3\x5f\x44\x3f\x96\x5f\x87\xbd\xeb\xb7\xde\x34\
\xe6\xdd\xff\x0d\xda\xaf\x11\x91\x73\x01\x7d\x9d\xaf\x7d\x6d\xd4\
\xd6\x78\xa1\xfa\xe7\x58\x7b\x64\xff\x06\x94\xd3\xe0\x0b\x00\xea\
\xd2\x84\x73\x27\x13\x97\x17\x56\xa1\xee\x9a\x80\xdd\xf5\xd7\xd9\
\xf3\x37\x1e\xd0\x7b\xa4\x8a\xa3\xe7\x69\x4b\xf8\x57\xa9\xf6\x70\
\xd9\xea\xd8\xa9\xaa\xeb\xfa\x5c\xe3\xc6\x87\x57\x68\xfc\x94\x7c\
\x08\xa0\x80\xbe\xd4\x50\x01\x7f\xe3\xd5\x90\x6c\x50\xae\xf8\x83\
\x7c\xbd\x8a\x17\xd2\x87\xe2\x87\xdb\xa6\x64\x28\x5d\x27\x79\x7f\
\xe6\x08\x91\x07\xd0\xee\xdf\xff\x5d\x2a\xfe\xa0\x2f\xa7\x1a\x02\
\x58\x93\xef\x4f\x9c\x86\xe7\xf6\xc5\xfe\x67\xf0\x25\x6d\xbe\xc9\
\xa0\xfd\xea\xbd\xfb\xd4\xfa\x5e\xbe\xdd\x7f\xff\xbc\xc6\xa5\xaf\
\x47\xc5\x78\xb5\x26\x3f\xba\x5f\x7b\x2f\xc8\x17\xd8\xff\xbe\x01\
\xf0\xb6\x0f\x77\xff\xda\x07\x10\x3a\x2f\x76\xfe\x83\xfb\xf6\x4b\
\x01\xfd\x0e\xec\x63\xf9\xe1\x9c\xdd\x4a\x5f\x3f\x74\x7e\x72\xdf\
\x16\x90\x87\x04\x0c\x3a\xfc\xd6\x63\x29\xfb\xd1\x3d\xe6\x3f\x77\
\x5f\xa0\xfb\x43\x00\xf8\x43\x07\xd6\x2e\xdb\x06\xff\x63\xe7\xb7\
\x25\x86\x3f\xd2\x4b\x3c\x70\x25\x4b\x8d\xf7\xb4\xf6\xbc\x90\xfb\
\x8c\x58\x7a\x94\x2f\xae\xf5\x8c\x6d\xee\xb3\x23\xbf\xc8\xd0\x3d\
\x67\x75\xcf\x9b\xbc\xf6\x87\xe9\x6f\x5b\x2f\x3b\xf2\x4a\x5c\x3a\
\x3f\x21\x6e\xbd\x75\xf0\x2b\x76\xe2\xa5\xa6\xfe\xa9\x7e\x83\xb3\
\xff\x70\xd9\xaa\x5e\x0e\xac\xbf\x5f\x3d\x5b\xe7\xa1\xfe\xa9\x2d\
\x37\xf6\x1f\xf0\x97\xad\x6c\xed\xc0\x69\xc7\x4b\xdc\xb9\x3e\xa5\
\xc9\xdc\xfb\xd6\x83\xbd\x73\xe4\x2a\x38\xf1\x77\x07\x6e\x2b\x5e\
\x4a\xfc\xe6\xfc\x3c\x80\x2a\x73\xdf\x16\xb9\xf0\xfe\x3d\x84\x33\
\x0f\x2b\xe0\x5c\x95\x38\xef\x09\x82\x20\x08\x82\x20\x08\x82\x20\
\x08\x82\x20\x08\x82\x20\x08\x82\x20\xfe\x91\x3f\x5d\x1f\x91\x1d\
\x45\x78\xd6\x67\x00\x00\x00\x48\x6d\x6b\x42\x46\xfa\xde\xca\xfe\
\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x29\xa4\x33\xa1\x00\x00\x2c\xf8\x6d\x6b\x54\x53\
\x78\x9c\xed\x7d\xeb\x73\x1c\xc7\x91\xe7\xac\xd7\xb2\x4c\x8a\xa2\
\x24\xfb\xc2\xf7\xe1\xbe\xf0\xe2\xe2\xe2\x22\x2e\x42\xe3\xae\x67\
\x57\xef\x37\xbc\x06\xa4\x05\x90\xf0\x0c\x28\x91\x0a\x47\x28\xe6\
\x29\x62\x4d\x91\x5a\x92\xa2\x57\x8b\x9b\xff\xfd\x32\xb3\xaa\xfa\
\x51\xd3\x33\xd5\x3d\x00\x07\x24\xdd\x84\x84\x9e\xe9\x47\x56\xf5\
\x2f\xb3\xf2\xdd\x8d\xd3\x6f\xf6\xdf\x5e\x0e\x86\x07\x17\x97\x6c\
\x39\xfc\xeb\xc3\x8b\x4b\xae\xa5\x60\x4a\xa7\xcb\x27\x27\x07\x8b\
\xcb\x64\xf9\xd4\x6e\xbe\x7b\x70\xb8\xb8\x94\x66\x79\xff\xc1\x39\
\x6d\x87\x47\xa3\xc5\x25\x87\xed\xe8\x31\x5e\xba\x7f\x0c\x14\x16\
\xf4\x6f\x79\x76\x72\xf2\xf6\x72\xff\x0c\x7e\x1d\xec\x9d\xbf\xbe\
\xec\xfd\xbe\x37\xe9\x4d\x7b\x3f\xf4\xf6\x7b\xe3\xde\xeb\xde\x45\
\x6f\xba\x7c\xf0\xf0\x14\xf6\xdf\x81\xfd\x2f\x60\xff\x7d\xd8\xff\
\xaa\x37\xeb\xdd\xeb\x9d\xc0\xd1\x17\xbd\xf9\x72\x78\xf8\x68\x02\
\x63\xee\xef\xc1\x7c\x70\x33\xba\xb8\x14\x73\xb3\xdc\x3f\x7c\x70\
\x71\x29\x97\xfb\xa7\xa7\x17\x97\x73\xd8\xc0\xee\xf1\x72\x7f\x74\
\x44\x27\x8d\x06\x34\x8f\xd1\x7d\xfa\xb6\x7f\x62\x37\xdf\xd0\xe6\
\xe0\xa1\x23\x70\x34\xa0\xef\xc3\x73\x3a\x77\xb0\x4f\xdf\x06\x43\
\xda\x3c\xb4\x3b\x47\x67\x70\xee\x74\xb9\x7f\x6e\x0f\x9e\x5b\xea\
\xe7\x23\x3b\xc8\xa9\xa5\x67\x37\x0f\xf6\x70\x96\x0f\x71\x56\xc9\
\xf2\xf0\x11\xc3\xe9\x1c\x3e\xe2\x48\xe6\xf0\x91\xa0\xcd\x00\x76\
\x72\xd8\x70\xbb\x11\xb8\x59\x36\xc0\xe6\x8b\x15\x6c\x86\xbd\x97\
\xbd\x5f\x60\xdf\xac\x37\xef\xcd\xae\x8a\x10\xfb\xf0\x11\xf2\xd2\
\x33\x02\x5c\x16\xbd\x37\x57\x91\x1e\xb6\x90\x5b\xcb\x0f\xbb\x22\
\x3a\xec\xdd\xca\x4f\x81\xce\x15\xe5\x27\xc4\xa8\x8d\x04\xdd\x30\
\x46\x77\x1c\x46\x7b\x80\xcf\x2b\x40\x62\x1f\x7e\xff\x02\x68\x3d\
\x73\x58\xfd\xde\x61\x55\x60\xb8\x09\x1d\x9c\x77\x09\x1e\x2d\x2d\
\x3e\x74\x3c\x8a\x8f\x91\x15\x7c\x92\x0a\x3e\x82\x57\x11\x9a\x5d\
\x71\x8d\x71\x8b\x10\xb7\x08\x49\x8b\x90\xb4\x08\xc9\xe5\xe8\xec\
\x7b\xcb\xd5\xd1\x08\x3e\x4c\x27\xb0\xe3\x91\xbd\x8d\xd1\xe8\x11\
\xed\x68\x83\xe1\x67\x0e\xc3\x73\x90\xae\xff\x04\x79\xfb\x05\x8e\
\xc7\xe4\x4c\xf0\x3a\x41\xdb\x0c\x24\xcb\x1c\x94\x7c\x32\x6d\x01\
\xe5\xd4\x58\x28\x69\xff\x3b\x03\x93\x67\xcd\xc0\xbc\xeb\xc0\x3c\
\x00\x81\x7b\x0e\x3f\x17\xbd\x1f\x01\xae\x71\xef\xe7\xde\xb3\xde\
\xaf\x0e\xd0\x5b\x25\xa1\xfc\x09\x3e\xbf\xec\xbd\xdc\x08\x26\x73\
\xab\x96\x89\xc6\x6a\x9f\x25\xb2\x7e\xd9\x26\x1b\x96\xad\x4a\x2c\
\x92\xa4\x0f\x10\xc9\xc5\xb8\xf1\xca\x05\x77\xa1\x29\x96\xc2\x70\
\x8b\xa5\x60\xb3\xd6\xd8\x6d\x5e\xd0\xe9\xcc\x42\x67\xa6\x16\xb9\
\xf9\x35\x39\x14\xc9\x26\x73\xc9\xb7\x54\x76\xcd\x20\xdb\x16\xa0\
\xbf\xc2\x3a\xbd\xc0\xb3\x2a\x00\x49\x65\x01\x62\x93\x40\xb6\x16\
\x0e\xa2\xc4\x62\x34\xdd\xb4\x50\x51\x2c\xe2\xb2\x45\x0a\xb1\x84\
\x13\x6a\x53\xc4\x89\x84\xea\x1d\x00\xb5\x2a\x5b\xf9\x42\xdd\x76\
\x81\x0e\xe1\xe8\x84\x16\xe8\x8b\x8d\x62\xc6\xb2\xeb\x95\xb3\xeb\
\x35\xaa\xef\x46\xce\x7e\xe7\x30\xfa\x0e\x6c\xc1\x9b\x5a\x74\xd2\
\x40\xc4\x02\xa7\x63\x93\x5f\x86\x97\x56\xf0\xe1\x37\x8e\xcf\xe8\
\x6c\xdf\x6a\xff\xd1\xfe\x8a\xd2\xff\x2c\xc7\xeb\x19\xf9\xf4\x53\
\x90\x18\x40\x2e\x90\xa6\x03\xb2\x9b\xa8\xf2\x7f\x6d\xa4\xee\x1d\
\x5e\x8c\x4f\x6b\x11\x0b\x14\x7e\x3a\x6d\x2f\x52\x52\x5b\xc8\xc6\
\x0e\x33\x31\x93\x8d\x6d\xe7\xf6\x8b\x12\x06\xe4\x6a\x6c\x81\x44\
\x53\xd3\x1e\xc9\x33\x52\xfe\x6f\x00\xcd\xe7\xad\x90\x5c\xc8\x06\
\x96\x73\xe1\x2d\x27\xfa\x13\x0d\x81\xcc\x75\x9b\x03\x92\x7c\x92\
\xeb\xc7\x11\xe1\x1b\x79\x6f\x04\x95\x9b\x75\x4b\xfc\x07\x44\xd6\
\xfa\x25\xfe\xc3\xb0\x35\xc4\x9f\x56\x83\x8b\x36\xf0\x92\xcd\x88\
\x86\x13\x24\xce\xad\xf1\x9d\x3b\xcf\x04\x2f\x46\x80\x33\x7d\xdd\
\x00\x0f\x01\x57\x3e\x9f\x5b\xcc\x42\xa3\xb1\x19\xb3\x6d\x1c\xe4\
\x7a\xa5\xc8\xd5\x46\x07\x79\xca\xdb\xaf\xf1\xdc\x3d\x56\xdc\x42\
\x67\x31\x6c\x86\x1d\x9b\x37\x56\x8d\xb9\xe0\xf1\x45\x05\xba\x5b\
\x39\x74\x68\x41\x7e\x25\x5b\xba\x4d\x6c\x56\x0d\xcd\x28\x44\xd8\
\x32\xf7\xd1\x64\x21\x73\xe3\xbc\x14\x0a\x4a\x1a\xa2\x25\x78\x1d\
\x5a\xda\xa2\xa5\x2d\x5a\xda\x2e\x65\xab\x00\xf1\xc3\x64\x11\x2c\
\x65\xb4\x31\xc3\xfb\x2d\x70\xfc\x34\xf7\x56\xc6\xbd\xbf\x47\x72\
\x24\xc6\xa2\x98\x59\x14\xc9\x45\x2b\xa1\x98\x5c\x15\x45\x69\x51\
\xb4\x22\x56\x0b\xa3\x1a\x5b\x1c\xf9\x06\x1c\x55\xe2\xd2\x00\x99\
\xcb\x03\x64\x0e\x49\x27\x78\xda\x49\x9e\x96\xeb\xc0\xb4\x7b\x4a\
\x60\x82\xd3\xd9\x4e\x28\xcf\x61\xa5\x83\x48\xf6\xfe\xde\x66\x15\
\x37\x92\xca\x66\xde\x73\xbd\x58\xd2\x62\x46\x43\x3d\xb9\x76\xfd\
\x47\x06\x86\xd6\xb0\x07\x72\x58\xb6\x34\xd6\xf6\xc4\xc5\xf3\x90\
\x16\xf3\x33\xd2\x7f\xd5\x74\x55\xe9\x48\xe3\x45\x5f\x9b\x45\x78\
\x0f\xd2\x55\x6c\xcb\x74\xd5\x7a\x94\xbe\xac\x45\xe9\x90\x12\x7b\
\x13\x70\xc1\x37\x2f\xeb\xf7\x15\x27\xbe\x23\x9c\xce\x61\x1d\x5f\
\x40\x78\xf2\xa1\xe2\x24\xae\x1d\xa7\x5b\x39\x4e\x2f\xc1\x23\x79\
\xb3\xc3\xc4\xf0\x26\x3d\x96\x4d\xe5\x96\x41\x9a\x33\x09\x89\x85\
\x26\xb1\xd0\x24\x16\x9a\xc4\x42\x93\x34\x84\xe6\x6e\xad\x08\xb9\
\x6a\x4c\x7b\xf1\xa9\xea\xfa\x64\xf7\xd5\x97\x4d\xca\x48\x59\x84\
\x94\x45\x48\x5d\x49\x65\xdf\xa7\xe8\xf5\x6d\x24\x7a\x7d\x5f\x2b\
\x0c\x0e\x25\xb0\xd8\x04\x93\xb2\x30\x29\x0b\xd3\xd8\xc2\x34\xb6\
\x30\x8d\x6b\x7d\xff\x01\x86\x9b\x54\x6e\x39\x47\x5d\x53\x23\x4c\
\xaf\xc0\xfd\xba\xd7\x3b\x75\x9f\xe6\xbd\x57\x4d\x5c\xb1\x36\xae\
\x03\x53\xf3\x26\xc5\x86\xa4\x36\xc8\x6f\xbd\xe4\xea\x1d\x07\xe7\
\xce\x1a\x0b\x95\xb1\xce\xbf\xad\x35\xac\x4f\x8c\x6c\xc6\xee\x3e\
\x25\x98\x9e\xb9\x44\xd3\x33\xd2\x56\x55\xec\xd0\x6b\xa4\xb4\x25\
\x46\x40\xc4\xcd\xa4\xe2\xc8\xda\xb8\x69\xc5\x91\xad\x5d\x8c\x24\
\x8b\x4d\x33\xe2\xe3\x77\x8a\x5d\x73\xa8\xfc\x8a\x3c\xc9\x21\x5a\
\x2f\x68\x61\xfe\x6d\x5a\xb7\x22\x31\x6b\xbd\x56\x6d\x15\x31\xfa\
\x16\xc9\xa4\x77\x26\x67\x65\xbf\xbe\xc8\x24\xa1\xa7\x4a\x99\x24\
\x33\x6f\x81\xe7\xa7\x15\x37\xff\xc5\xf5\xd6\xdc\x1b\x16\xb2\x02\
\xd3\xb8\x83\x65\x9a\x83\x85\x38\x96\xc1\xfa\x9d\x03\xeb\x11\x96\
\x0c\x1c\x44\xb7\xf3\xf0\x1c\x7d\x2b\x4c\xb7\xc5\xbc\xab\xf1\xb6\
\xcd\x09\x18\xcd\xc4\x60\x12\x41\x68\xe9\x43\x21\x9f\x6a\x23\x81\
\x5e\x09\x2c\x59\x83\x74\x06\xee\x25\x0f\xcb\x81\xc5\x8d\x8d\x7d\
\x28\xd2\xd9\xa3\x80\x8d\x84\x4f\x6b\x1b\xf9\x48\xdc\x52\x3a\x31\
\x8a\xe1\x57\x25\x0c\x31\x63\x84\xcd\x1e\x23\xf2\x53\xc7\xce\x2b\
\xdb\x6c\x23\xc6\xb5\x09\xb6\x06\x90\x62\x26\x6b\x43\x69\x66\x3a\
\xb6\xa0\x72\x07\xea\x94\x07\xf9\xb5\x99\xcb\x11\x59\xc3\x1d\x89\
\x30\x41\x74\x2d\xac\xc6\xe1\x6a\x2c\xb0\x53\x63\x81\x9d\x3a\x60\
\xa7\x26\x8c\xd7\xf1\xc3\xd0\x7f\xa8\x2c\x70\x7b\x28\xff\xe0\x13\
\x4c\x67\x43\x17\x93\x0e\x87\x3e\xc5\x39\x5a\x4d\xd7\xd5\xb1\xc2\
\x27\xe9\x76\x02\xbf\x98\x35\x82\x3f\x48\xd1\xe5\xe8\x6f\xac\xbb\
\xae\xc9\x95\x48\xe7\xf7\x49\x8b\x3d\x38\x48\x84\x3d\x6d\x05\x6d\
\x09\x69\x8b\x62\x2d\xd2\x64\xc4\x11\x60\x12\xf4\xa1\x15\xfc\xa6\
\xf0\xde\xce\xe1\x7d\x43\x39\x15\x6c\x46\x79\xdd\xc4\xff\xf1\x45\
\x6d\xdf\x6c\xc1\xc6\xf3\x06\xf8\x36\xf1\x7f\x54\xa0\x31\xaa\x9a\
\x15\xf5\x2d\x82\xcb\x36\x80\xab\x65\x3b\x70\x3d\x70\x6c\x91\xe7\
\x48\x08\x40\x1e\xd7\x14\x7f\xac\xcf\x21\xbb\x76\x8c\x66\xfa\x37\
\xdd\x52\xff\x36\x32\x53\x2e\xb5\xb7\x18\x07\x3d\x02\x0e\x4e\x39\
\xa9\xa8\x5f\x59\xa7\x7e\x3d\x9c\xa1\x9e\x50\x2e\x8e\x53\x2e\x90\
\x83\x6d\xb5\xe9\xc2\x66\xa1\x86\x16\xd0\xd1\xd0\xa9\x66\xf7\x1d\
\x81\x66\x8b\x5a\x95\xec\x23\x9c\x33\x80\xf2\x05\x7c\x5a\x15\x57\
\xd6\xfb\x1a\x8e\x5e\x00\xe4\xd1\x5a\x52\xb5\x4e\xbe\x75\xf6\x79\
\x53\xec\xd7\xc2\x07\xa8\x0a\xaa\xd9\x36\x71\xb0\x8a\xcc\x7f\xaf\
\x43\x06\xc4\x70\x0f\xf6\xbe\x81\xef\x5f\xc3\x27\x74\xd4\x31\x32\
\x8c\x16\x39\xae\x17\xb3\xeb\xf5\x9b\xae\x11\x33\x6f\xe6\x0f\xc0\
\xc8\x3f\x87\xff\xfd\xd2\x2d\x9f\x59\x17\xce\x50\xd8\xb2\xd6\xc5\
\x1c\xb7\x4f\x2c\xb4\x70\x30\x9b\x9b\x98\x46\x40\xd1\x3a\x45\xfd\
\xb7\x6a\x5b\xd0\xf3\xc4\x23\x23\xbb\x6d\x06\xa9\x37\xd7\xc7\x79\
\xe3\xc1\x05\x1a\xec\x77\xd3\x3e\x3c\x6d\xee\xa6\xb7\xea\x36\x0b\
\xbc\x4f\xa7\xfe\xc6\x16\xc8\xb1\x05\xd2\xac\x38\xea\xce\xf5\x2c\
\x77\x9b\x55\x00\x2d\x03\xf8\xb9\x03\xf0\x3b\xf2\x68\xe6\xae\x34\
\x49\x32\x18\x14\x34\x9a\x65\x6f\x82\xbe\xbd\x3c\xae\x6e\x96\xc0\
\xc1\x12\x63\x4b\x69\xcc\x7d\x1e\x72\x99\xae\x54\x96\xac\x45\x32\
\xaf\x99\x17\x85\x36\xca\x55\xf8\x0f\xc3\x47\x25\xb3\x9d\x58\x6b\
\x12\x08\x69\x73\x8c\x9b\x15\x8d\xb8\xa9\x93\x53\x9b\x00\xba\x46\
\x84\x7d\xcd\x48\xf8\xba\xaf\x6a\x0e\x70\x7d\x4c\x29\xea\x6a\x46\
\xb4\xb2\xd7\xad\xfd\x76\x30\xb6\x09\xca\x17\xce\x7b\x5c\x54\xbd\
\xc7\xc5\xb8\x01\x88\x4d\xc2\xcd\xab\x26\x80\xea\x45\x94\xd7\x21\
\x68\xa3\xf2\x72\x14\x94\x17\xdb\xc2\x0e\x49\xaf\x2f\x87\xce\xc3\
\x7e\xd9\xfb\x29\xd0\x97\x68\x82\x5e\xf4\x16\xd8\x94\x85\xe6\xba\
\x0e\x43\xa6\xa4\xc5\x50\x57\x31\x1c\xb7\x80\x50\xd7\xca\x61\xad\
\x53\x63\x4b\xbf\xdb\x78\x35\x5e\x0a\xab\x0a\x93\x3b\x31\xa4\xad\
\xa0\xad\x5d\xbd\xda\x2d\xdf\xe6\xa0\x79\x81\xb3\x45\x92\xcd\xe1\
\x8a\xa8\x5b\xb4\x41\x9b\x64\xbd\x75\x49\x9a\x7b\xd7\xa4\x6f\x57\
\xb1\x9a\xc8\x78\xd1\x3c\x8f\x55\x82\xa2\x39\x2a\x58\xc2\xcb\x7e\
\x10\xf6\x83\xf5\xaf\xcd\xdc\xf9\xd7\xf8\xe1\xcc\x63\x38\xf2\xa1\
\xdf\xd0\xeb\x48\x9b\xf4\x68\x86\xa9\xef\x0b\x1c\x60\x08\x53\x87\
\xe8\x44\x56\x82\x6b\x2f\x7d\x6d\xa2\xeb\x8d\xf6\x9a\x30\xac\x6b\
\x46\xa8\x8f\xff\x1c\xa6\xa2\x0e\xd3\xa9\xa9\x0f\x58\x32\x97\x5d\
\xcb\x5c\x53\x47\xa6\x6d\xa6\x88\xc2\x12\x5f\x23\xdf\x2f\xc2\x14\
\x5f\x33\x0f\xb2\xe3\xeb\x41\x2c\xa2\xe9\xff\x00\x18\xc7\xe4\x50\
\x6e\x16\x4f\xb5\xad\xef\xd3\xc2\xa2\xd8\x98\xaf\x94\x7b\x6b\xd1\
\x85\x05\xf1\x61\xad\x78\xe2\xfe\x81\xdb\x3f\xb0\xfb\x73\x28\xc9\
\x5a\xa7\xce\x58\xa7\x56\x42\x3d\xa4\x24\xa0\xf7\x6d\x68\xd8\x6e\
\xb1\x3f\x25\x3c\x37\x5b\x97\xaa\x85\x6e\xd4\x37\xd8\xc6\x97\x74\
\x92\x39\xa9\x2d\x86\x06\x91\x74\xad\x75\x59\x97\x98\x58\xd7\x21\
\x53\xed\xc0\x74\xa2\x48\x11\xf3\x9a\x67\x41\x1e\x03\x54\x2f\xc8\
\x50\xff\x42\x0e\xb8\x77\xcb\x3f\x71\x20\x8a\xde\xe1\x16\xed\x6d\
\x69\x93\xe7\x68\x9a\x84\x34\xa2\xea\xe2\x54\x01\x04\x51\xa9\x49\
\x45\x34\x4b\x9b\x71\x53\x93\x0b\xbe\x6f\x6d\x74\x1b\x9c\x6e\x17\
\x38\x41\x1c\x78\x4c\x6e\xce\x3f\x36\x23\x56\x6b\x60\x9a\x3d\x7a\
\xe4\x21\x63\x71\x99\x9b\xd6\x1a\x18\x36\xaf\x53\x86\x6c\xa7\x90\
\xdd\xc9\x3d\x98\x67\xd4\x24\x8d\x69\x87\xf9\x4a\xeb\x7d\x08\x9b\
\xde\xb6\xe6\xc0\x9a\x57\x01\xf3\x58\x45\xe8\xf6\x4d\x81\xde\x11\
\x8c\x45\x7d\xf7\xbd\xeb\x7c\x7f\xd5\x75\x8e\x41\xf7\x55\x6e\x73\
\x9f\xd3\x53\x1f\x6d\xcb\x0c\xf5\x15\xc2\xab\x8b\x1e\xf5\x93\x97\
\xea\x0c\xe3\x5a\x6f\xda\x0b\x5f\x93\x4c\x6c\x68\x89\x6b\x85\xcf\
\x7b\x34\xc3\xbc\x58\xb0\xea\xc0\x34\x5d\xc0\x8f\x60\xff\x1b\x4a\
\x78\xc5\x1e\x3f\xbd\x8e\x05\xac\x9a\x27\x60\x03\x0c\xb3\xb8\xd1\
\xf0\xed\xa9\x81\x3b\x7d\x4d\xcb\xd7\xcb\x20\xf6\xe6\x5f\x50\xae\
\xf0\x9d\xcb\xe0\x4a\x27\xa5\xa8\x15\xc2\xcc\x54\x8b\x5d\x8b\x5a\
\xab\x51\x5f\x3f\x0c\x1a\x7c\xa7\xf5\x2a\xb0\xce\x1f\x0c\xd3\x38\
\x45\x99\xcb\x79\x31\xe5\x3c\xb6\x15\x57\xb8\xc1\x54\x59\xb3\xac\
\xdb\x49\xeb\xe7\x79\xe4\xfc\x92\x42\x99\x67\x00\xbc\x7b\x44\x62\
\xb3\xcc\x5e\x5f\x43\xdc\x26\x3b\x6d\x6a\x1f\x91\xc3\x3c\x48\x09\
\x71\xde\xa6\x02\xb3\x4e\x6a\xad\x7f\x33\x5a\x0d\x02\x63\x08\xde\
\x2d\x21\xf8\x9f\x94\xc4\xb9\x47\x99\x8a\xd6\x18\x52\x62\xb0\xc5\
\xc3\xae\x39\x8e\x32\x1e\x4a\x6f\x5d\x1f\xc0\x58\xb9\x81\x11\xa2\
\x24\xc4\x34\xad\x69\x48\xa7\x26\x1f\xda\xe1\x3f\xf8\xf2\xcb\x99\
\x73\x26\xf1\x16\x6d\x41\xb6\xe4\x5d\x86\x95\xc3\x18\x17\xfe\xe4\
\xb8\xf0\x2d\x55\xbc\xa6\xd4\xfd\xfa\x9a\x8a\x0f\xa8\x81\x31\x47\
\x7c\xaf\x50\x30\xed\xd5\x89\x7d\x94\xaa\xa9\x60\xd7\x6a\x93\xaa\
\x60\x07\xde\x14\xa5\xda\x56\x75\x49\x2b\x0f\x54\xb8\x1c\x91\x70\
\xa9\x75\xd8\x92\x2e\x71\xec\x29\xdb\xb7\x33\xc7\x9c\x4a\x32\x93\
\xb8\x55\x2a\x95\x99\x6a\xa5\x0c\xfd\xfd\xe5\xe0\xe4\xf0\xed\xe5\
\xa0\xfc\xa6\x81\x05\xb1\x65\x44\x09\xb9\x8b\x52\x13\xe9\x82\xd8\
\xf1\x90\x6a\x1a\x3f\x11\xa3\x1e\xaf\x3d\xe2\xd8\x31\xb0\x80\x0c\
\xac\x6e\x18\x58\x1c\x06\x47\x24\xc5\x83\xe1\x21\x9d\x32\x1c\xda\
\x63\xf7\xed\xe6\x09\x6e\x96\x83\x72\x14\x67\x27\xe4\x5e\xfb\x80\
\x11\x5b\x30\xa5\xf2\x91\xc7\x6b\x8f\x6c\x37\x25\x6e\xa7\x04\x9b\
\xe3\x7c\x46\x5f\xc1\x7c\xa6\x79\x3d\x62\xe6\xa4\xf1\x4d\xa9\xe4\
\xf3\x3a\xd7\xc5\x53\xd7\xf3\x81\xa6\x6f\xda\xfb\x3b\xe8\x11\x5f\
\xbd\x18\x1c\x7f\x0b\xc0\x3f\x3c\xb0\xc4\x1f\xc0\xe7\xe3\x33\x7c\
\x03\xcb\xc0\xbe\x62\x25\xa1\x7f\xcb\xd2\x21\xe6\x0f\xb9\xf7\xaf\
\xe0\xb1\xa7\x78\x2c\xb9\x3a\x1d\xb6\x25\x09\x7f\x08\xff\x0d\xca\
\x0d\x57\x0b\xf7\x4c\xc5\x05\xe5\x76\x7f\xa1\xfb\x0f\xf9\x36\x74\
\xe8\xad\x8a\x52\xf9\xc8\x76\x7c\x13\x96\x6f\xa2\xe3\x5b\x1b\xbe\
\xdd\x75\x7c\x1b\x02\x32\x53\xb8\x5b\xcc\x9b\xfc\x18\x70\xef\x6e\
\xce\xa3\xba\x73\x1e\x37\x38\x67\x3b\x8e\x8e\x2d\x47\xc7\x1d\x47\
\xdb\x70\xf4\x76\xbe\x12\xb1\x16\x80\xbe\x4c\x39\xae\x59\x94\xea\
\x04\xfe\xd8\xe3\x0d\xc7\xb6\xe3\x9c\xb4\x9c\x93\x1d\xe7\xb6\x59\
\x8b\x96\x03\x6f\xc8\xff\x79\xe5\xf1\x0a\xd6\x62\xfd\x39\x8f\x1b\
\x9c\x73\x25\xed\xca\x58\xc7\xd2\x36\x2c\x2d\x7c\xab\x31\xf5\xcf\
\x14\x0f\x1a\x2e\x5c\x8a\xdf\xef\x7f\xbc\x66\xff\x76\xec\x52\x96\
\x5d\xaa\xe3\xd6\x36\xdc\x3a\x23\x27\x72\x5a\x7a\x8f\xd4\xc2\x65\
\x37\xfc\xfe\xc7\x6b\xf6\x6f\xc7\xad\xd4\x72\x2b\xed\xb8\xb5\x0d\
\xb7\x06\x84\xc8\x2c\xc7\xc3\x73\xa5\xd8\xff\x78\xcd\xfe\xed\xb8\
\x65\x2c\xb7\x4c\xc7\xad\x36\xdc\xfa\xdc\x71\xeb\xc8\xbd\x53\xe6\
\x67\xd2\x6f\x65\xe7\xe4\x73\xc7\x9f\xba\x33\x1e\x47\xcf\xd8\x8e\
\x97\x99\xe5\x65\xd6\xf1\xb2\x0d\x2f\x3f\x75\xbc\xdc\xa7\x62\xea\
\xeb\xbc\xc4\xba\xc8\xdf\xe8\xf0\x2a\x5f\x75\xe1\xde\xed\xf8\x34\
\xb5\x7c\x9a\x76\x7c\x6a\xc3\xa7\x5b\x79\x70\x87\x6b\xc5\x3e\x20\
\x1d\x06\xe4\xc5\x91\x30\x20\x2f\x8e\x6c\xc7\xb3\x99\xe5\xd9\xac\
\xe3\xd9\x36\x56\xed\x3b\xea\xd7\x9c\xaf\x58\xb5\x62\xff\xe3\x35\
\xfb\xb7\xe3\xd6\xdc\x72\x6b\xde\x71\x6b\x9b\x60\xfb\xac\xa8\x73\
\xe5\x3e\xfe\xed\xdc\x3b\x2c\x1f\x7b\xbc\xe1\xd8\x76\x9c\x5b\x58\
\xce\x2d\x2a\x13\xbb\x93\x8b\xd1\xbc\x37\xe9\x1d\x12\x2b\x9e\x51\
\x19\xce\xd7\xdb\xbd\xd8\x84\xc7\x1f\x47\x8e\x6f\x37\x49\xe6\x32\
\xbd\xb8\x3d\x64\x25\x44\x07\x87\xbc\xf2\x4d\x54\xbe\xc9\xca\xb7\
\x73\xa4\xba\x5c\x1e\x53\x02\xbb\x13\xd3\xcd\x62\xba\x15\x40\xb7\
\x1d\x40\x43\x7a\x86\x61\x9f\x3a\x0a\xa2\xd0\xd8\x61\xeb\xe7\x93\
\x25\xc9\x84\x37\x84\xa6\x19\x9d\x9b\x82\xe6\x8b\x0a\x34\xc7\xd4\
\x95\x87\xe7\xae\x82\x24\x9a\xdd\x5c\xd2\x57\xc5\xdc\xf0\xff\xb5\
\xd3\xae\x13\xae\x77\x35\xc8\x4d\xc1\x7b\xcb\xc1\x3b\xa2\xf7\x96\
\xbe\x25\x55\x53\x40\xaa\xeb\x66\x93\x89\x0c\xe4\xa2\x7a\xb7\xdc\
\xf8\xa3\x92\xe3\x4f\xf5\xa8\xcc\xc1\x98\xa8\x89\x98\xb0\xea\x51\
\xed\x0f\x6a\xfa\x57\x3d\x98\xe6\x97\xce\xe6\xf8\x53\x0b\x82\x49\
\xf0\x67\x95\x59\x1f\xde\xf4\x6f\x4a\x0c\x3e\xcb\xc5\xe0\x67\x57\
\x49\xc0\xd7\x51\xff\x14\x13\x85\x3a\xc1\xe7\xe5\x83\x28\xdd\x15\
\x28\x8b\x09\xf3\x71\x78\x50\x2f\xd7\x2e\x99\xa4\x6f\x0a\xb2\x6b\
\xd7\x93\x9f\x4e\x23\x39\x78\x7f\xe7\x7e\xd3\xaa\x16\x1b\x01\x5e\
\x52\x23\xe0\x9b\xde\x23\xf7\x60\xf1\x8f\x71\x7b\xc4\xb3\x64\xac\
\xb2\x35\x37\x97\x4e\xeb\x18\x73\x05\x3a\x37\x05\x92\xf7\x65\x72\
\x0f\xa6\xf0\x6a\xe2\x06\xdb\x3a\x1a\x9b\x66\xd5\xcc\x60\x37\xa1\
\x73\x53\x00\x7d\x59\x72\xf6\xc0\x40\x3b\xc3\xfd\x94\x5a\x4b\x6d\
\x47\x6e\xc4\x64\x7b\xa7\xa3\xd6\x9a\x6e\x70\x56\xe0\x5f\xad\x90\
\xbd\xab\x41\x6e\x0a\xe0\xaf\x02\x80\x4b\xd0\xc6\xbc\xa2\x7e\x31\
\x89\x09\x28\xb1\xf1\xba\xfb\x9f\x2d\xe0\x70\xf5\x60\x16\x5e\xb9\
\x11\xe6\x6b\x1e\xe8\xa6\xa0\xbe\xeb\xa0\xc6\x23\x13\xcc\x77\x52\
\x87\xe5\x2a\xc8\xb5\x06\x26\x49\x84\x09\xcd\x44\xe1\x68\x80\x11\
\xc9\xc6\xe9\x3a\x47\x03\x84\x53\x6f\x30\x31\xab\x97\xa6\x1b\x2e\
\x65\xe1\x8c\x1a\xd9\xc7\xf7\x7a\xfa\x37\xed\x2e\xe3\x91\x9f\xc9\
\x57\x2a\xbb\xcb\xb2\x6e\x36\x59\x2a\x35\x0b\x16\x80\xc8\x17\xc0\
\x64\x66\xa6\x2a\xf0\x16\xf2\xa3\x7a\xca\xe7\x4c\xd7\xde\xc8\x7c\
\x31\x9b\x4c\x67\xab\xac\xbc\x99\x29\xdc\xb4\xad\x39\xa2\x47\x17\
\xa8\xa9\x91\xfa\xf0\xf3\x30\x31\xb6\x46\x79\x22\xa6\x2b\x4e\x60\
\x2e\xe4\x6c\x92\xa5\x6c\xb2\x4e\xc8\xd9\x5c\x2e\xa4\x5a\x23\xe4\
\x7a\x3c\x9f\x26\x6c\x9d\x90\xaf\x12\x66\xe1\x8c\x1a\xad\xd1\xf7\
\x7a\xfa\x37\x9d\x4c\x29\xbd\xb0\x1e\x8e\x45\x23\x99\xd5\xe0\xad\
\x40\x12\xe3\xb3\x95\x70\x20\x87\x43\xeb\xd0\x1f\x2b\x21\x89\x17\
\xa6\x8b\x75\x48\xda\x81\xd7\xf9\xba\xf0\x5f\xe3\x60\xe6\x3d\x9e\
\xfe\x75\x24\x7f\x8f\x06\x87\x6f\x2f\x8f\x06\xa5\xba\xe6\x9c\xc4\
\xe1\x01\x35\x35\xe3\xda\xdf\x87\xdf\x6f\xe9\x8d\x32\xbe\x2e\x36\
\xcf\x9f\xcf\x19\xf7\xde\x2c\x8f\xce\x46\x6f\x2f\x0f\x0f\x8e\xf0\
\xd7\x37\x70\xfc\xff\x80\xce\xf8\x3b\x58\xf5\x01\x65\x3e\xe6\xe4\
\xd2\xbf\x72\x2e\xfd\x23\xb8\xf2\x79\xef\xd7\x9e\x7d\x35\xd0\x4f\
\xa0\xe8\x5f\x92\xd8\xbd\x82\x7d\x47\xbd\x05\x3d\xea\x8d\x41\xf2\
\x63\x38\xff\xa1\x7d\x70\x6a\x79\x78\xf0\x2d\x05\xd2\xc5\x8c\xee\
\x95\xe6\xb4\x2c\x8d\xfc\x45\x85\xc6\x03\x10\x52\xdb\x7a\x7d\xe1\
\x5e\x3a\x6c\x29\xfd\xd6\x05\xe1\xf3\xca\xb5\x9f\x55\xae\x3d\xa5\
\x17\x9c\x3d\xe8\x1d\xba\x6b\xfe\x77\xef\xb2\x97\xd2\x51\xdd\x63\
\xf0\x93\xf4\x78\xef\x6b\xf8\x3c\x85\x3d\xf8\x09\xf7\xcd\xe8\x2d\
\x33\x06\xf6\xa5\x70\x24\xa1\x1f\x45\x67\xa6\xf0\x9b\xc1\x11\xfc\
\xb6\xac\x8c\x7a\xab\xb8\x13\x40\xe4\x57\x34\x7c\x6e\xc4\x7f\xe9\
\x25\x95\x33\x6f\x97\xce\xfc\x8e\x9e\x8a\x7a\xd3\x7b\xe6\xce\xfd\
\x0d\xce\xa8\x72\xf6\xe7\xa5\xb3\x7d\xdb\xd4\x2b\xbb\x6c\xf3\x6b\
\xd2\x9e\x0a\xae\x39\x02\xaa\x10\x8f\xd2\x2b\x0b\xe8\x21\x5d\xd8\
\x52\x6f\xc1\x9a\x39\x7d\x4e\xef\xd1\xf9\x91\xb8\xec\xff\x7e\xdb\
\x0b\xba\xee\x75\x7e\x85\xa8\x5c\x71\x87\xde\xf3\xf8\x1a\xe4\x63\
\xdd\xf9\xe1\x08\xc5\x3b\x22\x0f\xdd\x8b\xa3\xc6\xd4\x9b\xe2\x71\
\xfa\x57\xe2\x46\x88\x55\x71\x55\x3e\xc3\xd2\xf9\x22\xb8\xf3\x5b\
\x30\x9b\xe7\xe4\x78\xcc\x23\x5c\xf8\xa2\x74\xe6\x29\xb5\x83\xbe\
\x71\xaf\x6a\xbe\x20\x97\xc5\x5f\xc5\x82\xab\xec\x83\x57\x95\xd5\
\x54\x28\x58\x77\xd5\xa7\xbd\xff\x05\xf8\x2f\x9c\xe4\x54\xc7\xbd\
\x4b\x4f\xf5\xff\xc3\xa5\x67\x71\xfd\xcd\x56\xae\xbf\x05\xd7\x27\
\xa5\x1f\xd1\x5b\x04\x58\xde\xa7\x55\xb8\x99\xc2\xa2\xf4\x13\x52\
\xf8\x8c\x28\x3c\x77\x6b\xb9\x6e\xfe\xa5\xab\x83\x2b\x47\xf4\x20\
\xe4\x8c\xee\xa2\xee\xca\xd2\xcc\x57\xd6\xb4\xfd\xb3\x62\x20\x25\
\xa0\x53\xc6\xb4\xe6\x62\xf7\xbe\x2a\x11\x23\x92\xe5\x7f\x00\x27\
\x26\xbd\x7f\xb7\xab\xdc\x5d\xfb\x09\xcc\x16\xfd\x9b\xd7\x2b\x1a\
\x61\x9f\xb8\xf6\x86\xd6\xcf\x88\x24\xef\xcd\x5a\xc9\xf8\xca\x3f\
\x17\xeb\xce\x7c\xb5\x56\x62\xc3\x2b\x6f\xe5\x57\x86\xeb\x9a\xce\
\x44\x15\xdd\x42\x3b\xdf\x72\xda\xf9\x7b\x5a\x01\xdf\xc3\xd8\x3f\
\x76\x1a\xba\xd3\xd0\x1f\xb1\x86\x16\x9d\x86\xee\x34\xf4\x07\xa4\
\xa1\x6f\xaf\x6a\xe8\x1e\xef\x74\x74\xa7\xa3\x3f\x62\x1d\x2d\x3b\
\x1d\xdd\xe9\xe8\x0f\x48\x47\xfb\x1c\xc7\x90\x9e\x84\xe8\x3c\xe8\
\x4e\x3b\x7f\xcc\xda\x59\x75\xda\xb9\xd3\xce\x1f\x90\x76\xf6\x39\
\x8e\x21\xcc\x1d\xf9\x80\x92\xdf\x69\xe8\x4e\x43\x7f\xbc\x1a\x5a\
\x77\x1a\xba\xd3\xd0\x1f\x90\x86\xfe\x83\xd3\xd0\x23\x40\xcd\xbf\
\xc4\xcb\x9e\x4f\x9d\xd0\x3d\xfb\x27\x1c\x3b\x9d\xdd\xe9\xec\x8f\
\x57\x67\xf3\x4e\x67\x77\x3a\xfb\x03\xd2\xd9\xde\xab\x2e\xe9\xec\
\x4e\x43\x77\x1a\xfa\x23\xd6\xd0\xa1\xae\xed\x34\x74\xa7\xa1\x6f\
\x5e\x43\xd7\xc8\xd3\x0d\x77\xde\x15\x33\xfa\xe7\xd0\xce\xac\xd3\
\xce\xef\x81\x76\xee\x3a\xef\x3a\xed\xfc\x21\x69\xe7\x9b\xec\xbc\
\xeb\x34\x74\xa7\xa1\xbb\xce\xbb\x4e\x43\x77\x1a\x7a\x93\x86\xbe\
\xd9\xce\xbb\x4e\x47\x77\x3a\xba\xeb\xbc\xeb\x74\x74\xa7\xa3\x9b\
\xe4\x38\x76\xdd\x79\xd7\x69\xe7\x4e\x3b\x77\x9d\x77\x9d\x76\xee\
\xb4\x73\x93\x1c\xc7\x4d\x74\xde\x75\x1a\xba\xd3\xd0\x5d\xe7\x5d\
\xa7\xa1\x3b\x0d\xbd\x49\x43\xbf\x5f\x9d\x77\x9d\xce\xee\x74\x76\
\xd7\x79\xd7\xe9\xec\x4e\x67\x37\xf1\xaa\x6f\xa2\xf3\xae\xd3\xd0\
\x9d\x86\xee\x3a\xef\x3a\x0d\xdd\x69\xe8\x1f\x80\xf2\x2b\x92\xc2\
\x12\xaa\xf9\x1b\xbc\xad\x86\x2e\xfe\xd0\xc6\x0f\x95\xb3\x76\xa5\
\xad\xfd\x0c\xef\x55\x46\xdf\x9d\xb6\x1e\x83\x7e\xcb\x7a\x12\x7e\
\x66\x40\xcf\x5c\x8b\xb6\xde\x2c\xc5\xa1\x0c\x8e\x03\xef\xee\x76\
\xe5\xea\x58\x9f\x75\xf9\x5c\xfb\xb6\xe1\x42\xbb\xc8\x40\x37\x94\
\xcf\x5d\x27\x73\xe9\x86\x3b\x59\xd5\x91\x02\x10\x50\xad\x65\xcf\
\x57\x44\x9c\x6e\xef\x64\x6d\x67\xb2\xa6\x83\xec\xcf\xf5\xc9\x9a\
\x69\x2d\x6b\xe8\x8d\xf0\x2b\x4b\xdb\x5d\x27\x6d\x65\xed\x1f\x7a\
\xa3\xbf\x77\xf2\x86\x39\x03\xd0\xde\x3b\x93\xb8\x3b\xc5\x88\x20\
\x73\xa5\x19\x7e\xc4\xde\xa8\x08\x64\x66\xbd\x37\x1a\x46\xb5\x1f\
\xae\x2f\x1a\xde\xc7\x4d\xfb\xa2\x5d\x9f\xf1\x87\xe8\x8b\xb2\x60\
\x6d\x7f\x2c\xbe\x68\x1b\x0d\x3d\x84\x71\x2f\xe8\xae\x76\xa3\xa1\
\x3f\x2f\x46\xec\xcd\xfe\x69\x74\x74\xe8\x6f\x76\x3a\xba\xd3\xd1\
\x9d\x8e\xfe\x67\xce\x17\x7c\x51\xc1\xf1\x1e\x51\xb6\x7f\x1d\xe3\
\x79\x29\x6e\xbb\x5d\x79\xaa\xd9\x1f\xdb\x8d\xa6\xae\x1f\x7b\x77\
\x3a\x9a\xd3\x5f\xf5\x31\xa0\xdd\x20\x6a\x01\x09\x46\x7d\xcc\xe1\
\x27\xc9\x75\x34\xee\xc3\x73\x10\x45\x2f\x2d\x86\xb4\xfa\x82\x22\
\x3e\xd4\xd4\xcb\xd6\xda\x54\x07\x3a\x25\xae\xe9\xc2\xfe\xd8\xa6\
\x3a\x62\x9d\x8c\xbf\x1b\x09\x94\x5b\x49\xe0\x9d\x8a\x14\xec\x3e\
\x5f\xb5\x7e\xfc\xdd\x49\xa2\x72\x3e\xc0\x82\xac\x3f\xfa\x08\x29\
\xfc\x48\x38\x7f\x7b\x49\x6c\x9b\xb1\x52\x35\x5a\xf0\xc3\xcd\x58\
\xdd\x81\xf3\x66\xa0\xbd\x7f\x21\xfa\xf7\x4a\xf7\xef\xff\xe4\xe5\
\x1e\xad\xa1\x97\x70\xec\x24\x5f\x43\xaf\x77\x96\xb7\xaa\x1f\xbd\
\x9d\xd4\x20\xd7\x25\x1c\x5f\x90\x1f\xc9\x48\x6a\x18\xcc\x55\xae\
\xf8\x98\x86\xb4\x1a\x72\x19\xa5\x0b\xe5\x6a\x06\xff\xa3\xdd\xcf\
\x02\xa9\xb9\x0b\x78\xbd\x44\xfe\x91\xed\xfc\xc1\xad\xf5\x1f\xe0\
\xfb\x8f\xbd\xc9\x5a\x4f\xa7\x7a\xcd\x33\xe7\x51\x55\xaf\xfa\x57\
\x18\x59\xad\x68\xbe\x19\x69\xba\x37\x0d\x47\xfa\xbc\x74\x7e\xf3\
\x51\x6e\xc1\x71\x44\xff\x27\xf8\x1d\xd2\x67\x0d\xef\x7e\xbe\xd6\
\xb3\xdd\x74\xf7\xc5\x55\xcd\xef\x7e\xfd\x48\xeb\xee\x7e\xf3\x28\
\xe1\xdd\x97\xe9\x57\xef\xfe\xcb\x35\x77\xff\x63\xcf\xff\x3d\xad\
\x75\xfe\xcc\x3a\x04\xc2\x2b\xeb\xe6\x77\xb7\x06\x85\xd8\x88\x5f\
\xd4\x22\xd1\x64\xb4\xcf\x2a\x68\xac\x8e\x13\x7a\xe3\xf5\x88\x4c\
\x7a\xf6\x6f\x00\xd6\xcf\x2e\xc4\xb1\x98\x61\xf5\xba\xba\xf9\x7d\
\x5e\x83\xc6\xe6\xd1\xee\xd6\x62\x11\x1f\xe9\x76\x05\x89\x70\x8c\
\x2a\x0e\xff\x03\xf4\xcf\x3e\x9c\xb5\x20\x2d\x68\x3d\x8f\x1f\x40\
\xdf\xbd\x22\xdd\x85\xf1\x0c\xce\xf3\x4d\xae\x23\xd1\x2e\xfe\x57\
\x4e\xed\x13\xd2\x47\xf7\xf0\x77\x4b\x2d\xfd\x27\x18\xf5\x55\x1e\
\x9f\x39\xaf\xa8\xf7\xe7\xd0\xb3\xea\xf5\xf1\x67\x47\xba\xbb\xdd\
\x9c\xda\x69\x74\x01\xba\x19\x75\xf2\x84\xac\xbb\xb5\xfe\x19\xf0\
\x8e\x55\xfc\x00\x3c\x8e\x3c\x47\x8d\x3e\x27\x8d\x9e\x51\x64\x3b\
\x03\x1e\x9b\x95\xac\xc1\x57\x70\xf6\xea\x7c\x7f\xa0\x7b\x42\x29\
\x7d\x91\x7b\xa6\xab\xab\x6c\x1a\xdc\x53\x93\xab\x6e\x4a\x56\x6e\
\x97\xfe\x18\xdc\x3d\xc7\xf3\xe7\x3b\x8b\x64\xea\xc6\xde\x9d\xff\
\x38\x23\xde\x4b\xf2\x91\xa6\x14\xbf\x8c\x29\x93\x94\x05\xfe\x23\
\xca\xd2\xb8\x92\x6d\xa2\xc8\x9d\x6a\x57\xf3\x40\x6e\x3e\x59\x1b\
\xb5\xd7\x45\x14\x9f\x02\x7a\x3f\x53\xc4\x8d\x58\xfe\xba\x21\xe3\
\x72\xab\x94\x55\x40\x59\x9a\x55\x35\x5b\x2b\x9e\xdf\x82\x3d\xa8\
\x67\xdf\x92\x54\xef\x52\x0b\xd4\x8d\x7c\x95\xb5\x3e\xcf\xd7\xba\
\xb8\xc2\x5a\xbf\x6d\xbd\x1b\x5a\x6f\x2f\x7b\x17\xb4\x76\x5f\x2f\
\x8f\xcf\x00\xd0\xe3\xb3\xf3\xb7\x97\x4f\x4e\x0e\xf0\x8f\xef\x3d\
\xb5\x9b\x65\xb1\x8f\x2b\x65\xf7\xe2\x87\x55\x9a\x98\x49\xbd\x4e\
\x9a\x77\x0a\xcb\x7b\xad\x74\x3f\xf3\x76\xec\x5a\xa9\xde\x94\x46\
\xfb\xaa\x77\x9f\xee\xe5\xcf\x10\xff\x60\x3e\xe9\x17\x92\x4d\x1c\
\x07\xb5\xf2\x2e\xa5\xbd\xc9\x4c\xae\x22\xfd\xb3\x5c\xfa\xf9\x95\
\xa4\xff\x99\xe3\x7d\xdc\x4a\xa1\xcf\xba\x7a\x27\x4d\xae\xfc\x92\
\xb2\x9a\xed\xad\xe9\x1d\xb8\xe2\x39\x9d\x3b\xcd\x6d\x45\x55\x4e\
\xea\x73\x8b\x37\x25\x7d\xbf\x2b\xf7\xe3\xef\x48\xce\xaa\x63\xb6\
\xb5\x81\x9c\x6c\x20\x73\x52\xf2\x35\xe5\x52\x66\x3d\x5d\x13\x0d\
\xfb\x9c\x47\x2c\x1a\xbe\x29\xec\x6f\x95\xb3\x02\x3b\xb6\x6b\xab\
\x23\x5f\x25\x2b\xc1\xf3\xac\x84\xea\xb2\x12\x5d\x56\xa2\xcb\x4a\
\x74\x59\x89\xf7\x3e\x2b\xf1\x09\xe8\x4f\x7c\x22\x6d\x9e\xeb\xe3\
\x2f\x5d\x74\xef\x9f\x4e\xbb\xe7\x72\xb7\x7b\x40\xf9\x67\xcc\x4d\
\xef\x48\x3b\xc7\xe7\xd1\x4e\x57\xa3\xa5\x14\xf0\x1b\xfd\xa9\x31\
\xe9\xea\x29\x6c\x25\xf5\x31\x96\x75\xb5\xa2\x4a\x43\xb3\x2e\x85\
\xdd\x71\xe5\x36\xa1\xfb\xc2\x75\x79\xd8\x7e\x84\x5d\x65\xf0\xeb\
\xc7\x6e\x87\xfe\x82\xba\x3f\x12\xe2\xc1\x82\x90\x5e\xc0\x67\x55\
\xaa\xfa\x24\x84\x3e\xc6\xe6\x4d\x2d\xe5\xbb\x42\xff\xb7\x79\x5d\
\xc7\x62\x5f\x7c\xdf\x0d\xde\xc5\x78\x6d\x31\x66\x70\x6c\x41\x3a\
\x4f\xe6\x35\x12\x1f\x6f\x6f\xe7\x8d\xec\x0a\xe3\x5b\xfe\x3b\x9c\
\x7d\x4a\x48\xed\xaa\x87\xaa\x6e\xe4\xab\xe0\xce\x3f\x28\xdc\xbf\
\xec\x1d\xc3\x6c\x7e\xa1\xc8\xee\x82\x6a\x93\xf7\x72\x3c\x76\xe9\
\x8b\xc7\xe7\x71\x15\xcf\x3c\xc9\x3d\x73\x71\x05\x9e\xfc\x37\xb2\
\xd7\xe5\x39\x7a\xab\xfd\x8a\xfc\x3a\xcc\x48\x5e\xe0\x71\x37\x8f\
\x3f\x00\xb5\x3e\xe9\xbc\xf5\x3f\xfa\x46\xb8\x7e\x97\x30\xf3\x99\
\x80\x9b\xe1\xf8\xe6\x39\xb4\xe3\xb6\x02\x6e\x19\xb2\xd2\x1a\xe6\
\xa9\xc9\xba\x2c\x5c\x3c\x2c\x69\x2d\x2e\x28\x4f\x8c\x76\x7d\x0a\
\x67\x67\x94\x63\xd1\xe4\x79\x1a\x3a\x63\xdc\x0b\x73\xc2\xd7\xc8\
\x8b\x8a\xa7\xfe\x53\xe9\xae\xcb\xf2\x33\x0e\x6a\xfd\xbf\xc1\x59\
\x06\xf2\xb7\xee\xda\x59\x6f\xdd\x13\x0a\x61\x96\x79\x55\x12\x86\
\x4e\x6e\x31\x1f\x73\x53\x92\xb0\x69\x0e\x6d\xd7\x3d\xea\x62\x41\
\x7d\x12\x56\x17\x73\xa2\x6d\x48\x12\xb0\xba\xa4\x48\x12\x70\x75\
\x2f\x48\x16\x66\xe4\x93\x48\xd2\x04\x0b\x5a\xf9\xd3\x9d\x48\xc2\
\x1f\x72\x8d\x81\x77\x5d\x95\x84\x30\xbf\xf6\x1b\x98\x61\x55\x16\
\xfe\xb8\xf6\xea\xff\x80\xed\xb8\xf7\xbc\x52\x9b\xf8\x0d\xea\xb8\
\x88\x24\xdc\xe9\x7d\xdf\xc3\x67\x9d\x7f\xba\x21\x29\x58\x3f\x7e\
\x3b\x09\xc8\xdc\xf3\x49\xb8\xfa\x75\x9e\x59\xe5\x64\x8d\xf1\xd9\
\xa5\x09\xe9\x02\xd4\x16\x9a\xaa\x48\x13\xd2\x03\x0b\xaa\x2b\x71\
\xca\xc5\xa2\xc7\xbf\x0b\x09\xf8\x12\xce\xb1\x77\xdc\x96\xfb\x5f\
\xd5\x5e\xd9\x94\xf3\x9f\xba\x1e\xa3\x57\xd4\xaf\xfb\x22\x7f\xaa\
\xad\xba\x77\x37\x5c\x0f\x47\x6d\xc7\xeb\x29\xd9\x6e\x8c\x23\xb0\
\xbf\xd1\x46\x15\xb6\xcb\x7c\x35\xaa\x48\x6f\xd8\xf3\xaa\x47\xfd\
\x4e\x75\xef\xce\xbd\xdf\xf5\xe3\xb7\xe3\x04\xf6\xe6\x71\xfa\x5f\
\xb9\x8c\x74\x46\xab\x30\x5d\xf1\xb7\x7c\x57\xdf\xfb\xc6\x89\x2f\
\x00\x9d\x17\xd4\xdb\x6f\x8f\xdc\xcb\x3b\x55\x77\xa9\x05\x63\xb3\
\xb8\x4a\x64\x22\xdf\xb7\xc8\xa4\x62\xcf\x7e\xa9\xdc\xf7\x0f\x94\
\x15\x7b\x4d\xcf\x75\x5f\x87\x67\xbd\x89\x7e\x9d\xc6\x55\x81\xc6\
\xfd\xd3\x86\xeb\xdf\x6c\x7a\x2e\x24\xc8\xeb\x3c\xa4\x4a\x2d\xd6\
\xbd\xfc\xfa\xdf\x23\xcb\x73\xaf\x38\xb2\x63\xab\xbb\x6e\xfc\xaa\
\xa5\x1a\xd3\x59\x3f\xc0\x38\xfe\xac\x66\xb8\xc5\x65\x74\x4e\xd2\
\x96\x50\x6f\xef\x84\xf2\x41\x53\x92\x43\x41\xf6\x7a\xea\x62\x36\
\xfc\xad\xe8\x19\x15\xdf\xb7\x8e\x56\x7a\x4e\xb6\x1e\x3d\xb9\x65\
\xc0\xed\xba\xf9\xfe\xe2\xb6\x79\x4d\x32\x97\xc9\xdd\x56\x23\xff\
\x40\x79\xb4\x5f\xe1\x1a\xac\x86\xd9\x4e\xf1\x5f\xe1\xb3\x74\x59\
\x47\xec\x93\x3d\x72\xf2\x51\xee\xb1\x47\xbf\xc8\x3e\xef\xb1\x4b\
\x09\xd9\x34\x83\xb6\xbe\xb9\xa1\x08\x6c\x4e\x3c\xb4\xd6\xda\x50\
\xc4\x56\xb6\xd6\x9a\x32\xb0\x82\xa2\x32\xfc\x6d\xbf\xe3\x36\xa3\
\x88\x7e\x37\x36\xa2\x0d\x8f\x6e\x91\x8e\x7e\x65\xbb\x9b\x76\x5c\
\xc1\x5c\x1d\x79\xb7\x3c\x99\xd1\xbe\xf7\x8f\x27\x5f\x04\xd9\x85\
\x73\x42\x14\x47\xdc\xad\x35\xdf\x3c\x8b\x5d\xf3\x0a\x7b\x06\x76\
\xc3\xab\x3f\x52\x9d\xe6\xc2\xf9\x94\x23\xc0\xf6\xc2\x7d\xc2\xa7\
\x02\xc7\x54\xcf\x29\xb8\xf5\xfb\xa2\xae\xb0\x53\xfe\xac\x8e\xfb\
\x2e\x38\x92\x02\x1f\x52\xca\x47\xa4\x94\x97\xc0\xdf\x9a\xa2\x14\
\x45\x5e\xd9\x6e\x38\xf2\x3b\xb8\xff\x87\xf0\xff\x08\xee\xea\x30\
\xef\x7b\x29\xef\xeb\xfe\xb6\xe8\x4d\xff\x6d\xd1\xf0\xb9\xe0\xf8\
\x13\x76\x75\x5d\xa7\xef\xe6\x89\xe5\xea\x13\xc8\xdd\x1b\xce\xba\
\x27\x96\xdf\xd5\x13\xcb\xe5\x99\x7f\xac\x4f\x2c\x7f\xda\xb3\x6f\
\x95\xa8\x3e\x1f\xea\xdf\x3b\xf9\x90\xb4\x29\x46\x98\xbb\xea\xea\
\xff\xed\x0d\x3c\x93\xbc\x6b\x3d\x2c\x1b\xeb\xe1\xed\xde\x34\x19\
\x3e\xeb\xdc\x44\x0f\xb3\x96\x7a\x18\xf3\xb9\xed\x9e\xa8\x5e\x7d\
\x4f\xd5\xcd\xeb\xe2\xee\xed\x11\x1f\x8a\x2e\xfe\x18\xdf\x1e\x11\
\x3e\x3f\x5d\xaf\x8b\xfd\x5b\xfe\xee\xd3\x7d\xbc\xec\xf4\xf0\x07\
\xa4\x87\xdb\xfb\xc3\xef\x5e\x0f\x87\x7f\x5b\xa8\xd3\xc2\x9d\x16\
\xfe\xf8\xb4\xb0\x69\xac\x85\xe9\x0d\x2a\xcb\xd3\x11\xa8\xe1\xe5\
\xd9\xde\xf9\xdb\xcb\xfd\x83\x93\x8b\xcb\x85\xfb\xb7\x1c\xf8\x6f\
\x33\x2d\xd5\x72\x70\x96\x6b\xeb\x5b\x54\xcf\xfa\x81\xd6\x01\xae\
\xb0\x71\xde\xc1\xf0\x79\x79\x1f\xe5\x9a\x8a\xb7\xb7\x3f\x8e\x9e\
\x31\x3c\x7c\x34\xb9\x4c\x96\x83\xf3\xfd\x0b\xdc\x1c\x0d\x68\x33\
\x3a\xbd\xb8\xe4\xf0\xed\xfc\xe2\x92\x2d\x07\xc3\x43\x3a\x65\x38\
\xb4\xc7\xee\xd3\xb1\xd1\x13\xda\x1c\xe7\x33\xfc\x0a\xe6\x67\xed\
\x89\xaf\x5c\xcd\x49\x4f\x15\xcf\xcd\xbe\xce\x67\x3c\xed\x55\xdf\
\x62\xfc\x1d\x75\x90\x23\x2f\x06\xc7\xdf\xbe\xbd\x1c\x3c\x3c\xb0\
\xc4\x1f\xc0\xe7\xe3\x33\x7c\x8e\x6f\x70\x7c\x60\x81\x99\xcf\x53\
\x58\xeb\xa5\x43\xfd\x2c\x85\x7f\x26\x3f\x23\x9b\x4c\x12\x8c\x3b\
\x06\xc7\x4f\xf1\x94\xe4\xda\xc8\xb1\x4d\x94\x12\xfa\xb7\x89\x92\
\x3f\x03\xff\x9d\x3f\xd9\x7f\x7b\x69\xc1\xf8\xc4\x01\x06\x0c\x02\
\xb1\xf8\xe6\xed\xe5\x77\x67\x80\xac\x49\x96\xf7\xdd\xf6\x7c\xf4\
\x3d\x70\x01\xae\x3c\x7f\x00\x58\x9f\x3f\x38\xbc\xb8\x4c\x17\x33\
\xb9\x48\x2c\xa1\xc1\xf5\x10\x5a\x1e\x3d\x39\x83\x89\x9f\x9e\xe3\
\xfd\x1d\x9c\x0c\x71\x73\x76\x42\xfc\x3f\xdb\x23\x61\x3d\x79\x88\
\xec\x3f\xc3\x43\x40\xec\xec\xdc\x7d\x05\xf1\x61\xcb\xbd\xb3\x13\
\xbb\x19\xa1\xa4\xec\xed\x1d\xd0\xb7\xbd\x43\xda\x8c\x80\xca\x1c\
\xce\x3c\xc4\x0b\x8e\x91\x66\xb2\xfc\xcb\xd9\x5f\x2f\x2e\x15\x6e\
\x47\xf6\xeb\x23\xbb\x39\xc3\xeb\x8f\x07\x0f\x70\xf3\x97\x11\x9e\
\x33\x86\xed\x91\xfd\x7a\x8e\xe4\xfe\x32\xda\x27\x69\x3c\x39\x23\
\x69\x7c\x78\x82\x5c\x39\xc5\x5f\x6e\x07\xde\xd6\xf2\xdb\x07\x23\
\x3c\x79\xb9\x3c\x1e\x9d\xe0\xe9\x27\xa3\xc7\xb8\x39\xb4\x9b\x93\
\x11\x49\xf4\xc3\xa7\x23\xfb\x6d\x84\xb7\x79\xff\xfc\x14\x09\xdc\
\x3f\x3f\x7f\xed\x5f\x3b\x3c\x27\x27\xe5\x1f\xb4\xa5\x86\xfc\xe5\
\x93\x01\x9d\xfb\xe0\xf4\xf0\xb5\xf5\x20\xac\x17\xf4\x6f\xbd\x3f\
\xd3\xcf\xa8\xf7\xff\xe0\xf7\x6b\x38\xf9\x05\x6c\xb1\xff\x02\x75\
\x45\x1f\xec\xc9\xaf\x54\x2f\xb5\xcf\x52\xe2\x5a\xf8\x11\x8e\x5b\
\x9b\x5c\x3c\xb1\x81\xef\x18\xb0\xcf\x54\xa0\xad\x43\x0a\x2f\x28\
\xef\x89\xab\xe7\x47\xf0\xc5\x4e\x9e\xdc\xc4\xa8\x4f\x4e\x89\x71\
\xe7\xc3\xd3\x89\x45\x09\x31\x7b\x72\xb8\x87\x9b\xa3\xc1\x13\x92\
\xbc\xff\x4b\xa3\xd1\xdf\xc9\x1c\xec\xc3\x9e\xff\x59\x19\xfb\x6b\
\x4f\x0b\x3e\xd9\xfa\xb1\xb5\x9c\x5f\xc3\x8c\xb1\xca\x79\xd1\x9b\
\xba\xf3\x24\x75\xa3\x51\xa6\x7c\xf9\xf0\x54\xbe\xbd\x84\x5f\x17\
\x97\x7a\x49\x9b\x85\xdd\x30\xbb\x49\x82\x0d\x6c\x07\x78\x3e\x28\
\x30\xb5\xa4\x0d\xb0\xff\x7c\xef\x84\xe6\x7e\xf6\x1d\x9d\x72\xfa\
\x10\x4e\x39\x7d\x88\x28\x82\xe3\x76\xf2\x14\x64\xe7\x64\x0f\xb4\
\xc4\xfe\x37\xc7\x78\x37\x8f\x87\x56\x56\x9c\x23\x7c\x02\xd3\xf8\
\xd5\x25\x6c\x19\xaa\x6c\x3c\x78\x7a\x40\x92\x7e\x68\xe5\xeb\xe0\
\x04\xd5\xdf\x11\xd2\x39\xf8\x86\x00\x39\x01\x51\x3c\x3b\xbf\x0f\
\xbf\x36\x28\x77\xfb\xad\x50\xee\xbf\x77\xca\x7d\x44\xaa\x12\x4c\
\xc6\xd2\x2f\xe9\x62\xcf\xe3\x95\x3d\xdb\xa9\xee\xc4\xaa\xee\xe4\
\xbd\x54\x42\xfb\xc3\x33\xd2\x38\xe7\x76\xf6\x8f\xce\x71\xf6\x43\
\x5c\xd2\x73\x9e\x4a\x3d\x49\x97\xe7\x8f\x9e\x2c\x2e\x19\x68\x8e\
\xf3\x47\x4f\x17\x97\x42\x88\xe5\xd9\xc1\x00\x59\x71\x36\xc2\x03\
\xbc\x9f\x18\xad\x52\xd8\x3b\xc2\xc3\x69\x5f\x71\x91\x19\xf8\x7a\
\x54\x3d\x7a\x54\x3d\x3a\xa8\x1e\x1d\x54\x8f\xee\xc3\x4c\xcf\xf6\
\x41\x3d\x3e\x18\x91\x62\xdb\x1f\x9d\xa0\xe6\x3f\x3b\x03\xbd\x2e\
\xe1\x70\xfe\x80\x79\xda\xd7\x4c\xa4\xcc\xd8\xc7\xcc\x25\xeb\x27\
\xa9\x34\x5c\x2d\x9f\x9e\xe1\x57\xde\xe7\x8a\xc9\x0c\xbe\x8e\xe0\
\xab\xc8\xfa\x26\x33\x4c\xa7\xcb\x83\xe1\xb7\x48\x95\x6e\x53\x2f\
\x60\xfc\x87\xa3\x43\x38\xde\x17\x5c\xf0\x74\xb9\xff\x3d\x8c\xbe\
\xff\xfd\x01\x02\xb2\xbf\xf7\x3d\x68\xe2\x65\x79\xc8\xac\x9f\x0a\
\x96\x28\x6d\x87\x14\xa6\x9f\x49\x29\x38\x5b\x3e\xc1\x21\xb9\xe9\
\x2b\x0d\x43\xf0\xe5\x13\x1a\x12\x4c\x52\x92\x48\x29\xc3\x21\x79\
\x65\x48\x19\x19\x53\xb0\xbe\x91\x06\xa0\xa9\xbd\xcd\xe2\xbe\xe8\
\x36\x8b\xbb\x0e\xc6\x64\xe5\x31\x01\xe5\x56\xf7\x29\x45\x9f\x27\
\x4a\x48\x77\x9f\xc5\x8d\xd1\x7d\x16\xb7\x1d\x8c\x99\x54\xee\x33\
\xab\x1d\x13\x46\x3d\x40\x7e\xe3\xea\x74\xfc\x26\x46\xb3\x0c\xb6\
\x51\x4e\x9f\x0d\x47\x20\x49\xcb\x6f\x8f\x50\x42\xfa\x0c\xf6\x1c\
\x3e\xa6\xb5\x57\x70\xf7\xd1\x43\x22\x1a\x50\x53\x3a\x15\xd2\x51\
\x4b\xfa\xe0\xfc\x49\xc5\xe2\xd4\x64\x40\x26\x35\x09\x4b\xd2\x9c\
\x0c\x97\x4a\xf1\x2c\x4e\x46\x05\x64\xb2\x54\x01\x42\x4e\xa4\x80\
\x9f\x46\x68\x5c\x68\x31\x32\xba\x42\xc6\xf4\xb9\x10\x46\x9b\x9c\
\x8c\xd2\x46\x34\x81\x28\x0d\xc8\x64\x89\x36\x26\xcd\xc9\x30\xc6\
\x52\xe0\x74\x94\x8c\xa9\x90\x59\xb7\x4e\xa2\x64\x78\x0d\xc3\x40\
\xde\x14\x20\xcb\x55\xeb\x49\x89\x0a\x19\xd6\xe7\xdc\x70\x99\xb5\
\x86\x48\x06\x64\xa4\xd1\x69\x26\x5b\x33\x4c\x05\x64\xb4\xe1\x49\
\x92\xb5\x16\x1f\x1d\x90\x31\xb0\x34\x0d\x6f\x2d\xcc\x69\x48\xa6\
\x56\xc9\x44\xc9\xb0\x3a\x86\x05\x93\x62\x7d\x95\x48\x9e\x34\x60\
\x18\xdf\x04\x11\x03\xd9\x94\xac\x09\x44\x21\xdf\xcb\x0c\x43\x15\
\xa9\x75\xd2\x84\x4c\xc8\xf7\xb2\xf8\x00\x19\x65\x98\x10\x69\x5b\
\xbe\x57\x85\x19\x54\x6b\x22\xd2\x0c\x54\x5b\xcb\xf5\xbe\x4e\x43\
\x47\xc9\x24\x75\x2a\xb1\xba\xec\x5b\x4c\x2a\x24\x53\x56\x42\x2d\
\x20\xe2\x1b\x54\x62\x0b\x86\x89\x4d\x0a\xba\xb9\xf8\x84\x7a\xbe\
\x62\x2e\x9a\x0b\x73\xa8\xe7\xaf\x6c\xc3\x96\xcb\xc3\xf3\x3d\x34\
\x9b\x9d\xcb\xfb\x8e\x5d\x5e\xed\x3c\x5e\x53\x75\x78\xbf\x06\xf5\
\x0a\x96\x47\x19\xeb\xf0\x82\x0b\xcb\x94\xcc\xb4\xf5\x77\x4b\x07\
\x8f\x2a\x07\x07\xd5\x83\x83\xca\xc1\xa6\xde\x2e\x93\x20\xbe\x19\
\xac\x51\x2b\x3f\x0a\x8c\x97\x16\xd2\x79\x81\xba\x9f\x4a\x91\x24\
\xda\x39\x81\x7d\x61\xe0\xcc\x15\xbf\xb3\xea\xea\xaa\x88\x0f\xc8\
\xd2\x7e\xc2\x53\x5c\x76\xd6\xce\xf5\xa5\x50\x46\x18\xeb\x02\x32\
\xd5\x37\x2a\xd5\xf8\x15\x47\x64\xa6\xcf\x32\x2d\x19\xdb\xec\xea\
\xb2\xd8\x90\x60\xd9\xc1\x4f\xd0\x69\xdd\x3d\xe6\x77\x45\xf7\x98\
\xdf\xf1\x26\x3f\x37\x8d\xf9\xb9\xc1\x3d\xc2\x12\x85\x11\x40\xa7\
\xda\x7b\xcc\x6f\xca\xde\x63\x7e\xcb\x1b\xdd\xdc\xfa\x10\xa2\x91\
\x9b\xbb\x8e\xc5\x5b\x79\xb9\x48\x4c\xc1\xbd\x09\x4f\x8c\x09\x9d\
\x35\xd0\xc4\x15\xdd\x07\xf7\x9c\xa4\x3a\x49\xbd\x0a\x05\x9b\x93\
\x26\x0d\x26\xa4\x02\x22\xc0\x7a\x9e\x79\x6f\xa0\x2f\x52\xc5\x14\
\x6f\x69\xf0\x80\x0a\x78\x47\x46\xe4\x53\x49\x54\x66\x9a\xf8\x80\
\x15\x3f\x87\x69\xb0\x93\xdc\x28\xef\x26\xf7\x75\x22\xb8\x6e\x30\
\x97\x8a\x7b\xbb\x6e\x69\x6c\xe5\xdd\x02\x31\xa3\x18\x48\x5a\xdb\
\x29\x55\x8c\x1d\x08\xab\xe2\x92\xe7\xe6\xa5\x31\x3c\x32\xa0\x92\
\x1a\x9e\x6a\xd6\x96\x55\x2a\xa0\x92\xa5\x69\x96\x9a\x96\x52\x53\
\xe5\x37\xe8\x82\x84\x09\xc5\x5a\xca\x6f\x1a\x12\xa9\x53\x28\x5b\
\x79\xb5\x2b\x33\xca\x32\x95\x36\x8b\x69\xd6\x83\xa3\xfb\x22\x53\
\xba\x89\xdf\x16\xb2\xbb\xcc\x28\xd0\x86\x2a\x55\x5b\x70\xbb\x2c\
\x33\x20\xd4\x29\x87\x28\xa0\x2d\xb7\xab\xf2\x8b\x79\x9c\x0c\x62\
\xbd\xb6\xec\x5e\xa3\x89\xb7\x72\x67\x83\x55\xde\x7c\x4a\x6c\x83\
\xc6\x69\x0e\x0f\xdf\xa0\xfd\x1a\x73\x4a\x6c\xd0\xc3\xcd\x85\x46\
\x6e\x34\x09\x4d\x05\x58\x85\x54\xae\x68\xa5\x9a\xfb\xb1\x5d\x5d\
\xae\xab\xcb\xdd\x58\x7c\x90\x54\xe3\x03\x66\xa6\x7a\x3e\x0d\x52\
\xe2\x4c\x55\x23\x04\x9e\xc0\xda\x34\x79\x4a\x9c\xf3\x7e\xaa\x33\
\x89\xcb\x03\x43\x04\x91\x41\x80\xcc\x68\xfd\x63\x88\x80\x41\x20\
\xa8\x5f\x91\xd9\x18\xa1\x74\x2d\xc6\x08\x5f\x33\x0e\x06\x47\x2a\
\x99\x6e\x8e\x12\x58\x52\xce\x16\xcb\xbe\x49\x7d\x6e\x01\xe8\xe1\
\x3a\xb4\x41\x81\xe8\x2b\x29\x52\xad\xfd\x7a\x9c\x3a\xbf\x15\xbc\
\x5c\x25\x94\xae\x4f\xcf\x96\x08\x27\x30\x57\xd0\x1e\x3e\xe1\xa0\
\xfb\x89\xd4\x09\x4b\x5d\x4a\x98\xf7\x8d\x4e\x13\xc6\x9d\xaf\x0e\
\x4a\x8f\x43\xb4\xad\x5d\x86\x58\xa1\xb7\x8e\x37\x62\xa7\x92\x82\
\x4a\xd4\x99\xa9\x46\x0b\x69\x32\x75\xce\x3b\x03\x87\x0a\x02\xf5\
\x58\x32\x1e\xb4\x7c\x2a\xb8\xc9\xe3\xfb\xea\x8c\x10\xcc\x04\xa0\
\xd0\x6e\x46\xa0\xbe\x0d\xa8\x50\xe5\x9c\x79\x01\x33\x02\x07\xc9\
\x83\x03\xee\x45\x9a\x32\x5d\x0d\x27\x52\x36\x75\xf1\x0b\x26\x24\
\xa4\x10\x31\x8c\x8a\x9a\x46\x8e\xbf\x96\x5a\xfb\x29\xc0\x6d\x81\
\xe8\x1b\x5f\x91\x80\xf9\xc2\x88\x69\x35\x9e\x48\xf9\xd4\x85\x69\
\x0c\x22\x46\xc5\x15\x18\x9c\x56\x83\x62\x62\x88\x71\x86\x46\xdd\
\x31\x26\x83\x30\x89\x3b\xe8\xb9\xee\x6b\x99\xa9\x24\xab\x0e\x2a\
\xa6\xd2\x0b\x83\xd1\x30\xc3\x28\xf4\x69\x05\x7a\x0e\xee\xa6\x48\
\x52\xe5\x83\x43\x89\x49\xc8\xc4\x95\x41\x38\xeb\x4b\x9e\x30\x29\
\xaa\x43\xca\xa9\x72\xf7\xc9\xfa\x60\x1d\x65\x54\x00\xe1\xc6\xca\
\x02\x18\x8c\x09\x37\x06\xce\x83\xe0\xae\x26\x01\xb7\x9d\x1a\x90\
\xea\x6a\x4d\x22\x55\x53\x9d\x0f\x9a\x68\x26\x39\x8f\x49\x3d\x90\
\x35\x30\x8c\x03\x17\x44\x2e\x03\xb9\xd6\x4e\xcc\x41\xc6\x52\xc3\
\x52\x21\x2c\xb8\x70\xdf\x89\x01\x7f\xa1\x5a\x7c\x49\xf5\x34\xb5\
\x83\x82\xe1\x4c\x81\x31\x31\x86\x86\x63\x32\xb0\xda\xa9\x01\x53\
\x6e\xc9\xa5\x53\xe3\xc9\x71\x21\x75\x8c\x1a\x29\x81\x34\x55\x2b\
\xd4\xec\xba\x85\x65\x21\x44\xca\x1c\x6c\x12\xa3\x0f\x96\x66\xc1\
\xca\x34\xd3\xcc\x8b\x47\x0a\x9e\x14\x44\xdd\x91\x31\xc1\xb5\xd0\
\xa0\xca\x9c\x33\x07\xd2\x02\xdf\x38\xc0\xf4\xc4\x29\x07\x86\x35\
\xaa\xd4\x82\x08\xa8\xc9\x44\x30\xf0\x4a\x9e\x38\xe5\x90\x00\x1f\
\x61\xad\x59\x81\xe5\xd6\xf1\x0f\x66\x94\x4d\xc7\x39\x23\x95\x60\
\x9a\x47\x61\xa8\x4e\x09\x85\x29\x61\x19\xac\xff\x27\x4e\x3b\x30\
\x89\x1e\xa3\xe3\xab\xea\x4b\x8a\x9e\xec\x8c\x40\xa5\xf2\x44\xc3\
\x14\x9e\x3a\xd1\x92\x49\xca\xb2\x40\xb4\xc6\xd3\x49\xb1\x84\x0c\
\xcb\x62\x4b\x28\x57\xce\x4e\x6b\x67\x28\x37\x4f\x9c\x9e\x50\xe0\
\xae\xe6\x65\x44\x2c\x77\x48\xcd\xab\xe9\x9c\x74\x32\x9d\x3a\x04\
\x60\xee\xa0\xd9\x58\xac\x8e\xc8\x45\xbf\x3c\x1e\x5a\x09\x4b\x69\
\x3a\x9d\x39\x4a\x70\x82\x4e\x45\x2c\x31\x04\x84\x60\x05\x78\x4a\
\xda\x73\xc4\x64\x39\x47\x50\xed\xaa\xa8\x98\xbb\x7b\x76\x64\x68\
\x72\x6e\xc1\x48\xed\x25\x1c\xee\x2c\xd3\xf5\xe2\xb6\x2e\xa5\x22\
\xcb\x29\x95\x3a\x73\x18\x73\x54\xa7\x75\x21\x05\x10\x02\x85\xc2\
\x74\x51\x8b\x90\x0a\xd6\x68\x3c\x99\x3c\x0d\xc9\x28\xa6\x8d\x9f\
\x11\x88\x12\x78\xcf\xba\xc1\x9c\x78\x40\x25\x31\x99\x49\x8a\xe4\
\xbf\x10\x14\x81\x45\xc9\x54\x0b\x23\x20\x68\x0c\x94\x81\xbf\x27\
\xa4\x2a\x75\x83\xac\xff\xb4\x5a\x18\x01\xdb\x0f\x36\xc3\x07\xd9\
\x40\x26\xe5\xd2\xa4\xf1\x82\xd8\x34\x2c\x88\x81\x4b\x90\xf9\xe8\
\x04\x5d\x08\x05\x42\xd5\x00\x9b\xb0\x20\x96\x80\x85\x53\x05\x19\
\xd0\x1e\xb8\x7a\xa2\x64\xaa\x05\xb1\x75\xee\xce\x66\x32\xe4\xc4\
\xd4\xd6\x57\x50\xc9\x16\xc4\x24\x84\xdd\xd1\x1c\x0f\x10\xab\xd6\
\x45\xd0\x78\x4b\x23\x73\x2a\x68\x4d\x92\x06\x53\xaa\x96\x45\x60\
\x49\xc0\x55\x4c\xe4\x64\x8c\x66\xba\x09\x99\x6a\x59\x44\xa0\x5a\
\x12\x69\x31\x1b\x90\x48\x1e\xc5\x19\xc8\x54\xcb\x22\xac\x2f\x0c\
\x03\xe1\x2d\xc8\x70\x5c\x67\x71\x32\x61\xb6\x08\xdc\x37\x5e\x4c\
\x06\xf4\x8f\x12\xb1\xd5\x09\x54\xaa\xe9\x22\xf4\x85\x55\x22\x8a\
\xc9\x40\x9c\xad\xa2\xd1\x3a\x90\xa9\xa6\x07\xd7\x39\xa6\x11\x32\
\xe8\x6e\xd6\x24\x33\x40\x82\x53\x9d\xf2\xb4\x10\x68\x0c\x29\x62\
\x61\x3b\x50\xab\xa6\x10\x60\x59\x62\x85\x57\x17\xcb\x8b\x01\xe3\
\x63\xab\x14\xc8\x54\x73\x08\x02\xfc\x07\x86\xc9\x4e\xbf\xd8\x41\
\x7f\x65\x71\xa4\x59\x95\xed\x40\x86\x67\x0c\xf5\x67\xae\x7a\x58\
\xda\x40\x96\x59\xc0\x76\x70\xf3\x20\xea\x90\xa5\x2a\x28\xd8\xe9\
\x26\x48\xa7\x01\x19\x91\x89\x24\xd7\x60\xa0\x96\x61\x6e\xba\x01\
\x19\x13\x90\x61\xba\x54\xfe\x04\x1b\x21\xa5\x96\x0d\xb0\xc9\x02\
\x32\xf5\x51\x44\x84\x0c\x46\x0e\x35\xe2\xb3\x2e\x3c\x88\x50\xc3\
\x90\xa0\x96\x1a\x07\xbd\xe8\x73\x62\xd8\xfa\x63\x8c\xce\xa2\x9a\
\x4c\x04\xec\xe7\xe0\xb5\x49\x95\xfb\xf2\x69\x1f\xcb\xbd\xba\xc1\
\xa4\x74\x20\x45\x89\x32\x19\x73\xcb\x1e\xf4\xa3\xd2\x06\x7d\xc1\
\x28\x99\x34\x20\x93\x2a\xe6\x93\x6b\x18\xac\x42\xf0\x1a\x85\x5b\
\x04\xcc\x07\xcb\x6e\x32\xa1\xf3\x3f\x7a\x02\xf6\x03\xac\x62\x74\
\x7d\x89\x80\xf9\x0a\xc2\xf4\x34\xf3\xb5\x6f\x50\xd6\x60\x4a\xd1\
\x21\x8f\x92\x19\x07\x2a\x48\x27\x42\x6b\x99\x93\x01\x87\x9b\x47\
\x1d\x0d\x20\x33\x09\xb2\xb2\xf5\x71\x5e\x84\x0c\x06\x77\x35\x56\
\x70\x5d\x04\x17\xa1\x86\x51\x5b\x6d\x57\x90\xc4\xab\x5d\x0a\x1c\
\xec\x11\xf6\xe1\xf0\xe8\xa2\x55\xd3\xb0\xf3\x05\x6c\xa1\xf2\x2e\
\x19\x90\x01\x5f\x3b\xba\x64\x55\x95\xf9\x14\x65\x67\x99\x57\xae\
\x98\xf5\xc9\xb2\x26\x37\x56\xe1\x3d\xf8\x63\x10\xa3\x40\x38\xe3\
\xa8\x80\x43\x04\x71\x71\xdc\x4d\x50\x55\xde\xa3\xcf\x2b\xc1\x3f\
\xf4\x4c\x4b\xc0\xc0\x67\xf1\x2a\x0e\x90\xa9\xf0\x5e\x80\x24\x42\
\x38\x9b\xb8\xd9\x80\x85\x05\x71\x4a\x64\x03\x7c\xa7\x01\x99\x4c\
\x60\xba\xda\x91\x01\x4f\x08\xc2\xbd\x68\x83\x12\x90\x99\x55\xc8\
\xa0\x11\x55\x89\xbf\x29\x0c\x29\xc1\xf9\x88\x6b\x7a\x35\x9d\x87\
\x64\x6a\xe3\xf9\x08\x19\x8c\xe1\x6b\x44\x70\x5d\xa4\x1e\xa1\x86\
\x21\xfc\x2a\xb5\xb5\x91\x7a\x84\x1a\x46\xe7\x35\xd4\xc0\xfa\xe8\
\x2c\x63\x1e\x30\x30\x03\xa0\xa7\x75\x54\x1f\x99\xaa\x30\xa1\x2d\
\x44\x8b\xca\x73\x32\x22\x4b\x54\x12\xd5\x8e\xa6\x2a\x4c\x14\xa2\
\x08\xee\x23\x16\x86\xeb\x85\x73\x16\xd5\x47\xa6\x2a\x4c\xe8\x27\
\xa0\xf7\xe3\x13\x0b\x10\xc0\x18\x95\x44\x6b\x8b\x40\x66\x16\x90\
\x01\x3b\xe1\x3b\x7a\x30\x01\xc1\x32\x69\xa2\xcb\xd5\x54\x65\x09\
\x5d\xa8\x24\x31\xde\x91\x06\xcd\x0d\xb6\x9f\xa7\x0d\xc8\x2c\x02\
\x32\x9a\xf3\x34\xbf\x27\x08\x0e\x34\x04\x3e\x71\x32\xb3\x24\x20\
\x53\x9f\x73\x89\x90\xc1\x4c\x4a\x8d\xf4\x80\xeb\x0b\x5e\x47\xbe\
\x6a\xb3\x3e\x07\x13\x19\x5d\x26\x59\xc0\x75\xb4\x42\x0a\x82\xc3\
\x42\x13\x01\xd0\x51\xd9\xc9\x02\xa6\x6b\x74\xf2\x44\xae\xcf\xc0\
\x05\x31\x29\x17\x51\xa6\x67\x01\xd3\x29\xb4\x50\xde\x3b\x03\x45\
\x0f\x7e\xab\xe4\x0d\x66\x33\x5f\x99\x8d\xd1\xba\xf0\x16\x12\x25\
\x92\xb8\x1f\x9d\x05\x5c\x07\x68\x18\xf6\xa3\xe5\xae\x8b\x30\xa0\
\xdd\xa2\x8b\x3d\x0b\xb8\x0e\xd7\x49\xe3\x63\x66\xec\x31\xcb\xc0\
\x77\x89\x2a\xd7\x6c\xc6\x36\xc8\x4e\x91\x1c\x8b\x90\xc1\x9c\x57\
\x8d\xec\x00\x24\x9a\x4a\x01\xce\xbe\x82\x53\x94\xc5\x15\xcf\x78\
\x65\xa9\x2b\x61\xf2\xb0\x07\x2c\xac\x48\x41\xe5\x47\x97\xc5\x38\
\xe0\x3a\xd8\x54\x09\x9e\x98\xc3\x19\x4c\x2c\x9a\x54\x13\x35\xf0\
\xe3\x80\xeb\x78\x1d\xc3\x1a\xb2\x27\x03\xba\x39\xde\xd0\x0c\x64\
\x16\xa1\x36\x65\x10\x69\xf8\xde\x61\xf4\xee\xc0\x69\x8c\x72\x7d\
\x1c\x70\x1d\xb3\x4f\x49\xae\x06\xd1\xe0\x83\x32\x8d\xfb\xbd\xe3\
\xd9\xaa\xc1\x09\x53\x90\x11\x12\x98\x76\xac\xf1\xec\x56\x73\x8b\
\x11\x3a\x98\x74\xac\xa5\x53\x49\x2d\xc6\xc4\xd8\xd4\x59\xbe\xba\
\xc4\x62\xcc\xbc\xcb\x5a\x0f\xf3\x6a\xc9\xc3\xa6\x55\x6e\x70\xd3\
\xb3\x4c\x76\x55\xee\x95\x62\xb2\x9a\x64\x8b\x59\xba\xa9\x98\xec\
\xa0\x6b\x56\xe5\x6e\x45\xae\xab\x72\x3f\x59\x5c\xa6\xae\xc8\x9d\
\xae\x74\xc1\x32\x08\x04\x30\x49\x87\x35\x6e\x83\x6e\x2b\xd6\x6f\
\xa8\xc4\x8d\xa1\x66\x92\x64\x18\x42\x51\x17\x2c\xb8\xc8\x82\x29\
\xf0\x1f\x7d\x1b\xac\xbf\x14\x4b\xdc\x58\xea\x30\xc2\xc8\xc8\x53\
\x5f\x8c\xad\xaf\x77\x6a\xac\x25\x2b\xe6\x8b\xaa\x18\x25\x70\xa0\
\x17\x14\xb9\xb3\x3e\x53\xd2\x44\x9f\xb5\x0a\xe2\xdd\x04\x93\xfc\
\x8c\xbb\x5a\x19\x3a\xad\x0a\x22\x4c\x57\xce\x65\xe0\x86\x80\x8d\
\xcc\x5c\x95\x13\x25\x20\x13\x99\x2b\x5b\xe1\x7d\x32\x95\xb0\xb5\
\x25\x6e\xb0\x8a\xc2\x28\xd1\xe0\x41\xac\x72\xc8\x5c\x9d\x10\xf8\
\x1e\x60\x92\x64\xe6\xaa\x91\x38\xa6\xd1\x09\x37\x79\x09\x14\x82\
\x40\xac\x9e\xd0\x8c\x12\xb4\x58\xa9\x58\x57\xe1\x36\xa0\x33\x99\
\x89\x35\xe8\x56\x54\xab\xc6\xea\x8c\x7f\x0c\x0d\xf0\xe5\x89\x2f\
\x91\xb1\x04\x6c\x37\xa6\x31\x36\x94\xb6\x4d\xaa\xa3\x8f\xa1\x95\
\x15\x30\xf8\xc5\xf9\x68\xe0\xf7\x83\xff\x2e\xf1\xf9\x92\x91\xf5\
\x4e\x21\xf6\x4e\xa5\x5e\x53\xd4\xce\xb0\xf4\x6f\xa2\x15\x39\xc0\
\xda\x9b\x1e\xf0\x31\x8d\x2f\xc7\x09\x0a\x79\x7c\x35\x8e\x63\xbf\
\x13\xc7\xc4\xca\xda\x6a\x36\xde\x9a\x6e\x50\x41\x57\xba\x34\x5c\
\x51\xfe\xe3\xf8\x80\x88\x91\x9a\x17\x9d\x0a\xe8\x8a\xcb\x75\x95\
\xec\x04\x9f\xbe\x4b\xb3\x58\x4d\x16\xce\x2b\x58\x87\x59\x40\x5f\
\xeb\x84\x05\xaa\x28\x67\xea\xab\x9b\x0a\x1f\x05\x11\x6b\x6a\xd8\
\x58\x95\x49\xb0\x36\x19\x1d\x2d\xe7\x9c\xf0\x75\xbd\x52\xe5\x9a\
\x24\x67\x33\x09\x8d\x40\x16\x24\x08\x9b\x0c\x2b\xe8\x4a\xb8\x26\
\x0e\xec\xa7\x10\x32\xac\xf1\xe7\xc5\xea\x0c\xcd\x73\xa2\x62\x6b\
\x3e\xe9\xa7\x59\xee\x86\x57\xcb\xc2\x0c\xb0\xc8\xb4\x52\x79\x2b\
\x85\x60\x52\x1b\xc7\x18\x58\x6e\xdc\x80\xcf\xee\xd6\x17\xe8\x3d\
\xa5\x50\xc9\xac\x2f\x54\x4b\x88\xea\x74\x6c\x89\x95\xa7\x13\x14\
\xce\x71\x44\x09\xea\x53\x3a\xce\xe1\x03\x2d\xa0\x1d\x7c\x7f\x3a\
\xb6\x4c\xd2\xa5\x4e\x6c\x20\x12\x30\xa1\x02\xca\xab\xd4\x19\x84\
\x62\x2c\x4d\x63\x52\x43\xbd\x9d\x92\xfb\xf9\x54\x9b\x07\xe0\x8e\
\x75\x86\x5d\x3d\x34\x7e\x86\x75\x37\x91\x88\x35\x65\x6a\xec\x56\
\xa0\x5e\xe2\x56\xdd\x2c\xc1\x88\x20\xb6\x10\xc1\xe5\x77\x8c\x3d\
\x3d\x20\x10\x81\x00\x4c\xe5\x34\x87\x3c\x35\x06\xc4\x35\x5e\xd0\
\x2e\xd4\x0c\x5f\xad\x8a\x27\x2c\xc5\x38\x31\x42\x44\x96\x5c\x57\
\xc6\x4a\x1e\xaa\xa5\xc2\xed\xe1\xd8\xdd\x07\xd7\x97\x4a\xe1\x29\
\x97\x98\x5c\x68\x55\x0a\x57\xeb\x0b\x01\xb9\xdd\xdc\xaa\x1c\x8e\
\xa5\x0e\x21\x98\x2e\x3d\x5d\xc0\x4d\xb4\x44\x11\x56\xc3\xb1\x9a\
\x90\xe9\x34\x2f\xdb\xc1\x05\x2c\x89\x66\x70\xc3\x6a\x38\x50\xd1\
\x8c\xe7\x8b\x46\x60\x5b\x8c\x34\x0d\xca\xcf\xd5\xfa\x18\xd6\x33\
\x53\x99\xa7\x70\xfb\x10\x26\xa6\xad\x6b\xe1\x40\x05\x54\x77\xde\
\xa8\xcb\x70\x95\xf1\x68\x35\x33\x2c\x85\x33\xb0\x7b\x42\x0a\xed\
\xb3\x2f\x7d\xae\x59\x34\x6d\x12\x16\xc2\xc1\x60\x62\x79\x58\x79\
\xcf\xc1\xb0\x24\x8b\x26\x4d\xc2\x32\xf8\x3a\x87\x68\xbb\x2a\x38\
\xc4\x50\xc0\x60\x21\x3c\x31\x06\x2a\x41\x47\x63\xe8\xb0\x0a\x2e\
\xb0\x57\x07\xbb\x73\x1c\x15\x70\xb4\x45\x3c\xe5\x11\x56\xc1\xc1\
\xec\xa5\x19\x76\x62\xfa\xb9\x24\x42\xc5\x93\x6e\x61\x11\x7c\x8d\
\x7b\xb6\x55\xa1\x57\xc0\x99\x2a\xcb\xdb\xf1\xc1\x10\xb0\x2c\x4b\
\xa2\x39\xb7\xa0\xce\x8b\x8f\xa9\x4a\x96\xa5\xb9\xec\xe0\x13\x0b\
\xf1\x9c\x1b\x5b\xe9\xe9\x40\x75\xe3\xdb\xf1\xd1\xa9\x31\x59\x93\
\x62\x71\xb5\xa5\x03\x58\x25\x12\x2d\xf3\x35\x25\x40\x59\x47\x9b\
\xfa\xc3\x22\xaf\x40\xf5\x2c\xb3\x24\x7f\x66\x87\xa5\x9c\x8b\x06\
\xf5\xef\x6a\x9d\x47\x52\x35\xd6\x14\xcf\x0f\x19\x66\xb2\x06\x77\
\x64\x02\x2a\x60\xf2\x99\xca\x9b\xdf\x13\xe0\x50\x16\x15\x9b\xa0\
\xc2\x5b\xe7\x46\x6f\x55\xdc\xad\x71\x90\xb7\x2a\xeb\x62\x77\x93\
\xe6\x79\x17\x06\x33\xd8\x4c\x09\x86\xb7\x65\x59\x17\x31\x16\x69\
\xaa\x3c\x99\x0c\xd9\x9f\x36\xa9\x81\x86\x0c\x47\xa7\x47\x78\xb1\
\x81\x2b\x40\x19\x37\x29\x59\xa7\x01\x19\x2e\x13\xee\x5b\xb6\x38\
\x36\x06\xe9\x78\x7a\x5e\xac\x94\xf6\x64\x92\x65\xa6\x28\xca\x99\
\x24\x91\x4d\x4a\xd5\x59\xb0\x2c\x41\x37\x98\x52\x85\x50\xa4\x3a\
\x63\xd1\x3c\x64\x50\xd7\x15\xd8\x22\x2e\xa4\x5f\x97\x58\x68\x04\
\xb2\xf1\xda\x5e\x50\xd7\x5d\x0d\x75\xb6\x2a\xe8\xd6\x06\x31\x5b\
\x15\x73\xd1\x58\x81\x6b\xe7\xf3\xab\x98\x07\x04\xaf\xaf\x49\x05\
\x35\x0d\x0c\x67\xc6\x78\x22\x4b\xc5\x5c\xc3\xe3\x0f\xca\x84\xe5\
\x5c\x8c\xb9\x0c\x3d\xb3\x96\x57\xcf\x31\x6b\xdb\xb6\x9e\x0b\x8e\
\x89\x61\x92\xf9\x47\xbd\x38\x3e\x7e\x63\xe2\xbd\x12\x41\x39\x17\
\xfd\x36\xd0\xe8\x3e\xc5\xaf\x30\x04\xd2\xf1\x94\x71\x50\xcd\xc5\
\xf0\x03\xe4\x86\x17\x95\x02\x86\x8f\x8f\x45\x97\x66\x50\xcd\xa5\
\xbe\x69\x95\xe7\x7a\xb1\xaf\x2d\x4b\x93\x78\x1d\x2f\xa8\xe6\xd6\
\x04\xa3\x5b\x15\x60\x83\x30\x73\xab\xb2\x6b\x10\x67\x6e\x55\x6c\
\xc5\x27\xc5\xa4\xf4\xaf\x70\x41\xa5\x6c\xb0\xe1\xbd\x65\xa9\x15\
\x02\xc4\xa2\xbd\x0f\x3b\x45\xc1\xa5\x8e\x5b\xcb\xa0\xd2\x8a\xcd\
\xc3\x3c\xf1\xe2\x82\xaa\x14\x9b\x71\xdb\x16\x5a\x51\x72\xb1\xef\
\xba\x54\x35\x11\x3c\xfa\xec\x5b\x58\x67\xe5\xa8\xb8\xb3\xbc\xda\
\x01\x3a\x4f\xa9\x26\x37\x54\x29\xbd\x60\x10\x0e\x51\x82\x9f\x0a\
\x26\xce\x74\x1a\x7d\xfd\x42\x58\x65\x65\x98\x2a\xcb\xbc\x6f\x05\
\x6a\x94\x63\xf7\x59\x9c\x45\xd5\xc2\x4b\x7d\xae\x60\xab\x0a\x2b\
\xf8\x8a\x60\x57\x7c\x0d\x1a\xd6\x23\xb6\x9c\xc5\x0b\x4a\x41\x85\
\x15\xce\x00\x23\x92\x1b\x27\x50\x0e\xa0\xf0\xe2\xcb\x31\xa8\xb0\
\x26\x98\x35\x55\xa6\xe8\xf2\x51\xa9\xc4\xec\x5a\xbb\x02\x2b\x79\
\xe2\x79\x87\x06\x47\x99\xc9\x54\xb4\x0d\x38\xac\xaf\x26\x58\x4f\
\xcd\x1f\xdd\xc4\x1c\x87\x10\x2a\x5e\xf6\x0b\xca\xab\x09\xbe\x0e\
\x05\x81\xf0\x1e\x84\x32\xd8\x2f\xd2\xb2\xba\x5a\x9f\x8b\xd9\xaa\
\x28\x8a\x2f\x8f\x61\x59\xe1\xaa\x61\x50\x15\x0f\x5a\x82\x9a\x28\
\x86\x93\x98\xeb\xcb\x1b\x0e\x98\x11\x0d\xd6\xf6\x38\x5c\x95\x98\
\x5f\xcc\xfb\x0d\x24\x40\x65\xf0\x49\x98\x76\x15\x51\x7c\xe8\x3d\
\xd1\xde\x9e\xe0\x23\x5b\x89\x8c\x77\x6b\xaf\x14\x44\x41\xec\x25\
\xd7\x79\xf2\xa5\x0f\xde\x23\xb6\x05\xb6\xab\x87\xe2\xe3\x1a\xa8\
\xae\x8a\x1e\x15\x6c\xe0\x8b\xcf\x65\x16\x1a\x02\x70\xac\xfc\xe3\
\xdd\x68\x76\x25\x3e\x65\x1b\xa7\x52\x09\x4f\xd7\x65\xcc\xb6\xaa\
\xab\xae\xcd\x86\xc5\xaa\xab\x72\x4d\x95\xb6\x9c\xe7\xda\xae\x42\
\x1b\xa4\xb9\xb6\xaa\xd0\x96\xd2\x5c\x5b\x15\x66\xaf\x21\x95\x95\
\x17\x67\xe1\xdf\xb7\x0f\x06\x6f\x2f\xf3\x57\x98\xae\xbc\xa2\x92\
\xb9\x57\x54\xde\xea\x7d\xd7\x9b\xf7\x26\xf4\x37\xa5\xdc\xab\x2a\
\xed\x6b\x2a\x99\x7d\x4d\x65\xb2\xf9\x35\x95\x2b\x03\x2d\x8f\x87\
\x87\x6f\x2f\x8f\xb1\xd0\x96\x2c\x8f\xb1\xce\x06\x1b\x7a\xad\x62\
\x5f\x67\x12\x5b\xb5\x8e\xb1\xbc\x86\xdf\xc0\x12\xcb\xe5\xb1\x2b\
\x1e\x8b\x05\x9b\x83\x11\x38\x3e\x1c\xc1\xd5\x87\x34\xf0\xf1\xe1\
\x37\xb6\xea\x88\xff\xc3\xb7\xfb\x78\xc4\x46\x60\x32\x4d\x25\x78\
\xa0\xf4\x15\xfb\x06\x32\x85\x6f\x07\x84\xef\xdf\xe2\x94\xec\x3b\
\x4e\xf1\x9d\xa6\xff\xd6\xfb\x9b\x7b\xa7\xe9\xdf\x22\xef\x34\xfd\
\x5b\xcd\x3b\x4d\xff\x56\x79\xa7\xe9\xdf\x56\xde\xa4\x3a\xa0\xb7\
\xc0\x5f\xf9\x2d\xa5\xf9\x7b\x4f\x1f\x8d\xa8\x84\xfd\x68\xb4\x87\
\x9b\xe5\xff\x07\x59\x92\xd3\x02\x9c\x14\x00\x2d\x00\x00\x00\xbe\
\x6d\x6b\x42\x53\x78\x9c\x5d\x8e\xcd\x0e\x82\x30\x10\x84\x7b\xf3\
\x35\x7c\x04\xc0\xf0\xe3\x51\xca\x5f\xc3\x56\x0d\xd4\x08\xde\xc0\
\xd8\x84\xab\x26\x4d\xcc\x66\xdf\xdd\x16\xd0\x83\x7b\xf9\x26\x3b\
\x3b\x9b\x91\x75\x6a\xb0\x68\xf8\x84\x3e\x75\xc0\x35\x7a\xd4\x2f\
\xb8\x8a\x4c\x63\x10\x46\x54\x09\xa5\xd1\x8f\x03\x6a\xf2\x56\xa3\
\x63\x7b\x99\xec\x41\x5a\xda\x94\x5e\x87\xa0\x07\x83\x70\xe8\x0d\
\xa6\x75\x39\x5a\xfb\xd2\x80\x03\x1c\xe5\x0b\xd9\x86\x01\x1b\xd8\
\x9b\x3d\xd8\x93\x6d\x99\x4f\xb2\x9d\x4d\x0e\x36\xc4\x73\x97\xe4\
\xb5\x5b\xe4\x20\x0d\x0a\x59\x1a\xec\x4e\xc5\x5c\x66\xc1\x5f\xb5\
\x73\x67\xfb\x7a\x1e\x55\x4e\x0c\x77\x52\xed\x6d\xc2\xc4\x23\x25\
\xec\x2b\x25\xb2\x09\x63\xbd\x0f\x12\x9f\x56\x1d\xc6\xe3\xf0\xd5\
\x43\xb0\x8b\x7e\x3a\x4c\x42\xa2\x4c\x1d\x0c\xd2\x3a\x1f\x1c\x91\
\x5c\xf5\x12\x3a\xa1\x6d\x00\x00\x0a\xb5\x6d\x6b\x42\x54\xfa\xce\
\xca\xfe\x00\x7f\x57\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x9c\xed\x9d\x8d\x91\
\xdb\x38\x0c\x46\x53\x48\x1a\x49\x21\x29\x24\x8d\xa4\x90\x14\x92\
\x46\x52\x48\x6e\x90\x9b\x77\xf3\xee\x0b\x48\xc9\x59\xaf\x1d\xdb\
\x78\x33\x9e\xd5\xea\x87\xa4\x08\x12\xa2\x00\x90\xfa\xf9\x73\x18\
\x86\x61\x18\x86\x61\x18\x86\x61\x18\x86\x61\x78\x49\xbe\x7f\xff\
\xfe\xdb\xef\xc7\x8f\x1f\xff\x1d\xbb\x27\x55\x8e\x7b\x97\xe1\xd9\
\xf9\xf0\xe1\xc3\x6f\xbf\xaf\x5f\xbf\xfe\xaa\xf7\xda\xbe\x67\xfd\
\x57\x39\xaa\x0c\xc3\xfb\x81\xbc\xcf\xe2\xf6\xf0\x96\xfe\xb9\xbb\
\xb6\x8e\xd5\x6f\x27\x7f\xae\x47\x57\x0d\x7b\x3e\x7e\xfc\xd8\xd6\
\xd5\x4a\xfe\xee\xff\x6c\x7f\xfa\xf4\xe9\xd7\xdf\x6f\xdf\xbe\xfd\
\xfc\xf2\xe5\xcb\x7f\xfa\xa2\xf6\x17\xb5\xaf\xf2\x29\x2a\x2f\xce\
\xe5\x18\xe7\x91\x4e\xfd\x5c\xae\xda\xcf\xb1\xda\x6f\xf9\x93\x76\
\x9d\x5b\x69\x5a\x5f\xd5\xb1\x61\xcf\x4a\xce\x9d\xfe\x2f\x3a\xf9\
\x7f\xfe\xfc\xf9\xd7\x36\xf5\x4f\xff\x2d\xb9\x94\x0c\x90\x39\x32\
\x62\x3f\xe7\x54\xfe\xc8\x14\x99\xd7\xfe\x6c\x17\xf4\x6b\xce\x25\
\x3f\xb7\x13\xda\x02\xe5\x1b\xf6\xec\xe4\x5f\x32\xf2\xf8\xaf\xe8\
\xe4\xcf\x31\xe4\x42\x7f\xb5\x0c\x91\x73\xb5\x15\xf7\x59\xe4\xc7\
\x35\xe0\x3e\xbe\x3a\x86\x3e\x00\xca\x63\x3d\x31\xec\xd9\xc9\xff\
\xac\xfe\x4f\xf9\x77\xef\x0c\xe8\x79\xe4\x5e\x7f\xab\x2d\x20\xd7\
\xda\xb6\x2c\xfd\xcc\x58\xc9\xdf\x7a\x00\xe8\xfb\x95\x9e\x75\xc3\
\xd0\x73\x4d\xf9\x23\xd7\x92\x55\x5d\xeb\x3e\x48\x5f\xf7\x98\xc0\
\x79\xf8\x59\x92\xc7\x76\xba\x21\xdb\x89\xf5\x8c\xe5\x5f\x6d\xc4\
\x69\x0c\xff\x52\x75\xe2\xfe\x73\xb4\x1f\x5d\xcd\x58\x9c\x6d\x1f\
\xa7\x5f\x67\xfb\x29\x59\x59\xde\x29\x0f\xfa\x6d\xe6\x5d\xd7\x79\
\x2c\x97\xb2\xac\x6d\xda\x20\x7a\x86\x31\xc9\xea\x9a\x61\x18\x86\
\x61\x18\x86\x61\x78\x45\x18\xc7\xdf\x93\x47\xb0\xd7\xa7\xff\xf3\
\x6f\x2f\xef\x59\xf2\xdd\xfa\x1e\x5c\xea\x6b\xba\x36\xf5\xae\x78\
\x84\xcb\xe8\xed\x6a\x07\xcf\xe6\x67\x48\x9d\xf0\x96\xf6\xbe\xbb\
\x96\xf7\xf3\x9d\xfc\xcf\xd8\xf1\x8f\x7c\x86\x79\x9e\xf7\x75\xbe\
\xc4\x2e\xbd\x95\xfc\xff\x86\xfe\xf3\x16\x5c\xfe\xf4\xb3\x61\xcf\
\xc3\xa6\x8e\x4d\x26\xfd\x77\xe9\xdb\xc3\x17\xe4\x6b\xe9\x23\x9d\
\xcf\x90\xfa\x24\x3f\xce\x5d\xf9\x03\x4d\xe7\x6f\xa4\x8c\x5c\x8f\
\xfd\xc8\xbe\x2c\xdb\x2f\xed\xdf\xda\xa5\x97\xf2\xb7\x1f\xe2\x51\
\xdb\x40\xca\xdf\x7e\x36\x1f\x73\x3f\x29\x7d\x89\xce\x2c\xb9\x20\
\x1b\x6c\xbe\xec\xe7\x9c\xf4\x0b\xd8\x67\x58\x20\x23\xec\x76\x05\
\xe7\x51\xe7\xb4\x0f\x93\xf6\x67\xb7\x1d\xda\x0c\xf7\x42\x9e\x99\
\x16\xf2\xee\xec\xd9\x99\x5e\xca\xdf\x75\xf4\xa8\xe3\x81\xae\xff\
\x03\x75\x68\xbd\xe0\xbe\x6d\x3f\x8e\x7d\x7b\x5d\x8c\xd0\x2e\x7e\
\xc8\x7d\xd0\x76\x5f\xf7\xff\x4a\x3b\xeb\x78\xe7\x6f\xcc\x67\x4a\
\xf6\xeb\xf4\x59\x5d\x92\xde\xb3\xeb\x7f\x40\xb6\xe9\x03\x2e\xec\
\xab\x29\x99\xe1\x6f\x71\x7f\x43\x96\xfc\xbf\x93\x3f\x7d\xdf\x3e\
\x40\xc7\xfb\x58\x9f\xc0\xce\xdf\x98\xf2\x27\x2d\xfc\x00\xe4\xd3\
\xc9\xff\x28\xbd\x57\x91\x3f\xcf\xf6\xfa\x9b\xb2\xb1\xbc\x8b\xf4\
\xc5\xdb\x17\xe7\xfa\xde\xe9\x06\xf4\x89\xdb\x09\xba\xc5\xba\x18\
\x76\xfe\xc6\x94\xbf\xcf\xeb\xe4\x4f\x9c\xca\x99\xf4\x52\xfe\x9c\
\xd7\xf9\xc3\xfe\x76\xec\x5b\x4b\x3f\x5b\x41\x7d\xa5\x3f\x2d\xfd\
\x77\xf6\xed\xe5\xb5\xd4\x6d\xd1\xd5\x91\xfd\x7d\x3c\x47\xc8\x63\
\xe5\x4b\x84\x95\xbf\x31\x7d\x88\xbc\xa7\x75\xe5\xf1\x78\xe6\x4c\
\x7a\xde\xa6\x1e\x1e\x55\xfe\xc3\x30\x0c\xc3\x30\x0c\xc3\x50\x63\
\x5b\xec\x9b\xfc\x3c\x3e\xbf\x67\x5c\x3d\xf6\x80\x19\x63\xbf\x1f\
\xb6\x7d\xf1\xb3\x4d\xbe\x8b\x0b\xbd\x15\x7f\xc3\xfc\xc3\x67\x67\
\x67\xd3\xea\xfc\xe0\xd6\x09\xe8\x0e\xc7\x84\xe7\xdc\xc0\xf4\x2d\
\x42\x5e\xeb\xf3\x6b\x5f\x67\x3f\xcc\xf2\xa0\xaf\x46\x3f\x9c\xa3\
\xb3\xab\x20\xff\x95\xdd\xd7\x76\x30\x7c\x7c\xd8\x8e\xd0\x1b\xd8\
\x7f\x3d\xc7\xa7\x48\xbf\x50\xc6\xee\xdb\x67\xe7\x73\xec\xb7\xe3\
\x2f\xc7\x68\x1f\xd8\x91\xf1\x49\x0d\xc7\x74\xfd\xdc\x7e\x17\xd7\
\x7b\x91\xf2\xe7\xfa\x6e\x5e\xa7\x7d\x81\xb6\xef\x5a\xe6\xf8\x0f\
\xba\x79\x44\x9e\xeb\x97\xf3\xcf\xec\xb7\xf3\x35\xe8\x88\xe9\xff\
\xe7\x58\xc9\x7f\xa5\xff\x57\x76\xf0\xf4\xa5\xa7\x4f\x1d\x1b\x29\
\xed\x22\xfb\xb1\x63\x30\xce\x1c\xcb\x76\x59\xe0\x93\xd8\xc5\x0b\
\x0c\xff\xe7\x5a\xf2\xef\x7c\x7e\xe0\xb9\x5f\x25\x2f\xcf\x05\x2c\
\xce\xf4\x7f\x70\x5c\x80\xcb\xc9\xb9\x79\xce\xb0\xe7\x5a\xf2\x2f\
\xd0\xc9\xe9\x3b\x2f\x78\x86\x17\xd6\xe1\xce\x73\xf5\xfc\x5f\xe9\
\x06\xb7\x39\x3f\xff\x1d\xab\x50\xcc\xdc\xaf\x35\xdd\xbb\x5c\xed\
\x5b\xbd\xe3\x79\x7c\xde\xd9\x02\x18\xc3\xe7\xf5\xc4\x8d\x38\x9d\
\xd4\xcf\xdd\xf8\x9f\x67\x00\xe4\xfb\xbf\xcb\xca\xb1\x4c\x7b\xe4\
\x3f\x0c\xc3\x30\x0c\xc3\x30\x0c\xe7\x18\x5f\xe0\x6b\x33\xbe\xc0\
\xe7\x86\x3e\xb4\x92\xe3\xf8\x02\x9f\x1b\xdb\xdc\xc6\x17\xf8\x7a\
\xe4\x1a\xab\xc9\xf8\x02\x5f\x83\x9d\xfc\xc7\x17\xf8\xfc\x5c\x53\
\xfe\xe3\x0b\x7c\x3c\xae\x29\xff\x62\x7c\x81\x8f\xc5\xca\xe7\x37\
\xbe\xc0\x61\x18\x86\x61\x18\x86\x61\x78\x6e\x2e\xb5\x95\x74\xeb\
\x86\x1c\x61\x7f\x12\x3f\x6c\xc4\xf7\x5e\x43\xe3\x95\xdf\x11\x76\
\x6b\xad\xac\xd8\xbd\x23\xae\xe0\xfd\xdc\x7e\x65\xfb\x90\xee\x29\
\xff\xb4\x33\x3c\x33\x5e\xd7\x07\xdb\x1b\xb6\xb9\xc2\x6b\xf0\xac\
\x64\x6c\xf9\x63\x7f\xc1\x26\xb7\x6a\x4b\x2b\x9b\x9c\xe5\x6f\x7f\
\x22\x65\xf2\xfa\x3c\x2e\xe3\xca\x9e\x60\x9b\xc1\xea\x5e\x28\x33\
\x7a\xcc\xf2\xcf\xf6\xe8\x75\x0a\x9f\xc1\xa6\x6c\xdb\x2b\x36\xbb\
\xfa\xdf\x76\xb4\xee\x9b\x3c\x99\x86\xd7\x10\xc3\xaf\x87\x0d\xbe\
\x6b\x37\x5d\xff\x2f\x6c\xd3\x63\x1b\x5b\x60\xfd\x4f\xda\xf6\xf9\
\xd0\x6e\x7d\xbd\xd7\xe7\xf2\x9a\x84\xab\xef\x0b\x91\x47\xca\xdf\
\xeb\x8e\xb1\x06\x9a\xd7\xc4\x7a\x74\x90\x11\xb8\x5e\x76\xdf\xe4\
\x32\x29\x7f\x3f\x3b\x57\x6d\xc6\x72\xf5\x35\x9d\xfc\x1d\x6f\xe4\
\x63\xf6\x1f\xb3\x9f\xfe\x49\x7a\xec\x3f\xfa\xbe\x98\x8f\x91\x4f\
\xee\xf7\x7a\x78\xf7\x8c\x7b\xb9\x26\xd8\xc7\x21\xfb\x85\x65\xb9\
\x7a\x2e\xfe\xa9\xfc\xbb\xfd\x9d\xfc\xd3\x17\xd4\xc5\x22\xd1\xaf\
\xd1\xed\xa4\x7f\xf4\x0d\xb9\xdd\x31\xfc\x14\xd6\xf3\xe4\xc1\xf1\
\x47\x67\xd7\xff\xed\x7b\x2b\xd2\x8f\x03\xb7\x92\x7f\xd7\x1e\x6c\
\xfb\x77\x3c\x01\xfd\x3d\x7d\x47\xdd\xbd\xec\xda\x46\xc6\xa8\x90\
\x5e\xfa\x29\x1f\xf5\x9d\x81\xb6\xec\x7a\x49\x1d\x70\xe4\x47\xbf\
\x95\xfc\x0b\xaf\xe3\x4b\xec\x00\xac\xd6\x9c\xce\x7b\xcd\x7b\xd9\
\xc9\xdf\x65\xc8\xef\x0b\xfb\x9a\x47\x95\x7f\x91\x31\x32\xe9\xc7\
\xdb\xad\xaf\xcf\x71\xaf\xa7\x99\x69\x75\x6d\x66\x17\x97\x93\x3e\
\xbf\x2e\xbf\xd5\xfe\xdd\x7d\xac\xae\xcd\xeb\xf2\x9c\xae\x7e\x9e\
\x61\xec\x3f\x0c\xc3\x30\x0c\xc3\x30\x0c\xb0\x9a\x5b\x75\xb4\xbf\
\x9b\x2b\xf0\x37\xf8\x53\x76\x71\xac\xc3\xef\xec\xe6\xd6\xad\xf6\
\x79\xce\x85\xe7\x0a\x1d\xbd\x3f\xde\x82\x91\x7f\x8f\x7d\x18\xb6\
\xa1\xe5\x9c\x1a\x58\xf9\xe7\x77\xed\xc5\xb6\x91\xda\x76\xcc\x3f\
\xdf\xe5\xb0\xdf\xa9\xf0\xf7\x44\xf0\xff\x81\x8f\xf9\x5a\xdb\x93\
\xf0\x2d\x71\x2f\x96\x3f\xdf\xb3\xf1\x3d\xbf\xea\x3c\x11\xcb\xcc\
\x7e\xb6\x8c\x9b\x87\x23\xfd\xdf\xd9\xe6\xad\xff\xd9\xe6\xbb\x3e\
\xb6\xd3\xd9\x46\x6b\xff\x8c\xdb\x22\x71\xfe\xf8\x7a\xb0\x01\x72\
\xad\xbf\x51\xe8\x6f\x09\x39\xc6\xc4\x72\xa6\x2c\xf8\x88\xee\xad\
\xa7\x6e\xcd\x59\x5b\x3b\x1c\xed\xa7\x6f\xe6\x3a\x01\x29\x7f\x40\
\x0f\xb8\x2d\x60\xd7\xa7\x2d\xd8\x37\x8b\xfc\x28\x7b\xce\x1b\xb1\
\xdf\xaf\x9b\x53\xd2\xed\xa7\xdd\xfa\xbb\x40\xaf\xc2\xb5\xe5\xdf\
\xf5\x9f\x4b\xe4\xef\x39\x1f\xe8\xee\xfc\xd6\xa0\xbf\xc9\xb8\x93\
\x7f\x3e\x0f\x3a\x9f\x6e\xc1\x33\xe9\x15\xe7\x0a\x5f\x5b\xff\x5f\
\x2a\x7f\xeb\x6d\x74\xb0\x63\x6d\xec\xc3\x43\x3e\xe4\x71\xa4\xff\
\x53\xfe\xb4\x8d\x4c\x93\xf8\x10\xc7\x08\x3c\xb2\x3f\xe7\x12\x3c\
\x6e\xa2\x8f\xd1\xaf\x6e\x21\xff\xc2\x3e\x3d\xf7\xe7\xdd\x3c\xf2\
\xbc\x36\xc7\x7f\x3b\xf9\xe3\xc7\xab\xf4\x73\xfc\xf7\xe8\xfe\xdc\
\x61\x18\x86\x61\x18\x86\x61\x18\x86\x7b\xe0\x78\xcb\x8c\x99\x5c\
\xc5\x7f\xde\x8a\xdd\xfb\xea\x70\x1d\x78\xe7\xb6\x3f\x30\xd7\x8b\
\xbc\x17\x23\xff\x35\x9e\xdf\xe0\xf8\x7a\xe6\xc7\xd1\x8f\x99\x83\
\x63\xbf\x5d\xa6\xb3\xb2\xa1\x78\x0e\x5e\xfa\xea\x6c\x87\xf2\xbc\
\xa0\x95\x0f\xd0\xc7\x28\x13\xd7\x66\xf9\xb1\xff\x3a\x7e\x1f\x9f\
\xa6\xcb\xd3\xd9\xa3\x5e\x01\x6c\xa0\x69\x0f\xc5\x6e\xe7\x35\x1a\
\x39\xaf\xb3\xa9\x17\x9e\x57\xc7\xcf\x7e\xb7\x5c\x3b\x14\xdb\x3f\
\x76\xfe\x6e\x8e\x97\xed\xbb\xf6\xe7\x92\x36\x65\xcc\x72\xa5\xdf\
\xd1\xfd\xbf\xf3\x55\x62\x53\x7e\x76\xf9\xa7\xfe\xa3\x5e\xb9\xf7\
\x55\x0c\x4f\x37\x4f\x28\xe9\x7c\x3b\x2b\xf9\x53\xcf\xe9\x47\xf4\
\xfc\x34\x7c\x3f\xd8\x66\xed\x1f\xb4\xff\xd0\xf7\xb6\x2a\x3f\xc7\
\x72\x8e\x97\xf7\x57\x7e\xcf\x32\xcf\x6f\xc5\x4e\xfe\x96\xd9\x9f\
\xca\x7f\xa5\xff\x53\xfe\x39\xff\xd7\x7e\x64\x8e\x61\xab\xe7\x98\
\xe7\xf2\xee\xd6\x87\xdc\xc9\xdf\x6d\x14\x48\x8b\x36\xf6\xec\x6d\
\xc0\x58\xff\x5b\xff\xdd\x4a\xfe\x85\xfd\x90\x7e\xce\x73\x2e\xe3\
\x12\xda\x03\x79\x9c\xd1\xff\x90\x6d\x83\x34\xd9\xb6\x4f\xdc\xed\
\xef\x15\x7c\x42\x1e\xff\xad\x64\xfc\x9e\xf2\xf7\xf8\x2f\xe7\xf8\
\xd9\x07\x98\xfe\xc1\x62\x35\xfe\xdb\xc9\xbf\xc8\x79\xfe\xdd\xf8\
\xef\x55\xe4\x3f\x0c\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\
\x0c\xc3\x30\x0c\xc3\x30\x0c\xc3\x30\xbc\x2e\xc4\x50\x16\x97\x7e\
\x0f\x04\x1f\xfe\x2a\xd6\xce\x31\x40\x47\x5c\xe2\x9f\xbf\xe4\xdc\
\x4b\xca\xf0\xde\x10\xdf\x72\x4b\x58\xff\x98\xb5\x73\x32\x7f\xe2\
\xb1\x28\xdf\xa5\xf2\xe7\xba\x8e\x4a\xeb\xec\xb7\x16\xba\x38\x94\
\x8e\x8c\x27\x3e\xe2\x92\x58\x40\xe2\x96\xbc\x0e\xce\x51\xac\xfb\
\x51\xfd\x1a\x62\xa3\xe0\xda\x71\xf4\x8e\x9d\xf2\x77\x78\x89\x0b\
\xec\x62\xf7\x29\x93\xbf\xeb\xee\xb8\x5f\xca\x4b\x7c\x95\x8f\x91\
\x76\xce\x17\x20\xde\xdc\x31\xe7\x8e\xd5\x4d\xbc\x36\x10\x6b\x08\
\x65\x9f\x65\x2d\x32\xc7\x9b\xef\xfa\x35\xf9\x9f\x39\x97\xf3\x1d\
\x3f\x4b\x5e\x8e\x45\xba\xa4\x7e\x89\x39\xf2\xcf\xb1\x51\xef\xb1\
\xae\x59\xae\xd7\x46\xb9\x38\x96\xeb\x7f\x11\x0f\x4e\x3f\xe5\x7e\
\x3b\x3a\x3d\x4a\x3c\x97\xef\xdb\xdf\xfe\xa1\x2d\xec\x74\x00\xf1\
\xba\xc4\x92\x79\x4e\x41\xde\x1b\xc7\xe9\x67\xbb\xfe\x43\xfe\x8e\
\x09\x5c\xe1\xfb\x4e\xfd\xe2\x58\xca\x4b\xea\x97\x73\x29\x27\xe9\
\x5e\x4b\xff\x67\x5c\x7e\xe2\xe7\x32\x7d\x9b\x36\xed\x7d\xd4\xb3\
\xbf\xb7\xe1\xef\x29\xb9\x1e\xdc\x6e\x5d\x4f\xbb\xfb\x72\xde\x1d\
\x5e\x1b\xcc\xf7\xb3\x6a\x87\x7e\x86\x22\xb7\xee\x7b\x1f\x70\xe6\
\xb9\xe2\xf9\x32\x39\x77\x80\x36\x94\x1c\xd5\x2f\xd0\x2e\x1c\x9f\
\x7a\x2d\x76\xed\x3a\xfb\x2b\xfd\xc7\xff\xa3\xf3\xb2\x4d\x7b\xde\
\x57\x97\x1e\xfd\x8f\xfb\x4a\x59\xb9\xaf\x5a\xf7\xad\xca\xea\xb5\
\xa2\x60\x25\xb7\x8c\x0d\xed\xd2\xa4\x6c\x39\x8f\x85\xbc\x12\xe7\
\x95\xed\x9e\xb6\x99\x1c\xd5\xaf\xcf\x23\x4f\xcf\x55\x7a\x2b\xe8\
\xc1\x55\xff\x3f\x3b\xee\xfd\x13\xf9\x73\x8e\xe7\xdc\x64\x9a\x7e\
\x1e\x76\xf1\xe0\x4e\xb7\x9b\x87\x44\x9d\xe7\x37\x2a\x2e\x59\xe7\
\xab\x1b\x2b\x76\x3a\xd3\x79\x65\x3b\xf4\xf8\x38\xcb\x7d\xa6\x7e\
\xe9\xff\xdd\x7c\x85\xb7\xb2\x2b\xc3\x91\xde\x85\x4e\xfe\x39\x7f\
\xa3\xe0\xdd\xc0\x7d\x95\x7b\x42\xc6\x9e\x23\x74\x06\xaf\xe9\x98\
\xd7\x78\xee\x90\xe3\xd5\xad\x73\x8f\x58\xc9\xbf\x6b\xaf\x8c\x53\
\xac\x1f\x56\xed\x9b\xfc\x2f\xd5\xe7\xbb\x75\x4a\x3d\x6f\xea\x0c\
\x47\xfd\xbf\xf0\x3c\x8b\xd5\xbb\x4c\x27\xff\xa3\xb2\xf3\x4c\xac\
\xf2\x3a\x0f\xe4\x44\x5d\xb2\x36\xdc\x6a\xac\x66\x9d\x99\xf2\x67\
\x4c\x98\xeb\x04\x7a\x9d\x2f\xaf\x2b\xd8\xbd\x5b\x7b\x8e\x99\xdf\
\x1d\xba\x72\xf0\xdd\x43\xf4\x4d\xae\x59\xd7\x71\xa6\x7e\xe1\xe8\
\x5b\xbb\x1c\x7b\x8f\x79\x8b\xbc\xa3\xae\xf2\xcd\x79\x1a\x09\x63\
\x05\xc8\x7a\x41\xbf\xa7\xde\xf4\xbb\xf4\x91\xde\x3b\xd3\xee\x77\
\xef\x84\xab\xb1\x80\xc7\x39\x97\xac\x13\x7a\xc9\x73\x7a\x57\xbf\
\x94\xfb\x48\xae\x9c\xf3\xec\xf3\x56\x87\x61\x78\x33\xff\x00\xa0\
\x82\xfa\x20\xe0\xbf\x25\xa3\x00\x00\x0e\xd7\x6d\x6b\x42\x54\xfa\
\xce\xca\xfe\x00\x7f\x92\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x9c\xed\x9d\x8d\
\x91\x1c\x29\x0c\x85\x1d\x88\x13\x71\x20\x0e\xc4\x89\x38\x10\x07\
\xe2\x44\x1c\xc8\x5e\xe9\xea\x3e\xd7\xbb\x67\x49\x40\xcf\xcf\xfe\
\x58\xaf\x6a\x6a\x67\xbb\x69\x10\x12\x08\xd0\x83\x9e\x97\x97\xc1\
\x60\x30\x18\x0c\x06\x83\xc1\x60\x30\x18\x0c\x06\x83\xc1\xe0\x3f\
\xfc\xfa\xf5\xeb\xe5\xe7\xcf\x9f\x7f\x7c\xe2\x3a\xf7\xaa\xe7\xe2\
\x73\xa5\xac\x00\x65\xf8\xf7\xc1\xff\x51\xe9\xf9\x8a\xfe\x33\x7c\
\xff\xfe\xfd\xe5\xd3\xa7\x4f\x7f\x7c\xe2\x3a\xf7\x32\x7c\xf9\xf2\
\xe5\xdf\xcf\x2e\xbe\x7d\xfb\xf6\x3b\xef\xb0\x37\x65\x04\xf4\xfb\
\x47\x46\xd4\xfb\xb4\x9e\x95\x9e\x4f\xf5\xbf\x02\x36\xd1\xfe\xae\
\xf6\x5f\xf5\x51\xfa\x76\x95\xa6\x93\xd7\xed\xdf\xf9\x9d\x5d\x54\
\xf2\xac\xe4\x04\x5d\x1a\xbd\x5e\xa5\xcb\xae\x67\xed\xbc\x7b\x3e\
\x70\x6a\xe7\xab\x7a\xeb\xec\x1f\xe5\x6b\xdf\x75\xb9\xb4\x6f\x7b\
\x1e\x9a\x0f\x79\x05\xaa\xfe\xaf\x79\x65\xf5\x8e\xfb\x9f\x3f\x7f\
\xfe\xf7\x7b\xe8\x2d\xd2\xfd\xf8\xf1\xe3\xf7\xbd\x78\x86\xba\xa8\
\x2f\x0b\x44\x3a\xbd\x1e\xe9\x33\x44\xfe\x9e\x26\xf2\x88\xbc\xb9\
\x17\x65\xab\x5e\x48\x17\xd7\xf5\x79\xea\xa0\x69\x23\x2f\x4f\x47\
\x1d\xf4\x7a\xfc\x8d\xcf\xaa\xff\xc7\xdf\xaf\x5f\xbf\xfe\x7e\xee\
\x0a\x3a\xfb\x73\x4d\x65\xd1\xf2\x23\x4d\x94\xcf\x33\x59\x9f\x23\
\x3d\xf7\x32\xfb\xbb\x0c\x51\x9e\xdb\x08\x9b\xc7\xdf\xd0\x99\xa6\
\x89\xef\x8c\x5b\x5c\x73\x3d\x45\x1a\x9d\xf3\x38\xb4\x7d\x45\x3e\
\xa4\x47\x17\xc8\xa9\xe9\x54\xee\xf8\xa0\x0b\xda\xb2\xca\x1d\xd7\
\x54\x1f\xaa\x67\x2d\x9f\xf1\x7d\xd7\xfe\xfa\xcc\x15\xac\xfc\x7f\
\x56\x66\xd6\xff\xe9\x7f\x9d\xbc\x81\xcc\xfe\xea\x6f\xa8\x53\x56\
\x77\xec\x1c\x7a\x56\x7d\xd1\x2e\xe2\x83\x2f\xd0\x3e\xa8\x7e\x81\
\x3c\x56\x72\x76\xba\x40\x3e\xca\x21\x3f\xf7\x15\x55\x9d\xfd\xf9\
\x90\xcf\xcb\xdf\x19\xff\xef\x31\x17\xb8\xc5\xfe\xe8\x3c\xfa\x23\
\xf5\xee\xe4\xa5\xfe\x95\xfd\x7d\x1d\xe2\xc0\xb6\xd8\x3d\xfe\x46\
\x5b\x20\x7f\xfe\xf7\x7e\x86\xac\xf4\x51\xda\x8b\x42\xf3\xa1\x4e\
\x99\x2e\xf0\xb7\x2e\x2b\xed\x91\xb9\x5e\x65\x7f\x64\xd4\xe7\xbd\
\xfc\x4c\x6f\x2b\x5b\x5c\xc5\x2d\xf6\xa7\x1d\x6b\xbb\xef\xe4\x0d\
\x64\xf6\x57\x7f\x87\xef\xcd\xfa\x28\x7d\xdd\xfd\x8f\xea\x36\xee\
\x71\xdd\xfd\x24\xbe\x23\xb3\x3f\x7a\xd0\x36\x96\xe9\x42\xd3\xa9\
\xcd\x69\x17\xc8\xef\xf6\xc7\x3f\xf2\x4c\xfc\xe5\x19\xcd\x37\xae\
\x21\xe3\x33\xec\x4f\x5f\x51\x7d\xd0\x9f\x01\x75\xf5\xef\xea\x6f\
\x19\xdf\x1c\x9a\x1e\x99\xe9\x5b\xfa\x3d\x9e\xa5\x0f\x74\x6b\xa5\
\xc8\x8b\xfb\xf8\x4d\xc0\xff\x91\xc6\xef\x21\x27\x7d\x2f\x03\xf5\
\xc6\x87\x64\xba\xd0\x72\x32\xf9\xc9\x5f\xc7\x43\xfa\x87\xff\xef\
\xb2\xa8\xfc\x3a\x97\xa9\xf4\xe9\xba\x1d\x0c\x06\x83\xc1\x60\x30\
\x18\x0c\x3a\x38\xf7\x97\xdd\x7f\xcd\xf2\x6f\xc1\x3d\xb8\x84\x2b\
\x38\x2d\xf3\x34\x7d\xc5\xdb\x9e\xc2\x63\xe5\xc4\xa5\x58\xcf\x64\
\x71\x81\x7b\x62\x55\xfe\xea\xd9\x15\x9f\xd6\x71\x98\x8f\xc2\xa9\
\xce\xae\xe8\xb8\xe2\x6d\xef\x21\xab\xc6\xb6\xab\x67\x2a\xce\xaa\
\xf2\x1f\x55\x5c\x7a\xb7\xfc\x5b\xf9\xb4\x47\x41\xe5\xd6\x3d\x13\
\x5e\xa7\x2b\x72\x75\xf1\xfc\x7b\xb5\xeb\x4c\x56\xe5\xd5\xfc\xfe\
\x09\xe7\x55\xa5\x3f\x29\xff\x56\x3e\xad\xd2\x93\xf3\x86\xce\x29\
\xfa\x1e\x05\xe7\x78\x90\x85\x7c\x9c\x03\x59\xe9\xac\xd2\x81\xc6\
\x15\xbb\x67\x1e\x69\x7f\xf4\xe3\x9c\x5c\xc5\x79\x69\xdc\x5e\x63\
\xe6\x55\xfa\xd3\xf2\x6f\xe1\xd3\x2a\x3d\x11\xa3\x0b\xc0\xb3\xc2\
\xf3\x21\xf3\xca\xfe\xc4\xed\x54\x16\x95\xb3\xd3\x59\xa5\x03\xb5\
\x3f\x72\x66\xf2\x67\xfe\xff\xca\x1e\x9a\x13\xfb\x57\x9c\x97\x73\
\xd6\xca\xbd\x56\x1c\xd9\x6e\xf9\xd4\xf5\x2a\x9f\x56\xd9\x1f\xee\
\x58\xf9\x23\xe5\x14\x3d\xff\xcc\x46\xc8\xdc\xfd\x7f\xaa\x03\xcf\
\xab\x92\x7f\x97\x2b\x5b\xa1\x1a\xab\xe0\x46\xf4\x7e\xc5\x79\x05\
\x48\xab\x5c\x4c\x97\x7e\xb7\xfc\x5b\xf9\xb4\xce\x4f\xd2\x87\xa3\
\x8c\x68\x0f\xf4\x35\x9e\xdd\xb5\xbf\x8e\x19\x9e\xf6\x54\x07\xa7\
\xf6\xbf\x15\xea\x6f\xe0\x1a\x94\x77\xaf\x7c\x53\x66\x17\xae\xfb\
\xdc\xc1\xd3\x9f\x94\x7f\x2b\x9f\xd6\xe9\x29\xb3\xb7\xce\x3b\x19\
\x17\xb4\xec\xcc\x46\x01\xe5\x16\xb3\xb4\x3b\x3a\x78\x0d\xfb\xeb\
\xd8\xc9\xc7\xf7\xe2\x29\x2f\x88\x4f\x53\xce\x0b\x79\xb2\xeb\x55\
\xfa\x93\xf2\x6f\xe1\xd3\x32\xde\xce\x65\x03\xca\x29\x56\x65\x33\
\x27\x77\xae\x94\xe7\x91\x67\x47\x67\x99\x8e\x3d\xef\x4a\xfe\xae\
\x5e\x83\xc1\x60\x30\x18\x0c\x06\x83\xc1\x0a\xc4\xbe\x88\xf9\x9c\
\x82\x75\x20\x6b\x98\x55\x2c\xaa\x4b\x13\x73\xdb\x1d\xfe\xe7\x1e\
\xd8\x91\x35\x80\x6e\x1e\x59\xe6\xae\x2c\xf7\x06\xe7\x62\x58\x77\
\x7b\x0c\x7f\x05\xe2\x1f\xac\xbf\x77\xd6\x26\xdd\xfa\xf5\x99\xfb\
\x19\x33\xae\x51\xd7\x94\x81\xf8\x4e\xac\xf0\x51\x65\x76\xd7\x1f\
\x09\x8f\x5d\x07\xa8\xaf\xc6\xb7\xba\xf6\xaf\x67\x63\x48\xaf\xfa\
\xcb\x9e\xe7\x19\xee\x69\xbd\x9d\xf7\x8a\x7b\xee\x97\xf4\xcc\x41\
\xa6\x33\x9e\xe9\xf4\x49\x7f\xf3\x38\x86\xc7\x68\xb3\xf2\x77\xf2\
\xca\x64\xcc\xd2\x75\xd7\x77\xcb\xc8\xf4\xb8\x83\x55\x1c\x49\xf7\
\xe4\x57\xe7\x71\x94\x83\xf0\x38\xad\xee\xd5\xd7\xe7\x49\xa3\x3e\
\x07\x9d\x2b\x97\xa3\xf1\x40\xe5\xec\x94\x0f\x70\x99\xf4\x1c\x51\
\xc5\x9f\xe1\xf3\xc8\x47\x63\xfe\x5a\x97\xaa\xfc\x9d\xf2\x5c\xc6\
\xaa\xcc\xea\xfa\x8e\xbc\xc4\x1b\x55\xc6\x13\xac\xec\xdf\x9d\xb7\
\x04\x5d\xcc\xd2\xf9\x2f\xf8\x3a\xed\xff\xe8\xca\xcf\x33\x64\xe7\
\x3b\xc9\xab\x3a\x67\x42\x39\xc8\x52\x9d\x8d\xc8\xf4\xef\x7c\x47\
\x57\x7e\x95\x97\xee\xd7\x77\x19\xab\x32\xab\xeb\x3b\xf2\x66\x7a\
\x3c\x41\xc7\x8f\x91\xdf\x8a\x67\xec\xec\x5f\xe9\x7f\xe7\x6c\x11\
\xf9\xfa\xa7\xcb\x17\x79\xd0\xfd\x8e\xcf\xd2\xfe\x9e\xc5\xe2\xb3\
\xf2\x3d\xaf\x9d\xb3\x84\x55\x99\xd5\xf5\x1d\x79\x33\x3d\x9e\x20\
\x1b\xff\x95\x5b\xf4\x36\x5f\xed\xfb\xb9\xda\xff\x33\x5d\x55\xfd\
\x5f\xcb\xee\xec\xef\x1c\xf4\xaa\xff\x6b\xde\x5d\xff\xaf\xe6\x7f\
\x5d\xff\xd7\xb2\xab\x32\xab\xeb\x3b\xf2\xde\x6a\xff\x80\x8e\x2d\
\x3e\x86\xe1\x9f\x74\x7c\xe9\xf8\x2b\x97\x69\x35\xfe\xab\xdc\x6e\
\xff\x80\x9e\xe1\xab\xce\x9f\x67\xba\x5a\xcd\x59\x7c\x3c\xf5\x31\
\x4e\x79\xc5\xac\x7c\x45\x37\xfe\x6b\xfa\xaa\xcc\xea\xfa\x8e\xbc\
\xf7\xb0\x3f\xf5\xae\xd6\xff\x7a\x2f\x6b\x9b\xdc\xd7\x3e\xe4\x3c\
\x9a\xcf\xff\x3d\x8d\xce\x91\x7d\x4e\x9f\xcd\xe5\xbb\x18\x81\xce\
\x85\xf9\x9e\x01\x19\xfc\x3e\xe5\x75\xe5\x57\x79\xad\x64\xac\xca\
\xac\xae\xaf\xd2\x64\x7a\x1c\x0c\x06\x83\xc1\x60\x30\x18\x0c\x2a\
\xe8\xdc\x5c\x3f\x57\x38\xc0\x47\xa3\x92\xcb\xd7\x1f\x1f\x01\xcf\
\xe2\x02\x59\xbb\xfb\x1e\xcc\xd5\x3a\x82\xfd\xd2\xcf\x44\x15\x67\
\xab\xf6\x63\xbe\x67\x3c\x8b\x0b\xcc\xf6\x32\x2b\xb2\xb8\x80\xee\
\xd9\xd5\xfd\xff\x27\xeb\x57\xb5\x15\xb1\x36\xbd\x9e\x71\x6e\xd8\
\x9f\x7b\x9e\x07\x72\xe8\x75\xe7\x22\x77\xb8\x3c\xd2\x54\x6b\xf4\
\xce\x2e\x99\x1e\xf4\x5c\xa0\x72\xa4\x95\xbe\x6e\xe5\x1b\x4f\xe0\
\xfb\xef\xd5\x3e\x55\xec\x8f\x98\x13\x7e\x63\x87\x23\x54\x3f\xa3\
\xf1\x2b\xae\xeb\x9e\x79\xf6\xef\x7b\xbc\x51\xf9\xc2\x2c\x8f\x2c\
\x5e\x9d\x71\x46\x1d\x2f\x58\xc5\xfb\x76\x38\xba\x2e\xd6\xa9\x67\
\x13\xe1\xd7\x33\x7d\xed\xc8\xb8\xe2\x02\x4f\x50\xf9\x7f\xec\x8f\
\x0c\x7e\x6e\x25\xe3\x68\x55\x07\xde\x47\x34\x0e\xa7\xe7\xf8\x28\
\x5f\xfb\x85\x73\x6e\x7c\x57\x7d\x54\x67\x26\x78\x5e\x63\xeb\xf4\
\x93\x2c\x46\xed\xfd\x85\xb6\xc7\xf9\x15\xb0\xc3\xd1\xad\xb8\x0e\
\xf2\xab\xf4\xb5\x2b\xe3\x8a\x0b\x3c\xc1\xca\xff\x23\x2b\x7d\x2f\
\xe3\x55\x77\x38\x42\xce\x52\x68\x5f\xcf\xca\xef\xe4\xd1\x7c\xbb\
\x33\x33\x21\x0f\x6d\x96\x72\x5c\x37\x55\x39\x8c\x6d\xea\xdf\x28\
\x7b\xc5\xd1\x9d\x70\x9d\x99\xbe\x76\x65\xdc\xe5\x02\x77\xd0\xe9\
\x5b\xfb\xac\xfa\x78\xaf\xeb\x0e\x47\xa8\xef\xb5\xcc\xfa\xbf\x8e\
\xdf\x5d\xff\xdf\xb1\x3f\x67\x3b\xf5\x2c\xe7\x6e\xdf\xd2\xbd\x03\
\xda\x6f\x77\x38\xba\x5d\xae\xb3\xd2\xd7\x95\xfe\xaf\xcf\xdf\x62\
\x7f\xf7\xff\xc8\xee\xe3\x3f\xfa\xc7\x4f\x56\xe9\xbc\x3d\xf9\xb8\
\x5a\xd9\x5f\xf3\xce\xc6\xff\x1d\xfb\xa3\x23\xbf\x76\x65\xfc\x3f\
\xe1\xe8\x76\xb9\xce\x4e\x5f\x57\xc6\xff\x9d\xb3\x8e\x15\xaa\xf5\
\xbf\x72\xde\x59\x4c\x80\xeb\xda\x6f\x3b\x8e\x10\xf9\xb0\x9f\xce\
\x31\xb3\x67\xb2\x39\x70\x56\x5e\x95\x47\xb5\x7e\x3e\x99\x5b\x5f\
\xe1\xe8\x76\xb8\x4e\x4f\xb7\x53\xf7\x1d\x19\x9f\x15\x33\x18\x0c\
\x06\x83\xc1\x60\x30\x18\xbc\x7f\xc0\xe7\xe8\xda\xef\x51\xb8\x92\
\xb7\xbe\x5b\xe3\x1e\xef\xbe\xd7\xd8\xc0\x09\x76\x65\x7f\x4f\x5c\
\x14\x6b\x5e\x38\x00\xd6\x94\x8f\xa8\x03\x76\x3c\x01\xeb\x5a\x62\
\x7a\xba\xaf\xb2\xdb\x07\x5c\x01\x8e\xe1\x14\x1a\x4f\xec\x70\xa5\
\x8e\xaf\x05\x62\x16\xbe\x6e\x24\x7e\x16\xf0\x7d\xac\xbe\x0e\xc7\
\x6f\xe8\x7a\x95\x33\x18\xf1\xd1\x98\x0d\x6d\x4b\xe3\x0b\xe8\xab\
\xe3\x76\x55\xc6\xce\xfe\x5d\x5e\xbb\x69\xb4\x4e\xba\x0f\xde\xe5\
\xb8\x57\x1d\x41\xf6\xbb\x23\xb4\xf7\x78\x8e\xeb\x94\xab\xe9\x02\
\x91\xe6\x6a\xdf\xca\x74\xc4\xf5\xec\x1c\x0b\x71\x0b\x8d\xb3\x3a\
\x07\xa3\xbf\xcf\x45\x3d\xd0\x0d\x7a\x25\xd6\x85\xdf\x71\xf9\x29\
\x43\x63\xf1\xd5\x59\x01\xb5\x45\xc5\xd1\xed\xa4\x71\x99\xb4\xae\
\xca\x79\x52\x47\xfd\x2d\xa1\x2b\x75\x0c\x28\x0f\x4b\x5c\x0f\xfb\
\x68\xac\x50\xd3\x11\x27\xa5\xdc\x2a\x5e\xd8\xa1\xb2\xbf\x5e\xaf\
\xec\xaf\xf1\x71\xda\x3d\x6d\x12\x3d\x79\x7c\x4b\xf3\xf2\xf8\x76\
\xc5\xab\x65\xfc\x89\xdb\x5c\xfd\x98\x72\xc8\x8a\x9d\x34\x01\xb5\
\x9f\xc7\x1f\x3d\x8e\x9b\xf1\x7b\x57\xea\xb8\xfa\xdd\x31\xd2\xfb\
\xfb\x04\x9d\x3b\x3d\xdd\xb7\xe5\xf2\x78\x1c\xda\xeb\x13\x70\xfb\
\x3b\x6f\x40\x3e\xfa\x9b\x94\xc8\x98\xe9\x06\x54\x5c\xd4\x8e\xfd\
\x2b\x1e\x43\xb1\x93\x06\x3d\x2a\xef\x99\xc9\xab\x7c\x98\xbf\x47\
\xf0\x4a\x1d\x4f\xb8\x43\xca\xe5\x03\x57\x5d\xf9\x96\x15\x78\x8e\
\x31\x2e\xb3\x99\xef\xb5\xa0\x0f\x39\x5f\x45\x9f\xd0\xb1\xa9\xe2\
\x0d\xbd\xfd\x56\xfd\x71\xc7\xfe\x01\xf5\x7f\xca\xe3\x29\x76\xd2\
\x28\xe7\xa8\xe3\xa0\xca\x91\x7d\xcf\xec\xbf\x5b\x47\xe5\x04\xf1\
\xf9\x1d\x77\xa8\x9c\x9f\xee\xc7\xba\x02\x1d\xdb\xf4\xe3\x7b\x2d\
\xe2\x83\x6f\xf4\xbd\x1c\xdc\x53\x1d\x64\xd7\x95\x5f\xcb\x9e\xef\
\xce\xd7\x83\xca\xfe\xf8\x32\xe5\xd4\x1d\x3b\x69\x54\x26\x9f\x77\
\x2a\xdf\xce\x77\xfa\x87\xb7\x99\x93\x3a\x06\xd4\x06\xba\xa7\xc7\
\xc7\x67\xd7\xad\xb6\x93\x53\xfe\x4f\xa1\xe3\x07\x73\xcc\xec\xde\
\x6a\x8f\xdd\xea\xba\xef\x25\x5a\x8d\x5b\x7e\x5f\xcb\xaf\x64\xe9\
\xd6\xae\xb7\xa4\xf1\xb2\x2b\x9d\x9c\xd6\xf1\xf4\xb9\xcc\x77\x5d\
\xd9\xff\x37\x18\x0c\x06\x83\xc1\x60\x30\xf8\xbb\xa0\xeb\x18\x5d\
\xcf\xdc\x6b\x1e\xd9\xed\x49\x8c\x75\x90\xbe\x2b\x65\xa7\x4c\x5d\
\xab\x12\xef\xce\xd6\x82\xef\x01\x6f\x41\x5e\x8f\xe7\xb0\xee\x3b\
\x3d\x47\x52\xa1\xb3\x3f\x9c\x00\xe9\x76\xec\xaf\xb1\x16\xd6\x3b\
\x3c\xf7\x16\xf4\x79\x82\xb7\x20\x6f\x16\x8f\x24\x4e\xee\x31\x1b\
\xe7\xb4\x88\x3d\x3a\xdf\xa5\x50\xee\x56\xe3\x15\x01\x9e\x75\x9f\
\xa3\x3c\xb4\xc7\x20\x3c\x26\xab\xfc\xbf\xea\x33\x4b\xab\x79\x13\
\x43\xa9\xb8\x18\x2f\x17\xf9\x34\x96\xa3\x1c\x72\xc7\x29\x69\x3d\
\xb5\xfe\x2a\x2f\x7c\xce\x8e\x5e\x90\x5d\xcb\x51\xb9\x4e\xd0\x9d\
\x31\x71\x8e\x47\xb9\x08\x8d\xa5\x77\x3e\xc3\xb9\x7b\xe5\x95\xe1\
\x0b\x3c\x46\xaa\xf5\xf3\xf3\x8d\xce\xc1\x56\xfe\x9f\x72\xb2\x32\
\xbd\x6e\xd9\xde\x6c\x6f\xff\xd8\x8d\xd8\xa7\xc7\x7c\xb1\x6d\xb6\
\x6f\x9b\xb6\x02\x27\xe2\x71\x62\xec\xad\xed\xa2\xd3\x8b\xcb\xee\
\x72\x9d\x60\x65\x7f\xec\xea\x65\x66\xb1\xff\x15\x8f\xe8\x36\x0a\
\x30\x07\xa8\x6c\x7a\x92\x9f\x73\x41\xde\x5f\xb2\xbc\xab\x18\xb0\
\xee\x0f\xd2\x78\x37\xb1\xd6\xec\xb7\xa3\x2a\xee\x55\x7d\x8d\xee\
\xad\x52\xae\x25\xf3\x19\x2b\xbd\xb8\xbf\x43\xae\x13\xac\xfc\xbf\
\xdb\x5f\xe7\x09\xb7\xda\x9f\x7e\x49\x5c\xfd\x51\xf6\xd7\x7e\xb1\
\x6b\x7f\xfc\x06\x79\xa9\xcf\x23\x5f\xb7\xff\x6a\x6f\x07\x7e\x44\
\x79\x55\xe5\x0f\xc0\xae\x5e\xaa\xfa\x9e\x60\x35\xff\xa3\x9e\x70\
\x8c\xba\x07\xe5\x16\xfb\x6b\xb9\xee\x87\x6f\xb5\x3f\x3a\xa4\x1c\
\xd5\xcb\xae\xfd\xc9\x43\xc7\x0e\xb5\xb9\xee\x77\xd9\xc9\x07\x7f\
\xae\xfc\x9f\xcb\xeb\x3e\x3f\xd3\x4b\x76\xcf\xe5\x3a\x41\xb6\xfe\
\xf3\x7d\x45\x3a\xb7\xc8\xce\x5f\xab\x6e\x1c\x2b\x7b\xd1\xfe\x75\
\xff\xc3\x3d\xec\xaf\xf3\xbf\xea\xdc\x72\xa0\xb3\x9b\xf7\x71\xcd\
\x93\xbe\xcc\xb3\x5d\x3e\x3e\xff\xcb\x64\xd1\x7d\x18\x2b\xbd\xf8\
\xfc\xcf\xe5\x1a\x7c\x4c\xbc\x85\xf5\xe2\xe0\xf5\x30\xf6\xff\xbb\
\x31\xfc\xfe\x60\x30\x18\x0c\xee\x85\x6c\xfd\xb7\x8a\x65\x80\xb7\
\xf4\xae\xf9\x8e\x67\x3a\x85\xae\xd7\xba\xf1\xb6\x8a\x9d\x9e\x60\
\x57\xd7\xf7\x2c\x33\xcb\x4f\xe3\x3f\xab\xbd\x91\x01\x5d\x97\xbe\
\x05\x5c\x39\xfb\x50\x81\xf8\xd7\xee\x7e\xcd\x5b\xb0\xa3\x6b\x4f\
\xff\x08\xfb\x57\xf9\x69\xec\x47\x63\x15\x7e\xc6\x29\xe3\x08\x1d\
\xc4\x2d\x3c\x9e\x0e\x77\xa6\xbc\x2e\xfd\x8f\x33\x71\xcc\x7d\x95\
\x0f\xe3\x9e\x7f\x27\x76\xaa\x75\xf0\x77\x24\x56\xb1\x92\xac\x6e\
\x1a\x93\xd1\x76\xe1\xf2\x28\xb2\x72\xb2\xba\xc2\xff\xb8\xae\x35\
\x8e\xef\x32\xa9\xbd\x88\x53\x3b\x57\xb8\x8b\xca\xff\x6b\x8c\x5f\
\xcf\x4b\xd1\xcf\x94\xf3\xad\x38\x42\x2f\x07\xdd\xc1\x9d\x68\xf9\
\xe8\x45\xcf\xd5\xa0\x1f\x97\x27\x8b\x39\xea\x77\x3f\x7f\x4b\x3b\
\xd2\x78\x3a\xf2\x78\x1b\xf0\xba\x05\x3c\x96\xec\x7c\x40\xb6\x0f\
\xdb\x63\xb3\xc4\xcf\xbd\xae\x15\x87\xa7\xf9\x56\xfa\xe0\x79\xe2\
\xc6\x15\x07\xbb\x63\x7f\xf7\xff\x40\xdb\x96\x8e\x53\x1e\x77\xcd\
\x38\x42\x07\x1c\x95\xf2\x71\xae\xc3\xee\xff\x5d\xfb\xa3\x17\x3d\
\x8f\xe9\x32\x07\xf4\x6c\x8f\x42\xd3\x65\x36\x56\x7d\x65\xf6\xf7\
\xb9\x88\x9e\xad\xab\xf2\x52\xfd\x28\xb7\xd8\xe9\xc3\xcb\xe1\xde\
\x09\x56\xfe\xdf\x65\xca\xf6\x5a\x54\x1c\xa1\xeb\x84\x34\xdd\xfb\
\x1f\xef\x61\x7f\x64\xa2\xad\x65\x32\x07\xde\x92\xfd\x2b\x6e\xf1\
\x59\xf6\xcf\xe6\x7f\xf8\x42\xf5\x97\xba\x8f\x02\x9f\x54\x71\x84\
\xae\x53\xfc\x7f\xd7\xff\x03\xbb\xfe\x0e\xdf\x94\xe9\x3c\x9b\xc3\
\xef\xf8\x7f\xad\x5b\x26\xcf\x3d\xfc\x7f\x66\xff\x8e\x5b\x7c\x86\
\xff\xf7\x0f\xf5\xf7\x73\xb0\x7a\xee\x50\xe7\x29\x19\x47\xe8\xe5\
\xe8\xd9\xc1\xaa\x7d\x7b\x5a\xd7\x85\xce\x33\xab\xb3\x99\x6e\x37\
\xc5\x6a\xfe\x17\x70\xfb\x57\xf3\xbf\xce\x77\x66\xe5\x74\xf6\xef\
\xb8\x45\xbf\x77\xcf\xf9\xdf\x5b\xc7\xbd\xd7\x3b\x83\xf7\x85\xb1\
\xff\x60\x6c\x3f\x18\x0c\x06\x83\xc1\x60\x30\x18\x0c\x06\x83\xc1\
\x60\x30\x18\x0c\x06\x83\xc1\x60\xf0\xf7\xe1\x11\x7b\xd1\xd9\xfb\
\xf4\x91\xc1\x7e\x13\xff\xac\xf6\xbd\xb3\xc7\xd2\xdf\x69\x11\x60\
\x6f\x4c\xf6\x79\x84\x3e\x75\x6f\xa9\xc3\xdf\x69\x5c\x71\x89\xec\
\x4b\xf3\x7c\x7d\xff\x08\xef\x00\xd2\x0f\xfb\x37\x9e\xc9\x53\x76\
\x75\x39\xcd\x47\xf7\xed\xf1\xa9\xec\xaf\xbf\x63\xc2\xbe\x23\xf6\
\xd9\xe9\x3e\xb7\x2c\xcf\x6a\x6f\xf0\xad\xf2\x77\x7b\xf5\xd5\x86\
\xfa\x1e\x10\x87\xd6\x1b\xdd\xb2\x87\x4c\xfb\x04\xf9\x3d\xab\x6d\
\x57\xe8\xea\xf2\xc8\x32\x75\x5f\xa4\xf6\x8d\xac\xff\x38\xd8\xaf\
\x96\xe5\xe9\x9f\x6a\x6f\x9e\x3f\xbb\xda\x1b\xb2\x6b\x7f\xde\xcb\
\x44\xfa\xf8\xdf\xdf\xb1\xa1\xf6\x7f\x6d\xbc\x86\xfd\xfd\x77\x07\
\xd4\x3e\xf4\xc3\x0e\xec\x23\xae\xa0\x7d\xa9\xdb\xcb\x16\xd7\xf5\
\xb7\x45\x3a\xac\xec\x4f\xdb\xa1\x4f\x3b\x3c\xff\xac\xff\x73\x9d\
\xfc\x79\x97\x9b\xee\xa1\xd4\x7d\x9b\x01\xda\x9b\xbe\x6b\x89\x7d\
\x7e\xfa\x8c\xee\xb1\xd5\x7c\xb5\x4d\x92\x86\xef\x27\x38\x19\x43\
\x54\x17\xfe\xae\xa1\xac\x6f\x2b\xa8\x5b\x57\x9e\xfa\x82\xcc\xf6\
\x8c\xbd\xf8\x86\x55\x99\xe4\xa9\xef\xef\x51\x99\xf5\xfd\x72\x27\
\xf6\xf7\xbd\xee\x5c\xe7\x7f\xad\x27\xe7\x92\x74\x9c\x54\x59\xb8\
\xcf\x77\xf4\x8a\xcc\x7a\x2e\x44\xf3\xa5\x3d\xa8\xdc\x57\x7c\xd3\
\xc9\x7e\x71\x3d\x5f\xa1\xbe\x00\x79\xaa\xbe\x4d\xbb\xdc\xf1\xe7\
\xd9\xd9\x01\xcd\xc7\xf7\x96\xaf\xe4\xc7\x8f\x6b\xfe\x01\x74\xa7\
\xef\x62\x53\x3d\x32\xe6\xfb\x7c\xa5\xd2\xb1\xcf\x79\xb4\x4e\xda\
\x5f\x7d\x4f\xaf\xee\x65\xd7\xf9\x94\xe6\x91\xbd\xdb\x8f\xf6\xe0\
\xfd\xf0\x74\x4c\xe0\x9c\x53\x36\x9f\x71\x60\x43\xff\xed\xcc\x6a\
\x1c\x66\xfd\xb4\x33\x96\x23\xcb\xe9\xdc\xb0\xb3\x3f\x7a\xd5\x31\
\x0b\xff\xe9\xed\x48\xed\xaf\xfe\x5d\xf7\x9a\x93\xe7\x89\xfd\xf5\
\x5c\x22\xed\x57\xcb\xcc\xde\x5d\xe5\xf3\xac\xca\xfe\xfc\x4f\x3b\
\xbe\x32\x27\x40\xbe\xec\xe3\x40\x7e\x74\x47\x1b\xce\xfc\x3a\xba\
\xab\xfc\xaa\xe7\x7b\xe5\xdd\x75\x81\xca\xfe\xea\x37\x01\x6d\x31\
\x8b\x15\xe8\x99\x51\x5d\xdf\x50\x57\x9d\x1f\x56\xe7\x1b\x32\xfb\
\x53\xae\x8e\xe5\x7a\x5d\xcf\xa5\x7a\x9f\xd2\x73\x1f\x9d\xfd\x91\
\xc9\xdb\xd7\x33\xd0\xc5\x5d\x76\xe7\x16\x91\xee\xaa\xdc\xdd\x78\
\x77\xd2\x9e\xf4\xdd\x3a\xda\x97\x3e\xda\x79\x8a\xc1\x60\xf0\xa1\
\xf1\x0f\x88\x24\x6a\xa2\xeb\x77\xbd\x16\x00\x00\x04\x79\x6d\x6b\
\x42\x54\xfa\xce\xca\xfe\x00\x7f\xa2\x36\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x9c\
\xed\x9a\x89\x6d\xeb\x30\x10\x05\x5d\x48\x1a\x49\x21\x29\x24\x8d\
\xa4\x90\x14\x92\x46\x52\x88\x3f\x36\xf8\x63\x3c\x6c\x48\xd9\xb1\
\x64\xf8\x9a\x07\x0c\x74\x90\xe2\xb1\xcb\x43\x22\xb5\xdf\x2b\xa5\
\x94\x52\x4a\x29\xa5\x94\x52\x4a\xfd\xd7\xf7\xf7\xf7\xfe\xeb\xeb\
\x6b\x4a\x85\xdf\x83\xb2\x1e\x97\x4c\xfb\x12\xe9\x5f\x53\x55\x9f\
\xdd\x6e\x37\xe5\xf3\xf3\x73\xff\xfa\xfa\xfa\x73\x7e\xcb\x75\xa7\
\x1e\x55\xd6\x2d\x55\xbe\x7f\x79\x79\x39\xd8\x63\xeb\xf4\xaf\xad\
\xf4\xff\xfb\xfb\xfb\x2f\x4a\x75\xac\x7a\x3f\xa3\xff\x69\xfb\xcf\
\xe0\xff\x99\x3e\x3e\x3e\x7e\xda\x00\x73\x01\x6d\xa3\xae\x2b\x8c\
\x76\xc1\x75\x85\xd5\x91\xf8\x15\xce\xbd\x59\x9a\x75\xcc\x38\xb3\
\xb4\xfa\xb3\x75\x4e\x19\xd2\x3f\xa4\x57\x50\x3e\xca\x31\x4a\x73\
\xa4\x8a\x57\x69\x56\xff\xe7\xfc\x91\xfd\x5f\x75\x4b\xf0\x45\x1f\
\xff\x89\xcf\xb8\x88\x2f\x72\x9c\xcc\xf9\xa3\xc2\x88\x5f\xe2\x9a\
\x67\x4b\x95\x57\x5d\xd7\xb1\x9e\x99\xcd\x45\x59\x1e\xf2\x63\x6c\
\xca\xf3\x2c\x5b\xa6\x9f\x54\x9c\x59\x1b\x48\xbb\x54\xbe\xcf\xe0\
\xff\x0e\xb6\x9b\xf9\xff\xed\xed\xed\xf0\x8e\x88\x7d\x78\xa6\xf7\
\xc7\x4c\x23\x7d\x41\x9b\x20\xbc\xd2\xe2\x9c\xf6\x47\xfc\x9e\x56\
\x1d\xcb\x37\xbc\x97\x91\x5e\xf7\x7d\x3e\x93\x69\xd2\x9e\xba\xb2\
\x2d\xe7\x1c\xf8\xe8\xfe\x9f\x69\xe6\xff\xec\x3b\x7d\x9e\x4c\x4a\
\xf8\xb0\xec\x58\xed\x26\xc7\x54\xca\x50\xf7\x33\xfd\x54\xde\x23\
\xaf\xf4\xdf\xa8\x1d\x67\xff\xae\xf0\x4a\x1f\x1f\xd6\xf9\x6c\x0e\
\x20\x1e\x65\xe4\xfd\x27\xef\x3d\x8a\xd6\xf8\x3f\x85\xcd\x98\x6f\
\xe9\xe7\xf9\x6e\x80\xed\xb1\x61\xf6\xeb\xec\x9b\xf4\xbd\x7c\x37\
\x18\x8d\x15\xf9\x3e\x9a\xfd\x3f\xc7\x90\xf4\x55\x96\x25\xcb\x3b\
\xab\xef\x12\x8f\xa2\xad\xfc\x8f\x2f\xf1\x6d\xf6\xb5\x9e\x4e\x7f\
\x2f\xe8\xe3\x49\x8e\xb5\xd9\xf7\x66\xf3\x51\xd6\x83\xfc\x7a\x7b\
\xc8\xf1\x3c\xd3\x64\xcc\xe9\x36\xe9\x64\x99\x6e\xf9\x3b\xe8\xaf\
\xda\xca\xff\xa5\xb2\x51\xbe\x03\x96\x6d\xfb\x7b\x7b\xf7\x35\xed\
\x24\xfd\xc0\xfb\x04\x69\xd1\xa6\x78\xe6\x14\xff\x67\x3c\xc6\x24\
\xf2\x22\xcd\x5e\xbe\x25\x3d\xea\xfc\xaf\x94\x52\x4a\x29\xa5\x9e\
\x53\x97\xda\xe7\xcd\x74\xef\x65\x2f\xf9\xd6\x94\xeb\x20\x97\xb0\
\x61\x7d\x1b\xcd\xbe\x6b\xfa\xf7\xd4\x5f\xb5\xf6\x79\xb5\x3f\xac\
\x39\xd4\x9a\xc9\x6c\xcd\x7a\x8d\xd2\xff\x7d\x6d\x23\xbf\xf3\x47\
\xdf\xfc\x4b\x6b\x21\xac\x9b\xf4\xf3\x6b\x28\xcb\x39\xea\x47\xfc\
\xe3\x31\xbb\xbf\x94\xde\xe8\x7a\x96\xd7\x2c\xad\x51\xbf\x26\xee\
\x6c\xcd\x69\x56\xe6\xbf\x8a\xfd\xb2\xdc\xfb\x23\x5f\xd6\x3c\xf2\
\x9c\xf6\xc2\x33\xb9\xce\x9e\x6d\x24\xf7\x5e\x39\x67\x0d\x97\x7b\
\x39\x26\xb0\x77\xb3\x26\xbc\xdb\x3a\xcb\x99\xeb\x89\x75\x8f\xf5\
\x66\xd6\x9a\xfa\xba\x52\x85\xf7\x3a\xd6\xbd\x4c\x2b\x6d\x57\xc7\
\xf4\x19\x90\x57\x5e\xa3\x1e\xa7\xc4\x7a\x25\xf7\x49\x97\xbd\xee\
\xa5\x32\x9f\xa3\xee\x97\x6c\x6f\xa3\xfe\xcf\x5a\x1b\xb6\x66\x3f\
\xbe\x6b\x34\xf6\x57\xbc\xdc\xc7\x2d\xe8\x23\xac\xf3\xad\x09\x3f\
\x56\x2f\xec\x97\x63\x5e\xff\xb7\x21\xf7\x21\x10\x7b\x19\x75\xcc\
\xb5\xca\xb4\x55\xa6\xd9\xf3\x1a\xd9\xb7\xff\x13\x41\x9c\xd1\xfd\
\x91\xff\x47\x65\x3e\x47\x7d\xfe\x3f\xc5\xff\x19\x7f\xf6\xfe\x90\
\x76\xe2\x9c\xbd\x19\x8e\xf8\x33\xff\xc9\x58\x13\x7e\x6a\xbd\xfa\
\x9c\x97\x7b\x02\xf8\x7a\x54\xa7\xf4\x41\xb7\x4f\x5e\xcf\xf2\xca\
\xb0\xd1\x3e\x13\xf7\xb3\x3f\x73\x9d\x79\x8f\xca\x7c\xae\xb6\xf0\
\x7f\xdf\x47\x29\x9f\x50\xa6\x3c\x2f\x31\xd6\x31\x7e\x32\x96\xd1\
\x9e\xd7\x86\x9f\x52\x2f\xc2\x18\x37\xf8\x8f\x00\x1b\xd3\xbe\x10\
\x73\x6d\xf7\x7f\x1f\x73\x72\x8f\xf2\x98\xff\xf9\x7f\x22\xf3\x28\
\xf5\xfb\xdd\xff\xb3\x32\x9f\xab\x63\xfe\xcf\xb9\x1d\x3b\xf4\x7e\
\x92\x75\x2d\xf5\xf1\x29\x7d\x83\xbf\x88\xcb\x3c\xb6\x55\xf8\x31\
\xbb\x67\x18\xb6\xe4\xfd\x3a\xe7\x61\xc6\x70\xe2\x62\xe7\xb4\x35\
\x7b\x9d\xf8\x33\xf7\x28\x8f\x95\x83\x7f\x6b\xf1\x21\x6d\x27\x6d\
\xca\x9e\xd9\xc8\xff\xa3\x32\x9f\xf3\x2e\xc8\x7e\x5b\xd6\x29\x7d\
\x47\xdf\xce\xba\x62\x8f\xd1\x58\x45\xdc\x4c\xaf\xe7\xd7\xfd\xd9\
\xfb\xc1\x9a\x70\xc2\x96\xea\x95\x61\xd4\x83\xb9\xa4\xfb\x37\xe7\
\xf2\xd1\x37\x18\xcf\xf7\xe7\x46\x79\xf5\x30\xda\x40\xdf\x8b\x4c\
\x1b\x13\x3f\xf3\x9e\x95\xb9\xf7\xb5\x4b\x68\x69\xbd\x40\x3d\xbe\
\xf4\xbf\x52\x4a\x29\xa5\x94\x52\x4a\x29\xa5\x94\x52\x4a\x5d\x4d\
\x3b\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\
\x11\x11\x11\x91\x3b\xe4\x1f\x87\x97\x8e\x6a\xd9\x3b\x8e\x9c\x00\
\x00\x01\x53\x6d\x6b\x42\x54\xfa\xce\xca\xfe\x00\x7f\xa5\x85\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x78\x9c\xed\xd6\xe1\x69\x83\x60\x14\x86\x51\x07\x71\
\x11\x07\x71\x10\x17\x71\x10\x07\x71\x11\x07\xb1\xbc\x81\x0b\xb7\
\xa6\x21\xff\x8a\x09\xe7\x81\x43\x9b\x4f\xfb\xeb\x4d\x6c\xce\x53\
\x92\x24\x49\x92\x24\x49\x92\x24\x49\x92\x24\x49\x92\x24\x49\x92\
\x24\x49\x1f\xd1\x71\x1c\xe7\xbe\xef\x4f\xe7\x39\xcb\xb5\x77\xf7\
\xbf\xba\x4f\xf7\x6f\x5d\xd7\x73\x1c\xc7\x73\x9a\xa6\xc7\xcf\xec\
\x18\xfd\x2c\xf7\xd4\xbd\x75\x16\xcb\xb2\x3c\x5e\xc7\x30\x0c\x7f\
\xbe\x87\x74\xef\xb2\x63\x95\x7d\xb3\x61\x76\xad\xcd\xfb\x3d\xb5\
\x7f\xd5\x37\xbf\xfe\x8d\xee\x5f\xb6\xeb\x7b\x56\x39\xeb\x9f\xe5\
\x7a\x9d\x7d\xfb\xc6\xd9\xbf\xba\x5e\xd3\xfd\xcb\x73\xbe\xef\x5f\
\xff\xd7\xe7\x79\x7e\xda\x3f\xd7\xec\xff\x7d\x65\xdb\x7a\xee\xd7\
\xef\xdb\xb6\xfd\xfa\xcc\xf7\xe7\xbf\xfd\xbf\xaf\xfa\x1e\xd7\xf7\
\xab\xf7\x40\xae\xd5\x77\xfb\x9c\x45\xd5\x9f\x1d\xd7\x6b\x92\x24\
\x49\x92\x24\x49\x92\x24\x49\xfa\xf7\x06\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\xf8\x40\x3f\x0a\xf9\xac\xb8\x52\xda\x2a\x66\x00\x00\
\x2a\x17\x6d\x6b\x42\x54\xfa\xce\xca\xfe\x00\x7f\xd4\xf0\x00\x00\
\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x78\x9c\xed\x7d\x2b\xb8\xec\x28\xd6\xf6\x92\x48\x2c\x12\
\x89\xc4\x22\x91\x48\x24\x16\x19\x89\xc4\x22\x23\x91\x58\x24\x12\
\x19\x89\x8d\x8c\x8c\x8c\x8d\x2c\x99\x7f\x51\xfb\x9c\xee\x9e\x9e\
\xe9\xf9\xd4\xff\xd4\x88\x5a\x73\xe9\x3e\x55\x7b\xd7\x09\xb0\x2e\
\xef\xbb\x2e\x54\xe6\xe7\x7d\x36\x9e\x00\xda\xb3\x91\x2d\xc6\xd7\
\x46\x60\x87\xa3\xc3\x02\x70\x5d\xc5\x05\x6b\x00\xdf\x85\x7e\xc3\
\xf3\x62\x1d\xe0\x81\x0a\x10\x01\xb6\x0a\x1b\xd0\x9e\x24\xc1\x77\
\xdd\x93\xd9\xb1\x84\xc1\xf1\xcd\x7c\x73\xfc\xf1\x43\x6f\x00\x95\
\x9b\xdd\x41\x2b\xd5\x71\x33\xb6\xbe\x6c\x4f\x15\x14\xe0\x78\x9d\
\x40\xe1\x28\xe9\x30\xf0\x61\xb9\xaf\x2b\x3f\xf7\x09\x12\xa0\xdc\
\x54\x2c\xa4\x5f\x8d\x03\xaf\x37\x81\xb8\x73\x5c\x9d\xdb\xde\xcf\
\x98\x5e\x42\x6c\x31\x29\xfc\x43\x11\xf3\x95\xd2\x0f\x0f\x2b\xd4\
\x6b\xdb\x28\xee\x46\x79\x4e\x22\x38\xf5\x96\x64\x50\x43\xcc\x5f\
\x39\x16\xc8\xd2\x3e\x4f\x06\x30\x26\x6c\xab\x34\xb8\x8f\x49\x6d\
\x2b\xfe\xee\xeb\x6e\x90\x77\xee\xdb\x47\x17\x8f\x72\xc5\xb0\xf8\
\x8d\x99\xe0\x01\x3c\x51\xaa\x83\x71\x09\x0f\xd1\x14\x09\x2b\xaf\
\x97\xb2\x85\x48\x93\x7d\x0c\xfa\xa1\xae\xc1\x65\xa1\xb7\x1d\x7f\
\x71\x8f\xb9\xae\x7e\x7e\x82\x5b\x29\x2e\xa3\x35\x63\x83\x89\x36\
\x2c\xd6\xfa\xb8\xc5\xc0\xc1\x82\x6d\x0e\x9e\x1d\x04\x75\x4f\xa0\
\xf8\xef\xa8\x39\x70\x5c\xf8\xd3\xfd\x3c\x2f\x1b\x0f\x2f\x3f\xbc\
\xfc\xb7\xb8\x4e\xc4\x3a\x12\x9e\x93\x4d\xc2\x9b\x05\x70\x29\xb6\
\x15\x20\x15\xf6\xc4\x9c\x2d\x1c\xd5\x1e\x32\x70\xc0\x27\x0f\x87\
\x75\x4b\x71\x60\x02\xbe\xb4\xcd\x5f\xb7\xe0\xda\xe6\xc0\x1f\xd5\
\x2f\xb8\x99\xfb\x36\xfc\x34\x1d\x3c\x7e\x00\x85\x0b\xb4\x1e\x37\
\x37\x53\xea\x1b\x81\xc7\xe1\x4e\xdd\xd5\x42\x51\xd7\xe1\xd6\xed\
\xf3\xeb\xa7\xa8\x94\x75\x4d\xe0\xf7\x7b\x8f\x8e\xfb\x35\xc8\x25\
\x2e\x42\xa6\x4e\xc9\x8a\x0b\x18\x6b\x3a\x18\x09\x6b\x9b\x4e\xc0\
\xbc\x6d\x81\x39\xd8\x0f\xfc\xe7\x02\x2a\xa7\x75\x81\x55\xc5\x7c\
\x32\xa8\x86\xd9\x25\x3b\xd1\xef\x11\x81\x9b\xab\x1d\xb8\x5d\x46\
\xe1\x61\xd7\x92\x29\xcf\x0b\xaa\x52\x45\x25\x48\x57\x63\x30\x4d\
\x67\x03\xc6\x3e\xbb\xf8\x29\x2f\x74\x69\x68\x93\x66\x98\xf5\xd5\
\x09\xd1\xb8\x58\x86\x3e\xca\xca\x1c\xa8\x12\xcb\x45\xcb\xc5\xf2\
\xe3\x29\x15\x96\xd4\x3c\x0f\x2c\xe9\x36\xf6\x73\x34\xc5\xe1\xc0\
\x7f\xd6\x35\x9b\x7a\xe0\x62\xf0\x3f\xa4\xa2\x4a\x1f\xf0\xe0\xf6\
\x5c\x1b\x3c\x19\x4f\x1c\x4d\x25\x4f\x23\x28\x37\xe4\x36\xe0\x3a\
\xa7\x16\x3d\x09\x9d\xaa\xea\xfd\xd3\x8b\x07\x59\x41\xa3\xf7\xc2\
\x83\x48\x0d\xb6\xab\x08\x90\x4c\xa0\x73\x36\x9b\xce\x03\x4d\x83\
\x58\xea\xc8\xf9\x42\x63\x58\x9d\x26\xc7\x98\x4a\xbd\x13\x74\x04\
\x65\xbb\x2e\xca\xf6\x12\xfc\xa8\xcf\x09\x33\x2e\x18\x6a\x65\x28\
\x94\xcf\x3f\xd4\x3c\x3f\x9d\x2d\x31\xe9\x24\x70\x9d\x4f\x01\x3d\
\x00\xfd\x7f\x78\x14\x1a\x12\x8c\x0b\xff\xda\xfd\x09\x1f\x5d\x3c\
\x4a\x74\xc2\xa1\xb7\x56\x67\x9b\x9a\x60\x7c\x49\x2c\x3c\xe4\xb8\
\x95\x7d\xe0\x46\xf3\x0e\x51\x6a\x5d\xd0\x6f\x25\x5b\x50\x61\xd1\
\xfd\x01\x88\x36\xfd\x18\x58\x12\x59\xbf\xcd\x3c\xe1\x17\xaa\x3f\
\x10\xa8\x59\x6f\x68\x00\x80\x46\x9e\x17\xfc\x30\x36\x37\xe1\x81\
\xad\x1f\x36\x4a\x46\xf1\x97\x47\x5b\xf0\x85\x05\x77\x76\x29\x9a\
\xcf\x37\x3f\x2c\x1c\xe4\x40\x77\x8e\x0a\x8d\x06\x6e\x4d\xe0\xc7\
\xa6\xdd\x13\x6d\xcc\x05\xca\x6b\x3e\x3f\xf5\xe8\xc9\x4c\xda\x6a\
\xef\x0f\xb3\x15\x3d\x80\xdd\x0f\xda\x25\x77\x83\x5a\x88\x69\x7a\
\x46\x54\x78\x06\x81\x10\xf4\x84\x24\x11\x81\xaf\x6b\x50\xf6\x38\
\x9b\x45\xb7\x90\x6d\xf2\xf8\x09\x6a\x41\x4f\x99\xf1\xd4\xd7\xfa\
\xde\x80\xab\x9e\x1c\x3e\x7e\xfe\x92\x86\xe5\xdc\xe0\xd8\x86\x91\
\xba\x06\xe9\x42\x39\xfa\xb5\xe2\x09\x86\x0b\xd6\xa4\x02\x38\x55\
\xad\xab\x4b\x1c\x0e\x43\xc3\x76\xb4\x6a\x62\xeb\x0f\x4c\x0b\xe8\
\xe5\xe7\x43\xbc\x02\xef\x80\x79\xaf\x05\xa1\x0b\xe7\x1e\x8d\x3b\
\xa4\x6d\x17\x6a\x0b\x50\x2e\xd4\x05\x20\x97\xf8\xe3\xef\x44\x6b\
\xf1\x15\xc2\xea\x77\xfe\xa1\x55\xff\x45\xc2\xc2\x80\x33\xf4\xdc\
\xa8\xc1\x94\x91\x95\x92\x38\x78\xeb\x55\xc0\x85\x4a\xca\xfc\xb9\
\x73\x12\x8f\xa3\x12\x89\x9e\x5c\x84\xb3\x08\x0e\xe8\xc9\x9f\x8e\
\x2b\x3b\x06\x7d\x07\x04\x73\xad\x18\x46\x10\xe3\x1d\x51\x28\x1e\
\x4b\x49\xad\xee\xf7\xa6\x58\xdd\x9b\x84\xc6\xa8\x0a\xb9\x31\x0b\
\xcb\xfa\xfe\x2b\x4b\x8f\xfa\xa8\xe8\x64\x58\x8c\x1f\x5d\x3b\x4a\
\xc4\xa3\x8e\xef\x63\x08\x88\x78\x24\x9d\xa7\x44\xd1\xd7\xb7\xde\
\x0f\x10\x9e\xa2\x13\x58\x60\x69\xd7\x1e\x20\xec\xa8\xeb\xd1\x10\
\x40\x6c\xcc\x8f\xfb\x72\x6e\xb0\x6d\x24\x81\xa8\xc6\x5e\xd7\x39\
\xce\x84\xef\x7a\x42\x47\xcf\x9e\xa0\x51\x3d\x15\xc6\x6e\x66\x10\
\xe4\x6b\x84\x44\xea\xf6\xac\x65\x3b\x0a\x3c\xa8\xfd\xf8\x16\x61\
\xd3\xfc\x3e\x2c\xb5\xe2\xa2\x9e\x9b\x6a\xc6\xef\x6b\x87\x30\x42\
\x9f\x5b\x70\x28\xf5\xe2\x24\xbf\x1d\x00\xba\x87\xc7\xa0\x91\xdb\
\xf6\xcc\x70\xfd\x34\x0c\x6e\xcb\x19\xcb\x71\x60\x94\x58\xc6\x93\
\xf9\x09\xfa\x76\xcf\xb5\xf6\xe8\x18\xd9\x2e\x78\xf5\x48\x6e\x8c\
\xfb\x8d\x6f\x72\x9f\x4a\xbe\x80\xcf\x35\xac\xf1\xc1\xe0\xff\x48\
\xe0\x1c\x75\xa9\x89\xf1\xea\xeb\x87\x97\x8f\x0b\x66\xe0\xa7\x16\
\x0c\xed\xd7\xd7\x61\xec\x18\x95\x86\x89\x5b\x5a\x17\x19\x3a\x3e\
\x3c\xc7\x4d\x40\x4a\xa3\x39\xf3\x02\xfd\x02\xac\xe2\x24\xd3\x71\
\x5d\x15\x01\xa1\x00\x7d\x3d\x48\x85\x16\x0c\x6b\x04\xd0\xfe\x33\
\xc6\xca\x18\xba\xe3\xaf\xf9\xe9\xb2\xba\x74\xbf\x51\x93\x3d\x7f\
\x82\x01\x2c\x09\x37\xc6\xc7\x06\xb5\xdf\xbb\xfd\xec\xea\xe7\x73\
\x0d\xc4\x3e\x90\xe3\xa2\x33\xf8\xb6\xef\xde\xdc\x36\x5b\xa6\xd1\
\x67\x95\xa8\x97\x0c\x52\x4c\x8d\xd8\x8d\xaa\xa8\xf9\x11\xad\x3f\
\x17\xb7\x28\x0c\x8d\x26\x77\xdd\x2e\x37\x43\x23\x7e\x42\x7b\x08\
\x82\x5d\xaf\xd3\x0a\xd7\xe2\x97\x55\xd4\x57\x02\xb2\x0c\x37\x99\
\xd2\x31\x7f\x6a\x6b\x7e\x82\x65\x94\x63\x47\xbb\xbf\x72\x16\xcb\
\xc7\xf9\x1f\xd0\xe3\x44\xd8\x2e\x1b\x12\x3d\xf4\xcb\x4b\xb4\xdc\
\xee\xeb\x08\xc5\x40\xdd\x57\xdd\xc7\xb1\x4d\x12\x03\xfb\x30\xe5\
\x80\x90\x03\xe3\xfb\xed\xe8\xe4\xbc\x30\xce\x5c\x06\xda\xf2\x78\
\x7f\x90\xf3\xae\x76\xcf\x71\xdf\x4e\x5a\xa2\x0b\x3e\x23\x04\xc6\
\x0d\x83\x84\x8c\xe0\x42\x45\x97\x09\x99\xa5\x29\x95\x82\xba\x26\
\x79\xd8\x41\x7d\x74\xe5\x3f\x42\xfb\xea\x0b\x59\xec\x6d\x28\xc2\
\x57\x49\x70\xe1\x81\xc9\xb1\xf2\x80\xf1\x0b\xb8\x7c\xbd\x32\x97\
\x2b\xe8\xfd\xe0\x5c\x32\xb7\xf6\x20\xed\xde\x29\x90\x6c\xdc\x38\
\xb7\xd6\x74\x6c\x18\x05\x1c\xc1\x40\x5a\x2e\x42\xbd\x80\xa3\xef\
\x18\x04\x95\x65\xf1\x85\x8b\x8d\x83\x52\x53\xdf\xf4\x81\xc6\x83\
\x6d\x3e\x64\x98\x49\x81\xe9\xfe\x6c\xfe\xf4\xf2\x27\x4e\x0d\x61\
\x86\x64\xc4\xa2\x47\x33\xb9\x25\x8d\x86\xbc\x23\xab\x29\x3f\xe8\
\xbc\xcf\x24\x05\x01\x73\x1f\x1c\xdf\x09\x03\x5f\x35\x3d\x13\xb2\
\xed\x59\x1c\xc7\x42\x52\x23\x2d\x6b\x22\x71\x47\x50\x2d\xd0\x65\
\x12\xfe\x22\xe7\x66\xad\xc1\x08\xc2\xe1\x25\xd6\xa9\x2d\xcf\x93\
\x33\x1e\x37\xea\xd0\xe4\xcc\xc8\x38\xd4\x4d\x39\x99\x19\x81\xcf\
\x8a\x19\x8a\x2c\x1b\xac\xe8\xe4\x5f\x2a\x6e\x3b\x48\x82\xc1\xfa\
\xc6\x45\x16\x42\xc6\xb1\x86\x1d\xd6\x63\x6c\xbf\x7e\xf8\xce\xee\
\xb1\xe7\x0d\xcb\x9d\x5b\x83\x8e\x2f\x73\x61\x9f\x67\xb8\x49\x15\
\x17\x45\x08\x32\xe5\x2c\x7a\x03\xd2\x31\xda\x17\x74\x81\x1b\x3a\
\x92\x6b\x4c\xc6\xd3\xe7\xce\xc1\x06\xa1\xcd\xed\x1c\xc8\x99\x08\
\x0f\xe5\xa3\x8b\x47\x29\xe6\x1c\xd4\x7b\x12\x37\xca\x6f\xf0\xcb\
\xc5\x6e\x64\xa8\xf8\xa4\xe8\xb7\xf0\xe1\x95\x7b\x40\x72\xf5\x50\
\x98\x3e\x10\xc6\x6b\xc2\x77\x8c\x6b\xd7\xbd\xbe\xa1\x0b\x23\xb8\
\x0f\x6b\x58\x17\x66\x79\x91\x12\xd6\x45\xc7\xf7\x9a\xc8\x41\xa9\
\xcd\x42\xc2\x39\xc2\x75\x4d\x10\xb0\xdb\xde\x34\x50\x3d\xb9\x5f\
\x04\xd3\x6c\x92\x90\xc6\x67\x57\x8f\xae\xd8\x87\xdd\x4e\x95\x14\
\xd5\x23\x96\x5f\x6e\x99\x87\x47\xef\xa4\x70\x03\x70\x0b\x2c\x5a\
\x85\x1e\x12\xff\x55\x75\x9b\x36\xc8\x93\xf7\xc3\x56\xa6\x9b\xd3\
\xb0\xb8\xe5\x30\x45\x4b\x91\x37\x2a\x7c\xb7\xfd\x18\x5d\xaf\x7b\
\x9d\xfc\x37\x35\x46\x5c\xe9\xd4\xb6\xbb\xfa\x7a\x51\xd8\x15\xa0\
\x7a\x21\xe1\x82\xc7\x07\x09\x75\x15\x48\x80\x3e\xee\xff\xf3\xa6\
\x75\x70\x9a\xb2\xda\xf6\xf5\x54\xd9\xa3\xbb\x6f\x33\x50\x29\x88\
\xf8\xb4\x5b\xe0\x5e\xd5\x36\xe3\xd6\xda\xf3\xe3\x60\x20\x2d\x9a\
\x64\x26\x12\xe1\x2a\x3d\xb6\x25\xc4\xc0\xca\x66\x59\x92\x3c\xbf\
\x5e\x92\x83\xd8\xb7\x60\x5f\x36\x9d\xa8\xdf\xc8\x7c\x68\x1d\xb8\
\xcc\xeb\x05\x33\xd8\xa1\x3e\x80\x84\x32\x20\x19\x50\xba\x10\xfa\
\x71\xff\xd7\x37\x07\x15\xcf\x8e\xb3\x0b\xfd\xd5\x0e\xfc\x2c\x4e\
\x73\xbe\x6a\xbb\x46\x99\x3d\x42\xb5\x8a\xfc\x60\x0b\xa8\xed\x81\
\xb3\x95\x43\xa7\xf2\xf6\x04\x69\x8e\x55\x92\x29\x01\x52\xe9\x90\
\x8f\x40\x4c\xc5\xdf\x06\xd2\xae\x84\x8b\xff\x89\x1d\x02\xb7\xc7\
\xa7\x6d\x62\x3c\x32\x13\x46\x48\x93\x52\x71\xb0\xb2\x1c\xc3\xb9\
\x46\xbd\x1e\xe5\xe3\xf8\xf7\x58\x1c\xba\x69\x8d\xe4\x8e\xb2\xf5\
\x4f\x6d\xac\x47\x41\xfd\xdd\x10\xb7\xf4\xd2\x7d\x3a\xb6\x2a\x1a\
\xbe\xcb\x13\x75\x0c\xc4\x66\x05\xd8\x3a\x1d\x40\xca\xab\x52\x48\
\x99\x2e\x03\xf2\xd9\xef\x8a\xb0\x36\xc2\xf1\xbc\xb1\xc3\x36\x8e\
\x6a\x90\xe5\x01\xa7\x63\xe6\x47\x4f\x70\x4f\x2d\x0d\x10\xfa\xad\
\x36\x1d\x48\x17\xd2\xfd\xfa\xdc\xca\x7f\x4b\x9d\xc9\x4a\xe6\xdb\
\x55\xc0\xce\xec\x16\x3a\xba\x4a\xc7\x83\xbe\x9d\x8a\xfd\xc9\x76\
\x3c\x67\x7a\x8e\xe3\x8c\xe8\x04\xf1\x20\xf1\xff\x08\x31\x46\x2a\
\x71\x6d\x99\x2d\x3b\x93\x0d\x49\xf2\x8d\x14\x00\x37\x0d\x3f\x03\
\xde\x1e\xe2\x4f\xec\x28\x59\x72\x0d\xd9\x64\x65\xc7\x0a\xcf\xc9\
\x46\x06\xca\x17\x0d\xe5\x99\x09\xd2\xfa\xd1\xa5\xff\x96\x72\xc5\
\xd8\x48\x96\x10\x1f\xcb\xc1\x61\xec\xc7\xc7\xdb\xa1\xe8\xa5\x3e\
\x18\xc6\x10\x00\x2c\xa1\x95\xb8\xaf\x33\xff\x8b\x1b\x44\xec\x5a\
\x08\x8b\xb9\x45\xf1\xca\xc6\xae\x01\xd2\x71\x71\xf0\xec\xd8\x37\
\x70\x1b\x81\x3f\xb8\x83\xc8\x8c\xde\x4b\xac\x06\x90\xf7\xc5\x25\
\x0e\xc8\xa7\x24\x81\x3b\x0f\xe2\xbc\x3f\x1e\xfd\x51\xac\x72\x18\
\x8d\x36\xb3\x70\x50\x03\x37\x60\xbc\x61\x99\x86\xb8\xe9\x5e\x3d\
\x84\x07\x84\xfd\xc9\x52\xe7\xb6\x5f\x17\x86\xf5\x99\xb3\x29\x6d\
\xa3\x84\xc7\x3e\xc0\x44\x33\x23\x1e\xc2\xa3\x0c\xbc\x5f\x27\x0d\
\xe7\x49\xfe\xc2\x1d\xc9\xad\x75\x0f\xcd\x8b\x43\xc1\xca\x2d\x52\
\x8d\x6e\x10\x65\xe3\xaf\x84\xb3\xb2\xcf\xf3\x1f\x73\x73\x95\xc0\
\xee\x4c\xcf\xcc\x3c\xc8\xad\x2f\x13\xb5\xe0\x1b\x52\x29\x7c\x4c\
\x74\x5f\x31\xbb\xe9\xf2\xc1\x3c\x75\xf5\x7d\x45\x0a\x44\xc8\x7a\
\x6c\xc2\xf1\x24\x14\x48\xd3\x11\x0e\x2b\xef\x4e\x08\x1d\x5f\x15\
\x32\xec\xbf\x73\x07\x63\x01\xdb\xaf\x2d\xf2\x72\x48\x91\x56\x2e\
\xa0\x19\xb3\xa5\x88\xf4\x1a\xff\xce\xd4\xd6\x8f\x27\x80\x91\xef\
\x8c\x99\x85\x28\x7d\x0b\xe0\x6f\x09\xb2\xed\x3a\x5d\xe8\xac\xa7\
\xdb\x36\xa7\x46\x68\x6c\x77\xb1\x86\xbc\x40\x8c\xd2\x7a\xc6\x7b\
\x36\xba\x50\x5f\x99\x3f\x0c\x01\xb6\x0d\x45\xeb\x1b\xd2\xdd\x18\
\xd0\x68\xb3\xa2\xf6\xdf\xb9\xa3\x83\xc3\x76\xa2\xe6\x4b\xab\x0c\
\x2f\xfb\x42\xe9\x22\x4d\xd2\xfe\xb2\x68\x3b\xc0\xd7\xf1\xf1\xfa\
\x17\xe7\x04\xd0\xb1\xa1\x6f\xbf\xeb\x29\x67\x52\x02\x6d\x20\xc3\
\x24\xac\x35\xbf\x2c\x20\x94\x45\x83\x78\xfc\x28\x3f\xaa\x3a\x13\
\xb6\x67\xc0\x55\xeb\xb5\x85\x17\x46\xbc\x34\x9e\x99\xea\xc0\x20\
\x09\xe8\xe0\x16\x08\xf3\xb5\xdf\xb9\xc3\x45\x34\x8c\x81\x06\x21\
\x96\xb3\x71\x3f\x10\x6c\xe4\x98\x07\x90\xf5\x41\xae\xf5\x0e\x88\
\x9f\x16\x59\x76\xb4\xee\x73\x3a\x6d\x52\x1e\xaa\x28\x47\x07\xff\
\xb0\x5a\xdf\x79\xda\x47\x71\x84\x2b\x77\x30\x11\x29\x4e\x7a\xfb\
\xf6\xe7\xe1\x75\x88\x59\xf4\x2d\xc5\x26\x95\xa7\x8f\xe8\xc0\x22\
\xa2\x59\x10\x09\x3d\x27\x49\x86\xfd\xce\x1d\x83\x38\xf0\xb7\xe8\
\x18\x7b\xbb\x99\x6d\x88\x1b\x4c\x2f\x7e\x84\xb9\x8f\x19\x83\xc2\
\x21\xfe\x8f\xc7\xfb\xff\x2e\xe3\x42\xef\xae\xe0\xd8\xd1\xcc\x41\
\x3d\xa8\x9e\xf8\xe7\xbc\xb1\x59\x99\xcb\x0c\x7c\x7a\x04\xf4\xf0\
\x3a\x66\x89\x1b\x23\xc2\xac\x7f\x6f\x68\xb9\x32\x58\x6a\x81\xf8\
\xc7\xbc\x49\x7c\x31\xd6\xd8\x69\x33\x13\x41\x28\x7c\xf9\xa7\x76\
\x10\x66\x31\xc5\x03\x13\xa5\xd6\x0d\x4e\x4b\x80\x88\x9a\x4c\xc0\
\xcd\xab\x1a\xda\x2e\x9f\xeb\xd3\xeb\x3f\xd2\x72\xd9\x5d\xc3\x71\
\x42\x53\xa0\x5e\x23\x6f\x16\xf2\xfe\x2e\x6c\x80\x25\x04\x7a\x02\
\xe2\xe2\x81\x8b\x0d\xaf\xc4\xf7\x59\xd2\xe3\x7e\x69\x88\xe4\x94\
\x83\x50\xae\x00\x88\x71\x10\x1e\xeb\x75\x26\x37\x28\x84\x05\x1c\
\xf9\x55\x3b\x42\x02\xa1\x92\x6c\x20\x7a\x46\xeb\x78\xd7\x8e\x06\
\xb3\x81\xa2\x8b\x4d\x9b\xf7\xcb\xf2\x0b\x2c\x7c\x50\x66\x0c\x56\
\xf5\xd6\xa0\xf6\x6b\x82\x91\x27\x9b\x4e\xba\xf4\x62\xcc\x94\x2f\
\xa1\x24\x45\x4e\x95\xb9\xaa\x0a\x48\x03\x41\xd7\x69\xde\xfb\x51\
\x0b\x3d\x82\x75\x2d\x1f\x2f\x54\xe6\x51\x41\x44\x39\x93\xa3\xa8\
\xd2\x67\xd5\xec\x57\xed\xf0\xe0\x25\x59\x5a\xef\xae\x5c\x80\x9f\
\xda\x61\xd4\xa5\xa4\xe3\x35\x90\x4f\xad\x6a\x72\xa8\x0f\xcb\xd1\
\xf1\xa9\xf8\x75\x22\x39\xe3\xd6\x42\xd8\x7a\x70\x83\xcc\xac\xd6\
\x76\x6c\xa5\xad\x6c\x3d\x0b\x83\x10\x8f\x1e\x15\xc9\xb8\x59\xec\
\xe8\xc7\x79\x9f\x15\xdc\xbe\x35\x74\x03\xfd\x85\xa6\xd2\x11\x0b\
\xd7\x6d\x45\x83\x81\x7a\x9e\x2b\xfc\xaa\x1d\xef\x4d\x1b\xb1\xbe\
\x8b\x3e\xa8\x4c\xbf\x6b\xc7\x3d\x8b\x72\x72\x0c\x34\x8d\x03\xf9\
\xec\xea\xa7\xfc\x14\x2f\x67\xfd\x0f\x9a\x45\xc0\x72\x12\xfe\xc0\
\x7e\x50\x86\x18\xa6\x6e\x42\xdf\x5b\xa0\xae\x5c\x67\x5b\x15\x7b\
\xa1\xab\x87\x92\x67\x1a\xa3\xe3\x59\xdb\x03\x76\x52\x9f\x57\x27\
\x1b\x86\x87\x0a\x7b\x46\x65\xb0\x6d\x31\xef\xde\x01\x8c\x7b\x0b\
\x02\xdd\x77\xbe\x07\x03\x4c\xff\xd5\x3b\x90\x1d\x37\xa8\x26\x24\
\x91\xe7\xfe\x78\xfa\x63\xda\xf8\xc3\xd0\x30\x9f\x0b\x81\x8e\x9e\
\x6e\xdd\xf6\x89\xf3\xed\x26\x11\xfa\xda\x75\xc5\x40\x35\x73\x43\
\xe8\x14\x43\xd5\xb1\x6d\x9c\xf1\x1f\x38\x48\x18\x83\xe3\x65\x66\
\xf1\xef\xb9\xc6\x74\x0c\x92\xce\x3c\x50\x4a\x5a\xff\xf4\x8e\xb0\
\x40\x83\x8f\xef\x90\xf9\xc8\xdc\xff\xe8\x1d\xa1\xbb\x16\x34\x9d\
\x4b\x7c\xae\x8f\x23\x60\x0e\x17\x7d\x17\x61\x9f\x6b\x11\x52\x4e\
\xe2\xff\xa0\x27\x97\x7e\x49\x55\x21\xc2\x6b\xf2\x57\x01\x80\x81\
\x4c\x8c\x9b\x5a\xd7\xf5\x44\x98\x04\x4e\x4b\x95\xc1\xa5\x05\xf7\
\xcc\xa1\x55\xe3\x06\x0c\xa3\x9c\xcf\xc4\xf7\xfd\xdd\x3b\xb4\x9a\
\x67\xcc\x12\xef\x4c\x7e\x61\x28\x5d\xe5\xaf\xde\x21\x42\x6a\x76\
\xe8\x28\xd1\x66\xf2\xc7\xf5\x1f\xa3\xbf\xb9\xf4\x5c\xb7\xf3\x42\
\xe5\x05\x7d\x92\x41\x75\x48\xf7\x52\xa1\xa4\xa0\x11\x06\xce\x02\
\x00\xd5\x67\xeb\xf7\x98\xee\x1a\x4d\x1f\xee\x0b\xa8\x3c\x37\x87\
\x0c\x4f\x8b\xb7\x3a\xc8\xed\xca\x5b\xf7\x6d\x36\x75\xed\x76\xf6\
\x8e\xdd\xc7\x3b\x33\x8e\xe6\xb5\x3d\xc8\xfc\xee\x77\x1d\xe9\xa7\
\x77\x8c\x6e\x1e\xe8\xfb\xaf\xff\xf8\xfa\x8f\x97\x04\xa4\xa4\x33\
\x70\x4b\xfe\xce\x4d\xa2\xa4\xb6\xa5\x83\xa8\xab\x7b\xf3\x2e\x00\
\x74\x0b\xae\x22\xa1\x03\xf3\x6e\x74\x9a\x1a\x3f\x13\xe0\xeb\x8d\
\x64\x69\xf1\xb0\x62\xcc\x43\x36\xb3\xf3\x3d\xb0\xca\x45\x09\xb3\
\x19\xa0\x1e\xad\x1e\xd5\x0e\x85\x2c\x80\xa5\x1b\xd1\xae\x4f\xc8\
\x0a\xb2\x9c\xf5\x30\xb9\x68\xfe\x76\x87\xcb\x47\x17\x8f\x92\x3b\
\x1e\x3d\xba\xef\xf5\x4d\x56\x25\xa5\x13\xf6\xf7\x9b\xca\xaa\x88\
\x72\xfc\xa7\x00\xc0\xe4\xc2\x34\x9d\x48\x18\x0d\x1d\x38\x72\xe4\
\xd9\xd4\x06\x4b\xec\x8d\x80\xc9\x78\xba\xed\x41\x1c\xf4\x3a\xca\
\x32\x0d\xda\x11\x65\xc0\x2e\xa9\xac\x01\xd7\xdd\x9f\x30\x4e\x3c\
\x67\x9d\xeb\xe4\x83\xf8\x99\x27\x88\xa6\xca\xee\xcd\x36\xa3\xe9\
\x87\x25\xc1\xc3\x47\xcc\x31\xd6\xd6\xb7\x6d\x7d\xee\xa1\x5e\x6a\
\xae\x6e\xed\xd2\xbd\xd3\x53\xfd\x30\x0c\x43\x7a\x01\x8b\xc7\xed\
\x4c\x58\x86\x33\xfd\x9c\xc8\x55\x83\xf6\x84\x4d\x3b\x5e\x05\xe2\
\xfe\x5e\x15\x7e\x58\x63\xb0\xbd\x8e\x80\x01\x61\x01\x1a\xe8\x76\
\x03\x47\x48\x05\x75\x22\xe1\xe7\x0d\x31\x8a\xf3\x6b\x4e\xd7\x4b\
\xfd\x54\x82\x3f\x2c\x88\xd9\xe7\x72\x83\x3d\xee\xdc\x8e\x86\x58\
\x7d\x36\x43\x42\x10\x57\x36\xdb\xbb\x00\x90\x46\xdf\x17\xa8\x5c\
\xee\x33\x96\x6d\x7b\x34\x21\x5d\x39\xff\xe1\xbb\xad\xd7\xdc\x4a\
\x34\x6e\xe9\x14\xd8\x13\x35\x4a\xd3\x73\x84\x77\x82\xdc\x5e\x0c\
\xaa\x44\x9f\xf7\x68\xa8\x0f\x82\x8d\xf4\x8c\x7a\xf6\x82\xbb\xb6\
\xa3\xdf\xfd\x38\xff\x95\xe0\x1c\x50\xeb\x94\x5d\x97\x7a\x9d\x17\
\xf0\xf3\xba\x31\xb6\x1b\x78\xa5\xe2\x7e\x17\x00\xfc\xb5\x4a\x38\
\x23\x63\xbe\x25\x81\xcf\xbe\x13\xae\xb7\x63\x46\x7b\x64\xf3\x97\
\x1b\xdd\xdf\x03\x1d\xba\xbd\x6f\x1d\xf7\x88\x40\x77\xc5\x30\x89\
\x51\x73\x50\xaf\xe3\xb9\x12\x9a\x5f\x15\xcc\x81\xce\x20\x3f\x08\
\x33\x79\x42\x32\xc4\x90\x7b\x7c\xbe\xff\x05\x35\xb3\xa7\xb8\x87\
\x7d\xcb\x3e\x78\x7b\x71\x28\x61\xbf\xb2\xdb\xd1\x82\x61\xa1\x3f\
\x05\x80\x8e\xd0\xfe\x51\x93\x25\xf2\xa7\xcc\x6c\xc1\xac\xf6\x34\
\xf4\x82\xa4\xcf\x82\x78\x6d\x57\x49\xd7\x86\x80\x47\xed\xaf\xa6\
\x43\xe8\x1a\xd2\xf4\xec\x31\x12\xea\x12\x92\x08\xdb\x12\x6b\xd7\
\x51\xd6\xfd\x8c\x33\x69\x4a\x68\x1b\xdc\x2c\xc7\xff\x80\xfa\xe3\
\xfa\x89\x1a\x4b\xba\x9a\x52\x88\xf7\xc5\xc4\xf0\xa2\x15\xc4\xc2\
\xc8\xf6\xc8\x4f\x01\x60\xfa\xc8\xe7\x85\xca\xb2\xbb\x86\x8f\x3c\
\x21\xf3\x8d\x5b\x10\x9e\xb8\x4e\x77\xd9\xf4\xb6\x61\xc4\xdc\xf8\
\xb6\xa2\x5a\x80\x8e\xc0\x78\x89\x5c\x52\x74\x76\x9a\x01\xd2\x5e\
\x5a\x4a\xed\xdd\x61\x5c\x28\x01\xca\x1e\xc8\x5a\x99\x50\x45\x96\
\x8f\xeb\xff\xee\x20\x31\x8a\x9a\xde\xa3\x05\xa1\x68\x8e\xe0\xf7\
\x9d\xec\x79\x06\x30\xf7\x53\x00\x90\x4c\x21\xc8\x79\x0e\xcd\x51\
\x03\x50\x0f\xcc\x9e\x10\xed\x23\x52\x40\xd3\xb1\x26\x34\xaf\x61\
\x9f\x39\x10\x02\x27\x32\xc9\x01\x9e\xc4\x8b\xe0\xb6\x49\x15\xac\
\x45\xc7\x38\x58\xc9\xf8\x49\x72\xd5\xc4\x0a\x34\xa8\x13\x96\x2a\
\x79\x9e\xfd\x62\x1f\xcf\x7f\x8b\xcb\xbc\xd3\x1a\x2f\x23\x89\x0d\
\x78\xb0\xdd\xd1\xdc\x3b\xc6\x32\x52\x7e\x17\x00\xaa\x8b\x01\xf5\
\xe2\x19\xd6\xe1\x4f\x37\xcf\xed\xa2\x68\xef\x93\xd5\x98\x55\x8e\
\xf3\x5e\x08\xa7\x6b\x04\xf4\x0d\xbb\x9a\xa5\xe3\xa7\x28\xe4\xbe\
\xa0\x2c\xa5\x88\x9f\x32\x18\x87\xfc\xd7\x29\xcf\x43\x07\xf7\x3a\
\x28\xd9\x90\x3b\x97\x1c\x51\x33\x3e\xbd\xfe\x34\xe1\x29\xfa\x25\
\x88\xf9\xd4\x62\x36\xee\x17\x42\x38\x01\xfd\x5c\xa0\x14\x1f\xb3\
\x00\x70\xb5\xf5\x9a\xc9\xec\xab\x65\x3c\xea\xba\xed\x53\xe9\xb9\
\x10\x90\x82\xd8\xec\xda\x2b\xd3\x6a\x73\xf0\xc4\x70\x8c\x84\xb8\
\x08\xdf\x25\x3c\x26\x19\x74\x7b\x33\x3f\x8c\xa3\x08\xac\x7c\x4e\
\x06\x29\x70\x37\x11\x62\x99\xd4\x02\x7f\xee\xe3\xe9\x3f\xd4\x61\
\xa4\x69\xe4\x44\x13\xb5\x57\x6c\x08\x7f\x92\x16\x01\xa1\xbd\xf0\
\x88\x58\x97\x9f\x02\xc0\x5a\xda\x3e\x3b\x75\xf8\x9d\x29\xa4\x6b\
\x6f\x03\x29\x23\x57\xe1\xc8\xcd\x53\x9a\x6e\xae\x63\x52\xbd\x78\
\xf4\x94\x7b\x5b\xc0\x73\x58\x76\x31\xa4\xac\x39\x35\x89\x11\x5f\
\xac\x1a\xac\x30\x4b\xe9\x18\xf5\xc1\x18\x8a\x11\xb6\xd5\x99\x37\
\xda\x3e\x9e\x00\x54\x70\xa1\x35\x87\x8b\xb8\xd9\xb4\xa4\x6c\x1a\
\x33\xa5\x53\xfc\x22\xd8\x9d\xea\x4c\xee\xbd\x88\x58\x90\xea\x85\
\xe7\x9d\xab\x5b\xe1\x35\x6d\xf6\xa1\xf8\x0e\x0c\xba\xbf\x51\x00\
\x3d\x22\x75\x7d\xf6\x91\xc6\x70\xcf\x98\x2a\x78\x8d\x62\xf6\xd5\
\x89\xba\xee\xe3\x97\xe3\x23\x69\x4d\x2b\xb3\xf9\x40\xbb\x5a\x21\
\x90\x09\xfe\xb7\xcf\xae\x7e\x6a\xe0\xd2\x59\x94\xdd\xac\x15\x18\
\x91\xa1\xb4\xd2\x24\x1e\x3f\x35\x8a\x95\xa0\x6d\x06\x74\xea\x75\
\x88\x5d\x20\x87\x25\x8e\x40\x8e\xf7\xdd\x85\x3a\x0e\x34\x68\x38\
\xdb\x83\xb8\x98\xa1\xbb\x74\x75\xec\x17\x33\xc0\x3b\xfa\x0a\xce\
\x91\x4f\xa4\x31\x41\x2f\x72\x8b\xbf\x04\xbe\x99\x05\x0a\x1b\xc6\
\x11\xcf\x52\x2a\x35\xc0\xc7\xfb\xff\xcb\xec\x69\xdc\x26\x6a\x23\
\x04\x59\x1e\x32\x3a\xba\x24\x5a\x08\x28\x61\xad\x64\xe6\x40\xdf\
\x3e\x27\x7a\x0a\x9e\x14\x06\x84\xd7\x4c\x10\xac\xaf\xb3\xac\xdb\
\x02\x17\xeb\x87\xb6\xa9\xbd\x36\x5a\x90\xd1\xc0\x38\x7c\x60\x1b\
\xc6\x36\xdd\x22\x02\xe5\x8c\x58\x01\x31\xdf\x5f\x80\x0f\x7a\x05\
\x27\x10\x0d\xee\x46\x2d\xa9\xf7\xbb\xd1\x8f\xfb\x3f\xb0\xfa\x58\
\x5e\x02\xf2\x0b\x41\x3a\x3f\x31\x08\xa2\x07\x3b\xd8\xcc\x68\x2f\
\x4b\x18\x9e\x56\x42\x27\xf5\x07\x0c\xfc\x76\x4f\x6e\x12\x1f\x19\
\xcf\x04\x46\x53\xf2\x82\xbc\xc9\x0c\xf5\x06\xc6\xa4\xea\xb0\xef\
\xcc\xde\x51\x7b\x3d\x6b\x68\x37\x99\xc0\x17\x4d\xe5\xaf\xc0\x77\
\x58\x51\xf9\x70\xfc\x5c\x76\xef\xcd\x93\xce\x4f\x2f\xff\xb6\x2e\
\xc5\xf6\xda\xf1\xb9\x0a\xf4\x8d\x4e\x33\xb7\xcd\x48\x4b\x52\xf0\
\xc9\x6c\x8a\x4b\x96\x22\x9b\x71\x1d\x0f\xf2\x94\x1e\x89\x5e\x57\
\xdc\x04\xb3\x68\x81\xbc\x31\x77\x74\xf9\x1e\xe3\xa0\x0b\x68\x40\
\x07\x02\xa7\xac\xd1\x33\xf0\x65\x12\x1f\x36\xfe\x4e\x7c\x96\x92\
\x17\xb6\xc1\xa9\x8b\x49\x3b\x79\xee\x8f\xf3\x3f\x1f\x03\x38\x74\
\x5b\x06\x83\x5b\xe9\x21\x91\x0b\xfa\xa5\xb5\x24\x2c\x1f\xce\xae\
\x4c\xad\xb7\x65\x96\x22\x8f\x05\x7a\xa6\xe5\x25\x49\xde\x86\x41\
\xea\x6b\xdc\xcc\x17\x11\x52\xe4\x6c\x21\x33\x75\xfa\x38\xe0\xda\
\x81\x79\x13\xdf\xeb\x3f\x13\x5f\x9e\x57\xc5\xe9\xbd\x29\x83\x41\
\x62\x43\xd2\xf5\xe9\xf5\x4f\xf9\x21\x72\x7a\xbf\x84\x61\xa2\xa4\
\x35\x53\xb1\xcd\x6e\xd6\x97\xa3\xb3\x88\x11\x23\xc2\x14\x3c\xfd\
\x34\x33\x79\x8f\xdc\x36\x22\xaa\x15\xa0\xd2\x52\xfd\xea\xd1\xf4\
\xdf\x83\x43\x81\x82\x51\x04\xe5\xbf\x26\x3e\xb8\x5b\x8f\xbc\x23\
\x0a\x42\x00\x48\xcd\xc7\xbd\xdf\x7b\x76\xa1\x65\xe0\x05\xd7\x6b\
\x4f\xc3\xd7\x54\xc9\x6c\x71\x28\x8f\x55\x48\x03\xf0\xcd\xb5\x68\
\x8f\x0f\x0c\xbb\xdd\x94\x38\x10\xba\x2c\x40\x74\xb0\xb5\xf6\xc8\
\xc3\xd5\x82\x4c\xdb\x7b\x70\x08\xb4\x19\x95\xfc\x1f\x89\x2f\xd8\
\x2a\xcb\x4c\x22\x8d\x14\x64\x5f\x79\x0c\x1f\xef\x7f\x9f\x6b\x2c\
\x34\xee\x0b\x47\xcc\x96\xfd\xd1\x62\x44\x3e\x2c\xc1\xcf\x2e\x6f\
\x6b\x12\x22\xfd\x44\x3b\x86\x7c\x37\x96\x5b\x2e\x15\x1c\xb5\x44\
\xd6\x43\xed\x17\x41\x9c\x9f\x11\xe4\x23\x89\x69\xc7\xe6\xe9\x6c\
\xff\xfc\xaf\x89\xcf\x9f\xa1\x49\xd6\xac\xd0\x16\xf2\x08\xe2\xf3\
\xde\x1f\x44\xbf\x71\xbd\x5d\x2b\xde\x18\x65\x45\x09\x95\xf2\x96\
\x5f\xab\x2d\x2d\xa0\x99\x83\xa6\x0b\xda\xb0\x63\xa9\x1c\x9b\xb3\
\xe8\xe7\x80\x5e\xf8\xbf\xa5\x4c\xf4\x12\x98\x71\xb1\x31\x7e\x11\
\xeb\x10\x43\x90\xdf\x43\x93\xff\x94\xf8\x9e\x43\x93\x39\xa1\x8e\
\x08\x67\x4e\x8d\x11\xe4\xf3\xfd\xff\xfb\x1a\x93\xf5\x48\xc8\x04\
\x38\x42\x16\x6b\x68\xea\xe7\xab\x4a\xc1\x8e\x23\x5a\xa4\x2d\x60\
\xfa\x56\x81\x6f\xa7\x99\x4d\xcb\x61\x20\x39\x72\x18\x11\x17\x24\
\x00\x13\xee\xd5\xba\x14\x03\x5a\x2d\xbc\x68\xf3\x6b\x68\xf2\x1f\
\x0a\x1f\x3f\x43\x93\x24\xb7\x09\xfb\x5e\x96\xf1\x74\xc4\x8f\xf7\
\xbf\x39\x64\x28\x91\x38\x16\x50\xdd\x85\x5d\xda\xb6\x9a\xa3\xd7\
\x77\x5b\x12\xa2\x01\x77\x6c\x18\xe9\xcf\x3b\xb5\x8c\x64\x95\xd4\
\x6e\x97\xd7\x86\xf4\x6f\xce\x4b\xab\xe8\x8d\x64\xf9\x0c\x48\x1a\
\xa6\xde\x84\x28\x44\xfa\xaf\x85\xaf\x9f\xa1\x49\x6e\xfc\x49\xcc\
\x20\x4d\xef\xe3\xfc\x5f\x28\x00\xf9\x81\xbc\x0e\x19\xf0\x1a\x9c\
\x92\x18\xee\xf0\x35\x29\x36\x12\x48\x2f\xf6\xf5\xcc\x59\xcd\x31\
\x87\xb8\x20\xb1\x51\x52\xe6\x8c\x6b\x1f\x2c\x6e\xcb\xd6\xfb\x58\
\x48\xbd\xad\x06\xca\x89\xf0\x0e\x91\x83\xca\xcb\x3f\x14\x3e\xff\
\x18\x9a\x64\x66\x93\x04\x01\xe7\x26\x36\xb3\x7f\xfc\xfc\xbd\x5e\
\x45\x7f\x15\x4a\x96\x6d\x8b\x12\x14\xaa\xe9\x74\xde\xc8\x7b\xa5\
\x43\x97\xb5\x9b\xbd\xcc\x43\xac\x02\x63\x60\xbd\xee\xd9\x30\xca\
\x85\x76\x1e\x35\x1d\xc3\xc2\x78\x3c\xe4\x83\xf3\x5c\x39\x59\x02\
\xb7\xdd\xff\x63\xe1\xfb\xd7\xd0\xe4\x7d\x31\xda\x30\x36\x22\xd7\
\xb4\x21\xd6\x8f\xf3\x9f\xeb\x39\xea\x64\x6c\x3a\x27\x96\x0c\xfb\
\x31\x48\x22\xc1\x3c\x48\x4e\xb6\x02\x26\x5d\x0b\xc4\x35\xcf\xf6\
\x8f\x36\xb6\x39\xc7\x21\x16\x49\xed\x31\x3b\x22\x90\xc9\x1e\xf8\
\xee\x59\x78\x41\xcf\xd7\x4b\x2d\x97\x79\xf5\x7f\x6d\x7c\x68\x7f\
\x1f\x9a\x0c\x64\x1c\x0d\xa2\x22\x5d\xf0\xcf\xd7\xff\xdb\xeb\xb9\
\x08\x55\xb9\x2e\x61\x6b\xab\x67\x62\x62\x77\x32\x34\xac\x8d\xa6\
\xfd\x98\x83\xc0\x6a\x2d\xb9\x20\x51\x0e\xaa\xcc\xc2\x00\x4f\x64\
\x96\x2d\xd6\x04\xd6\xc1\x3a\x4e\x8a\x14\x09\x64\x47\xa7\x97\xcb\
\xa5\x4d\xd9\xfe\xa5\xf1\xe5\xf8\xf7\xa1\x49\x09\x56\xf8\x47\x3d\
\xb3\x57\xf8\x7f\x21\x01\x72\x36\xe9\x9b\x77\xd1\x48\x33\xf3\xb1\
\x18\xbb\x16\xfb\xd2\x70\x22\xf1\x1d\xd7\xdb\x8b\x17\x0c\x01\xb9\
\xa1\x82\xa3\x23\x67\x36\x2a\x78\xa5\x39\x1f\xf0\xae\x84\xef\x6b\
\x7b\x48\x90\xae\x3c\x57\x90\xa8\xf6\x08\xed\xdc\x42\x16\x51\xdf\
\x8d\x4f\xe7\xbf\x0f\x4d\x56\x04\x11\xf9\x85\x7b\x4b\x68\xf5\x9f\
\x5e\x3c\xcc\x46\x7f\x15\x89\x57\x0d\x1d\x3c\xe4\xb5\x4c\xc0\x86\
\xc7\xfd\x3a\x77\x24\x7c\xb0\x6f\x59\x80\x9c\x2d\x51\x5d\x3c\x13\
\xca\xab\xcd\xda\x21\xe1\x21\xe5\x9e\xb9\xfb\xf0\x46\xcf\x1e\x71\
\x40\x10\x7d\x33\x66\xa1\x52\xf8\x25\x1d\xbb\x98\x8d\x6f\x15\xc4\
\xbf\x0f\x4d\x8e\xa3\xd0\x06\x72\xaf\x44\xf5\xf2\xf1\xfe\x0f\x2b\
\xcb\x4e\x7c\xec\x59\xcd\x59\xfc\x99\x8e\x36\xfd\x6a\x1b\x97\x72\
\x03\x31\xd1\x31\x15\x6b\x34\xf8\xfa\x69\x27\x58\xc9\x19\xfc\x66\
\x83\x5c\x3a\xdc\x65\xae\xde\xbc\xf7\x20\xdc\x7e\xb9\x50\x39\x9a\
\xe5\xd2\x31\xed\xdf\x8d\x8f\xb3\x0a\xf6\x1f\x86\x26\x37\x8e\x38\
\x51\xa1\x61\x70\x65\xf5\xc7\xf1\xef\x86\xe8\xf6\x88\x35\x20\x39\
\x6f\x73\xa6\x4d\xda\x79\x97\x09\xf5\x4b\x04\x2d\xd1\xdb\x75\x8a\
\xa4\x75\x16\x39\xe6\xdc\x07\x42\x64\x78\x37\x48\x87\x56\x99\xbe\
\xd6\xd8\x26\xa6\x5f\x0f\xa8\xaf\x9d\x21\x43\xf2\xa3\x6c\x01\x18\
\x67\x4c\x0e\x20\xff\x30\x34\x89\xb1\x7f\xb7\x79\x53\xf7\x02\xa5\
\x7d\x7c\xfe\x71\xd9\xb3\xde\x6b\xd0\xf0\xec\x01\xd9\xfa\xcc\x62\
\xae\x73\x3a\x01\x66\xba\x27\x2f\xd0\xfc\x82\xc0\x0e\x1d\xe3\xbc\
\xb3\x40\x21\xfe\x5d\x25\xb9\x83\xdc\x7a\x23\xd7\x3d\xc4\x4a\xa4\
\x73\xc7\x60\x33\x97\x7f\x57\x20\x65\x7a\x3c\x8d\x50\x49\x47\xf2\
\x0f\x43\x93\x82\xae\xfb\x30\xa8\x40\xe8\x34\xed\xc7\xfb\xbf\x0b\
\x03\xd5\xde\x1e\xfb\x35\xb8\x02\x35\x67\xb5\x95\x78\xff\x63\x8e\
\xed\x54\xbf\x47\xf4\xdc\xfb\x55\x19\xf4\x23\xaf\x52\xd4\x1b\x43\
\x43\xc6\x3f\x74\x64\x78\xc7\x1c\xf4\x86\xf8\x4c\x60\x8c\xc6\x81\
\x38\xa7\xf5\xeb\xe9\x64\x67\x73\x54\xe2\x3f\x0f\x4d\x36\x7d\x2c\
\x0c\x02\x5f\x9d\x9a\x93\x20\x1f\x96\x5c\x82\x6b\xd9\xac\x04\xde\
\xf8\x9e\x6c\x74\xce\x84\x6c\xaf\x73\xa0\x8b\x3a\x6d\x22\x32\xd7\
\xe3\x35\xb7\x62\x01\x65\x5c\x5d\x08\x5c\xf2\x0c\xcb\x9b\xdc\xe4\
\x7b\x78\x61\xdf\x4c\x6f\xb9\x8b\x51\xd3\x7f\x6c\x50\x77\x4b\x37\
\x8d\xec\xe9\x3f\x0f\x4d\xee\xa5\x89\x00\x5e\x61\x2c\xd5\x1f\x5f\
\xfe\x6c\x62\x28\xd4\xc0\x31\x87\x3f\xf1\xbf\xeb\x83\x06\xed\xf3\
\x0e\xcf\x33\x93\x1d\x84\xdd\x8c\x5e\x37\xa2\xdb\xf6\x3a\xf0\x10\
\x85\xcb\xde\x83\xc3\xc3\x5e\xba\x75\x73\xac\xcf\x9a\x71\x42\xb9\
\x38\x2a\xc1\x8d\xe8\x68\x80\x47\x78\x8c\x1f\xb0\x59\xfe\x0f\x43\
\x93\x6d\x35\x02\x83\x4d\x7e\xed\x7b\x53\x1f\x67\xc0\x39\x6e\xe8\
\x91\x52\x58\x96\x1d\x43\x7d\x5b\xf9\xab\x8b\x17\x9f\x68\x07\x4f\
\xce\x74\x43\x9b\x97\x31\x23\x57\x33\xe8\x07\x2a\x9a\xfb\x3a\x3b\
\xbd\x26\x5f\x18\x87\x47\x14\xdb\xdb\x82\xb4\x26\x9c\x48\x7c\x89\
\xdd\xd0\xe0\xc1\xe8\x35\x82\x4c\x91\x89\xff\x3c\x34\xc9\x83\xef\
\xf2\x5c\x62\x05\xa6\xfb\xc7\xfb\xbf\x86\x11\x97\x44\x3f\x5d\x66\
\x4d\x7b\x56\x36\x2a\x82\x53\xe4\x3c\x87\x9b\xd9\xdb\x65\x99\x8d\
\x30\x2c\xa0\x21\xab\xd8\x0d\x41\xb4\xcb\xd8\xbe\xbc\xe7\xf6\x85\
\xe4\xa1\xf6\x8c\x4b\xb8\x08\x9f\x6d\xa4\x9c\x6d\x9d\xc1\xc6\xdf\
\x8d\xc3\x72\x8b\x9d\xbd\x4f\xf7\x6f\x43\x93\xad\xa4\x9a\xfc\xbc\
\x32\x89\x0a\x08\x1f\xf7\x7f\xd6\xe1\x23\x83\xc3\x70\x27\x24\xb4\
\x46\x90\xcb\xbf\x40\x21\xd2\x7b\x30\x9e\x17\x56\x84\x11\xa6\x59\
\x57\xa9\xd8\xc2\x6f\x65\xad\x2c\xa9\x8a\x27\xaa\x8b\x48\x27\xba\
\xbf\xf7\x60\xe7\x72\xfd\x31\xce\xe2\xda\xe8\x15\x83\x23\x9a\xcd\
\xbf\x0f\x4d\x52\x53\x96\x1a\xdd\x10\x13\x59\xba\x8f\xdf\x7f\x92\
\x5a\x42\x1d\xd0\x68\xc4\x7c\x96\x78\xb2\xb7\x48\xf3\x40\x0d\x36\
\xdb\x59\x7a\x69\x57\x1f\x6c\x84\x77\x51\x13\xc1\x0c\x11\x1c\xe1\
\x7d\x82\x79\x71\x0f\x17\x73\xe0\xad\xec\xb3\x21\x60\xab\xb3\x1f\
\x7e\x79\x23\xa2\x2d\x4f\x18\xdd\x0b\xd5\x91\xaa\xf6\xb7\xa1\x49\
\xa2\x58\x95\xf7\x90\x6d\xd6\xcb\x11\x14\x7f\xbc\xfe\x07\xf1\xa8\
\xcc\x79\xcf\xf1\x81\xd1\xf5\x9f\x7c\xef\xfc\x2a\x30\x6f\x40\xa2\
\x81\x1b\x5d\xdb\x93\x89\x5e\x28\x60\x50\x0f\x11\xca\x71\xed\xab\
\xc2\x83\x76\xb6\xad\x65\x66\xb7\x01\xe9\xcf\x76\xee\x27\x9a\x4f\
\x41\x3d\x42\x80\xfb\x1e\x8c\x83\xdd\x82\x70\xe4\xef\x43\x93\x4a\
\x23\x0a\xbc\xa8\x10\x0c\xd6\x9e\x9e\x8f\xa7\xff\x71\x95\xe6\x35\
\xb1\x0d\x52\xd1\xc3\xee\x17\xba\x80\xeb\x81\x77\x56\x26\xed\x85\
\x29\x0c\xd4\xa9\x83\xd9\x6e\x40\x70\x6f\xef\x8d\xe7\xb2\x5d\xdd\
\xcc\x7b\x33\xac\x76\xb6\x3a\x0b\xfa\x0e\x18\xc7\xfa\xb5\x86\xde\
\xc3\x59\x91\xe8\xcd\x66\x2a\x61\x57\xef\xd2\x5f\x87\x26\x27\x0a\
\x4a\x6b\x30\x6e\xa5\x89\xa2\xaf\x44\xb8\x78\xe8\x8f\xfb\x7f\x0b\
\x94\x5c\x2f\x48\x93\xdc\xcc\xc9\x44\x0c\xe1\x75\x03\xce\x71\x0f\
\x5a\x96\x5c\xda\x8c\x47\x2b\xe5\x95\xb5\x58\x0b\x7f\xec\x5a\xa5\
\x54\x3e\x7a\x27\x11\x37\xf9\x51\x87\x81\x71\x11\x9b\x84\xb9\x8e\
\xbe\xb9\xc9\x8c\xed\x02\x23\x4b\xe2\x52\x2e\xf2\x2f\x43\x93\xbb\
\x07\x56\xd6\xdc\x67\xc7\x51\xd7\xc8\xac\xa8\xe5\xe9\xe3\xf3\x1f\
\x5c\x0b\xe2\x10\xec\x60\xb8\xb7\x3f\x64\xdc\xdb\x17\x31\x79\xb3\
\x94\xe5\x75\x4d\xdb\x36\xc6\xb5\x38\x5a\x58\x5d\x38\xc3\xf8\x5e\
\x70\x85\xaa\x77\x51\xeb\x16\x45\xbe\xe7\x0d\x26\x08\xef\x8c\x87\
\xad\x31\x16\x66\x72\x13\x52\x9a\x03\xc1\x4b\x69\xfb\xf1\xe7\xd0\
\x24\x10\x47\xa4\x16\xce\x13\xd3\xf0\xd4\xdd\x9c\x9d\x8f\xdb\xc7\
\x01\xd0\x95\x18\x1e\x8c\xaf\xf0\x68\x33\x27\x81\xc0\xae\xc2\xf8\
\x94\xb7\x93\x06\xc7\x7b\xbc\x1c\x14\x01\xb1\x9a\x1e\x1e\x3b\x3b\
\xd6\x7e\x46\xa0\xf6\x4b\xee\x33\x37\xd0\x6b\x9a\x14\x96\xcc\x75\
\x3c\x08\x70\xf6\xb5\x64\xca\x8e\xe5\xe8\x88\x2b\x43\xa8\x7f\x19\
\x9a\xa4\x08\x99\x0c\x8d\x52\xe1\x0f\x91\xf7\x4d\x7a\xb9\xc6\x8f\
\xe7\xbf\x37\x1b\x29\x6e\x00\xd2\x80\x08\xa9\xe6\x04\xf6\xd4\x20\
\x6c\x45\x03\x0e\x47\x1d\x1b\x79\xcd\x6c\xbd\x87\x3a\x12\xcc\x91\
\xff\x49\x8d\xde\xed\x92\x6f\x1f\xb1\x42\xec\x3c\x41\x5c\x8e\x8c\
\x9a\x5c\x36\x8f\x64\xf0\xe8\xfd\x46\xa6\xe0\x71\x1f\xe0\xcf\xa1\
\xc9\x85\x51\x89\x5b\xe2\xb5\x31\x3c\x6b\xa8\xee\xdd\x4e\xc3\x3e\
\xde\xff\x97\x53\x25\x7c\xeb\x82\xce\xd0\x95\xef\x73\x01\x54\x75\
\xc6\x6c\x65\xc1\xf5\x92\x62\x9a\x41\x7d\x41\xb8\xeb\xe6\xed\x16\
\x9e\xcd\xb4\xfe\x31\xe3\xfd\x1b\x30\xc0\x41\x7b\x1f\xc9\x4b\xf9\
\x93\xca\x98\x1b\x14\xd3\xba\xbc\x74\x6a\xd1\x07\xf2\xc7\xd0\x64\
\x16\x4c\x49\x3d\x72\x9e\x09\x11\x0f\xa2\x50\x52\x67\xf3\xfb\xc7\
\xf3\x5f\x4c\x62\xb8\x52\xb3\xa3\xe9\x0d\xc5\x9e\xeb\x10\x6c\x3f\
\xab\xe2\x90\x94\x9e\x29\x21\xb0\xd6\x5b\xab\x89\x46\xc2\xe6\x08\
\x6f\xd6\xe7\x0b\x77\x69\x26\x02\x6b\x5e\x94\x43\x56\x28\x74\x40\
\x70\xfc\x57\x32\xd3\xf7\xb2\x0e\xf3\x7b\x68\xd2\x78\x81\x48\x97\
\x47\x52\x6e\xb2\x04\xcd\x89\x8c\x65\x11\x04\x43\x62\xfa\x78\x05\
\xd4\x89\xb0\x81\xaa\xe9\x36\x47\xc1\xb3\xa9\xf7\x1d\x91\xac\x8d\
\x51\x85\xd6\x64\x32\x37\x5c\xcc\xd8\xab\x64\x9c\x53\x91\x1b\xc9\
\x3d\x5c\xbb\x46\x02\xa7\x66\x2a\xbc\x30\xe9\x91\x1d\x03\xdb\xa3\
\x00\xdc\x0e\x4f\x50\x03\x90\xfa\xc7\x35\x28\x72\x84\x5a\xdf\x99\
\x13\x78\x51\x91\x10\x5a\x16\x3e\x08\xa5\x7e\x47\xa0\x41\x65\x1e\
\x4e\x2d\xf5\xe3\xf9\xff\x6a\x59\xf4\xdc\x37\x97\xd2\xbe\x6e\x3b\
\xfa\x6e\x3f\xd3\xb9\x22\x50\xb7\xaf\x78\xd2\x7d\x16\x87\xb7\x95\
\x1a\x16\x10\x1d\x2f\xe0\x4e\xe4\xf6\x18\x00\xde\x57\x3a\xdd\x8a\
\x26\xb4\x97\xd7\xbe\x86\xd9\x3a\x78\x22\x0c\xea\xad\xa5\xd1\x83\
\x10\x3b\x86\xc4\x52\xe7\x14\xed\x8e\x94\xb9\x17\x0c\x81\xae\x63\
\xe4\x9b\x85\xd1\x99\xf5\xb1\xf1\xdc\x15\xfd\xfc\xfd\x17\x45\x6c\
\x6d\x47\xc2\xa7\x61\x3d\x8f\x0b\x17\x68\x08\xf2\x16\xc2\xa8\x42\
\x47\x5f\xe6\x75\x85\xb3\xd7\x59\x6e\x5a\xec\xab\xad\x46\x59\x73\
\x20\xf4\x55\xe9\xb5\x22\x15\x7a\x4d\x1b\x26\xcb\x3a\xcb\xdd\x47\
\x6e\xb8\x01\xcf\x75\xed\x2e\xf5\x44\x58\x89\x1a\x83\xc9\x35\x58\
\x6e\x14\x1c\x9a\xc1\xa1\xf6\x02\x9b\x3b\xde\x7d\xb6\xd4\xab\x25\
\x58\x4f\x3f\xbd\x7e\x32\x26\xf9\xdd\xd8\x1c\xee\xb8\x07\x46\x72\
\x6a\x6a\xa2\x11\x18\xa2\x1d\x85\x38\x88\x9b\x0b\x79\x41\xca\xc6\
\xe4\x17\x2a\xb1\x57\x10\x09\x11\xa1\xb3\x13\x89\x80\xa9\xd2\x10\
\x49\x90\xd2\x11\x98\xf7\x04\x93\x39\x2f\xb9\xa7\x75\x82\x62\x29\
\xf5\x81\x5a\xb3\x6c\x18\x3a\xeb\x0c\x73\xe1\xbc\x0e\xb9\x20\x38\
\xb2\x08\x35\xc0\xc0\x4a\xf5\x9a\x3e\x7e\xff\x69\xb4\x81\x9c\x81\
\x90\xd0\xf3\x98\x49\x3c\x90\x6b\x9d\xed\x0e\xc2\xb6\x0d\x88\xd9\
\xa4\xe3\x5e\xa2\x53\xd7\x78\x9a\x5b\x8b\xe8\x07\xb2\xd6\x73\x0e\
\x80\xad\x47\x44\x17\xb8\xe1\x16\xc0\xe3\x28\x86\x00\x2b\x89\x97\
\x22\x45\xa3\xb9\xb3\x48\x6e\xd6\x86\x41\x5f\x9b\xe1\x5c\x46\xb0\
\x0b\x5a\xf9\xbd\xd9\x19\x25\xd2\xcc\x1b\x8b\x92\xc4\xd2\x3f\xde\
\xff\x34\x60\xb5\x04\xac\xac\x77\x9d\xd7\x1e\x5f\x7b\xd9\x37\xa1\
\x1c\x1c\x12\xb9\x10\x22\xf4\xdd\x30\xab\x59\xed\x06\xf1\xae\x40\
\x93\x66\x7d\x98\xa5\xb6\xc9\xff\xe7\xc5\x50\x45\x6a\xaf\x6d\xc8\
\xda\x76\x3a\xef\x51\xc8\x1e\x1d\x88\xbf\x04\xef\xd2\xde\x72\x4e\
\xbe\xaf\x5b\x77\xcc\xf4\x9d\x7a\xe0\x2a\xf6\xb1\x8a\x35\x1c\x08\
\x8b\x63\x3f\xa2\x6a\x1f\x9f\xff\xe5\x18\x94\xac\x94\x66\x9d\x37\
\xb5\xb5\x97\x3f\x4b\x5f\xd1\x1a\x50\x9d\xd1\x27\x2c\x20\x73\x5a\
\x28\x6f\x54\x0d\x7c\x91\xea\xc3\x93\x5c\x2d\x25\xea\xe8\x94\x92\
\xfb\x68\x84\x92\xec\x79\x83\xc1\xf8\xc5\xf3\xca\x5c\x09\x63\x4b\
\x2f\x17\x09\xcb\xa7\x59\x47\xd4\xbb\xda\x90\xfe\x86\x8d\x12\xd1\
\x7a\x26\x63\x22\x0c\x2a\xc7\x28\x2c\xdf\xd1\x7f\xdc\xff\xb7\x79\
\xed\x45\x9f\x71\x28\x9a\x79\x07\x98\x5b\xf5\xbc\xb2\x1c\x71\x60\
\xe5\x61\xa0\x37\x58\xc4\xbc\xdd\xe0\x7e\x10\xff\xc1\xfe\xa4\xbe\
\x52\xae\xa5\xd0\x2f\xe6\xc9\x7b\x68\x92\x68\x85\xf1\xcc\x22\xa6\
\x67\xf8\xc3\x1a\x11\x3d\x77\x08\x98\x8e\xf7\xdd\xa0\xfb\xd5\x97\
\x88\x8a\x84\x3f\xfa\xd3\xe9\xff\xcc\xb6\x91\x75\x12\x4e\x1d\x68\
\x7b\xdc\x67\x17\x0f\xf3\xfa\x3f\x74\x71\xaa\x9e\x88\x6d\xed\x2c\
\xe5\xa2\x75\xa2\x5b\xf7\x59\xc2\xf3\xda\x6f\x74\xff\x06\xa1\x2b\
\xf4\x80\x14\x21\xab\x68\x66\xda\xe7\x2e\x32\x5d\xec\xdd\xb9\x3f\
\x87\x26\x95\x9c\x77\x41\xe1\x52\x88\xb4\xbe\x46\xc3\xc4\xbe\xeb\
\xb6\xbe\x11\x55\x65\xad\x82\xab\x07\x25\xfd\x9d\x64\xcf\xcb\x6c\
\x02\x1b\xb3\x69\xf8\x81\x8b\xda\xfe\x71\xfe\x97\x4d\x73\x26\xe7\
\x36\x99\x58\x9b\x77\x16\x2d\x26\xce\x1e\x16\x59\xed\xbe\x85\x33\
\x28\xa5\xad\x99\x47\x39\x91\xac\x7b\x63\xd7\x81\xcc\xd6\xac\xc7\
\xbf\x0f\x4d\xe6\xdd\x3b\xa3\xa2\xad\xe9\x1c\x76\xde\xf0\xfa\x80\
\x6e\x81\x22\x97\xce\x08\x01\xed\x62\xb5\x1d\xb9\x29\x04\xbd\x3c\
\x83\xd7\xbe\xcd\xdc\xf1\x87\x65\x5f\xf0\x31\xb6\x15\x1d\xfc\x9c\
\x70\xe8\xe8\xf7\xe7\x7d\xf7\xab\x31\x31\xf4\xdd\x46\x23\x91\xdf\
\x59\x58\x83\x81\x70\x15\xa4\x71\x14\x1a\x5d\x97\xdc\x73\x8e\x7f\
\x1f\x9a\x2c\x5b\xc2\x25\x2a\x26\x1c\xa1\x06\xb1\x40\x83\x1d\x44\
\xbc\x66\xf3\xc3\xd2\xb9\x41\x87\xd9\x99\x66\x73\x94\x0c\xbd\xcb\
\x2c\xa8\x83\xde\x3e\xbf\xfe\x33\x59\xcf\x1c\xd4\x95\x17\x08\x3b\
\xe7\x3a\x23\x68\x45\x4c\xac\xd7\x9d\x5b\x01\x52\x4f\x64\x8b\xca\
\x11\x5e\x47\xe9\x9a\x41\x8d\xcb\xa9\x66\xdf\x7e\x59\x21\xfd\xcb\
\xd0\xe4\x45\xe5\xea\x18\xf1\x08\x6e\x17\xb7\x0e\xf4\xfc\x30\xaf\
\x7e\xc5\xe0\x2f\xab\x41\x0e\xdd\xf2\x81\x0a\x96\x4b\xe5\x6d\xf7\
\x82\x01\xb1\x10\x3e\x5e\xff\xdd\x57\x59\xa2\x71\x86\x22\xb5\x01\
\x12\x13\xa5\xe2\x3c\x18\x08\xd1\x86\x46\x8a\xb2\xce\xeb\x2a\x63\
\x07\xb9\xbd\x3a\x1a\x78\xdb\x77\x84\x7c\xa4\xcd\x9e\x77\xad\x97\
\x25\xfd\x65\x68\x52\x67\xb0\xe5\xd8\xfa\x01\xe6\xdc\xe6\x64\xbf\
\x39\xe7\xb4\xfc\xcc\x95\xaa\xcb\xc3\x76\x9e\x33\xc0\x76\x0d\x44\
\x67\x99\x8d\x68\xe7\x3e\x3e\x3f\xff\xf2\x33\xe9\x89\x68\x9f\x59\
\x44\x6b\x90\x67\x43\xe3\x28\x03\xca\xb9\x10\xc2\x83\xaa\xd4\x95\
\x8d\xf4\xd7\x53\xc9\x01\xb7\x86\xac\xd4\x9c\x7c\xe8\x0d\x11\x32\
\x51\xc1\xfc\x39\x34\xa9\x28\xf1\xbd\x3f\x4f\x47\x14\x95\x51\x33\
\x34\x85\x0d\x66\xeb\x63\x63\xb3\xb6\x50\x6f\x70\x03\x54\x80\x59\
\x61\x83\x96\x57\x28\xa3\x3e\x1f\xc7\xff\x40\xad\x74\xe3\x58\x34\
\x88\x60\xf0\x4c\x47\xa6\xd9\x9e\x70\x95\x08\x8b\xc9\x84\xe3\x61\
\xef\xe3\x9a\xc5\xb0\x6c\x1e\x5c\xa4\x5b\x39\x82\x63\xfb\x32\x36\
\xf3\xe2\x55\x0e\x7f\x0c\x4d\x36\x66\x2c\xba\x8a\xf2\xbc\xcb\x00\
\x27\x9b\x17\xa4\x11\x85\x06\x9e\x43\xd0\xd6\xf1\x34\xf8\x69\x3c\
\x44\xf7\x6e\x04\xb2\xef\xa1\x23\xf8\x78\xfc\x97\xd0\xb3\x0d\x48\
\x7a\x35\xe7\xbe\x0f\x5b\xaa\x0a\xb2\x5f\xa9\xcf\xc1\xb7\xe8\x1b\
\xb4\x51\x74\x9c\xc1\x6d\x89\x76\x4e\xcb\x43\x5f\xcc\xf1\x60\xa0\
\x87\x78\xe8\xd1\xfc\xe2\x7e\x0d\x4d\x62\x08\x0d\x73\x00\x16\xd7\
\x14\x50\x45\x78\xbb\x86\xc7\xd8\x87\x3b\xe2\xc0\xf7\x63\x57\xc1\
\x17\x8c\x2a\x6e\x5c\x02\x98\xd6\x3f\x99\xff\x8f\xd7\xbf\x76\x83\
\x3a\x4f\x08\xf5\xb1\x33\x40\x66\xbe\x1f\x83\xc2\xd2\x52\xcf\x26\
\xc6\x65\xdb\xf2\xf5\xf3\x1d\x15\xef\xc7\x6d\x05\x96\x5b\x6d\xd9\
\x9c\x43\x07\x84\x87\xea\x35\x66\x17\x28\xfc\x0c\x4d\xd6\xe4\xd6\
\xd9\x4e\x69\x03\xbf\x8e\x59\x58\xd0\x78\xd0\xa8\x13\xa5\xe6\xd5\
\x3d\xa7\x34\x0a\x79\xc4\x48\x18\x4f\x91\x3c\xe4\x9e\x30\x7c\x9a\
\x8f\xe7\x7f\x1c\x13\x33\xf4\xa5\xcc\x10\x08\xcc\x5b\xff\xf6\x42\
\x09\x3a\x7f\x64\x31\x91\x22\x5a\xd9\x4f\x24\x2b\x4b\x78\xf7\x69\
\xcc\x92\x3d\xef\x73\x98\xe5\x4a\xb8\xfe\x80\xd4\x67\xa6\x88\xc8\
\x0c\x05\x7e\xdf\x69\x5b\x52\x7a\x27\x86\x18\xbc\x9a\x07\xc6\x47\
\x15\x9e\x23\xaf\x76\x91\x97\x7d\xda\x3e\xa5\x3f\x57\x7e\x70\x1f\
\xaf\x73\xcf\xa0\x3f\x9e\xff\x6b\xb3\xde\x41\xf7\xd7\x4b\xc3\x72\
\xc5\xb5\xc4\xc5\xce\x6b\x40\x96\x49\xf0\x7c\x3e\x5e\x78\xf0\x73\
\xb8\x3f\xfd\x5c\xd5\xf0\x60\x2c\x44\x1b\xe8\xe4\xf5\xcc\x92\x01\
\xa9\x8c\xb0\x8e\xfb\x35\xaf\x07\xe9\x9d\x57\x03\x17\x8f\xdb\xfc\
\xc9\x5e\xa3\x13\xe8\xf8\xe7\x77\x0b\x80\x44\xd3\x19\xb5\x4d\x07\
\x88\xe1\x16\xf8\x58\x66\x5f\x38\x3c\x25\x7c\x1e\x00\x13\x38\x5f\
\xec\x99\x89\x70\x12\x50\xf3\x31\x86\x85\xe3\xee\x84\x57\xfe\xc0\
\x6c\x6d\xdf\x83\x98\x93\x8a\x66\x3f\x34\x9e\xfd\xbc\xbb\x3a\xbd\
\xf2\xcc\x81\x0f\x93\x5f\xa3\xd4\x94\x76\x20\xfb\x8f\x1d\xfb\x4d\
\xe0\x3b\x6b\x9e\x3a\x70\xcd\xd6\x7f\xb2\x1f\x0e\xe2\x1c\x8d\x5f\
\xd6\xf9\xe1\x73\x6a\xd8\x8e\x71\x77\x5d\x24\x46\x87\xa3\x7d\x1c\
\xff\xa2\x15\xbb\x79\xab\x0d\xd7\xd7\xfb\x2c\x62\x18\x27\xd5\xe8\
\xb0\x4e\x87\xce\xfe\x3d\xd4\x6f\xb9\xf6\xd6\xf4\xd4\x30\x2c\x0a\
\xf5\xa8\xc7\xff\xba\xbb\xe2\x7e\x96\xc6\x4d\x8b\x1e\x83\xc4\xfb\
\x0a\x59\x95\x52\xb4\x89\xa5\x34\xe2\x36\x2b\x21\x8f\x94\x7d\x40\
\x7e\x75\x87\x6a\xb0\x63\x74\x9d\x43\xd4\xfa\xe0\xf5\x50\x2e\xc5\
\x59\x28\xfd\x78\xff\xd7\x8e\x8f\xa0\xbd\xd7\x7a\xb5\x3f\x37\x12\
\x30\xc6\x57\x58\x46\xdc\xa3\xbe\x6f\x1b\x03\x8c\x1b\xbd\xb7\xaf\
\x8b\x33\x7a\x0e\x8b\x81\x8a\x80\x30\x08\x7f\xb0\x16\xae\x10\xc1\
\x63\x38\xa8\x52\xa3\xea\x47\xb1\xa2\x67\x1f\x9b\x30\xe0\xf6\x13\
\x0c\x02\xa6\x54\x97\x55\xeb\x1a\xf8\xf2\x84\xbd\xbb\x04\x8b\x9d\
\x77\xad\x22\x2f\x34\xb3\xde\xd6\x8f\x8f\xf7\xbf\xbe\xee\x43\xbe\
\x51\x60\x5b\x05\x7b\x4f\xb3\x93\x04\xba\x63\xc8\x6e\xaf\x5d\x95\
\x03\xb6\x2b\x95\x7b\xdb\x7b\xad\xe7\xbc\xde\xd5\xce\x0b\x4e\x11\
\x21\x81\x33\x95\x81\x3c\xae\xde\xc7\x56\xed\x82\xec\x79\x78\xe9\
\x2c\x21\x43\x0a\xe6\x99\x62\xb2\x2e\xa0\xea\x08\x6c\x66\xd6\xd7\
\xe5\xc1\xf8\x27\x0e\x84\xd2\xc1\x5c\x20\xd7\x9f\xce\xcf\xed\xe3\
\xeb\x67\x75\x2c\x10\xce\xbc\xb7\xb8\x9a\x77\x2d\x2f\x16\xf4\xdf\
\x33\xdb\xa5\xf9\xba\xf1\xed\x4e\xb0\xed\xe2\x58\x28\x9b\x63\x0d\
\x83\x8e\xd3\xe2\x6f\xf5\x4d\x11\x44\xf0\x91\x73\xca\x19\xa2\x61\
\xb7\x23\xfc\x23\x30\x7b\x63\x0d\xc1\xc8\xc0\xf0\x25\xb5\x75\x44\
\x57\x43\x42\x01\x13\xa5\x5a\x80\x41\xe9\xcd\x5a\x36\xbb\x2c\xd8\
\x8f\xe7\xfb\x78\xfd\x0b\x28\x5a\x25\x87\xb1\xb5\xd8\xe7\x77\x80\
\xd1\xc0\xe1\x8a\x48\x62\x06\x68\x54\x62\x32\xf9\xfe\x3c\x24\xf7\
\xc6\x2a\x63\xc0\xbc\xe6\x08\x6e\x6b\xf7\xb3\x94\x5f\xf7\xd7\x90\
\x95\xf0\xab\xd0\xf7\xbf\x23\x7b\x44\x2b\x42\x10\x3c\x99\x21\xe2\
\xc7\xfc\x53\x2f\xbc\x67\xff\x03\xc3\x8f\x60\xf8\x39\x94\xad\x2e\
\x5e\x07\x5d\x9f\x8f\xc3\x9f\x99\xc6\x43\xed\xcc\x2b\x3e\x99\xec\
\x33\xef\x83\x2b\x95\x05\xfd\x35\xc6\xeb\x5d\xa4\x06\x71\x9d\x87\
\x84\xc4\x70\xa6\x6a\x27\x0a\x72\xaf\x39\xb5\xbc\x46\x44\xc8\xac\
\x29\x7e\x3a\x0c\xe3\xe8\x13\xba\x9f\x97\x39\x47\x6d\xdc\xec\x93\
\x78\x32\x92\xa5\xf9\x2d\x3f\x73\x06\x96\x72\x61\x47\x22\x79\x76\
\x55\xb3\x81\x70\x61\x3b\x52\x0f\x0f\x02\xab\xe7\xe3\xf8\xf7\xc4\
\x83\x9c\x17\x20\xcc\x41\x9f\x5c\x26\x17\xfa\xb9\x93\x0a\xff\x3f\
\x8d\x23\xc4\x07\xec\x6e\x09\xdb\xed\x30\xda\x65\x65\x8d\xbd\xb4\
\x93\x64\x7e\x6f\x92\x71\xe5\xb6\xad\xaf\x21\x00\x21\xc7\xb2\x50\
\x5e\x48\x29\x3e\xbe\x6f\xb5\xeb\xc8\x91\x2e\xae\xc4\xbc\x08\x91\
\xd4\xb6\x3d\x48\x79\xbb\x19\x37\xb4\x53\xb4\x2d\x4d\x02\xbd\x0a\
\xe1\x3f\xde\xff\xf4\x38\x79\xa3\x63\xb6\xce\x11\x99\xdf\xa7\x71\
\x13\x84\x7c\xdc\x23\x08\xde\x35\x22\xf9\x32\xd0\x91\x0b\x87\x6c\
\xb5\x6d\x23\x97\xfd\x55\x89\xd1\xca\x0e\xbb\xec\xfd\x65\xfc\xce\
\xa4\xce\x56\x86\xce\xc8\x62\x17\x4d\x90\x14\x83\xa4\xcd\x98\x05\
\xf7\x6a\x41\xcc\x63\x37\x06\xbe\x5a\x1f\x0a\xe4\x5d\x3e\x0b\x34\
\xbd\x67\x62\xf6\x0a\xc4\x15\xfd\xf1\xf5\x73\x09\x32\x57\x52\x73\
\x15\x4b\x67\x03\xed\x36\xde\x08\xe6\xe7\x0d\x27\x73\x38\x71\x1f\
\x1b\x7a\xf1\x54\x54\x5b\x94\x52\x9b\x5b\x77\xc4\x00\xcd\x29\x49\
\x8b\x97\x39\xf8\x35\x78\xa5\x8e\xdc\x57\x6a\xfd\xda\x0d\x23\x94\
\x21\x6e\x4e\x2b\x7a\x50\x92\xc4\xda\x94\x13\xe2\x09\xc1\x4b\x10\
\x67\xe2\xb2\xc1\xde\x54\x45\x8c\x2c\x07\xc2\x01\xc1\xf9\xc7\xeb\
\x3f\xb3\xa5\x7b\xe9\x5e\x52\x7f\xa8\x44\xdd\xa5\x3d\xb4\x04\x52\
\xa5\x75\x5e\x7a\xc3\xae\x63\xaf\x92\xa7\xb3\xcc\x07\xa5\x26\x44\
\x0e\xbc\x04\x89\x27\x69\x37\x34\xf8\x53\x15\xcb\x4a\xbd\x1c\xdf\
\x94\x8f\xed\x26\x48\xa5\xe6\x55\xa9\x1b\x47\xe0\xbb\x1c\x5b\x11\
\xfb\x82\xe1\x63\x72\x08\xc3\xcd\xa6\x81\x8a\x3c\xfa\x92\x8b\xa1\
\x1e\xd7\xbf\x7e\x1e\xfe\x89\x34\x7d\xda\x85\x18\x9e\xed\x68\xa2\
\xb0\xce\x3b\xaf\xfc\xf2\x6c\x70\x41\x5a\xf0\xb4\x25\x92\x58\xd4\
\x5a\x16\x3b\x74\xae\x51\x3f\x84\x13\xb1\xf7\xf7\x1d\x0e\x9e\xf3\
\x79\x99\xef\x6b\x31\x2b\xc6\xb3\x75\x36\xc2\x1d\x5b\xab\xa9\xcc\
\xd6\xe8\x86\x0c\xe1\x44\xf5\x99\x63\x34\xbf\xc6\x9c\xda\xf3\xd0\
\xdd\x2a\x64\x84\x95\x42\x23\x21\x7d\xde\xff\x65\x3e\xc7\x73\x61\
\x6d\x68\xa1\xb9\xff\xea\x47\x33\x63\x5e\xe7\x1e\xe6\x97\x38\x75\
\x39\xf3\xbc\xb5\x95\x1b\xe2\xb8\x88\xdf\x82\xcf\x55\xe9\x79\x87\
\x87\x42\x3b\x66\x0b\x22\x59\x90\x69\x3d\xd6\x44\xa7\x0b\x3d\xca\
\xe2\x1c\x82\xc1\x34\x91\xed\x8a\x26\xa1\x8e\x92\xde\xd7\x7c\xbe\
\x43\xfd\x93\xd2\x33\xbb\xc4\xf7\x9a\x67\x5d\xd8\x7e\xfc\xfe\x9b\
\x57\x67\x6a\x06\x68\x53\x49\x58\x55\x0e\x93\x91\x22\x31\x41\x35\
\x46\x1e\x7f\x72\x34\x06\xd7\x12\x7b\xfc\xe1\xdc\xeb\x41\xe4\x97\
\xe9\x6c\x6a\x9f\x77\xb8\x54\xf0\xce\xe1\x96\xdd\x74\x36\x3c\x1d\
\xef\x2f\x4e\xc1\xa0\x20\x8d\x5c\xfb\xa4\xf5\xf3\xab\x52\xa5\x74\
\xc7\xfb\x0e\x98\x61\x7c\x0c\xc6\x69\xa8\xcc\xcd\x3e\x89\x54\x2e\
\x9a\x57\x6f\x3e\x3e\xff\x78\x8c\x95\xcf\xaf\xbc\x59\xbc\xe6\xc8\
\x7b\xe7\xb7\xb7\x00\x6d\x2c\x07\x4a\xb2\x7b\x67\x67\x7d\xc9\x76\
\x7e\x29\xea\x5d\x0f\x17\xd1\xe6\x73\x21\x3f\x77\xf8\xe8\xf7\x58\
\x9b\x89\x81\xe6\xe8\x98\x1e\x47\x97\x46\xb0\xa5\x6c\x21\x37\x8e\
\x86\x55\x9c\xd6\x7c\x43\x6e\xe1\x16\x66\xef\xb3\x85\x3a\x2e\x40\
\x6d\x71\x25\xae\xc1\xe8\x87\x94\xb1\x7f\xdc\xff\xd3\x52\x06\x17\
\x75\x3f\x07\x2e\x96\x8f\x3a\xaf\xe8\x61\x42\xeb\xbc\xd6\xba\xcc\
\xcc\x0f\x45\x23\x47\x1c\x83\x67\x27\x79\x58\xab\x44\xe5\xff\x75\
\x87\x53\x57\xba\xe4\x99\xc7\x8a\x44\x29\x8c\x98\x32\x31\xd7\xd1\
\xb5\x19\x89\x56\xb5\x88\x61\x67\x57\xac\xe0\x50\x8e\xb3\xb2\x71\
\x8d\xbd\xe7\xab\xcf\xc8\x92\xcf\x0b\x03\xcd\x16\x73\x94\x1f\x3f\
\x7f\xc2\xb6\x95\x40\xe5\x67\x22\x29\xaa\xed\xaa\xe7\xa9\x73\x5c\
\xd6\x54\xf2\xe2\xf4\x7b\xde\x01\xea\xab\x66\x33\x67\xf7\x89\x6f\
\x02\xd1\xfe\xcf\x1d\x5e\x10\x77\x3a\x5e\xeb\xbc\x22\x00\x95\xdd\
\x7b\xb9\x18\xaa\x64\x23\xb3\x15\x18\x21\xcf\x86\x74\xe0\x7d\xa9\
\x2c\x6e\xc6\x79\x57\x46\x4b\x76\x08\x8f\xc2\x84\x58\x94\x12\x34\
\x96\x83\x7c\x3c\xfb\x8d\x42\x2b\x04\xa0\xe8\xae\xc2\x38\x88\x69\
\x3d\x8f\x2d\x3b\xb4\x08\xb3\x58\x09\x35\x1c\x6c\x3d\x2f\x78\x6c\
\xea\xf3\x8e\x77\x95\x96\xe5\xf7\x1d\x6e\xb3\x5d\xec\x20\x0a\x19\
\xe0\x2b\x53\xdb\xd3\xbc\x2c\x7b\xd5\x9e\x00\xaf\x2f\xd0\x94\xe2\
\x56\x00\xa1\xfb\xbb\x2b\x3c\x3c\x0d\xd8\xcc\x08\xa4\xae\xc0\x6f\
\x20\x1e\x9f\xe2\xde\xe7\xe8\xd4\x87\x65\x4e\x70\xf9\x5e\x4f\xff\
\xfe\x16\xbc\xd9\xf9\x8e\x4f\x76\x0b\x71\x52\xb6\x20\xa3\x13\x77\
\x48\x01\x46\x33\xfb\xdd\x81\xdf\x3d\x6f\xfd\x8f\x3b\xfc\x60\x7e\
\x6b\x92\x52\xcf\x03\x77\x43\xdf\xcf\xed\xb2\x94\x75\xc2\xa6\xe3\
\x19\x6b\xa1\x6a\x45\x98\x13\x7c\xfb\x89\x71\xcf\xa9\x8e\xd4\x14\
\x04\x82\x4b\x56\x2c\xcf\x0b\xe0\xcf\x2a\x3f\xde\xff\xfe\x78\x6b\
\xe1\xdc\x7d\x51\x90\x78\xc1\x55\xb9\xe9\x13\x06\x9c\x2f\x4d\xdb\
\xfc\xde\x03\xc4\xc2\xe1\x81\x3d\x9d\x0b\xa4\xd5\xb0\x70\xfd\xbe\
\xca\xe6\x3d\xe7\x8a\x90\x08\x1e\xce\x5e\x78\xfa\x42\x16\xcb\x8f\
\xf7\x17\xde\xda\x4b\x78\xab\xa7\xd3\x40\xf0\x5b\x90\xf2\xce\x49\
\x99\xbe\xd4\x59\x42\x5d\x16\x54\xaa\xa6\xe2\x9e\x90\x07\x99\x8f\
\xe7\xff\xfa\xd1\x4b\x71\x05\xc9\x2e\x02\xe1\xbd\x80\x50\xd6\xdb\
\x77\x1b\xff\xbc\xc3\xd3\x41\x47\x5c\xf4\x9a\x57\xc2\xcf\x8b\x81\
\xd8\xe2\x39\xf9\xe3\x0e\xcf\x32\x53\x1e\xb3\x97\xe5\x41\x5c\xe8\
\x93\x59\x5c\x9c\xdf\x79\x3d\xc7\xa8\xf0\x47\x6a\xf7\xbe\xcc\xe9\
\xc7\xf5\xd5\xa2\xc2\x4d\xee\x40\x1a\xe2\x8c\x74\xd4\x82\xb6\x84\
\x76\x03\x44\x7f\xbe\xfc\x83\x0e\x7a\xce\x2b\xb2\xd9\xcc\x42\x0e\
\xc4\xba\x5c\xb7\x9f\xac\xfc\xbc\xc3\xd5\xac\x85\xf7\xd9\xeb\x36\
\xcb\xdb\x6b\x99\x36\x4c\xfe\xb8\xca\xa6\xda\x52\xdf\x5f\x72\xfd\
\x6e\x9d\x6c\x7c\x55\x41\xcf\xaf\x10\x3c\x11\x0a\xa2\xb9\xcb\x7c\
\xa6\xb2\x21\x82\xb8\x3b\xba\x12\xc1\x38\x99\x5f\x31\xdc\x67\xe9\
\x73\xde\x8d\xf9\xc6\x43\x9f\x87\xff\xbf\xe4\x20\x0b\x3e\xea\x56\
\x42\x89\x7e\xe6\x2c\xb6\xb9\xae\x19\xa0\xcb\x98\x5f\xff\x26\x66\
\x99\xe4\xd5\x6a\x70\xf1\x2f\x57\xd9\xd4\x8d\xca\x77\x61\x00\xf9\
\x4f\x20\xbc\x9a\xb0\x48\x0c\x12\x33\xc9\xdb\xfb\xfe\xbe\x01\x49\
\x60\x98\xc8\xf2\x75\xd8\xf9\x15\xbb\xf5\xb8\x31\xea\xcd\xa4\xc9\
\xfb\xb7\x08\xc8\xcf\xf7\xff\x7f\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\
\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\
\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\
\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\
\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\
\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\
\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\
\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\
\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\
\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\
\xaf\x7c\xe5\x2b\x5f\xf9\xca\x57\xbe\xf2\x95\xaf\x7c\xe5\x2b\x5f\
\xf9\xca\x57\xbe\xf2\x15\x80\xff\x07\xdd\x9a\x19\x99\x77\x29\xa6\
\xf7\x00\x00\x05\xb4\x49\x44\x41\x54\x78\x9c\xcd\x99\x4f\x68\x1c\
\x55\x1c\xc7\xbf\xbb\xd9\x34\x62\xa8\x0c\x08\x3d\xd8\x4a\x97\x5a\
\xa8\x07\xa5\x6b\x05\xff\x1c\x6a\x16\xe9\x41\x91\xd0\x54\x9a\x6a\
\x41\xe9\x7a\xf0\x24\x98\x48\x4b\xd0\x1e\x34\x87\xa2\xe2\xc5\xf4\
\xd0\x16\x11\x6c\x7a\x10\x7a\x6b\x82\x58\x14\x9a\x66\x8a\xa0\xa5\
\xb6\x75\x03\xa2\x94\x16\xdc\x1c\x84\xb6\x87\x76\xb7\x94\xd6\xc3\
\xbc\xdf\xd7\xc3\xcc\xec\xbe\x37\x6f\x66\x76\x67\x36\x8d\x3e\x18\
\x16\xde\x9b\xdd\xf7\xf9\xfe\x7e\xdf\xdf\x7b\x6f\x67\x0a\x24\xd1\
\x4f\x7b\xfd\xf0\xcf\x55\x52\xaa\x14\xa9\x90\xe2\x50\x64\xab\xff\
\x49\x90\x02\x8a\x84\x9f\x75\x52\x5a\x14\xd6\x49\x69\x50\x64\xee\
\xcc\xa1\xdd\x8d\xbe\x26\x07\x50\xc8\x23\x60\xf7\x91\x0b\x0e\x45\
\x26\x49\x99\xa0\x88\xe3\x03\x5a\xc0\xe8\xa1\xdf\xa5\xc8\x07\x8b\
\x9f\xef\xad\xaf\x9a\x80\xdd\x47\x2e\x38\xa4\x2c\x52\x58\xc9\x01\
\x1c\xd7\xdf\x24\x65\xd7\xb9\x2f\xde\x72\xf3\x08\x28\x66\xfe\x06\
\xb9\x0f\xc2\x0a\x28\x18\x1e\x1c\xc0\xe8\x33\x8f\x61\xef\x8b\x1b\
\x31\xbc\x66\x00\x20\x01\x4a\x70\x31\x72\x05\xc0\x64\xe4\x12\x87\
\x94\x53\xdb\xf7\x9f\x28\xe7\x11\x50\xca\xce\xcf\xb1\x70\xf2\x0f\
\x47\x9f\xc4\x53\x8f\x3b\x00\x80\xe7\x9e\x78\x14\xef\x7f\x73\x5e\
\x07\xb3\x80\x21\x81\x40\x09\x44\x4a\x5b\xa0\x03\xca\x27\x00\xde\
\xc9\xca\x93\x39\x03\xa4\x54\x42\xa0\x10\x1e\x00\x36\xad\x5b\x8b\
\x75\x8f\x0c\x69\x76\xa1\x6d\x1b\x3b\xfa\xfa\xfd\x95\xac\x2c\x39\
\x05\xd0\x09\x27\xbe\xd9\xfa\xa7\xdd\x7f\xa3\x75\x1f\xd7\x9b\xf7\
\x12\xa3\xdf\x43\x7f\x2e\x01\x99\x2d\xa4\xa5\x1d\x07\x4f\x5e\xc6\
\xe8\xb3\x1b\x30\x3c\x54\xc2\xb7\x3f\x5d\xcd\xe2\xfb\xd8\xfe\x55\
\x11\xa0\xa7\xfd\x46\xeb\x3e\xbe\x3e\x73\x45\x03\x8a\xf1\x7d\x97\
\xc2\x36\xfa\x73\xb4\x3c\x16\x8a\x8f\xa2\xf4\x6c\x95\xc4\xfe\x55\
\x11\x80\x6e\x50\xd1\x02\xfe\xbf\x59\x68\xfe\x40\xb5\x90\xe5\xfe\
\x97\x3f\x3a\xc9\xc8\x92\xe9\x07\xc1\xda\xd8\x56\x48\xc0\xf8\xd1\
\x8b\x55\x52\x26\x29\x32\x12\x9c\x6d\xb4\xa5\x2e\xcb\x0e\x1b\x8d\
\xb2\xd9\x6f\xd5\x03\x7c\x01\xbc\xfe\x2e\x21\x0a\xa0\x02\xc4\x03\
\xa9\x00\xaa\x26\x44\x9d\x00\xd5\x74\x71\xd3\x7c\x53\xe7\x2d\x46\
\xe0\x8f\x93\xb2\x48\xca\x4e\x7f\xb9\xec\x92\x76\xc3\x26\xf9\x7c\
\x6f\xd9\xc7\x86\x07\x44\x39\xa0\x9a\x80\x78\x8b\x72\xf5\x15\x27\
\x56\xc0\x9e\x63\x97\x8e\x83\xac\x21\x61\xc7\x4c\xdd\x98\xfa\xf0\
\xbd\x55\xbc\x01\xb4\x9f\x25\x65\x08\x02\x55\x85\x54\xa7\x2c\x01\
\x7b\x8e\x5d\xda\x47\x4a\x2d\x75\x92\x5e\x96\xc1\xf0\x6a\x07\x20\
\xe2\xfb\xb4\xc8\x6b\x02\x28\x0a\xa0\x17\x85\xf7\x33\x22\xaa\xaa\
\xfe\x7c\xa9\x6a\x08\x20\x39\x99\x27\xed\x3d\xf7\x8b\xbe\x27\xe8\
\xe2\x6d\x01\x5d\xe0\xc3\xb1\x7d\x6d\x01\xe3\x47\x2f\x96\xfd\xf3\
\xcd\x0a\x02\x77\x11\xd2\x16\x64\x36\xd7\x57\xa0\xc1\xb7\xed\x64\
\xc0\x03\x54\x63\x9d\x0c\x90\x23\x69\x69\x4f\xb5\x4a\x1f\x02\x63\
\x5a\x43\x96\xc7\xcb\x06\xbc\xe8\x9f\x86\x30\xc7\x5b\xda\x56\x01\
\x80\x22\xc9\x4a\x2f\xd1\x4a\x02\xeb\x26\x30\xec\x37\x7d\x1f\x2b\
\x60\x16\xa2\x76\x9a\xf0\x9e\x6d\xa9\x4e\x8d\x6c\x05\x80\x52\xcf\
\xf6\xe9\x76\x54\x88\xd9\x98\xcc\x45\x20\xd9\xf7\x00\x66\x7f\x99\
\x3a\xbb\x04\x51\x73\x36\xbc\x0a\xbe\x67\xc0\x03\xa2\xca\xa1\x85\
\x2a\x76\xb4\xe2\x60\xe3\x32\xd3\xf3\x59\x3f\xc9\xf7\x00\x30\x07\
\x60\x12\xe2\x7d\x09\x2a\xc7\x86\xef\x58\x29\x92\x8d\x6a\x90\x01\
\x3a\x76\xb4\x04\x0f\xd8\xf7\x75\x00\x8d\x20\xf2\xe7\x20\xde\x2c\
\xa8\xc6\x92\xe1\xbd\xb8\x3a\x40\x68\xa1\xbc\xbe\x77\x41\x99\x59\
\xfc\xec\xcd\xf9\xb8\xb0\x76\x6b\xb2\xbc\xa7\x0c\xaa\x5a\x00\xef\
\xb4\xa3\xac\xd9\x45\x87\x66\xc4\x4a\x90\xb6\x80\x5c\xbe\xaf\x2d\
\x1c\xb8\x38\x0f\xa0\x86\xdb\x97\x7f\x03\xd0\xf9\x37\x45\x31\x27\
\x0d\xd6\x71\xb3\x08\xc3\x3e\x73\xcc\xbe\x5f\x87\x8f\x19\x03\x50\
\x02\xa5\x8e\xa4\x95\x28\x2a\xc4\xf7\x7d\x6d\x61\xff\xaf\xe7\x00\
\x2c\x1a\xe0\x99\xe1\x55\x5f\xf0\x0c\x32\x50\x24\xd9\xcc\x70\x54\
\x70\x17\x0e\x8d\x9f\x00\x70\xaa\x3b\x7c\x90\xf2\x5c\xf0\x2a\x05\
\x3e\x2c\x66\x55\x0f\x05\xb8\x19\x0a\x71\x06\xb7\xa7\x26\x7a\x83\
\x0f\xa2\x98\x04\x4f\x2f\x19\x9e\x29\xf0\x9d\x1d\x3a\x14\x20\xf5\
\x0c\x2b\x8a\x0b\x60\xcc\x86\x57\xf1\xf0\x92\x02\xdf\x7f\x8d\xb8\
\x80\xbf\x0f\xb8\xc6\x1e\x90\xb8\xce\x0b\xce\x7e\xfa\x46\xcb\x2e\
\xd8\x10\x5e\x12\xe0\xa3\x56\xca\x62\x33\x49\x82\xaf\x0f\x6e\xbf\
\xb5\x0c\x00\xc5\xef\xa6\x76\xb4\x48\xba\x21\x70\xea\x11\xd9\x6f\
\x4e\x6c\xe4\xdb\x76\x89\xc2\xdb\x63\x2b\x60\xb3\x99\x10\x26\x38\
\x4e\xcb\x4c\x2f\x36\x4a\xb4\x8d\x71\xfc\x8d\x81\x8f\x16\x66\x7f\
\x36\x6b\x82\x6a\xce\x10\x70\xfa\xe0\xab\xf3\xa4\xb8\x3d\xed\xa4\
\xe4\x03\x80\x57\x29\xf0\x96\xcd\xa6\x07\x47\xee\xb6\x0c\x01\x01\
\xd8\x18\xc8\x7a\xda\x51\xc1\xbf\x4f\x4b\xab\x05\xaf\xfd\x8f\x8d\
\x83\x8f\x19\x33\x8e\x0d\xdd\x6d\x36\x3b\x38\x72\xf7\xb0\xbe\x86\
\xb4\x05\xfc\xf0\xf1\x68\x8b\x64\x95\xe4\x34\xc8\x46\x6c\x2d\x00\
\xda\xa4\x09\xf0\x31\x63\x2b\x90\x29\x17\x54\xb5\xc1\x91\xbb\xd6\
\xd3\xeb\xcc\x2f\x38\x78\xf3\x3d\x46\x77\x4b\x13\xbe\x33\x56\xdc\
\x7c\x3a\xd3\x33\xa4\x3c\x2d\xfb\xc3\xdd\x1e\xe1\x41\x05\x75\x65\
\x07\xb3\x64\xaa\xf4\x7c\x23\xb3\xe0\xec\x8f\x16\x35\xc0\xce\x12\
\x67\xc3\xe7\xb2\x59\x8e\x96\xe3\xd9\xa8\x17\xf1\xaa\x24\xc0\xdb\
\x63\xa6\xd8\x98\xa5\x78\x75\x04\x44\x0b\xcd\x4b\x80\x8f\xb7\x59\
\x71\xfd\x14\x4a\xdb\xfe\xc0\xc0\xd3\x0b\x28\x3c\xb4\xc5\x2c\xf0\
\x55\x11\x10\x85\xd7\x96\x40\x0b\x3e\x62\xb3\xc2\xf0\x36\x14\xd7\
\xbd\x0d\x00\x28\x0c\x6d\x40\x61\xfd\x84\x6e\xa5\x5c\xaf\x5a\x73\
\xbc\x1f\x50\xae\x01\x18\xbb\x19\x45\x6d\x16\x8c\x15\x87\x8d\xdf\
\x2a\x94\xd6\xea\x75\xd0\x4c\x98\x72\x65\x05\x40\x54\xdd\x86\xf7\
\xba\xc3\x8b\x02\x6f\xff\x08\xde\x39\xef\xff\x8e\x77\x07\xf2\xf7\
\x57\xfa\xf7\xe6\xd2\x27\x8e\x6f\x99\xf7\x01\xf9\x6b\xd7\x46\x50\
\xd5\xe1\x3f\x31\xee\xc0\x47\xce\x2c\x96\xcd\xa4\x53\x23\x85\x87\
\xb7\x80\xf7\x96\x01\xef\x56\x78\x7f\x83\xf4\x2a\x6b\xaa\xf7\x5b\
\xdd\x09\xfa\x14\x00\x00\x72\xed\xb5\xad\xa0\x72\x29\x9e\xd3\x81\
\xef\x88\xb0\xe1\x53\x33\xd5\x20\xd5\xd8\x9a\xea\xbd\xa5\xcc\x20\
\xc8\x63\x21\x00\xc5\xcd\xdf\x2f\x51\xbc\x0a\xa8\x66\xe1\xbf\x7c\
\xc8\x03\xdf\x80\xa8\x69\x52\x55\xf2\xc2\x03\x39\x33\x10\x6d\xea\
\xf7\x17\x46\x20\x5e\x95\x54\x65\x50\x95\x03\xbb\x94\x21\xaa\x0c\
\xaa\x3a\xc5\x6b\x06\x99\xaa\x43\xbc\x06\xa8\xdc\xc1\xed\xcd\xdc\
\xd0\x7a\x5b\x11\x01\xff\x65\xfb\x17\x2b\x56\x12\x2d\xa1\x8a\x27\
\x37\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x01\x45\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x84\x11\x00\x07\x07\x07\x0c\
\x0c\x0c\x0e\x0e\x0e\xf7\x90\x0e\xf7\x93\x0e\xf7\x94\x0e\xf7\x97\
\x0e\xf7\x99\x0e\xf7\x9e\x0e\xf7\xa0\x0e\xf7\xa2\x0d\xf7\xb2\x0d\
\xf8\xb8\x0d\xf8\xc4\x0d\xf8\xcd\x0d\xf8\xce\x0d\xf8\xd3\x0d\xf5\
\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\
\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\
\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\x21\xfe\x15\x43\
\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\
\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x1f\x00\x2c\x00\x00\
\x00\x00\x28\x00\x27\x00\x00\x05\xa9\xe0\x27\x8e\x64\x69\x9e\x68\
\xaa\x7e\x08\x03\x05\x01\xc4\x20\x6b\x6d\x36\x40\xae\xef\x79\x63\
\xab\x04\x9e\x70\x48\xf8\x95\x1c\xc3\x24\xcf\x61\xfc\x0c\x94\x50\
\xde\xc0\x66\x88\x5a\x75\x86\x55\xe1\xca\x05\x14\x54\xdd\x6e\x2a\
\x1c\x3e\x29\xc8\x5d\x85\x09\x5d\x26\x25\xd8\xdd\x04\x09\xde\x16\
\xd1\xc5\xa2\xc3\x9d\x7b\x10\x2d\xf6\x57\x0b\x22\x0f\x80\x56\x0f\
\x22\x02\x85\x51\x02\x88\x8a\x50\x8c\x1f\x84\x8e\x49\x87\x1f\x7f\
\x93\x43\x82\x1f\x7a\x98\x42\x7d\x76\x9d\x3c\x73\xa1\x3b\x6e\xa4\
\x39\x72\xa3\xa4\x26\x67\xa1\x6a\x6b\xa1\x63\x98\x2a\x5b\x8e\x5f\
\x2a\x55\x85\x59\x35\x4f\x7b\x53\x46\x48\x6c\x4c\x4d\x22\x41\x64\
\x45\xc4\x25\x38\x51\x3e\xc9\x2a\x2d\x2f\x31\x33\xce\xd4\xd5\xd6\
\x3f\x21\x00\x3b\
\x00\x00\x03\x39\
\xff\
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\
\x48\x00\x00\xff\xdb\x00\x43\x00\x05\x03\x04\x04\x04\x03\x05\x04\
\x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\
\x09\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\
\x1a\x15\x11\x11\x18\x21\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\
\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\xff\xdb\x00\x43\x01\x05\x05\x05\
\x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\
\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\
\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\
\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\
\x11\x08\x00\x1e\x00\x1e\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\
\xff\xc4\x00\x17\x00\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x04\x06\x07\x03\xff\xc4\x00\x36\x10\x00\x00\
\x04\x03\x04\x07\x06\x04\x07\x00\x00\x00\x00\x00\x00\x00\x01\x02\
\x03\x04\x00\x06\x11\x05\x07\x12\x14\x13\x15\x21\x23\x24\x25\x52\
\x17\x31\x33\x41\x51\x62\x16\x35\x61\x72\x22\x34\x43\x53\x81\xa1\
\xc1\xff\xc4\x00\x1a\x01\x00\x03\x01\x01\x01\x01\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x01\x03\x04\x05\x02\x00\x06\xff\xc4\x00\
\x2d\x11\x00\x00\x05\x02\x03\x06\x05\x05\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x01\x02\x03\x04\x11\x61\x05\x15\x21\x51\x71\x91\xa1\
\xc1\xd1\x13\x41\x81\xb1\xf0\x31\x33\x34\x42\xe1\xff\xda\x00\x0c\
\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xd5\x2c\x2b\xa0\xbb\xc7\
\x96\x45\x8e\xed\xc2\xef\x01\x67\x8d\x88\xaa\xfc\xc4\x43\xf1\x0a\
\x60\x61\xa7\xf3\x1b\xef\xe3\x72\xd0\xb5\x26\xa5\xa5\xae\x3e\x79\
\x9c\x12\x1a\xd0\x95\x1d\x75\xb8\x42\x97\x35\x76\x60\xd9\xc1\xc1\
\xc3\xdc\x49\xa8\x25\x2f\x33\x1f\x50\x0f\xf6\x15\x9e\xcc\xb7\x00\
\xec\x86\x25\xf8\x84\x76\x2d\x76\x59\xfd\x06\x65\xe6\x1d\x16\x2f\
\x99\x8f\x7e\x28\x39\xf4\xbb\x70\x03\x22\x89\x7e\x22\x56\x7e\xbb\
\x49\x16\xc2\x96\x1a\xda\x56\x6b\x87\x60\xe1\x57\x25\x48\xf8\xed\
\x01\x10\xc2\x25\x38\x8f\xf6\x50\x8a\x63\xe3\x32\xde\x59\xa6\xa4\
\x54\xb0\x96\x5e\x15\x16\x32\x09\x74\x33\xf5\xb5\x46\xc7\x2a\x2c\
\xec\x25\xb9\x6e\x8c\xb1\x00\x31\x4a\x83\xa5\x2e\xdd\xc8\x46\x1c\
\x9d\x5d\x73\x7f\x51\xb9\x16\x9e\x0a\x0e\xdd\x03\x96\x5d\xde\x45\
\xe7\x04\x3e\x38\xfe\xb1\x7a\x8b\x0a\x14\x04\xe6\x1e\x6b\x4f\xc8\
\x85\x74\x3f\xbc\x5e\xa8\x14\xd2\xa0\x08\x0b\xdf\x59\xd0\x48\x6c\
\x38\x2a\x51\xe9\x29\xbd\x2f\x42\x91\xa1\x87\x95\x5e\x57\xcd\x83\
\x27\x18\x3a\x47\x2d\xe5\xec\x62\x9a\x55\x21\xbe\x1a\x97\x39\x92\
\x84\xe0\x52\xd9\x44\xf6\x6e\x43\xd4\xb1\x2c\x8f\xba\xbd\xfd\x45\
\xd1\xb4\x65\x05\x60\xb5\x48\x39\x17\xbc\xd1\x4f\x1c\x7c\x92\xf5\
\x2f\xb6\x15\xa8\x78\x66\x11\xd6\xbf\x36\x53\xc1\xef\xdd\x75\x7d\
\xb0\x3f\x50\xc1\x03\x7b\xa9\x88\xc8\xac\x00\x6d\x33\x0f\x18\x4f\
\x24\xfa\x14\xf6\xc6\x96\x1c\x67\xe3\xab\x4f\x2e\xa4\x31\x71\xaf\
\xc7\x2d\xe5\xec\x60\x96\x05\xe0\xcb\x0d\x6c\x2b\x11\x05\xac\xc7\
\x86\x3a\x0c\xd3\x29\xc4\x1b\xa6\x35\xdd\x53\xcc\xf1\xe7\xe0\xba\
\x6e\xaf\x52\xf9\xe8\x04\x7c\x51\x92\x69\x05\x43\xe5\xdc\x2d\x4b\
\xc6\x95\x72\xae\x89\xaa\x9e\xd4\xca\xd6\xb9\x64\xbe\x9e\xf8\xe7\
\x2e\x77\x69\x06\x66\xec\x6c\x3e\x5d\xc7\x7e\xd2\x25\x3d\x63\x8f\
\x54\xbd\xa6\x8b\x0d\x32\xc9\x7a\xfd\xf1\xce\x5c\xf5\x29\x52\x03\
\x38\x63\x61\xf2\xee\x23\xef\x2a\x78\x96\xed\x19\x41\xab\x54\x2c\
\xf7\x64\x32\x4e\xca\x26\x13\xb7\x4e\x83\x42\xa8\x1b\x28\x6f\xac\
\x5b\x0e\x1b\xad\xb8\x6a\xaf\x3f\xe0\x93\x10\x9a\xcb\xed\x92\x35\
\x2f\x3f\xa1\x5e\xf7\x1f\xff\xd9\
\x00\x00\x02\x95\
\x47\
\x49\x46\x38\x39\x61\x23\x00\x23\x00\xb3\x00\x00\xf8\xf4\xf6\xcc\
\xcb\xca\xdf\x32\x46\xea\x88\x86\xed\xcd\xb1\xf4\xd4\xca\xbf\xbb\
\xb9\xf1\xec\xe8\xf1\xb4\xc4\xe5\xfe\xf3\xad\xd2\xbf\xc9\xdd\xd1\
\xd8\xd7\xd7\xd5\xc8\xe3\xfc\xfc\xfc\xff\xff\xff\x21\xf9\x04\x00\
\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x23\x00\x23\x00\x00\x04\xff\
\x10\x3c\xe7\x9e\x04\xb2\xbe\x69\x37\x9f\x49\x72\x50\x55\x52\x69\
\xa8\x13\x48\xcf\xf1\x04\x1f\x50\xc1\xa0\xbc\x3a\x18\x2e\x8d\x1b\
\x63\x58\x94\x51\x00\xd7\x01\xc0\x0e\x80\x51\x22\x80\x94\x51\x3a\
\x9b\x99\xa6\x37\xf4\x3c\x0c\x8c\x13\x25\x20\xe8\x0a\x06\x03\x44\
\x46\x06\x60\xd0\x58\x07\x9a\xcb\xb2\x9a\x50\x0c\x5f\x30\xa1\x50\
\x68\x15\x5f\x76\x97\xd9\xa3\x87\x51\x4c\x08\x02\x4a\x3a\x2e\x30\
\x30\x58\x3f\x0c\x0f\x3e\x3f\x30\x59\x01\x0c\x69\x09\x91\x5f\x05\
\x91\x07\x98\x0e\x59\x88\x66\x90\x06\x2b\x01\x06\x9f\x01\xa4\xa5\
\x9d\x0b\x02\x06\x04\x0a\x0d\x0a\x91\x1b\x68\x7b\x19\x2f\x63\x21\
\x90\x14\x00\x09\x03\x02\x0a\x4e\x7c\x1b\x3c\x46\xc0\x51\x8a\x3a\
\x26\x01\x09\x6e\x5f\x06\x09\x32\x56\x76\x12\x66\x63\x57\x2b\x64\
\x07\x04\x0d\x64\x09\xcb\x0f\xcd\x24\x44\x2e\x38\x30\x2c\x1b\x7e\
\x26\xbb\x0c\x32\x09\x81\x04\xc8\x1f\x51\xf0\xd2\x1a\x00\x58\x4e\
\x04\x5e\x0e\x26\x5f\x07\x0c\x26\xdf\x2f\xfc\x54\x7c\xc2\x33\xa4\
\xd3\x81\x05\xbb\x12\x26\xb8\x37\x80\xc1\x02\x26\x4c\x90\x90\xea\
\xa4\x89\xd4\x28\x8b\x0c\x18\x24\x54\xd0\x45\x01\x3a\x51\x0b\xff\
\x0a\x40\xca\x08\xa4\x03\x29\x0d\xe1\x60\xe8\x12\x00\x60\xc1\xbd\
\x40\x03\x0e\xa6\x7b\xe2\x01\x43\x37\x13\x0d\x9e\x6c\x19\xc2\xb0\
\x19\xc2\x2e\x08\x12\x14\x40\x40\xc2\x83\x3f\x0c\x09\x16\x28\xc0\
\x15\x04\xc6\x2e\x1b\xc8\xba\x14\x10\xd1\x40\x04\xb9\x6f\xb9\x0e\
\xd4\x21\x92\xc4\x00\x80\x2f\xf9\xe8\x01\x28\x40\x20\x97\x19\x7f\
\x35\xff\x38\x28\x60\x00\x4c\x18\xb7\x5f\x04\xe5\x93\x57\x41\x46\
\x4e\x1c\x34\xb3\x2d\x80\xe3\xa5\xaf\x97\x98\x59\x16\x44\xea\x97\
\x6d\x14\x80\x06\x4d\x14\x78\xda\x25\xca\x80\xc8\x89\x06\x0e\x86\
\x72\xf8\xa9\xc1\x43\xcb\x0d\x32\x66\xce\x88\xf7\x00\x18\x06\x0a\
\xdc\xfc\x59\x80\xd6\xc8\x90\x11\xb9\x16\x20\x38\x80\x76\x42\xd6\
\x7d\xd9\xc8\xa8\x18\x82\xd5\x00\xd3\x10\x39\xd1\xe2\x3a\x10\x88\
\x1f\x0d\x28\xb6\x51\xf8\x60\x11\xed\xc7\x33\x5c\x5f\x92\xbc\xca\
\x40\xca\x03\x89\x71\x35\xb3\xbc\xcb\x55\xe0\x4b\x02\x56\x50\xa4\
\x00\xab\x28\x7b\xd1\x0f\x72\x20\x02\x15\xb8\xbc\x22\x63\xa7\x21\
\x86\x26\x6b\x9a\x0d\xe9\x38\x03\xa9\xac\x26\x42\x2a\xe5\xc9\x93\
\x8f\xf3\xf7\xab\x44\x29\x30\xa0\x80\x0c\x6c\x40\x3c\x07\x0b\x42\
\x10\xe3\x5c\xc0\xcf\x1a\xce\xf1\x37\x42\x3e\x5e\x71\x30\x9b\x83\
\xde\xc1\x13\x21\x14\x40\x4c\x95\x8b\x50\x1c\xac\x11\x5c\x06\xfc\
\xf0\x81\x43\x16\x53\x3c\x73\xdc\x3c\x99\xc0\x92\x11\x82\x22\xa6\
\x38\x62\x14\xb3\xc0\xe2\x8c\x8a\x30\x3a\x17\xa2\x1b\xc7\xc5\xf8\
\x40\x04\x00\x3b\
\x00\x00\x07\x7b\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\
\x67\x9b\xee\x3c\x1a\x00\x00\x07\x0d\x49\x44\x41\x54\x58\x85\xc5\
\x97\x49\x6c\x1c\x65\x16\xc7\x7f\xef\xab\xea\xcd\x6e\xdb\xe9\xb6\
\xe3\x71\x1c\xdb\x31\x31\x6d\x07\x05\xc5\x09\x4b\x34\xc9\x44\x80\
\x66\xc4\xa2\x44\x42\x39\x70\xe4\x80\x10\x20\x84\x10\x52\x0e\x13\
\x0e\x20\x61\x09\x44\x16\x89\x1c\xb8\xc0\x81\x2b\x42\x82\x03\x17\
\x92\x81\x64\x32\x08\x65\x63\x11\x0e\x26\x13\x5b\x4a\x3c\xce\x82\
\xdb\x59\xec\x76\xa7\xbb\xdd\x5d\xd5\xdd\xb5\xcc\xa1\xaa\xab\x17\
\x5b\x73\x8b\xe6\x93\x4a\x5f\x2d\xaf\xde\xff\x5f\xff\xf7\xbe\xf7\
\xbd\x12\xd7\x75\x39\x28\xb2\x17\x98\x00\xc6\x81\x30\xf7\x77\x54\
\x80\x29\x60\xe2\xa8\xeb\x9e\x90\xbf\xc3\xde\xae\x58\xec\xf8\xdf\
\x1e\x7a\x88\x1d\x43\x43\x44\x74\xfd\xbe\xa2\x97\x2d\x8b\x8b\x37\
\x6f\x72\x7a\x66\x86\x9c\x61\xec\xd3\x81\x89\xbf\x6e\xd9\xc2\xf8\
\xc6\x8d\x5c\x99\x9f\x67\x3e\x93\xa1\x6a\x59\x6b\xbe\x2c\x22\x68\
\x22\x28\xa5\xd0\xfc\x43\x29\x85\x26\x12\x9c\x2b\xa5\x50\xbe\x4d\
\xeb\xac\x2b\x45\x22\x1e\xe7\xd1\xa1\x21\x5c\xd7\xe5\xeb\x8b\x17\
\x27\x74\x60\x7c\x7c\x70\x90\xab\xe9\x34\xf9\xe1\x61\x52\xaf\xbe\
\x8a\x16\x89\xac\x85\x8e\x00\x4a\x04\x44\x50\xfe\x3d\x25\x82\xf8\
\xcf\xa4\xe5\x9c\xc6\xfb\x00\xd5\x2a\xa5\x33\x67\xc8\xcd\xce\x32\
\x3e\x38\xc8\xd7\x17\x2f\x8e\xeb\x40\x38\xac\x69\xa4\x33\x19\x52\
\xaf\xbd\x86\x1e\x8f\xaf\xc6\x6e\x70\x12\xea\xea\x22\xdc\xdd\x4d\
\x28\x91\x40\xeb\xea\xc2\xb2\x6d\xcc\x4c\x06\x29\x14\xd0\x56\x56\
\x70\x56\x56\x02\xb5\xa4\x75\x0e\x85\x88\x3f\xf1\x04\xf9\xcb\x97\
\x59\xe7\xe1\x84\x75\x00\xd7\x75\xa9\xda\x36\xae\x6d\x63\xf9\x0e\
\x5a\xc1\xe3\x23\x23\x24\x77\xed\x42\x8f\xc5\x56\x11\xec\xec\xef\
\xaf\xc7\xb8\x58\xe4\xc6\xe9\xd3\x24\x0b\x05\x10\x09\xd4\x0b\x66\
\xc7\x01\x11\x5c\xd7\x05\x20\x20\x00\x60\x15\x8b\x88\xa6\x35\xc7\
\x3c\x16\xa3\xf7\xa9\xa7\xe8\x18\x1d\x5d\x33\x2f\x5a\x47\xa4\xbd\
\x9d\xd1\xe7\x9f\xe7\xc6\xe4\x24\x32\x39\x49\xbb\x52\x75\x70\x11\
\xc4\x71\x50\xad\x04\x1c\xff\xc2\x2e\x16\xc1\x27\x20\x40\x7c\x78\
\x98\xfe\xfd\xfb\x09\x35\x84\xc5\xb1\x6d\x96\xe6\xe7\xb9\x33\x37\
\xc7\xdd\xb9\x39\xda\x22\x11\x12\x43\x43\x74\x0f\x0f\xd3\x3d\x30\
\x80\xf2\x01\x37\x3d\xf2\x08\xc5\xcd\x9b\xb9\xf6\xd5\x57\xf4\x57\
\x2a\x01\x01\xd7\x71\x50\x4a\x05\x98\x1e\x01\xc7\x01\xa0\x9a\xcf\
\x23\xa1\x10\x4a\x04\x3d\x1e\x5f\x05\x7e\xed\xb7\xdf\xf8\xd7\xa7\
\x9f\xb2\x29\x14\x62\x7d\x3c\xce\x48\x2c\x86\x52\x0a\xb9\x71\x83\
\xdc\xf7\xdf\x73\x2b\x12\xa1\x6f\xff\x7e\x7a\xb7\x6c\x01\xa0\x7d\
\xdd\x3a\x1e\x78\xe1\x05\xa6\x3e\xfa\x88\x2d\x89\x84\xa7\x80\xeb\
\xa2\x44\x02\x4c\x05\x60\xfb\x17\xb7\x4e\x9e\xa4\xba\xbc\x8c\x5d\
\x2a\xd1\xbf\x6f\x5f\x00\x5e\x35\x4d\xfe\xf1\xf1\xc7\x9c\x3b\x72\
\x84\x3f\xb7\xb7\xf3\x40\x7b\x3b\x1d\x80\x6b\x9a\xb8\x86\x81\x6b\
\x18\x44\x2c\x8b\x64\xa9\x84\xf5\xc5\x17\x5c\xff\xf2\x4b\xaa\xe5\
\xb2\x47\x22\x91\x60\xfd\x73\xcf\x91\xcb\x66\xc1\x34\x11\xd3\x44\
\x44\x02\x4c\xd5\x14\x82\x5c\x8e\xa5\x1f\x7e\xa0\x63\x64\x84\x75\
\xdb\xb7\x07\x5f\x7e\xea\x93\x4f\xa8\x5e\xb8\xc0\x63\x3d\x3d\x84\
\x2c\xcb\x03\x35\x4d\x22\x03\x03\x44\x06\x07\x71\x0d\xc3\x73\xee\
\xcf\x91\xc9\x49\xf2\xdf\x7c\x13\xbc\x9f\xda\xb3\x87\x74\x77\x37\
\xf8\x64\x95\x48\x80\x19\x28\xa0\xc0\x93\xb3\x5a\x65\xe8\xc5\x17\
\xeb\xb2\xff\xfa\x2b\x37\x4f\x9c\x60\x24\x16\xf3\x80\x4b\x25\x1c\
\xc3\x20\xf9\xec\xb3\xf4\xbf\xf1\x06\x7d\xaf\xbf\x4e\x61\xd7\x2e\
\x8c\x5c\x0e\xd7\x34\xa1\x54\x02\xc3\xc0\x3a\x73\x86\xc2\xcc\x4c\
\xe0\xe7\xd1\x97\x5f\xe6\xf2\xfc\xbc\xa7\x40\x83\xea\xaa\x96\x03\
\xb5\x8a\xd6\x91\x4a\x11\x4e\x26\x83\x84\x3b\xfe\xc1\x07\xec\xe8\
\xec\xf4\xd8\x97\x4a\x01\x89\xf8\xce\x9d\x81\xf3\x4d\x4f\x3e\xc9\
\xd5\x3b\x77\xa0\x54\xf2\x48\x18\x06\x18\x06\xe5\xcf\x3f\xc7\xb5\
\x6d\x00\x62\x5d\x5d\x64\xc3\x61\x9c\x4c\x06\x59\x95\x03\xae\x1b\
\x94\xd3\x75\xdb\xb6\x05\x8e\xef\x5e\xb9\x42\x78\x66\x86\x68\x0b\
\x38\xa6\x89\x34\x54\xcb\x70\x2c\x46\xae\x50\x80\x1a\xb8\x69\x82\
\x69\xe2\xcc\xcf\x53\x4d\xa7\x03\xbb\xe8\x86\x0d\x54\xd3\x69\x94\
\x08\x76\x63\x08\x1c\xc7\x09\x6a\x79\x57\x03\x81\xf4\xd4\x14\x5d\
\x8e\x43\x35\x9d\xc6\x5a\x5a\xf2\xe4\xad\x81\x34\x0e\xd7\x85\x4a\
\x05\xca\x65\xa4\x5c\x0e\x08\x88\x69\xe2\xcc\xcd\x05\x66\xbd\xa9\
\x14\xf7\x2c\x6b\x0d\x05\x6a\x21\x50\x8a\x8e\x87\x1f\x0e\x5e\x58\
\xf8\xfd\x77\x92\xa1\x90\xb7\xb6\x0d\x03\x7b\x79\x19\xf7\xde\x3d\
\xdc\x62\xd1\x03\x6d\x1c\x95\x4a\xf0\xf5\x52\x2a\x41\x3e\x8f\x9b\
\xcd\x62\x5d\xba\x14\x98\xfc\x69\xeb\x56\x32\xd5\x2a\x4a\xa9\x20\
\x07\x74\x00\xdb\xb6\xd1\x94\x42\x6a\x55\xcb\x1f\x22\x42\x5c\xd7\
\x83\xdd\x4c\x03\xc4\xb6\xbd\xaf\x6c\x19\x52\x2e\x23\x86\x51\xdf\
\x90\xfc\x8d\xaa\xc5\x21\x2b\xb6\xed\x2d\x43\x3f\x37\x14\x80\xe5\
\x87\x40\x53\x0a\x63\x7a\x3a\xb0\xdf\x38\x3e\x4e\xb1\x41\x9d\xc6\
\xed\xb6\x75\x28\x1f\x50\x35\x80\x8b\x08\xa1\xb1\xb1\xc0\x66\xf1\
\xf2\x65\x12\xe1\x30\x4a\x04\xab\x29\x04\xb6\x8d\xf8\xab\xa0\xd8\
\x40\xa0\x7f\xdb\x36\x0a\xb5\xfc\x68\xd9\xdb\x57\x29\xb0\x06\xb8\
\x12\x41\x4f\xa5\xea\x04\xa6\xa7\x59\x1f\x89\xac\x56\xc0\x76\x9c\
\xa0\xd1\x30\x1a\xd6\xee\xfa\x54\x0a\xab\xaf\x6f\xcd\x06\xa3\x55\
\x83\x46\xd0\xda\xa1\xf5\xf5\xa1\x86\x86\x02\x9b\xcc\xcc\x4c\x9d\
\x40\x6b\x12\x8a\x2f\x6f\xe5\xfa\x75\x2a\xd9\xac\xf7\x50\xd3\x78\
\xfc\xfd\xf7\x29\xf8\x3b\x58\x23\x89\x46\xa2\x77\x2e\x5d\x22\xa2\
\x69\xcd\x21\x50\x8a\xb6\x03\x07\x82\xdd\xd5\xc8\x66\x51\xe9\x34\
\xba\x52\xab\x0b\x91\x65\xdb\x75\xe7\x22\xa4\x8f\x1e\x0d\x9c\x0f\
\xef\xde\x8d\xb1\x6f\x5f\xd0\xfd\xd4\xec\x4a\x9f\x7d\xc6\xad\x1f\
\x7f\xe4\xe6\xf9\xf3\x9c\x3f\x76\x8c\x91\xb6\xb6\x26\xf0\xf0\xde\
\xbd\xe8\xe3\xe3\x81\x9f\x73\x87\x0e\x31\x16\x8f\x7b\xca\x89\x60\
\xf9\x21\xd0\x6b\x0a\xa8\x5a\x5f\x27\x42\xe9\xf4\x69\x16\x4f\x9d\
\x62\xfd\xd3\x4f\x03\xb0\xfb\xed\xb7\xf9\xb7\xae\x93\x38\x79\x32\
\x20\x61\xcf\xce\x22\xef\xbc\x43\xbe\x5a\x65\x4f\x28\x44\x5b\x34\
\xda\x04\x1e\x79\xe5\x95\x00\x7c\xf6\xdb\x6f\x29\x9f\x3d\xcb\x58\
\x6f\x6f\xd0\xa6\xad\x0a\x41\x6b\xa2\xe5\x8e\x1d\xc3\xcc\x64\x00\
\x08\xc5\x62\xec\x78\xf7\x5d\xc2\x87\x0f\x53\xee\xe9\xa9\xc7\x59\
\x29\xfa\xa2\x51\xda\x74\xdd\x6b\x5e\x36\x6c\xa0\xfd\xc3\x0f\x89\
\xbd\xf9\x26\x2a\x1a\x05\xa0\xb4\xb8\xc8\xcf\x47\x8e\xf0\x97\x64\
\xd2\x03\x6f\x21\xa0\xd7\x42\x10\x0d\x87\x9b\x62\xec\xe6\x72\xdc\
\x7d\xef\x3d\x7a\x26\x26\x68\xeb\xe9\x01\xa0\x7f\xf7\x6e\x9c\x9d\
\x3b\x29\x5e\xbb\x46\xe5\xca\x15\xe4\xea\x55\x22\x9a\x86\x36\x3a\
\x8a\x4a\xa5\x08\x6d\xda\xd4\xd4\x51\x95\x16\x17\xf9\xe7\xc1\x83\
\x6c\xd7\x34\xda\x43\xa1\x00\xdc\x6d\x0d\x41\x53\x0e\x34\xcc\xf6\
\xd4\x14\x0b\x2f\xbd\x44\xe4\xad\xb7\x18\x7c\xe6\x19\x4f\x32\x5d\
\xa7\x23\x95\x82\x86\xe5\xb5\xd6\xf8\xcf\x77\xdf\x31\x79\xf4\x28\
\x8f\xe9\x3a\x03\x1d\x1d\xf5\xce\xd8\x6f\x4a\x56\x13\x80\xb5\x7b\
\xf9\x95\x15\xd4\xe1\xc3\xcc\x9e\x3d\xcb\xc6\x03\x07\x88\x25\x12\
\xff\x13\xd8\xc8\x66\x39\x77\xe8\x10\xea\xc2\x05\xf6\x26\x12\x84\
\x35\xad\x19\xdc\xb7\x6b\x26\xe0\x38\xb8\xb0\xe6\x7a\xd7\x94\x42\
\x44\xe8\x38\x7f\x9e\xc5\x73\xe7\xb8\xdd\xdb\x8b\x1a\x1d\x25\x36\
\x36\x46\xf7\xd6\xad\x80\x57\xe1\x32\xd3\xd3\x54\x66\x67\x89\x2e\
\x2c\x30\x12\x8b\x31\xd0\xdd\xdd\x14\xf3\xc6\x7f\x84\xaa\x6d\x07\
\x95\x50\x07\x2a\xa6\x65\x85\x8b\xa6\x49\xb4\xb3\x73\x4d\xf0\x5a\
\xd2\xb5\x29\xc5\x83\xcb\xcb\xc8\x4f\x3f\xa1\x7e\xf9\x05\xd3\x71\
\xc8\x59\x16\x09\x4d\x63\x73\x38\xec\xad\xf1\x64\xb2\x0e\xb8\x06\
\xb8\x88\x90\x5e\x5a\xc2\xf4\xfe\xbe\x2a\x3a\x30\x75\xbb\x50\x78\
\x5c\xc3\xeb\x84\x93\x9d\x9d\x28\xd7\x45\xfc\xd6\xb9\x26\x59\x6d\
\xef\x73\xfc\xbf\x22\xc7\x75\x89\x2a\x45\x9b\x5f\xd9\xc4\xbf\x27\
\xae\x5b\x07\xac\x9d\xfb\xfe\x6c\xdb\x66\x7e\x71\x91\xab\x0b\x0b\
\xdc\x2e\x14\x00\xa6\x74\x60\xe2\x66\x3e\x7f\xdc\x05\xca\xb6\xcd\
\x82\x5f\x05\xef\xd7\xb0\x5d\x97\xc5\x52\x89\x3f\xf2\x79\x80\x09\
\xf9\x7f\xff\x9e\xff\x17\xc5\xd6\x3d\x9a\xb0\xf3\x6b\xe8\x00\x00\
\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x0e\x71\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
\x01\x00\x9a\x9c\x18\x00\x00\x0a\x4f\x69\x43\x43\x50\x50\x68\x6f\
\x74\x6f\x73\x68\x6f\x70\x20\x49\x43\x43\x20\x70\x72\x6f\x66\x69\
\x6c\x65\x00\x00\x78\xda\x9d\x53\x67\x54\x53\xe9\x16\x3d\xf7\xde\
\xf4\x42\x4b\x88\x80\x94\x4b\x6f\x52\x15\x08\x20\x52\x42\x8b\x80\
\x14\x91\x26\x2a\x21\x09\x10\x4a\x88\x21\xa1\xd9\x15\x51\xc1\x11\
\x45\x45\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15\x51\x2c\x0c\
\x8a\x0a\xd8\x07\xe4\x21\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1\x7b\
\xa3\x6b\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7\x3e\xe7\xac\xf3\x9d\xb3\
\xcf\x07\xc0\x08\x0c\x96\x48\x33\x51\x35\x80\x0c\xa9\x42\x1e\x11\
\xe0\x83\xc7\xc4\xc6\xe1\xe4\x2e\x40\x81\x0a\x24\x70\x00\x10\x08\
\xb3\x64\x21\x73\xfd\x23\x01\x00\xf8\x7e\x3c\x3c\x2b\x22\xc0\x07\
\xbe\x00\x01\x78\xd3\x0b\x08\x00\xc0\x4d\x9b\xc0\x30\x1c\x87\xff\
\x0f\xea\x42\x99\x5c\x01\x80\x84\x01\xc0\x74\x91\x38\x4b\x08\x80\
\x14\x00\x40\x7a\x8e\x42\xa6\x00\x40\x46\x01\x80\x9d\x98\x26\x53\
\x00\xa0\x04\x00\x60\xcb\x63\x62\xe3\x00\x50\x2d\x00\x60\x27\x7f\
\xe6\xd3\x00\x80\x9d\xf8\x99\x7b\x01\x00\x5b\x94\x21\x15\x01\xa0\
\x91\x00\x20\x13\x65\x88\x44\x00\x68\x3b\x00\xac\xcf\x56\x8a\x45\
\x00\x58\x30\x00\x14\x66\x4b\xc4\x39\x00\xd8\x2d\x00\x30\x49\x57\
\x66\x48\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x00\x30\
\x51\x88\x85\x29\x00\x04\x7b\x00\x60\xc8\x23\x23\x78\x00\x84\x99\
\x00\x14\x46\xf2\x57\x3c\xf1\x2b\xae\x10\xe7\x2a\x00\x00\x78\x99\
\xb2\x3c\xb9\x24\x39\x45\x81\x5b\x08\x2d\x71\x07\x57\x57\x2e\x1e\
\x28\xce\x49\x17\x2b\x14\x36\x61\x02\x61\x9a\x40\x2e\xc2\x79\x99\
\x19\x32\x81\x34\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\
\xf3\xfd\x78\xce\x0e\xae\xce\xce\x36\x8e\xb6\x0e\x5f\x2d\xea\xbf\
\x06\xff\x22\x62\x62\xe3\xfe\xe5\xcf\xab\x70\x40\x00\x00\xe1\x74\
\x7e\xd1\xfe\x2c\x2f\xb3\x1a\x80\x3b\x06\x80\x6d\xfe\xa2\x25\xee\
\x04\x68\x5e\x0b\xa0\x75\xf7\x8b\x66\xb2\x0f\x40\xb5\x00\xa0\xe9\
\xda\x57\xf3\x70\xf8\x7e\x3c\x3c\x45\xa1\x90\xb9\xd9\xd9\xe5\xe4\
\xe4\xd8\x4a\xc4\x42\x5b\x61\xca\x57\x7d\xfe\x67\xc2\x5f\xc0\x57\
\xfd\x6c\xf9\x7e\x3c\xfc\xf7\xf5\xe0\xbe\xe2\x24\x81\x32\x5d\x81\
\x47\x04\xf8\xe0\xc2\xcc\xf4\x4c\xa5\x1c\xcf\x92\x09\x84\x62\xdc\
\xe6\x8f\x47\xfc\xb7\x0b\xff\xfc\x1d\xd3\x22\xc4\x49\x62\xb9\x58\
\x2a\x14\xe3\x51\x12\x71\x8e\x44\x9a\x8c\xf3\x32\xa5\x22\x89\x42\
\x92\x29\xc5\x25\xd2\xff\x64\xe2\xdf\x2c\xfb\x03\x3e\xdf\x35\x00\
\xb0\x6a\x3e\x01\x7b\x91\x2d\xa8\x5d\x63\x03\xf6\x4b\x27\x10\x58\
\x74\xc0\xe2\xf7\x00\x00\xf2\xbb\x6f\xc1\xd4\x28\x08\x03\x80\x68\
\x83\xe1\xcf\x77\xff\xef\x3f\xfd\x47\xa0\x25\x00\x80\x66\x49\x92\
\x71\x00\x00\x5e\x44\x24\x2e\x54\xca\xb3\x3f\xc7\x08\x00\x00\x44\
\xa0\x81\x2a\xb0\x41\x1b\xf4\xc1\x18\x2c\xc0\x06\x1c\xc1\x05\xdc\
\xc1\x0b\xfc\x60\x36\x84\x42\x24\xc4\xc2\x42\x10\x42\x0a\x64\x80\
\x1c\x72\x60\x29\xac\x82\x42\x28\x86\xcd\xb0\x1d\x2a\x60\x2f\xd4\
\x40\x1d\x34\xc0\x51\x68\x86\x93\x70\x0e\x2e\xc2\x55\xb8\x0e\x3d\
\x70\x0f\xfa\x61\x08\x9e\xc1\x28\xbc\x81\x09\x04\x41\xc8\x08\x13\
\x61\x21\xda\x88\x01\x62\x8a\x58\x23\x8e\x08\x17\x99\x85\xf8\x21\
\xc1\x48\x04\x12\x8b\x24\x20\xc9\x88\x14\x51\x22\x4b\x91\x35\x48\
\x31\x52\x8a\x54\x20\x55\x48\x1d\xf2\x3d\x72\x02\x39\x87\x5c\x46\
\xba\x91\x3b\xc8\x00\x32\x82\xfc\x86\xbc\x47\x31\x94\x81\xb2\x51\
\x3d\xd4\x0c\xb5\x43\xb9\xa8\x37\x1a\x84\x46\xa2\x0b\xd0\x64\x74\
\x31\x9a\x8f\x16\xa0\x9b\xd0\x72\xb4\x1a\x3d\x8c\x36\xa1\xe7\xd0\
\xab\x68\x0f\xda\x8f\x3e\x43\xc7\x30\xc0\xe8\x18\x07\x33\xc4\x6c\
\x30\x2e\xc6\xc3\x42\xb1\x38\x2c\x09\x93\x63\xcb\xb1\x22\xac\x0c\
\xab\xc6\x1a\xb0\x56\xac\x03\xbb\x89\xf5\x63\xcf\xb1\x77\x04\x12\
\x81\x45\xc0\x09\x36\x04\x77\x42\x20\x61\x1e\x41\x48\x58\x4c\x58\
\x4e\xd8\x48\xa8\x20\x1c\x24\x34\x11\xda\x09\x37\x09\x03\x84\x51\
\xc2\x27\x22\x93\xa8\x4b\xb4\x26\xba\x11\xf9\xc4\x18\x62\x32\x31\
\x87\x58\x48\x2c\x23\xd6\x12\x8f\x13\x2f\x10\x7b\x88\x43\xc4\x37\
\x24\x12\x89\x43\x32\x27\xb9\x90\x02\x49\xb1\xa4\x54\xd2\x12\xd2\
\x46\xd2\x6e\x52\x23\xe9\x2c\xa9\x9b\x34\x48\x1a\x23\x93\xc9\xda\
\x64\x6b\xb2\x07\x39\x94\x2c\x20\x2b\xc8\x85\xe4\x9d\xe4\xc3\xe4\
\x33\xe4\x1b\xe4\x21\xf2\x5b\x0a\x9d\x62\x40\x71\xa4\xf8\x53\xe2\
\x28\x52\xca\x6a\x4a\x19\xe5\x10\xe5\x34\xe5\x06\x65\x98\x32\x41\
\x55\xa3\x9a\x52\xdd\xa8\xa1\x54\x11\x35\x8f\x5a\x42\xad\xa1\xb6\
\x52\xaf\x51\x87\xa8\x13\x34\x75\x9a\x39\xcd\x83\x16\x49\x4b\xa5\
\xad\xa2\x95\xd3\x1a\x68\x17\x68\xf7\x69\xaf\xe8\x74\xba\x11\xdd\
\x95\x1e\x4e\x97\xd0\x57\xd2\xcb\xe9\x47\xe8\x97\xe8\x03\xf4\x77\
\x0c\x0d\x86\x15\x83\xc7\x88\x67\x28\x19\x9b\x18\x07\x18\x67\x19\
\x77\x18\xaf\x98\x4c\xa6\x19\xd3\x8b\x19\xc7\x54\x30\x37\x31\xeb\
\x98\xe7\x99\x0f\x99\x6f\x55\x58\x2a\xb6\x2a\x7c\x15\x91\xca\x0a\
\x95\x4a\x95\x26\x95\x1b\x2a\x2f\x54\xa9\xaa\xa6\xaa\xde\xaa\x0b\
\x55\xf3\x55\xcb\x54\x8f\xa9\x5e\x53\x7d\xae\x46\x55\x33\x53\xe3\
\xa9\x09\xd4\x96\xab\x55\xaa\x9d\x50\xeb\x53\x1b\x53\x67\xa9\x3b\
\xa8\x87\xaa\x67\xa8\x6f\x54\x3f\xa4\x7e\x59\xfd\x89\x06\x59\xc3\
\x4c\xc3\x4f\x43\xa4\x51\xa0\xb1\x5f\xe3\xbc\xc6\x20\x0b\x63\x19\
\xb3\x78\x2c\x21\x6b\x0d\xab\x86\x75\x81\x35\xc4\x26\xb1\xcd\xd9\
\x7c\x76\x2a\xbb\x98\xfd\x1d\xbb\x8b\x3d\xaa\xa9\xa1\x39\x43\x33\
\x4a\x33\x57\xb3\x52\xf3\x94\x66\x3f\x07\xe3\x98\x71\xf8\x9c\x74\
\x4e\x09\xe7\x28\xa7\x97\xf3\x7e\x8a\xde\x14\xef\x29\xe2\x29\x1b\
\xa6\x34\x4c\xb9\x31\x65\x5c\x6b\xaa\x96\x97\x96\x58\xab\x48\xab\
\x51\xab\x47\xeb\xbd\x36\xae\xed\xa7\x9d\xa6\xbd\x45\xbb\x59\xfb\
\x81\x0e\x41\xc7\x4a\x27\x5c\x27\x47\x67\x8f\xce\x05\x9d\xe7\x53\
\xd9\x53\xdd\xa7\x0a\xa7\x16\x4d\x3d\x3a\xf5\xae\x2e\xaa\x6b\xa5\
\x1b\xa1\xbb\x44\x77\xbf\x6e\xa7\xee\x98\x9e\xbe\x5e\x80\x9e\x4c\
\x6f\xa7\xde\x79\xbd\xe7\xfa\x1c\x7d\x2f\xfd\x54\xfd\x6d\xfa\xa7\
\xf5\x47\x0c\x58\x06\xb3\x0c\x24\x06\xdb\x0c\xce\x18\x3c\xc5\x35\
\x71\x6f\x3c\x1d\x2f\xc7\xdb\xf1\x51\x43\x5d\xc3\x40\x43\xa5\x61\
\x95\x61\x97\xe1\x84\x91\xb9\xd1\x3c\xa3\xd5\x46\x8d\x46\x0f\x8c\
\x69\xc6\x5c\xe3\x24\xe3\x6d\xc6\x6d\xc6\xa3\x26\x06\x26\x21\x26\
\x4b\x4d\xea\x4d\xee\x9a\x52\x4d\xb9\xa6\x29\xa6\x3b\x4c\x3b\x4c\
\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x99\x35\x9b\x3d\x31\xd7\x32\xe7\x9b\
\xe7\x9b\xd7\x9b\xdf\xb7\x60\x5a\x78\x5a\x2c\xb6\xa8\xb6\xb8\x65\
\x49\xb2\xe4\x5a\xa6\x59\xee\xb6\xbc\x6e\x85\x5a\x39\x59\xa5\x58\
\x55\x5a\x5d\xb3\x46\xad\x9d\xad\x25\xd6\xbb\xad\xbb\xa7\x11\xa7\
\xb9\x4e\x93\x4e\xab\x9e\xd6\x67\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\
\x19\xb0\xe5\xd8\x06\xdb\xae\xb6\x6d\xb6\x7d\x61\x67\x62\x17\x67\
\xb7\xc5\xae\xc3\xee\x93\xbd\x93\x7d\xba\x7d\x8d\xfd\x3d\x07\x0d\
\x87\xd9\x0e\xab\x1d\x5a\x1d\x7e\x73\xb4\x72\x14\x3a\x56\x3a\xde\
\x9a\xce\x9c\xee\x3f\x7d\xc5\xf4\x96\xe9\x2f\x67\x58\xcf\x10\xcf\
\xd8\x33\xe3\xb6\x13\xcb\x29\xc4\x69\x9d\x53\x9b\xd3\x47\x67\x17\
\x67\xb9\x73\x83\xf3\x88\x8b\x89\x4b\x82\xcb\x2e\x97\x3e\x2e\x9b\
\x1b\xc6\xdd\xc8\xbd\xe4\x4a\x74\xf5\x71\x5d\xe1\x7a\xd2\xf5\x9d\
\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee\x36\xee\x69\xee\x87\xdc\x9f\
\xcc\x34\x9f\x29\x9e\x59\x33\x73\xd0\xc3\xc8\x43\xe0\x51\xe5\xd1\
\x3f\x0b\x9f\x95\x30\x6b\xdf\xac\x7e\x4f\x43\x4f\x81\x67\xb5\xe7\
\x23\x2f\x63\x2f\x91\x57\xad\xd7\xb0\xb7\xa5\x77\xaa\xf7\x61\xef\
\x17\x3e\xf6\x3e\x72\x9f\xe3\x3e\xe3\x3c\x37\xde\x32\xde\x59\x5f\
\xcc\x37\xc0\xb7\xc8\xb7\xcb\x4f\xc3\x6f\x9e\x5f\x85\xdf\x43\x7f\
\x23\xff\x64\xff\x7a\xff\xd1\x00\xa7\x80\x25\x01\x67\x03\x89\x81\
\x41\x81\x5b\x02\xfb\xf8\x7a\x7c\x21\xbf\x8e\x3f\x3a\xdb\x65\xf6\
\xb2\xd9\xed\x41\x8c\xa0\xb9\x41\x15\x41\x8f\x82\xad\x82\xe5\xc1\
\xad\x21\x68\xc8\xec\x90\xad\x21\xf7\xe7\x98\xce\x91\xce\x69\x0e\
\x85\x50\x7e\xe8\xd6\xd0\x07\x61\xe6\x61\x8b\xc3\x7e\x0c\x27\x85\
\x87\x85\x57\x86\x3f\x8e\x70\x88\x58\x1a\xd1\x31\x97\x35\x77\xd1\
\xdc\x43\x73\xdf\x44\xfa\x44\x96\x44\xde\x9b\x67\x31\x4f\x39\xaf\
\x2d\x4a\x35\x2a\x3e\xaa\x2e\x6a\x3c\xda\x37\xba\x34\xba\x3f\xc6\
\x2e\x66\x59\xcc\xd5\x58\x9d\x58\x49\x6c\x4b\x1c\x39\x2e\x2a\xae\
\x36\x6e\x6c\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3\x7b\x17\
\x98\x2f\xc8\x5d\x70\x79\xa1\xce\xc2\xf4\x85\xa7\x16\xa9\x2e\x12\
\x2c\x3a\x96\x40\x4c\x88\x4e\x38\x94\xf0\x41\x10\x2a\xa8\x16\x8c\
\x25\xf2\x13\x77\x25\x8e\x0a\x79\xc2\x1d\xc2\x67\x22\x2f\xd1\x36\
\xd1\x88\xd8\x43\x5c\x2a\x1e\x4e\xf2\x48\x2a\x4d\x7a\x92\xec\x91\
\xbc\x35\x79\x24\xc5\x33\xa5\x2c\xe5\xb9\x84\x27\xa9\x90\xbc\x4c\
\x0d\x4c\xdd\x9b\x3a\x9e\x16\x9a\x76\x20\x6d\x32\x3d\x3a\xbd\x31\
\x83\x92\x91\x90\x71\x42\xaa\x21\x4d\x93\xb6\x67\xea\x67\xe6\x66\
\x76\xcb\xac\x65\x85\xb2\xfe\xc5\x6e\x8b\xb7\x2f\x1e\x95\x07\xc9\
\x6b\xb3\x90\xac\x05\x59\x2d\x0a\xb6\x42\xa6\xe8\x54\x5a\x28\xd7\
\x2a\x07\xb2\x67\x65\x57\x66\xbf\xcd\x89\xca\x39\x96\xab\x9e\x2b\
\xcd\xed\xcc\xb3\xca\xdb\x90\x37\x9c\xef\x9f\xff\xed\x12\xc2\x12\
\xe1\x92\xb6\xa5\x86\x4b\x57\x2d\x1d\x58\xe6\xbd\xac\x6a\x39\xb2\
\x3c\x71\x79\xdb\x0a\xe3\x15\x05\x2b\x86\x56\x06\xac\x3c\xb8\x8a\
\xb6\x2a\x6d\xd5\x4f\xab\xed\x57\x97\xae\x7e\xbd\x26\x7a\x4d\x6b\
\x81\x5e\xc1\xca\x82\xc1\xb5\x01\x6b\xeb\x0b\x55\x0a\xe5\x85\x7d\
\xeb\xdc\xd7\xed\x5d\x4f\x58\x2f\x59\xdf\xb5\x61\xfa\x86\x9d\x1b\
\x3e\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8\x28\xdc\x78\xe5\
\x1b\x87\x6f\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9\x64\xcf\x66\
\xd2\x66\xe9\xe6\xde\x2d\x9e\x5b\x0e\x96\xaa\x97\xe6\x97\x0e\x6e\
\x0d\xd9\xda\xb4\x0d\xdf\x56\xb4\xed\xf5\xf6\x45\xdb\x2f\x97\xcd\
\x28\xdb\xbb\x83\xb6\x43\xb9\xa3\xbf\x3c\xb8\xbc\x65\xa7\xc9\xce\
\xcd\x3b\x3f\x54\xa4\x54\xf4\x54\xfa\x54\x36\xee\xd2\xdd\xb5\x61\
\xd7\xf8\x6e\xd1\xee\x1b\x7b\xbc\xf6\x34\xec\xd5\xdb\x5b\xbc\xf7\
\xfd\x3e\xc9\xbe\xdb\x55\x01\x55\x4d\xd5\x66\xd5\x65\xfb\x49\xfb\
\xb3\xf7\x3f\xae\x89\xaa\xe9\xf8\x96\xfb\x6d\x5d\xad\x4e\x6d\x71\
\xed\xc7\x03\xd2\x03\xfd\x07\x23\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2\
\x3d\x54\x52\x8f\xd6\x2b\xeb\x47\x0e\xc7\x1f\xbe\xfe\x9d\xef\x77\
\x2d\x0d\x36\x0d\x55\x8d\x9c\xc6\xe2\x23\x70\x44\x79\xe4\xe9\xf7\
\x09\xdf\xf7\x1e\x0d\x3a\xda\x76\x8c\x7b\xac\xe1\x07\xd3\x1f\x76\
\x1d\x67\x1d\x2f\x6a\x42\x9a\xf2\x9a\x46\x9b\x53\x9a\xfb\x5b\x62\
\x5b\xba\x4f\xcc\x3e\xd1\xd6\xea\xde\x7a\xfc\x47\xdb\x1f\x0f\x9c\
\x34\x3c\x59\x79\x4a\xf3\x54\xc9\x69\xda\xe9\x82\xd3\x93\x67\xf2\
\xcf\x8c\x9d\x95\x9d\x7d\x7e\x2e\xf9\xdc\x60\xdb\xa2\xb6\x7b\xe7\
\x63\xce\xdf\x6a\x0f\x6f\xef\xba\x10\x74\xe1\xd2\x45\xff\x8b\xe7\
\x3b\xbc\x3b\xce\x5c\xf2\xb8\x74\xf2\xb2\xdb\xe5\x13\x57\xb8\x57\
\x9a\xaf\x3a\x5f\x6d\xea\x74\xea\x3c\xfe\x93\xd3\x4f\xc7\xbb\x9c\
\xbb\x9a\xae\xb9\x5c\x6b\xb9\xee\x7a\xbd\xb5\x7b\x66\xf7\xe9\x1b\
\x9e\x37\xce\xdd\xf4\xbd\x79\xf1\x16\xff\xd6\xd5\x9e\x39\x3d\xdd\
\xbd\xf3\x7a\x6f\xf7\xc5\xf7\xf5\xdf\x16\xdd\x7e\x72\x27\xfd\xce\
\xcb\xbb\xd9\x77\x27\xee\xad\xbc\x4f\xbc\x5f\xf4\x40\xed\x41\xd9\
\x43\xdd\x87\xd5\x3f\x5b\xfe\xdc\xd8\xef\xdc\x7f\x6a\xc0\x77\xa0\
\xf3\xd1\xdc\x47\xf7\x06\x85\x83\xcf\xfe\x91\xf5\x8f\x0f\x43\x05\
\x8f\x99\x8f\xcb\x86\x0d\x86\xeb\x9e\x38\x3e\x39\x39\xe2\x3f\x72\
\xfd\xe9\xfc\xa7\x43\xcf\x64\xcf\x26\x9e\x17\xfe\xa2\xfe\xcb\xae\
\x17\x16\x2f\x7e\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\
\x93\xbf\x6d\x7c\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\
\xbe\xc9\x78\x33\x31\x5e\xf4\x56\xfb\xed\xc1\x77\xdc\x77\x1d\xef\
\xa3\xdf\x0f\x4f\xe4\x7c\x20\x7f\x28\xff\x68\xf9\xb1\xf5\x53\xd0\
\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfc\x63\x33\x2d\xdb\
\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x25\x00\x00\x80\x83\
\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\x30\x00\x00\xea\x60\
\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\x46\x00\x00\x03\x9c\
\x49\x44\x41\x54\x78\xda\xc4\x97\xc1\x6f\x54\x55\x18\xc5\x7f\xdf\
\x7d\x6f\xa6\x34\x02\x83\xb5\x68\x09\xc6\x12\x02\xb8\x30\x6e\x50\
\x09\x71\x81\x8b\xc6\x35\x7f\x81\x31\x26\xb8\xe8\xce\x15\x6b\x97\
\xc6\xc4\x35\x86\x8d\x71\x87\x71\x65\xe2\x46\x23\x24\x96\x85\x89\
\x44\x37\x9a\x9a\x40\x83\x96\x66\xaa\x75\xa0\x88\x40\x3b\x6f\xde\
\x7b\xf7\xb8\xb8\xf7\x4d\x67\xca\x4c\x5b\xd0\xb1\x2f\xf9\x32\x93\
\xf7\xee\x9b\x73\xee\xf9\xce\x3d\xf7\x8e\x49\x62\x37\x2f\xc7\x2e\
\x5f\xbb\x4e\x20\x7d\x9c\xc1\x17\x2e\x9f\x79\x13\xf8\x1c\x68\x0c\
\x78\xdc\x01\x3e\x03\xde\x9b\x9d\x99\x5b\x1d\x09\x01\xe0\xa3\xd7\
\x5f\x7c\xb7\x71\xb0\x71\x04\xa9\xdc\x2c\x66\xfd\xc6\xf2\xd5\xb7\
\x7e\x69\x7e\x75\x18\x98\x19\x15\x81\x46\x5b\xb7\x98\x6f\x5d\x41\
\xca\xbb\x37\x85\x48\x6d\x9c\x89\xfd\x27\xa1\xc9\xb1\x91\xb5\x00\
\x40\xbe\x83\x33\x43\x96\x6c\xdc\x93\x10\x25\x6b\xf9\xca\x68\x3d\
\x00\x80\x39\x9c\x39\x24\x81\x01\x02\x99\x30\xec\x89\x1c\xfd\xd8\
\x04\xcc\x2c\x28\x80\x0b\x04\x00\xe1\xc3\x82\x32\xf7\x3f\x10\xa8\
\xe6\x1a\x67\x2d\x13\xc8\x01\x06\x66\xa3\xcf\x01\x4f\xde\x95\xdc\
\x2c\xd0\xc1\x42\x1b\x7a\x8d\xb9\xe3\x09\xf5\x46\xf1\x85\xcb\x67\
\xde\x00\x3e\x04\x4e\x0d\x1a\xfc\xfc\xe4\x4b\x1c\x9c\xd8\x47\x56\
\xae\x62\x16\xd4\x10\x0a\x26\x94\xa8\xa7\x13\xdc\xbe\xf3\x80\xe6\
\x9d\xf9\x61\x78\xdf\x03\xe7\x67\x67\xe6\xbe\x1d\xd6\x82\x4b\xaf\
\x1d\x7b\x7b\xea\xd9\x03\x47\x01\x1f\x67\x67\xb8\xe8\xb6\xa5\xbf\
\xbf\xa6\x5d\xdc\x06\x4a\x90\x8b\xf2\x07\x0f\x78\x44\xbb\xb8\xcb\
\xe4\x33\x93\x9c\x3c\xfa\x3e\xc2\x40\xea\x12\xc4\x1c\xad\xbf\x7e\
\x3d\x75\x6d\xe1\xd3\x4b\xc0\xa1\x61\x04\xa6\xf2\xa4\xc5\x0f\xcb\
\x5f\x82\x89\xc4\x12\x9c\x25\x24\xd1\xf9\x55\x99\x39\x0c\x5f\x39\
\x30\x82\x78\xbc\x0a\xee\x67\x4b\xfc\xb4\x72\x91\x52\x1e\xaf\x92\
\x52\x25\xde\x7b\x84\x71\x68\xdf\x69\x80\xa9\x2d\x4d\xb8\xd6\xf9\
\x93\x52\x05\x0e\x17\x7e\xd8\x7c\xd4\x42\x78\x04\xf2\x58\x5c\x0d\
\xa8\x27\x07\x14\x54\x50\x1c\x27\x7c\xb7\x35\x42\x78\x15\x03\x73\
\xe2\x11\x02\x8a\xc9\xa6\x28\xac\xc9\xe2\xb7\xe0\xd8\x8a\x8c\xc9\
\xfa\x92\x70\x03\xc8\x23\x05\xf0\x0d\x4a\x42\xa2\x4b\x78\x1b\x02\
\x9e\x4e\xbb\xc0\x59\x82\x33\xe1\xcc\x63\x3d\xd2\xef\x19\x4b\x83\
\x37\xb0\xbe\xb7\x02\xa0\xc8\xda\x79\x97\x84\x57\x20\xe4\x55\x86\
\x7b\xe3\xda\x9e\x80\xa3\x46\x7b\xdd\x03\x65\x5f\xdf\x03\x01\xa3\
\x56\x77\x11\x7e\xb3\x02\x81\xfc\xfa\x5a\x1e\x41\x37\x2a\xac\x34\
\xc3\x3d\x5d\xdb\x96\x40\x93\x62\xec\xf0\xe9\x13\xef\xe0\x2c\x8d\
\x10\x55\xf2\x79\x3a\xc5\x3d\x16\xef\x7d\x83\xf7\xc5\x66\x01\x10\
\xc2\x48\x79\xf9\xc8\x59\xea\x49\x83\x2a\xa7\x55\xe9\xea\x0b\x7e\
\xbf\x3b\x1f\x30\xb6\x20\x70\xee\xfa\xd2\xdc\x27\xd7\x97\xe6\xa6\
\x06\x2d\xe2\xe7\x26\x8e\xb3\x77\x7f\x83\xf5\xbc\x05\x71\x56\x1b\
\x20\x30\x9e\x1e\x60\x61\xf9\x3b\x56\x56\x6f\x0c\xcb\x81\x3f\x80\
\x73\x43\x83\x68\x07\x07\x92\xc5\xe3\xd3\xaf\xbc\xf0\xa0\xf8\x0d\
\x2f\xdf\x27\x81\x91\xb0\xb7\x36\xcd\xc2\xe2\x8f\xb7\x66\x67\xe6\
\xa6\x47\xb8\x1b\xa6\x94\xa2\xef\x40\x12\x3b\x8c\x59\x3a\xfa\xcd\
\x48\x12\x79\x5e\xe0\x55\x76\xb7\x63\x10\x66\x86\xaf\x6b\xf4\x04\
\xbc\x3c\x59\xa7\x78\x64\xe3\x31\x33\x34\xee\xff\x9b\xdd\xd0\xcc\
\x06\x95\xc5\x23\x11\x79\x56\xd0\xe9\xa9\x2c\x2b\xc8\xb3\x9c\xca\
\x4f\x83\xde\x7f\x52\x05\xac\xe7\xd3\xaa\x13\x51\x96\x85\x70\xe9\
\xf5\x40\x6a\x29\xce\xd5\x37\x4f\x6c\x48\xfe\xed\x8c\x40\x05\xea\
\xaa\x92\xb8\x9f\xf8\x71\x5e\x3d\x71\xb6\x3f\x07\x00\x67\x09\xcd\
\xd6\xcf\x78\xaf\x9b\xf1\x77\x7d\x04\xf7\x5b\x91\x48\x77\x00\x9e\
\xc4\x71\xb5\xe6\xcd\x87\x1f\xc0\xd5\x8f\xcd\x78\x6a\xc0\x3b\x65\
\xb6\x5e\x7e\x71\xed\x4a\xeb\x3c\x50\x0b\x7b\x36\x65\x0f\xb8\xb6\
\x3d\x90\xf4\x78\xa0\x22\x90\xf4\x54\x0d\xd8\x03\x8c\xc5\x4a\xe3\
\x98\x12\x28\x80\x2c\xfe\x39\xc9\x80\xbc\x87\x40\x19\x16\xcf\xe0\
\xc0\x19\xa6\x80\xba\x27\xb0\xfe\x5e\x16\xc0\xc3\x3e\x4f\xf4\x3f\
\xaf\x24\x2f\xe3\xa7\xff\x37\x1e\xd0\xa6\x3e\x96\x3d\xc0\x36\x64\
\xfc\xa0\x62\x2b\x12\xb6\xdb\x7f\xcf\xff\x19\x00\xa6\x64\x01\x2a\
\x28\x77\xfe\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\
\x00\x00\x00\xbb\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x82\x49\x44\x41\x54\x58\x85\xed\xd6\xd1\x09\xc0\x20\
\x0c\x04\xd0\x4b\x71\xa0\x8c\x98\x6e\xe8\x46\xe9\x47\xa1\x48\x29\
\x42\x4c\x40\x0a\x77\x9f\x8a\xe6\x49\x40\x15\xc0\x1c\xa1\x98\xcc\
\x66\xdd\x11\xda\xef\x88\x15\xaf\x0f\x01\x04\x10\x40\xc0\xbf\x01\
\xaa\x1a\xbc\xc6\x8b\x01\x15\x88\x92\x16\x64\x10\x4b\x00\x55\xf5\
\x77\xd1\x55\x44\x73\x58\x68\xc1\xf4\x2d\x06\x20\x67\x0c\x20\x8e\
\xd8\xfb\x2d\x83\x61\x3c\x75\xef\xfd\x1e\xb7\x0d\xff\x81\xa7\xf8\
\x42\xd2\x80\x4c\x71\x20\xd9\x82\xcf\xec\x68\x41\x26\x04\x10\x40\
\x00\x01\x04\x6c\x07\x5c\x4c\x78\x20\x79\x9d\x7d\x46\x13\x00\x00\
\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x04\x7e\
\x00\
\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x16\x00\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\
\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0a\x00\
\x00\xf0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x01\x00\x00\x00\x13\x00\x00\x00\x15\x00\x00\x00\x15\x00\x00\x00\
\x15\x00\x00\x00\x15\x00\x00\x00\x15\x00\x00\x00\x15\x00\x00\x00\
\x15\x00\x00\x00\x0f\x00\x0b\x00\x37\x03\x3e\x05\xa3\x03\x40\x04\
\xab\x00\x17\x00\x78\x00\x00\x00\x10\x00\x00\x00\x01\x2e\x2e\x2e\
\x52\x8f\x84\x84\xd1\x8f\x82\x82\xd3\x8e\x82\x82\xd2\x8a\x7f\x7f\
\xd2\x84\x7d\x7d\xd2\x8d\x81\x81\xd2\x8a\x7e\x7d\xd2\x90\x7f\x82\
\xd2\x95\x7d\x89\xcf\x79\x8e\x74\xe4\x4b\xdc\x71\xff\x20\xca\x48\
\xff\x58\x86\x4e\xf8\x5e\x44\x53\xab\x00\x00\x00\x0f\x44\x44\x44\
\x76\xff\xee\xee\xff\xff\xf4\xf4\xff\xff\xf3\xf3\xff\xff\xed\xed\
\xff\xf3\xe6\xe6\xff\xff\xf5\xf5\xff\xff\xf1\xf4\xff\xe9\xe4\xd2\
\xff\x8a\xbd\x82\xff\x6c\xb5\x69\xff\x5c\xe3\x86\xff\x2f\xce\x5f\
\xff\x51\xa1\x49\xff\x56\x84\x4d\xf4\x00\x1b\x00\x77\x42\x42\x42\
\x71\xf9\xe8\xe8\xff\xff\xef\xef\xff\xff\xee\xee\xff\xf8\xe7\xe7\
\xff\xe6\xde\xde\xff\xff\xee\xee\xff\xff\xec\xf1\xff\xbd\xd3\xb0\
\xff\x3f\xd6\x66\xff\x32\xd7\x62\xff\x4b\xe4\x7e\xff\x47\xdf\x79\
\xff\x2f\xcf\x5f\xff\x21\xca\x49\xff\x02\x40\x04\xb1\x43\x43\x43\
\x71\xfc\xee\xee\xff\xff\xf6\xf5\xff\xff\xf5\xf4\xff\xfa\xee\xed\
\xff\xe8\xe1\xe1\xff\xff\xf4\xf4\xff\xff\xf3\xf7\xff\xc4\xdb\xb8\
\xff\x6e\xec\x8d\xff\x68\xef\x90\xff\x5c\xeb\x8a\xff\x4b\xe4\x7e\
\xff\x5d\xe4\x86\xff\x4c\xdd\x71\xff\x02\x3e\x05\xa3\x44\x44\x44\
\x72\xf5\xed\xed\xff\xf9\xf3\xf3\xff\xf9\xf2\xf2\xff\xf2\xed\xec\
\xff\xe2\xdd\xdd\xff\xf9\xf2\xf1\xff\xf9\xef\xf0\xff\xe5\xe7\xdc\
\xff\xb4\xcd\xad\xff\x91\xc7\x8c\xff\x68\xef\x90\xff\x33\xd7\x62\
\xff\x6e\xb4\x67\xff\x78\x8a\x70\xe0\x00\x11\x01\x37\x42\x44\x45\
\x7d\x78\xba\xe6\xff\x6d\xb9\xe8\xff\x70\xba\xe8\xff\x6b\xb6\xe4\
\xff\x62\xad\xde\xff\x6f\xb9\xe8\xff\x6a\xb4\xe7\xff\x6c\xb4\xea\
\xff\x61\xa3\xec\xff\x63\xb0\xb3\xff\x77\xf0\x8d\xff\x4f\xdc\x66\
\xff\x4c\xa8\x87\xff\x53\x62\x8f\xd8\x01\x00\x00\x13\x42\x44\x46\
\x7e\x61\xbf\xfd\xff\x53\xc0\xff\xff\x57\xc2\xff\xff\x51\xbc\xfe\
\xff\x44\xb0\xf6\xff\x55\xc0\xff\xff\x4d\xb8\xff\xff\x4c\xb7\xff\
\xff\x34\xa0\xf9\xff\x45\xab\xe8\xff\x50\xb1\xc2\xff\x4c\xab\xc2\
\xff\x45\xab\xe1\xff\x39\x61\x8d\xda\x03\x00\x00\x19\x44\x46\x47\
\x7e\x68\xc2\xfb\xff\x5b\xc3\xff\xff\x61\xc7\xff\xff\x5b\xc1\xfb\
\xff\x4c\xb3\xf3\xff\x5d\xc3\xff\xff\x55\xba\xff\xff\x53\xb9\xff\
\xff\x3c\xa3\xf2\xff\x3e\xa6\xfd\xff\x42\xa8\xff\xff\x3c\xa3\xff\
\xff\x3b\xa6\xff\xff\x39\x61\x87\xda\x03\x00\x00\x19\x44\x47\x48\
\x7f\x5f\xc1\xfe\xff\x52\xc3\xff\xff\x5a\xc8\xff\xff\x54\xc2\xfe\
\xff\x42\xb2\xf6\xff\x55\xc2\xff\xff\x4b\xb9\xff\xff\x49\xb7\xff\
\xff\x31\xa0\xf6\xff\x34\xa4\xfd\xff\x39\xa8\xff\xff\x32\xa1\xff\
\xff\x30\xa4\xff\xff\x36\x61\x8b\xda\x03\x00\x00\x19\x46\x47\x48\
\x7b\x9c\xcc\xe8\xff\x95\xcc\xe8\xff\x97\xce\xe8\xff\x93\xc9\xe5\
\xff\x86\xbc\xdc\xff\x95\xcc\xe8\xff\x91\xc8\xe8\xff\x90\xc6\xe8\
\xff\x7f\xb4\xdc\xff\x83\xb8\xe2\xff\x88\xbc\xe5\xff\x85\xb6\xe3\
\xff\x85\xbb\xe7\xff\x57\x69\x7e\xd6\x02\x00\x00\x16\x49\x48\x48\
\x71\xff\xfa\xf6\xff\xff\xfc\xf8\xff\xff\xfc\xf8\xff\xfd\xf6\xf3\
\xff\xec\xe5\xe0\xff\xff\xfc\xf8\xff\xff\xfd\xf8\xff\xff\xfd\xf8\
\xff\xee\xe6\xe0\xff\xfa\xed\xe7\xff\xff\xf2\xec\xff\xff\xed\xe6\
\xff\xff\xf1\xeb\xff\x8a\x7c\x79\xcf\x00\x00\x00\x13\x4a\x4a\x4a\
\x71\xfd\xfd\xfd\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf9\xfa\xfa\
\xff\xe7\xe7\xe7\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xe8\xe6\xe6\xff\xf4\xed\xed\xff\xff\xf4\xf4\xff\xff\xed\xed\
\xff\xff\xf2\xf2\xff\x87\x7c\x7c\xcf\x00\x00\x00\x13\x48\x48\x48\
\x71\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfa\xfb\xfb\
\xff\xe8\xe8\xe8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xe9\xe6\xe6\xff\xf5\xed\xed\xff\xff\xf4\xf4\xff\xff\xee\xee\
\xff\xff\xf2\xf2\xff\x88\x7d\x7d\xd0\x00\x00\x00\x13\x60\x60\x60\
\x77\xfa\xfa\xfa\xff\xfe\xfe\xfe\xff\xfe\xfe\xfe\xff\xf7\xf8\xf8\
\xff\xe7\xe7\xe7\xff\xfd\xfd\xfd\xff\xfc\xfc\xfc\xff\xfe\xfe\xfe\
\xff\xe8\xe5\xe5\xff\xf3\xeb\xeb\xff\xfd\xf0\xf0\xff\xfd\xea\xea\
\xff\xfe\xf0\xf0\xff\x8a\x80\x80\xd6\x00\x00\x00\x11\x92\x92\x92\
\x32\x51\x51\x51\x77\x4a\x4a\x4a\x72\x4a\x4a\x4a\x71\x49\x49\x49\
\x71\x47\x47\x47\x71\x47\x47\x47\x71\x46\x46\x46\x71\x46\x46\x46\
\x71\x43\x44\x44\x71\x43\x43\x43\x71\x43\x43\x43\x71\x42\x42\x42\
\x71\x43\x44\x44\x76\x2d\x2d\x2d\x52\x00\x00\x00\x01\xff\xe7\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x00\x00\x00\x80\x00\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\xff\xff\x00\x00\
\x00\x00\x03\x84\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\
\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
\x00\x00\x03\x3b\x49\x44\x41\x54\x68\x81\xed\x5a\xcf\x4f\x13\x41\
\x14\xfe\xde\x50\xb8\xd2\x7f\x40\x22\x77\x1a\x31\x51\x93\x16\x13\
\xe0\xe0\x09\x8b\xa5\x9e\xf9\x61\x34\x12\x04\x63\x6d\x41\xa3\x41\
\xd4\x18\xff\x03\x11\x8e\x78\xc1\xc4\x16\x2d\x0a\x27\x2f\x5d\x4d\
\x48\x6c\x8b\x42\x60\x81\xa2\x26\x26\x80\xe7\x76\x36\x7a\xa1\xec\
\x78\x28\x6d\x69\xb0\xb4\xbb\xdd\x66\xdb\xa4\xdf\x65\x67\x67\x67\
\xde\xfb\xbe\xdd\x9d\x79\xef\x65\x97\x90\x8b\xc6\x86\x86\x86\x01\
\xc6\x98\x8b\x18\xeb\x20\x22\x30\xc6\x70\xf4\x48\x74\xf2\x79\xa6\
\x9f\xe5\xe9\xa7\xf4\xf5\x22\x6c\x33\x06\x96\xb1\x85\x10\x09\x16\
\xfc\x6b\x11\xaf\x56\x25\x29\x9e\x26\x4c\x47\xc8\x9f\xb1\x58\xea\
\x43\x75\x75\x75\xd6\xb4\x83\xca\x12\x40\x60\xc4\x00\x42\x1c\xa4\
\x76\x2e\x49\xd2\x0a\x00\xb0\x23\xe4\x57\x88\xc8\x8a\x0a\x07\x81\
\xac\x8c\x2c\xdf\x1c\xed\x97\x5a\x53\xe7\x40\x23\x11\xfb\x95\xbe\
\xf3\x59\xf5\x95\xf9\x04\x32\xdc\x80\x38\x13\xc9\x66\x0b\x80\x81\
\x6a\xb8\xf3\xc7\x40\x64\x55\x59\xfd\x00\x03\xc8\x65\x36\x17\xbd\
\x20\x90\x8b\x11\x51\x87\xd9\x44\xf4\x82\x88\xda\x59\xe1\x61\x95\
\x8d\x9a\x00\xb3\x51\xf5\x02\x2c\x46\x18\xb1\xdb\xed\xb8\xd8\xe6\
\x00\x28\x15\x3b\x08\xc8\xb6\x29\x15\xec\xb3\x6d\x42\x24\x1a\x45\
\x24\x1a\x35\xc2\xb5\x31\x02\xda\x1c\x76\xf8\x7c\xde\xa2\xc7\xbf\
\x98\x9c\x32\x4c\x40\xd5\xbf\x42\x35\x01\x66\xa3\x26\xc0\x6c\xd4\
\x04\x98\x8d\xa2\xe2\x80\xad\xa5\x05\x4e\xa7\x33\x15\x9c\x40\x00\
\x1d\x06\xa6\x54\x03\x0e\x87\x43\x93\xd3\x0b\xe7\xcf\x01\x34\x94\
\x09\x7a\x44\x74\xcc\xb6\xf4\xe9\x33\xbe\xff\xf8\x59\xd0\x16\x11\
\x31\xf1\xff\x8a\x2a\xb7\x22\x7b\x3d\x3b\x8b\xae\xae\x2e\x4d\x44\
\xf5\xe2\xc3\xc2\x22\x9e\x3e\x7b\x7e\x72\x45\x96\xe5\x56\x9c\x00\
\xab\xd5\x8a\xc5\x85\x05\xd8\x6c\xb6\xb2\x92\x8f\x2e\x7f\xc5\xe0\
\xd0\x70\xe1\x92\xf2\x90\x5b\xd1\x6b\x80\x73\x8e\xcb\x4e\x27\xd6\
\xd6\xd6\xcb\x46\x3e\x16\xdb\x86\x77\xf4\x9e\xa6\x39\x9a\x16\x31\
\xe7\x1c\xce\xee\x6e\xac\xad\x1b\x2f\x42\x51\x14\xdc\x18\x1c\x82\
\xa2\x28\x9a\xe6\x69\xde\x85\x38\xe7\xe8\xed\xed\x43\x22\x91\xd0\
\x3a\x35\x2f\x14\x45\xc1\xf5\x9b\x83\x9a\xc9\x03\x3a\xb7\xd1\x9d\
\x9d\x1d\x5c\x71\xf5\x18\x26\xc2\xe3\xf5\x21\x16\xdb\xd6\x35\x57\
\x77\x1c\x90\x65\x19\xae\x1e\x37\x12\x09\xae\xd7\x04\x00\x60\x7c\
\xe2\x31\x22\xd1\x65\xdd\xf3\x4b\x0a\x64\xb2\x2c\xa3\xc7\xed\x46\
\x82\xeb\x13\xf1\x72\x6a\x1a\xc1\xf9\xf7\xa5\x50\x28\x3d\x12\xcb\
\xf2\x06\xdc\xee\xab\xe0\x1a\x45\xbc\x0b\xce\x63\x72\x6a\xba\x54\
\xf7\xc6\xa4\x12\xb2\xbc\x81\x89\x89\x27\x45\x8f\x0f\x87\x23\x78\
\x38\xfe\xc8\x08\xd7\xc6\xe5\x42\x6f\xfc\x7e\x78\xee\x16\x2e\x2b\
\x37\xb7\xb6\x30\x72\xfb\x8e\x51\x6e\x8d\x4d\xe6\xfc\xfe\x00\xbc\
\x5e\x5f\xde\xeb\x9c\x2b\xe8\xeb\xbb\x06\xae\x63\xbb\xcc\x07\xc3\
\xb3\x51\x7f\x60\x0e\x5e\xdf\xe8\xb1\x7e\xce\x15\xf4\xf6\xf7\x1b\
\x4a\x1e\x28\x53\x3a\x1d\x08\xcc\xc1\x37\x3a\x96\xd3\x77\x6b\x78\
\x04\x9b\x9b\x5b\x86\xfb\x2a\x5b\x3d\x10\x98\x7b\x0b\xdf\x58\x2a\
\xaf\xb9\x77\xff\x01\xbe\x84\xc3\x65\xf1\x53\x74\x36\xaa\xf7\x03\
\x47\x53\xd3\x29\xec\xed\xfd\x36\xfe\x03\x87\xd6\x6c\x54\x2f\x76\
\x77\xf7\xca\x6a\xbf\xea\x4b\xca\x9a\x00\xb3\x51\xfd\x02\x84\x10\
\x21\xb3\x49\xe8\x85\x10\x42\x62\x80\x08\x9a\x4d\x44\x2f\x04\x44\
\x90\x01\x98\x11\x42\xc4\x0b\x8e\xae\x34\x08\x11\x67\x07\xfb\x33\
\x0c\x40\x42\x08\xb5\xc3\x6c\x3e\x5a\x71\x20\x58\xa7\x24\x49\xf1\
\xf4\x22\x5e\x4d\x26\xf7\x5b\xab\xe1\x49\x08\x88\xb8\x2a\x92\x67\
\x97\xa4\x8f\x39\x3f\x7b\x00\x29\x11\xa7\x85\x50\x3d\x40\x25\x2e\
\x6c\x11\x12\xaa\xf0\xfc\x21\xb5\x39\xfd\xa7\x0a\x00\xfc\x03\xee\
\x7c\x0a\xdd\x50\x12\x00\x02\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
\x42\x60\x82\
\x00\x00\x00\xe5\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\xac\x49\x44\x41\x54\x58\x85\xed\x97\xc1\x0d\x80\x20\
\x0c\x45\x5b\xe2\x5e\x8c\x06\x8c\xe6\x64\x78\x50\x49\xad\xa8\xb5\
\xc6\x72\xe9\x3f\x18\x1a\x85\xf7\x82\xc6\x14\x84\x2d\x39\x43\x05\
\xc3\xe4\x0c\x08\x00\xeb\xc5\x1a\x4e\x25\x90\xc2\x53\xb2\xf1\x28\
\x05\xdb\x38\x58\xc3\x39\x6b\xe2\x37\x11\x8b\x68\x91\x5a\xd3\xa1\
\x9e\x67\x19\x3c\xc6\x63\x1d\xfa\x8f\xd9\xc5\x05\x5c\xc0\x05\x5c\
\xc0\x05\x5c\xc0\x05\x86\x0b\x9c\x1a\x12\xde\x68\x48\xc3\x1b\x0d\
\x69\xda\x0e\xd0\x3e\xed\xef\x50\xd6\xf8\xae\x98\x14\xe3\xce\x05\
\xca\x05\x2a\x19\xab\xd7\x51\x4d\xec\xed\x96\x56\xe2\xf5\xa4\xbb\
\x57\xa5\x91\x78\xf5\x1f\xd8\xe1\x1c\xb4\xd7\x9a\xef\x48\x2c\x70\
\x05\xff\x2a\x21\x12\x78\x82\x7f\x91\x78\x14\x90\xc2\xb5\x12\x0b\
\x8e\x9b\x40\x37\x42\x61\x43\x2f\x00\x00\x00\x00\x49\x45\x4e\x44\
\xae\x42\x60\x82\
\x00\x00\x06\x13\
\x47\
\x49\x46\x38\x39\x61\x20\x00\x20\x00\xf7\x00\x00\x25\x67\x96\x2a\
\x69\x96\x20\x66\x98\x27\x6c\x9d\x36\x6f\x96\x30\x6c\x96\x3c\x71\
\x96\x1f\x6b\xa2\x20\x78\xb8\x41\x74\x98\x47\x7a\x9f\x5a\x82\x9f\
\x5f\x8a\xa9\x53\x8b\xb3\x66\x92\xb1\x66\x98\xbc\x24\x80\xc2\x27\
\x88\xcc\x2d\x8a\xca\x35\x8d\xca\x3a\x8f\xca\x3e\x91\xca\x23\x8b\
\xd4\x2d\x8f\xd4\x22\x91\xdd\x05\x86\xfe\x0b\x86\xff\x06\x8a\xfe\
\x09\x89\xfe\x0e\x88\xff\x14\x8d\xfe\x1b\x8d\xff\x0c\x94\xfc\x0e\
\x9a\xfc\x1c\x9d\xf7\x10\x96\xfd\x12\x90\xfe\x1e\x90\xff\x18\x96\
\xfc\x13\x9c\xfc\x18\x9e\xfc\x1c\x9b\xfa\x24\x97\xe6\x27\x98\xe7\
\x20\x99\xed\x2d\x9e\xee\x23\x9e\xf3\x2c\x9f\xf0\x25\x95\xff\x28\
\x97\xff\x24\x9d\xfb\x2b\x9a\xff\x2d\x9f\xfe\x29\x9e\xfc\x31\x99\
\xff\x30\x9b\xff\x36\x9d\xff\x39\x9f\xff\x3c\x9e\xff\x1d\xa0\xfc\
\x36\xa1\xeb\x22\xa2\xfc\x27\xa5\xfc\x2a\xa1\xfd\x2b\xa6\xfd\x2e\
\xa1\xfe\x34\xa4\xf2\x3c\xa6\xf0\x37\xa1\xfe\x3e\xa5\xfe\x30\xa8\
\xfd\x35\xab\xfd\x3a\xad\xfd\x3a\xac\xfc\x3f\xaf\xfd\x3e\xac\xf9\
\x44\x93\xca\x4c\x97\xca\x52\x9a\xcb\x45\x9e\xdc\x58\x9f\xd0\x6a\
\x9f\xc5\x6e\xa1\xc5\x7b\xab\xce\x64\xa3\xd0\x61\xa9\xdb\x74\xae\
\xd7\x70\xad\xd8\x7d\xb2\xd7\x7b\xb3\xdb\x5b\xb2\xee\x41\xa9\xf2\
\x45\xaa\xf0\x4d\xad\xf0\x40\xa3\xff\x49\xa5\xff\x42\xa9\xfe\x43\
\xae\xfd\x4c\xab\xff\x55\xab\xff\x5f\xaf\xfe\x44\xb1\xfd\x44\xb0\
\xfc\x49\xb3\xfd\x49\xb2\xfc\x4e\xb5\xfd\x4e\xb4\xfc\x4d\xb0\xfd\
\x54\xb0\xf0\x5a\xb2\xf0\x57\xb2\xff\x53\xb7\xfd\x53\xb5\xfd\x52\
\xaf\xff\x5d\xb4\xff\x5e\xb7\xfe\x5a\xb2\xff\x58\xb9\xfd\x58\xb8\
\xfc\x5d\xbb\xfd\x5e\xbb\xfd\x64\xb5\xee\x6b\xb7\xed\x6d\xb9\xee\
\x73\xb3\xe1\x77\xbd\xee\x72\xbb\xee\x7a\xbe\xef\x62\xb7\xf2\x68\
\xbb\xf5\x63\xb3\xff\x6b\xb7\xff\x63\xb9\xfe\x61\xbd\xfd\x61\xbc\
\xfd\x66\xbf\xfd\x66\xbe\xfc\x66\xb9\xff\x6a\xba\xff\x6e\xbe\xff\
\x75\xbe\xf3\x75\xba\xff\x74\xbc\xff\x79\xbe\xff\x7e\xc0\xef\x6b\
\xc1\xfd\x6b\xc0\xfd\x6e\xc0\xf9\x7d\xc3\xf6\x70\xc3\xfd\x70\xc2\
\xfc\x76\xc3\xfe\x75\xc5\xfe\x75\xc4\xfe\x7a\xc7\xfe\x79\xc5\xfe\
\x7d\xc6\xff\x7f\xc6\xff\x78\xc4\xfa\x7f\xc9\xfe\x7f\xc9\xff\x7d\
\xc8\xfe\x8b\xa7\xbb\x8d\xb1\xc9\x94\xb4\xcb\x8c\xb7\xd6\x89\xbb\
\xde\xb4\xc7\xd5\x85\xc2\xed\x8d\xc5\xed\x90\xc5\xea\x85\xc7\xf6\
\x8b\xc6\xf0\x83\xc3\xfe\x86\xc6\xff\x84\xc9\xff\x84\xcb\xfe\x83\
\xca\xfe\x89\xcd\xff\x89\xcd\xfe\x8e\xcf\xfe\x8d\xce\xfe\x8d\xcc\
\xf9\x92\xcc\xf5\x91\xcf\xfe\x9b\xcf\xfe\x8e\xd0\xff\x9d\xd1\xf5\
\x9f\xd0\xf3\x92\xd1\xfe\x93\xd2\xff\x91\xd1\xfe\x97\xd3\xfe\x95\
\xd1\xfd\x9b\xd5\xff\x9c\xd6\xfe\x9f\xd7\xff\x9c\xd4\xfc\xa6\xcc\
\xe6\xa4\xd5\xf7\xab\xd6\xf4\xa1\xd6\xfe\xad\xd6\xff\xa1\xd8\xfe\
\xa3\xd8\xff\xa6\xd9\xfe\xa7\xd9\xff\xae\xdb\xfa\xab\xdc\xfe\xaa\
\xdb\xff\xad\xdd\xfe\xb8\xdd\xf7\xb0\xde\xfe\xb3\xdf\xff\xaf\xdd\
\xff\xb4\xde\xfc\xb6\xdf\xff\xb3\xda\xfe\xb5\xe0\xfe\xb5\xe1\xfe\
\xba\xe2\xff\xb9\xe1\xfe\xbf\xe4\xff\xc4\xcf\xd7\xcc\xe0\xee\xda\
\xe6\xef\xcd\xe3\xf3\xc6\xe3\xfe\xc3\xe6\xff\xc5\xe7\xff\xcc\xe7\
\xfe\xc8\xe8\xff\xcd\xea\xff\xcf\xea\xff\xd4\xe7\xf4\xdd\xea\xf4\
\xd5\xea\xfe\xd2\xec\xff\xdc\xee\xff\xdc\xf1\xff\xe0\xee\xf9\xed\
\xf2\xf6\xe1\xf1\xff\xe5\xf2\xff\xe6\xf4\xfe\xea\xf5\xff\xec\xf6\
\xff\xee\xf6\xfc\xe9\xf3\xfe\xf2\xf5\xf7\xf5\xf7\xf8\xf2\xf9\xff\
\xf5\xfa\xff\xfb\xfe\xff\xff\xff\xff\xf8\xfb\xff\x21\xf9\x04\x09\
\x00\x00\xfe\x00\x2c\x00\x00\x00\x00\x20\x00\x20\x00\x00\x08\xfe\
\x00\xfd\x09\x1c\x48\xb0\xa0\xc1\x83\x08\x0b\xf6\xdb\xd7\xce\x9a\
\x2f\x58\xa0\x42\x6d\x82\x15\x8c\xdb\xbc\x7f\x09\x0f\xf6\xb3\xe7\
\xcd\x57\x2f\x66\xd6\xb4\x69\xab\xd6\x4c\x58\xad\x4b\x8a\x82\xb9\
\xeb\x97\x71\xe0\x3f\x74\xc3\x88\x79\x43\x57\xce\x1b\xb7\x6a\xd0\
\xa0\x31\x5b\x36\x8c\xd6\x22\x42\xce\xf6\xb5\xdc\xe7\x4d\x18\xb7\
\x74\xe8\xc8\x79\xeb\x76\x6d\x1a\x32\x5e\xc5\x80\xf5\xfa\x45\x6b\
\x13\x9d\x5a\xf8\x12\xf2\xab\x36\xac\x5c\xbb\x73\x4a\x99\x8e\xbb\
\x17\x6f\x9a\xa9\x5b\xb4\x66\xc1\x8a\x95\x29\x0e\xa7\xac\x06\xfb\
\x79\x1b\x76\xee\xab\xd2\x9b\xc8\xf8\x09\xcc\x27\x05\x95\x2d\x58\
\x9f\x34\x61\x92\x24\xc6\x95\xd0\x82\xed\x84\xd5\x05\x6b\x53\x9b\
\xb5\x63\xf1\x04\x86\x63\x90\x65\x15\x28\xc1\x95\x22\xe1\x01\x93\
\x8c\xe5\xc0\x7b\xc3\xb8\xd9\x5d\xaa\x8d\x5a\xb4\x5d\xc6\xbe\x7d\
\x13\xe5\x80\x0f\x25\xcc\x91\x0e\x15\x52\x23\x46\x1e\x41\x6f\xc4\
\xd2\x31\xe6\x56\x3a\x1a\xb3\x62\xa8\xa6\x3c\x70\x70\xa5\x8f\x27\
\x4c\x99\x65\xdf\xa9\x43\x04\x97\xe7\x7f\xbe\xbc\xed\xee\xdd\x8c\
\x18\xb0\x5b\xc6\x8c\x5d\xe1\xc3\x08\x79\xec\x42\xcb\xdf\xfe\x84\
\xf1\x62\x4f\x20\xbb\x5f\xd3\x4d\x33\xb3\x6e\x2b\x1d\x3f\x7e\xd3\
\xaa\xec\xb1\xf4\x3d\x7c\x9a\x33\x31\xba\x09\xac\xc6\xec\x6e\x35\
\x6b\xbe\x11\x23\x4c\x2f\xb6\x1c\x16\x4f\x03\x55\x04\x72\x88\x21\
\xf6\x95\x51\x06\x0d\x8e\x08\x04\x8c\x34\x8d\x01\x58\x9d\x30\xc1\
\xd0\xc2\xca\x61\xf9\x28\x90\x20\x78\x75\xbc\x71\x9f\x12\x48\x04\
\xf1\x85\x40\xb1\x58\xc3\x9b\x7a\xc4\x04\xe3\x0b\x2d\xb2\x40\x72\
\x8f\x40\xfa\x24\x00\x45\x1b\xe1\x9d\x61\x06\x89\x47\xfc\x10\x83\
\x40\x9d\x54\xd3\xdb\x7a\xc2\xf8\x82\x4b\x2d\xb0\xc8\xb8\x97\x01\
\x4e\xb4\x11\x62\x1a\x65\xf0\x68\xc4\x0f\x1e\x08\xa4\x89\x34\xa6\
\x5d\x18\xcc\x91\x10\xfd\x31\xa3\x3f\xf9\x10\xe0\x04\x1b\x22\x9e\
\x21\x25\x10\x32\x54\xe9\x0f\x27\xc9\xe8\x24\xe0\x8b\x6a\x05\xc6\
\xc8\x97\xf9\x14\xf0\x44\x17\x50\x9e\xe9\x43\x0a\x25\x08\x24\x4b\
\x2f\x17\xbe\x88\x64\x60\x98\xec\x41\xa7\x9d\x5d\x44\x89\xc4\x11\
\x46\x00\xe1\x43\x0f\x26\xe8\x20\x50\x34\x9d\x2c\x83\x21\x2e\x71\
\x62\xa6\x07\x9d\x01\x54\xb0\x45\x18\x8b\x36\xfa\xe8\x0e\x24\x0c\
\x22\x90\x3b\x8b\x5c\x9a\x29\x72\x92\xe4\xc1\x29\x05\xf2\x4b\x84\
\xea\x68\x0f\x3b\xa0\x90\x81\x7e\xfe\xfc\xb3\xc9\x2b\x98\x02\x06\
\xdb\x21\xae\xee\x05\xc0\x05\x43\x30\x3a\x6b\xad\x20\xc0\x70\x58\
\x3f\xdd\x10\xb2\x6a\x72\x85\xb4\x51\x9e\x3f\xfa\x0c\x2b\x84\xa8\
\xb4\xa2\x70\x42\x06\xb9\x78\xe6\xcf\x3e\x97\x2c\x12\xcb\xaf\xe0\
\xb1\x51\xcf\x5e\x02\x5c\x20\xc4\xb1\xda\x6e\x10\xc3\x3c\x05\x99\
\x23\xc7\x22\x9b\x40\xbb\x1c\x1b\x5f\xc6\x93\xee\x0b\xa3\x6a\x0b\
\x42\x06\x9d\x29\xa4\x8c\x18\x89\xd4\x17\x22\x17\xea\x08\xf4\xcd\
\x01\x18\xb8\x90\xed\x09\xff\xb6\x82\x91\x41\xff\x14\x23\x86\x1b\
\x20\xbe\xa1\xc6\x16\x55\x18\x73\x8a\x02\x08\x34\x5c\x2b\xc4\x19\
\x0c\x72\xd8\x41\xff\x0c\x0c\xc6\x1b\x22\x96\xb1\x04\x0f\x14\x48\
\x80\x80\x05\x2c\x88\xd0\x6e\x06\xad\x9c\x8c\x50\x3f\xe7\x08\x42\
\x44\x11\x61\x90\x28\x44\x0b\x2a\xa8\x50\x33\x0a\xff\xc6\xa0\xcc\
\xc4\x2d\x7d\x3b\xf0\x0c\x33\xd0\x50\x83\x0c\x32\xa4\x60\x02\x09\
\x1a\x94\xe0\x0a\x3e\xde\x36\xed\x4f\x3f\xfd\xb0\x83\x0b\x1d\x39\
\x94\x50\xc2\x0d\x5f\x0c\xd2\x0d\x3f\x5d\x7b\xed\x76\x46\x01\x01\
\x00\x3b\
\x00\x00\x00\xa6\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x80\x01\x00\xf5\x10\x10\xff\
\xff\xff\x21\xfe\x15\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\
\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\
\x00\x01\x00\x2c\x00\x00\x00\x00\x28\x00\x27\x00\x00\x02\x64\x8c\
\x8f\xa9\xcb\xed\x06\xa2\x7c\x74\xc9\x8b\x63\x7d\xb9\xe3\xad\x78\
\xe2\x07\x06\xe3\x39\x6d\xe8\x0a\x54\x2c\xcb\xbd\x30\x23\xcb\x56\
\x6d\x27\x78\x8e\xec\xaf\xee\xfb\x1d\x82\x42\x08\x71\x35\x3c\xce\
\x94\x4b\x26\xca\xe8\x1c\x41\xa3\x9e\x29\x35\x93\xbc\x92\xac\xda\
\x56\xb6\xab\xe9\x81\xbd\x62\x70\x68\x7c\xd3\x36\xd4\x0e\xaa\x8b\
\x09\x52\x96\x4c\xc1\xf9\x77\x66\x2f\x9f\xf2\xb1\x0b\xff\x0f\x18\
\xf8\x50\x00\x00\x3b\
\x00\x00\x00\xef\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\xb6\x49\x44\x41\x54\x58\x85\xed\x97\x5d\x0e\x80\x20\
\x08\x80\xa1\x75\xaf\x8e\xa6\x1e\xad\x93\xd9\x43\x3f\x23\x2c\x35\
\x1a\xf0\x22\x0f\x4d\x5a\xfa\x7d\x43\xdc\x0c\xe1\x88\x18\x21\x83\
\x61\xc4\x08\x08\x00\xfb\xc3\x1a\x4e\x25\x90\xc2\x43\xb0\xf1\x48\
\x09\xaf\xf1\x64\x0d\xe7\xac\xa9\xf2\x9d\x49\xcc\xfc\xc5\xba\xea\
\x02\x97\xe5\x9e\xbb\x57\x60\x08\x0c\x81\xe2\x14\xf0\x2e\xd5\x0e\
\xf7\x0a\xb8\x0b\x14\x5b\x80\x98\x54\x81\x39\x87\x5b\xee\x5e\x81\
\x21\x30\x04\x8a\x53\xc0\xbb\x54\x3b\xdc\x2b\x70\x09\xd0\x7b\x9a\
\x76\x50\x96\xff\xad\x98\x24\x7e\xff\x05\xc2\x05\x32\x19\x8b\xd7\
\x11\x4d\x7c\xaa\x96\x54\xe2\xf3\xa4\xda\x56\x49\x24\x3e\x1d\xc3\
\x13\xce\x41\x67\x2e\xe9\xa3\x6e\x81\x37\xf8\x5f\x89\x2e\x81\x16\
\xfc\x8f\x44\x53\xa0\x17\x2e\x95\xd8\x00\x35\xc6\x40\x3b\x82\x28\
\xfb\x9b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x09\xa3\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
\x79\x71\xc9\x65\x3c\x00\x00\x09\x35\x49\x44\x41\x54\x78\xda\x62\
\xfc\xff\xff\x3f\xc3\x40\x02\x80\x00\x62\xa4\x44\x73\xe7\xb4\xa3\
\x86\xcc\xcc\x2c\xe7\x4e\x1d\xdd\x2c\xbd\x6a\x51\xcb\x6b\xa0\xd0\
\x6f\x52\xcd\x00\x08\x20\x26\x4a\x1c\xc0\xc4\xc4\xdc\xaf\xa2\x20\
\xc8\xa0\xa0\xac\x9b\x0d\xe4\xf2\x03\x31\x33\xa9\x66\x00\x04\x10\
\x93\xe5\x94\x27\x0f\x8c\x9a\x4e\x98\x03\xd9\x6c\xa4\x84\x48\xf7\
\x8c\xe3\x85\x3a\xea\xa2\xf6\x1e\x0e\x4a\x0c\x82\xc2\x92\x49\x40\
\x21\x41\x20\x66\x25\xd5\x01\x00\x01\x04\x0c\x81\xff\x8c\x6c\x82\
\x92\x6b\xc4\x6d\xe3\x14\xcb\x1a\x57\xaa\xb6\x4f\x3e\x68\x04\x0d\
\x19\x9c\x8e\xe9\x98\x72\x58\x91\x83\x9d\xb5\xde\xd1\x4a\x9e\x81\
\x9d\x8d\x99\xc1\x40\x5b\x5a\x22\x22\xa1\xce\x11\x28\xc5\x45\x6a\
\xb4\x02\x04\x10\xd3\x9f\xef\x9f\xa7\x0b\xf3\xb2\xcb\xc4\xa5\xd6\
\xdc\x10\x15\x97\x3b\xcd\xc2\xca\xbe\xaf\xb8\x76\xa9\x0f\x50\x8e\
\x1d\x97\x61\xcc\x2c\xac\xfd\x40\x9f\xf3\x83\x2c\xff\xf7\xef\x3f\
\x03\x28\x1a\x94\xd4\x8c\x02\x80\x52\xdc\x40\xcc\x02\x52\x23\x97\
\x7a\x24\x50\x36\xf9\xf0\x46\xe9\xf8\x3d\x53\x80\x5c\x0e\x5c\xd1\
\x0d\x10\x40\xcc\x7c\x4a\x26\xb7\x19\x84\x94\x4a\x7c\x8d\x04\x19\
\xbe\x3e\x7f\xc7\xce\xc8\xc8\xc8\xc1\xc9\xc5\x63\xff\xf1\xc3\xeb\
\x2d\xcf\x1e\xdf\xfa\x04\x54\xf3\x17\x59\x43\xd7\xf4\xe3\x81\xf2\
\x32\x02\xf5\xb6\x66\xb2\x0c\xa0\x0c\x04\x72\x80\x90\x00\x27\xc3\
\xfd\xa7\x3f\x55\xd9\xd9\x79\x8e\xc5\xa5\xb5\xc4\x78\x04\xe7\xac\
\x79\xfb\x8b\x39\x5e\x5a\x5a\x40\xfd\xc5\x9b\x9f\x66\x0c\x4c\x6c\
\x3b\x7f\x3d\x3f\xfb\x06\xa8\xfd\x0f\xba\x03\x00\x02\x88\xf9\xcd\
\xd9\x8d\x3f\xa4\x9c\xd3\xd4\x45\x45\xf8\x74\x04\xff\x7c\x63\xe0\
\x60\x65\x62\xe0\xe4\x64\xe7\x95\x94\xd1\xd2\x3e\xb0\x6b\xc9\x66\
\xa0\x9a\x9f\x40\xfc\x0f\xa4\xb8\x67\xe6\x49\x01\x0e\x76\x96\x03\
\xc1\x9e\xea\x1c\xec\xec\x2c\x0c\xa0\x2c\x0c\x72\xc0\xdf\xbf\xff\
\x80\xf8\x3f\x83\xbc\xb2\x76\x98\xbb\x83\x9a\x8d\xb4\x18\x0f\x07\
\xeb\xd7\xcf\x0c\xd6\x56\x8a\x0c\x57\xef\x7f\x62\xf8\xfc\x83\xe5\
\xff\xb7\xdb\x9b\x8e\x02\x8d\xf8\x01\x33\x0b\x06\x00\x02\x08\x14\
\x2c\x7f\xff\xfe\xfc\xb6\xf1\xe4\xfd\x6f\x0c\x52\x2a\x12\x0c\x3f\
\x7f\xfe\x61\xe0\xe7\x65\x67\xb0\xb3\xd2\x74\x28\xaa\x5d\x52\x0c\
\x94\xe7\x81\x05\xdf\xff\xff\xff\x1a\xac\x8c\xa5\xf9\xf9\x80\xf2\
\x30\xcb\x61\x0e\xd0\x50\x11\x66\xf8\xf2\xe5\x37\x83\x10\x3f\x07\
\x83\x92\x2c\x3f\x03\xd0\x1f\x0c\x2f\xaf\xde\x63\x70\x34\x97\x66\
\x60\xe4\x96\xf4\x06\x6a\xe7\xc3\x96\x48\x01\x02\x08\x9c\x6d\x9e\
\xef\x9d\x79\x4b\xc8\x21\x3b\x51\x59\x86\x8f\x8f\xf3\xfb\x17\x06\
\x36\x16\x26\x06\x61\x01\x0e\x06\x11\x51\x31\xeb\x7f\x4c\xfc\xc7\
\xaf\x5e\x3c\xf4\xb8\x6b\xfa\x31\x1b\x79\x19\xc1\xe9\x2e\xb6\x0a\
\x60\x8d\x30\xcb\x61\x18\x94\x1e\x9e\xbe\xfc\xc2\xc0\xc7\xcd\xc6\
\xc0\xc1\xce\xcc\xf0\xf3\xf7\x3f\x86\xe7\xcf\x3f\x31\xc8\xaa\x49\
\x32\x1c\xbd\xf0\x96\xe7\x3f\xb7\xe2\xa3\x9f\x8f\x0f\x5c\x81\x86\
\x28\xbc\xf4\x03\x08\x20\x58\xbe\xfd\x2f\x6e\x97\x22\xfe\x8f\x99\
\xdd\x5a\x89\xf7\x3f\xc3\xd7\x8f\xdf\x18\x7e\xfe\xfa\xcb\xe0\xe3\
\xac\xc2\xf0\xe1\x07\x9f\x03\x0b\x2b\xcf\x41\x79\x25\x9d\x25\xfe\
\xee\x6a\xfc\xdc\x5c\xac\x50\xdf\x33\x40\x7d\x0f\x71\xc0\x6f\xa0\
\x85\x3c\x40\xcb\xaf\xde\x7a\xc3\x20\x27\xc5\xc7\x20\x08\x0c\x89\
\xcb\x37\xdf\x30\x30\x03\x43\xe2\xe3\x7f\x36\x86\xc7\x2f\xff\x70\
\xfd\xb8\xb3\x76\x2b\xd0\xae\x6f\xc8\xe9\x0a\x20\x80\x60\x29\xf3\
\xdf\x8f\x37\x0f\xe6\x5f\x7c\xf0\x95\x81\x49\x48\x00\x1e\x3c\x8f\
\x9f\x7d\x62\x08\xf2\xd4\x96\xb4\x76\x0c\xdb\x69\x6d\x22\x2b\x27\
\x26\xcc\x85\xe4\xfb\x7f\x60\x1a\xe4\x18\x88\x83\xfe\x31\xc8\x48\
\xf0\x30\x3c\x7f\xfd\x15\xe8\xf8\x3f\x0c\x1c\xc0\x10\x11\x11\xe2\
\x64\xf8\xf6\xfa\x3d\x83\x83\x99\x14\x03\x30\xaf\xdb\xb0\x88\x1a\
\x49\x43\x73\x17\x1c\x00\x04\x10\x3c\x6b\x5c\xeb\xf3\xbd\xf3\xf7\
\xfb\x97\x1d\xd7\xdf\x81\xc2\x05\x12\x30\x77\x1e\xbc\x67\x00\x59\
\x6a\x63\x2a\xcb\xfb\xe3\xd7\x5f\xac\x41\x8f\x8c\xbf\x7f\xff\xcd\
\xa0\xaa\x28\xc4\xf0\xf0\xe9\x27\xb0\x83\x74\xd4\x44\x18\xfe\xfd\
\xf9\xcb\x20\xcc\xfa\x17\x1c\x22\xec\xaa\x51\x61\xd0\xb2\x02\x5e\
\x62\x02\x04\x10\x72\xde\xfc\xfb\xfb\xeb\x87\xc5\xc7\x6f\x7e\x62\
\x10\x94\x15\x61\x78\xf5\xe6\x2b\xc3\xa7\x2f\xbf\xc0\x51\xa1\x0d\
\x34\xe8\xea\xcd\xd7\xe0\x6c\x07\xf3\x31\x72\x22\x84\xe1\x1f\x3f\
\x7e\x33\xe8\x6b\x8a\x32\xdc\x7e\xf0\x01\x1c\x45\x52\xa2\xdc\xe0\
\xb4\xf1\xe9\xf1\x0b\x06\x67\x5b\x79\x60\x62\x54\x08\x47\x4f\x8c\
\x00\x01\x84\xec\x80\xff\x57\x3b\x6d\xd7\xbc\x7e\xff\xed\xc9\xd3\
\xbf\x40\xd7\x02\xb3\x19\x28\x47\x80\x2c\x06\xa5\x7a\x59\x60\xbc\
\xde\x79\xf0\x0e\xc5\x42\x64\xc7\xc0\x30\x13\x30\x7d\xb1\xb2\x32\
\x33\x7c\xf9\xfa\x0b\x58\x57\x30\x30\x28\x02\x73\xc4\xef\x2f\xdf\
\x18\x4c\x75\x45\x41\x32\x12\x6c\x5a\x79\x28\x25\x26\x40\x00\xa1\
\x97\x4e\x7f\xfe\x7c\xff\xb2\xec\xd4\xed\xcf\x0c\x4c\xdc\x90\xf8\
\xbe\xf3\xf0\x03\x98\x06\x87\x02\x30\x81\xe1\x8b\x02\x10\xfe\x0a\
\xb4\x18\xa4\xf6\xda\x9d\x77\xe0\x10\x53\x57\x14\x84\x04\xef\xdb\
\x77\x0c\x96\x66\x32\x0c\x4c\xfc\x5a\x28\x25\x26\x40\x00\xa1\x3b\
\xe0\xdf\xcf\xb7\x0f\xe7\x5f\xb8\xf3\x91\x81\x41\x80\x9f\x01\x16\
\xef\xaf\xde\x7e\x03\x17\xb7\x4f\x9e\x7f\x66\xf8\xf4\xf9\x27\x5e\
\x07\xfc\xfe\xfd\x97\x41\x51\x86\x0f\x9c\x25\x41\x7c\x2e\x0e\x16\
\x70\x08\x7e\x7f\xf1\x9a\xc1\xca\x5c\x8e\xe1\x3f\xab\x88\x27\x93\
\xa0\x21\x3c\x31\x02\x04\x10\x46\xf9\x7c\x6f\x4e\xd8\x9d\x3f\x3f\
\xbf\xed\xb8\xfe\x16\x18\xa7\xd0\xcc\x72\xee\xf2\x0b\x30\x0d\xac\
\xfd\x18\x6e\xdc\x7d\x8b\x35\xe8\x61\x51\x02\x09\xc6\x7f\x0c\x9c\
\x40\x8b\x5f\xbe\xf9\x06\x4e\x8c\xa0\x50\x00\x25\x46\x59\x60\xec\
\x0b\x09\x72\x32\x30\xca\x04\x45\x40\x43\x81\x19\x20\x80\xb0\x55\
\x10\x7f\xff\x02\x13\xe3\xb1\x2b\x6f\x19\x84\x64\x44\x18\x3e\x02\
\x7d\x0c\x4a\x88\x20\x6c\xa4\x23\x0e\xce\x19\xd8\x7c\x0e\x71\x08\
\x30\x5c\x81\x85\xd8\x8b\x37\xdf\xc0\x06\x89\x02\xb3\x21\x48\x0c\
\x14\x22\x20\xf0\xe3\xcd\x7b\x06\x17\x27\x15\x60\xd5\x24\x07\x4f\
\x8c\x00\x01\x84\xcd\x01\xff\xef\xce\x70\x5f\xf3\xea\xed\xd7\x27\
\xaf\xff\xb3\x83\x13\x22\x28\xd8\x41\x16\x83\x82\x92\x9f\x8f\x1d\
\x5c\x3e\x60\x73\x04\x08\xf0\xf2\x71\x32\x1c\x3f\xf7\x94\xc1\x5c\
\x5f\x1c\x51\x57\x00\x7d\xaf\xae\x24\xc4\xf0\xf3\xed\x7b\x06\x0b\
\x63\x29\x60\x65\xc0\x2a\xc1\x20\x9f\x0e\x4e\x8c\x00\x01\x84\xab\
\x45\xf4\xe7\xdf\x8f\x2f\xcb\xce\x00\x13\x23\x8f\x30\x1f\x38\x47\
\x80\x12\x20\x08\x68\xa9\x8a\x30\x3c\x7b\xf5\x05\x23\xf8\x41\x80\
\x87\x87\x9d\xe1\xdc\xd5\x57\x0c\x12\x22\x5c\xc0\xb8\x67\x85\xcb\
\x83\x00\x48\x0c\xdc\x06\xfc\xfc\x11\x58\x49\x01\x8b\x73\x5e\x0d\
\x70\x62\x04\x08\x20\x5c\x0e\xf8\xf7\xf3\xfd\x93\xf9\x47\x2f\x02\
\xf3\x3e\x1f\x2f\xb8\x4c\x00\x67\x49\xa0\x23\x14\xe5\x04\x19\x9e\
\xbd\xfc\xcc\xf0\xeb\xf7\x3f\x94\xe0\x67\x62\x62\x64\xf8\xf6\xf3\
\x1f\xc3\xc3\xc7\x1f\x18\x74\x54\x85\xe1\x51\x02\x03\x12\x22\x9c\
\xe0\x10\xfc\xf9\xea\x0d\x83\xb5\xad\x12\xb0\xfd\x25\xea\xc9\xc0\
\xa7\x2f\x0d\x10\x40\x38\xdb\x84\xcf\x56\xc5\xdd\xf9\xf7\xeb\xc7\
\xb1\xb3\x4f\x7e\x33\xb0\x09\xf2\x01\x0b\xa5\x9f\x0c\x27\xcf\x3f\
\x05\x17\xb3\x8a\xb2\x02\x0c\x4f\x5e\x7c\x42\x09\x7a\x11\x11\x1e\
\x86\xe3\x67\x1f\x33\x98\xe9\x89\xa3\x84\x0e\x2c\x64\x5e\x7f\xf8\
\x09\xf6\x04\x37\xb0\x08\x52\x14\x63\x03\xaa\x07\xa6\x41\xc9\x80\
\x08\x80\x00\xc2\xd7\x88\xfc\xcf\xa9\xe0\x70\xe3\xf6\x33\xc6\x50\
\x23\x53\x39\x76\xae\x3f\xdf\x19\xfe\x02\x2d\x7f\x0d\xcc\x92\xa6\
\xfa\xd2\x0c\xe7\xae\x3c\x63\x90\x11\xe7\x03\x5b\xc2\xc5\xc5\xc6\
\x70\xf7\xd1\x07\x86\xff\x40\xc7\xc8\x4a\xf2\x81\x7d\x0e\x6c\xd8\
\x30\x70\x70\xb2\x32\xdc\x7f\xf2\x99\xe1\xc8\xd9\x67\xc0\xdc\xf3\
\x8e\x81\x05\x58\x33\x7d\x03\x16\xd7\xa0\x12\x8a\x55\x58\x90\xe1\
\xca\xd5\x0f\x22\x00\x01\x84\xb7\x15\xfb\xe5\xfa\x86\x17\xec\x72\
\xb6\xcf\x2f\x3f\xf8\xef\x6f\x65\x21\xcf\xc0\xf4\xe5\x33\xd4\x67\
\xff\x18\x7e\xff\xf9\xc3\xc0\x09\x4c\x1b\xa0\xec\xc6\xc2\xc6\xc2\
\x70\xfa\xc2\x53\x06\x43\x2d\x71\x70\x2e\x60\x02\xd6\x25\x17\x81\
\x35\xe1\xd1\x33\x4f\x81\x59\xf1\x2b\xc4\x52\x70\xf6\x02\x56\xdb\
\x62\x22\x0c\x7f\xf9\x85\x18\x2e\x5e\x7e\xc9\x70\xef\xfe\x47\x21\
\x80\x00\x62\x24\xa2\xdf\xc0\x21\x1a\xbc\x6e\x8a\x9c\xbc\x4c\x52\
\xa1\x1f\xb0\x71\xf1\xee\x2d\xb8\xae\x12\x03\x06\x21\x28\x6f\x9b\
\x1a\xc8\x02\x53\xfd\x63\x06\x25\x60\xda\x60\x02\xfa\xec\xfa\x9d\
\xb7\x0c\xb7\xee\xbf\x67\x60\x03\x16\xc7\x3f\xa1\x05\x19\x23\x0b\
\x33\x03\xa7\x94\x04\xc3\x8b\xef\xcc\x0c\x7b\x0f\xde\x67\x38\x7a\
\xf8\x1e\x03\xc3\xaf\x37\x27\x18\x3e\x9c\x5e\x0b\x10\x40\x8c\x44\
\xf6\x1d\xb8\x45\x82\x36\xed\xb1\x36\x53\x32\x0b\x37\xe4\x60\xf8\
\xfb\xe5\x0b\xd0\x37\x7f\x19\x58\x59\x18\x19\x74\x35\x24\x81\x59\
\xf4\x2d\xd8\xf2\x97\xaf\xbf\x01\x7d\xcf\xc4\xf0\xf5\xdb\x1f\x86\
\xbf\xc0\xe8\x60\x62\x67\x67\xe0\x92\x93\x66\x38\x75\xf5\x3d\xc3\
\xee\xbd\xb7\x19\x1e\x3d\x00\x06\xc7\x8f\x27\x7b\x18\x5e\x6e\x5d\
\xcd\xf0\xee\xd8\x03\xa0\xb9\x9f\x00\x02\x88\xd8\x26\x34\x13\xa7\
\x66\x94\x3c\xa7\x7a\xcc\xc5\xc4\x50\x6d\x5e\x63\x9e\x4f\x0c\x4c\
\xc0\x68\x00\x45\x05\x30\xaa\xc1\x09\x91\x91\x09\x14\xbf\x7f\x19\
\xfe\x00\x83\xf9\x3f\x17\x0f\xc3\x07\x26\x6e\x86\xfd\xa7\x5e\x32\
\x1c\x3e\x74\x8f\xe1\xdb\xe7\x0f\xf7\x18\x3e\x5f\xdb\xc0\x70\x6f\
\xc2\x16\xa0\x59\x5f\x41\x16\x03\xf1\x47\x10\x1b\x20\x80\x48\x69\
\xc3\xb3\x70\x5b\x36\xdb\xf3\xc9\x98\xef\x29\x4e\xd0\x62\x90\xf8\
\xf1\x0a\x1c\xff\xff\xfe\xfd\x05\x57\xbd\x20\x8b\xff\xf1\x09\x31\
\xdc\x78\xcb\xcc\xb0\x73\xdf\x3d\x86\x33\xa7\x1f\x03\x1b\x5f\x2f\
\xf6\x30\xbc\x39\xb0\x96\xe1\xe5\x96\xab\xa0\x24\x05\xb5\xf4\x13\
\xb4\x55\xf4\x0b\x94\x2c\x00\x02\x88\xd4\xbe\x21\x3b\x8f\xc3\xdc\
\x4a\x11\x29\xf9\xfa\x86\x02\x53\x06\x2e\x36\x26\x70\xe3\xee\xdb\
\xa7\xaf\x0c\x07\xcf\xbf\x63\xd8\xbe\xeb\x2e\xc3\xeb\x17\x6f\x5e\
\xfd\xff\xfa\x68\xf7\xff\x47\x0b\x56\x33\x7c\xbb\xff\x0a\xc9\xb7\
\x20\x07\x7c\x87\xf6\x1f\xe1\x2d\x63\x80\x00\x22\xd5\x01\x20\xf5\
\x5c\x5c\xf6\x8b\x16\xfd\x67\xe6\x0d\xfa\x0f\x6a\x96\x01\x5b\xc4\
\xa0\xec\xf7\xff\xc7\xfb\xcb\x7f\xdf\x9d\x5b\xff\xff\xfe\xcc\x7d\
\xe8\xc1\x0c\x6d\x88\xfe\x41\x6e\x8c\xc2\x00\x40\x00\x91\xd3\x3b\
\x06\x25\x4a\x5e\x20\x16\x07\x62\x01\x58\xbd\x0e\x6d\x68\x7e\x87\
\x5a\xfc\x09\xca\xfe\x85\xde\xb1\x41\x07\x00\x01\x06\x00\x4d\x55\
\x78\x5f\x2c\x92\xe0\x60\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
\x60\x82\
\x00\x00\x05\x44\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
\x79\x71\xc9\x65\x3c\x00\x00\x04\xd6\x49\x44\x41\x54\x78\xda\x62\
\xfc\xff\xff\x3f\xc3\x40\x02\x80\x00\x62\x62\x18\x60\x00\x10\x40\
\x03\xee\x00\x80\x00\x62\x41\x17\x58\xb7\xfe\xc8\xff\xdf\xbf\xff\
\x30\xfc\xfe\xf5\x97\x81\x91\x91\x81\xe1\xcf\x9f\xbf\x40\x0c\xe4\
\xff\x46\xd0\xa8\xec\x3f\x60\x35\x08\x1a\x55\x0c\xc4\x7f\xf5\xe6\
\x23\xc3\xfb\x77\x9f\x19\x2e\x9c\x9f\xc9\x88\x6e\x1f\x40\x00\xa1\
\x38\x60\xfd\xfa\xa3\xff\x6d\xed\xf5\x81\x9a\xff\x31\xfc\xfd\xf7\
\x8f\x41\x46\x42\x10\x2c\x7e\xf9\xe6\x13\x14\x4d\xba\xea\x32\x24\
\xf9\x72\xfb\xc1\xcb\x0c\x7f\x7e\xfd\x66\x70\x72\x2e\xf9\xbf\x6f\
\x6f\x0f\x8a\x23\x00\x02\x08\xc5\x01\xbf\x81\xbe\xfa\xf1\xf3\x37\
\xc3\xd7\x6f\x3f\x19\xfe\xfc\x45\x38\xc0\xd4\xbf\x91\x41\x52\x54\
\x80\x81\x83\x83\x95\x81\x83\x9d\x95\xe1\xfc\x96\x46\x92\x1c\x70\
\xe7\xe1\x2b\x86\xbf\x7f\xff\x32\x38\xb9\x9a\x30\x48\x4a\x86\xfe\
\x7f\xfe\x7c\x35\xdc\x11\x00\x01\x84\xea\x00\x60\x70\xfd\x05\x5a\
\xfc\xfb\x0f\x84\x86\x01\x6e\x2e\x76\x06\x23\x1d\x79\x06\x41\x3e\
\x2e\x06\x01\x7e\x2e\x92\xe3\xf9\x0f\xd4\xbc\x5f\xbf\x7e\x31\xb0\
\xb0\xa0\x26\x3b\x80\x00\x62\x41\x57\x08\xf2\x39\x18\x03\xd9\x30\
\xc0\xc6\xca\xc2\x20\x29\x26\xc0\x20\x00\x72\x00\x1f\x79\x0e\x00\
\x99\xf9\xe1\xc3\x27\x86\x7f\xff\xfe\xa1\xc8\x01\x04\x10\x5a\x08\
\xfc\x01\xc7\x3d\x38\x24\x90\x14\x4a\x88\xf2\x03\x1d\xc0\x0f\x75\
\x00\x37\xc9\x0e\x00\x85\xe8\xa7\x8f\x9f\x19\xbe\x7f\xfb\x01\x74\
\x00\x6a\xb9\x03\x10\x40\x18\x21\xf0\xf7\x0f\x28\x04\x50\xa3\x20\
\xd0\xcd\x98\x41\x5f\x53\x8e\x81\x07\x18\x15\x3c\xdc\x1c\x24\x3b\
\x00\xe4\xf3\x6f\x9f\xbf\x32\xfc\x04\x26\x44\xf4\x82\x0f\x20\x80\
\x30\x12\x21\xc8\x72\x58\x90\xc1\x40\x5d\x9e\x1f\x59\x79\x1c\x14\
\xdc\xaf\x5e\x7d\x60\xf8\xf2\xe9\x0b\xd8\xec\xdf\x40\x07\xa0\x47\
\x01\x40\x00\xa1\x86\x00\x38\x11\xfe\x07\x2a\xfe\x07\x0e\x81\xdb\
\x0f\x5e\x82\x83\xec\x1f\xd0\xd5\xff\xa1\x34\xc8\x00\x90\x27\x20\
\xe2\xff\xc0\x3e\xfa\x07\x97\xfb\x0f\xe7\xff\xfe\xfd\x9b\xe1\xcd\
\xeb\x0f\x0c\x5f\xbf\xfe\x00\x26\xbe\x3f\xe0\x72\xe3\x17\x96\x10\
\x00\x08\x20\xcc\x5c\xf0\x0f\x92\x00\x41\xf4\xf5\x3b\xcf\x51\xf8\
\x7f\xa1\x09\x14\x99\x86\xb0\x21\x0e\x07\xd1\xa0\x74\xf4\xf9\xd3\
\x57\x86\xaf\x5f\xbe\x22\x0a\x30\x50\x81\x04\x72\xc0\xef\xdf\x18\
\x69\x00\x20\x80\x30\xa3\x00\x1c\xfc\x7f\xe1\x85\x11\x2e\x8b\xfe\
\xa2\x39\x04\x14\xbf\x5f\xbf\x7c\x63\xf8\xf6\xf5\x1b\xb4\x24\x84\
\x94\xa6\x10\x33\xa1\xfc\xdf\x98\x21\x00\x10\x40\x98\x51\x00\xca\
\x05\xe0\x28\xf8\x8b\xd5\xc7\x7f\x90\x1c\xf3\xf3\xe7\x2f\x30\x06\
\xa5\xee\x9f\xc0\x02\x0c\x6e\x31\x88\xfe\x8d\xb0\x1c\xe6\xb1\xdf\
\xc0\xa8\x40\x77\x00\x40\x00\xb1\xa0\x67\x17\x58\x19\x00\xb2\x44\
\x58\x90\x07\x1c\xe7\x7f\xff\xfd\x87\xd3\xbf\x80\x16\xfd\xf8\x01\
\xb4\xf4\xfb\x0f\x06\x56\x46\x56\x06\x76\x66\x46\x06\x2e\x56\x66\
\x88\x25\xbf\xff\x22\xd5\x0b\x50\x4b\x81\xf4\x83\x27\xaf\xc0\xd1\
\xf0\x0b\x4b\x08\x00\x04\x10\x66\x39\x00\xf5\x1d\x28\x0a\x5c\xac\
\xb5\xe0\x72\x20\xf1\x6f\xc0\x22\x1a\xe4\x63\x48\x05\x05\x51\x03\
\x71\xec\x5f\x24\xb1\xbf\x18\xf2\x3d\xb3\xd6\x43\x1d\x86\x99\x0b\
\x00\x02\x88\x05\x5b\x91\x89\x5e\x10\x81\x82\xf7\x1b\x30\x98\x91\
\x0d\x85\xe1\xbf\x7f\xff\x42\x8b\xf0\xbf\x58\xe5\x91\x6b\x4a\x50\
\x28\xa0\x87\x00\x40\x00\x61\xe4\x82\x3f\x48\xf1\x0c\x52\x0c\xc9\
\x46\xbf\xb1\x1a\x8c\xea\x10\xdc\xf2\x60\x07\xfc\x85\x44\x0b\xba\
\x03\x00\x02\x08\x7b\x14\x40\x35\x7e\xf9\xf2\x9d\xe1\xf4\xe9\xc7\
\x90\x1c\xf1\xf7\x2f\x3c\x61\xa2\xd2\x08\xcb\xb1\xc9\xc9\xcb\x0b\
\x01\xd3\xc1\x6f\x60\x09\x0b\x49\x0f\xe8\x0e\x00\x08\x20\x8c\x44\
\x08\xab\x0d\xbf\x01\x7d\xfe\xe3\xc7\x6f\x06\x39\x39\x7e\xb4\x78\
\xfe\x87\x16\xe7\xff\x30\xd2\x00\xb2\x27\x60\x39\xe2\x2f\x8e\x10\
\x00\x08\x20\xb4\x6c\xf8\x07\x1c\xfc\xdf\xbf\xff\x64\xf8\xf6\xfd\
\x07\x58\xc3\x87\x0f\xdf\x90\x7c\x88\x6a\x21\x2e\x3e\x8c\x0d\xc2\
\xbc\xbc\xec\x40\xfe\x6f\x78\xcb\x0a\xdd\x01\x00\x01\x84\x11\x02\
\xa0\x60\xfa\xf2\xe5\x1b\xbc\x39\xf5\xe1\xc3\x77\x94\x60\x45\x0e\
\x6a\xe4\xa8\x41\x15\x47\xb0\x39\x38\x98\xa1\xb5\x2c\x76\x07\x00\
\x04\x10\x46\x22\x04\x17\x2a\xc0\x86\x03\x28\xd8\x40\x65\xb8\xac\
\x2c\x1f\xd6\xac\x85\x9e\x13\x70\x25\x4a\x48\xc2\xfe\xc3\xf0\x0f\
\xe4\x50\x2c\x0e\x00\x08\x20\x54\x07\xfc\x02\x15\x32\x3f\x81\x85\
\xcd\x1f\x78\x61\x72\xf1\xe2\x73\xb0\x05\xff\xfe\x21\x07\xed\x3f\
\xb4\x50\x41\x84\x04\xb8\xc0\x42\x12\x93\x96\xe6\x07\x27\x40\x50\
\x1a\x00\x61\x06\x06\x54\x07\x00\x04\x10\x8a\x03\x40\xe5\xf9\x6f\
\xb0\xcf\x7f\x43\x2a\x10\x20\x96\x96\xe6\xc5\xc8\xe3\xc8\x3e\x46\
\x4e\x70\xc8\xc1\x8f\x28\x23\xfe\x80\xd3\x00\xac\x80\x43\x0f\x01\
\x80\x00\xc2\xc8\x86\xe0\x22\x13\x9c\xef\x21\x69\x80\x8d\x8d\x09\
\xc8\xfe\x0f\x6c\xa2\xc3\x30\x23\x10\x33\x41\x7d\x02\x11\x63\x60\
\x60\x04\x63\x90\x1c\x8c\xfd\xff\x3f\x04\x43\xa2\x00\x18\x32\x7f\
\x60\x51\xc0\x8c\xe2\x00\x80\x00\x42\x71\xc0\xaf\xef\xbf\x18\xbe\
\xbc\x7d\xcf\xf0\xe9\xf9\x2b\x70\x62\xbc\x7b\xf7\x0e\x46\x1e\xff\
\xf3\xe7\x1f\x96\xc4\xf6\x0f\x6b\x79\x00\x8b\x86\xaf\xaf\x5e\x80\
\xab\xe1\x3f\x3f\x7f\x02\x1d\x80\xda\xa6\x04\x08\x20\x46\xf4\x20\
\x31\x30\x48\xfd\xff\xf1\xe3\x17\x70\x02\x14\x10\xe0\x82\x37\xcd\
\x40\xea\x20\x98\x01\x1e\x8c\xa8\x7c\x04\x1b\x5d\xec\xe5\xcb\x37\
\x50\xf5\xa0\xe2\xfe\x00\x4a\xbf\x00\x20\x80\x18\x07\xba\x73\x0a\
\x10\x40\x03\xde\x37\x04\x08\xa0\x01\x77\x00\x40\x80\x01\x00\x80\
\x70\xef\x0c\xb7\x02\x84\x52\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
\x42\x60\x82\
\x00\x00\x07\xc7\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x1e\x00\x00\x00\x1e\x08\x06\x00\x00\x00\x3b\x30\xae\xa2\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
\x01\x00\x9a\x9c\x18\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
\x46\x00\x00\x07\x4d\x49\x44\x41\x54\x78\xda\xb4\x97\x6b\x50\x54\
\xe7\x19\xc7\x7f\xe7\xb6\xec\x0d\x16\x58\x2e\xea\x2e\xac\x11\x05\
\x11\xc5\x04\xa2\x0d\x4d\x49\x47\x1b\xf1\x52\x30\x93\x36\x5a\x5b\
\xcd\x97\xca\x54\x27\xd4\x99\x48\x3b\x63\x87\x0f\x1d\xd2\xe9\x38\
\x35\xd3\xc1\xe9\x34\x17\x4d\x35\xd3\xe9\xd8\x8e\x35\x66\xda\x78\
\x4b\xb1\xe9\x8c\x29\x69\xd0\x34\x95\xb8\xba\xa8\x08\x22\x2c\xb0\
\xbb\xc0\x02\xbb\x2c\xb8\xbb\x67\xcf\x9e\x7e\x50\x11\xa2\xb6\x75\
\xaa\xff\x4f\x67\xde\x79\xce\xfb\x7b\x9e\xff\xfb\xbc\x67\x9e\x23\
\x74\x76\x5e\xe2\x8e\x04\x51\x24\x3a\x16\x21\x11\x8f\x93\xe5\x70\
\x10\x19\x0f\x11\x8f\x8c\x63\x49\xcf\xc8\x41\x90\x5e\xee\xb9\xd6\
\xb1\xc1\xdf\x77\xbd\x08\x83\xd1\x22\x4a\xa2\x84\x1a\x13\x62\xd1\
\x90\x96\x61\x77\x4d\xa4\xe7\xce\xba\x16\x0c\xf4\x1f\x4d\x6a\xda\
\xef\x8a\x4b\xcb\x7d\xba\x2e\x31\x39\x3e\x88\x64\xb0\x60\x32\x19\
\x51\x04\x9d\xe9\x12\x3a\x3b\x2f\x11\xa8\xa9\xe2\x7e\x9a\x73\xfc\
\xa3\x27\xda\xcf\x7f\xfe\xc6\xe0\xd8\x48\x55\x78\x24\x24\x17\x18\
\x62\xa4\x0e\xf4\x13\xf4\x5c\x41\x52\x55\xb2\xb2\xb3\x98\x30\x4a\
\x74\x25\x44\x82\xe9\x59\x2c\x2a\x5f\x82\x20\x2a\x5a\xae\x6b\xf1\
\xc7\xa9\xe9\xb6\xba\xf0\xa6\xf5\x57\xbe\xbc\xe7\xac\xf7\x4f\x00\
\x20\xf3\x00\x39\x4f\x9e\xf9\xf9\xf5\x6b\x17\x77\xa5\x5a\x93\xf2\
\xe8\x45\x0f\xf3\xdd\x57\xc8\x1c\x1e\x46\x0f\x47\xc8\x4d\x68\xb7\
\x82\xfa\xfd\x58\x04\x81\x25\x8a\x8c\x9a\x9d\x89\x69\x8e\x99\x76\
\x29\x45\xba\xde\x79\x7d\x65\xb6\x73\xde\x25\x73\xc3\x4f\xdf\x98\
\xbd\xfb\x67\xaf\xde\x6f\xff\x7b\x2a\xce\x79\xef\x43\xd1\xf3\xc5\
\xb9\xd6\x1b\x03\xbd\xcb\xb3\xa4\x38\x0b\x3f\xfb\x17\xf1\xf6\x0e\
\xf4\x3b\xb0\xff\xa2\x84\x31\x05\xdf\xd2\x45\x64\xac\x5e\x85\x62\
\x30\x63\x48\xcf\xbb\x98\x33\x2b\xe7\xe9\xa1\x97\x6a\xe2\x00\x8e\
\x3f\x9d\xba\x55\xb1\x38\xad\xe8\xfc\xe6\x4f\xc4\xd1\x80\xcf\x93\
\x6a\xd1\x17\x16\x84\xfa\xb0\x7f\xf8\x31\xb1\x9b\x31\x1e\x46\x72\
\x34\x46\xde\xb9\x36\xd4\xc1\x41\x42\xd5\xab\xf0\x75\x79\x97\xb8\
\x0a\x8b\x3b\xf8\xc5\x2f\x0b\xd3\x7e\xf2\xe3\xb8\x6f\x70\x08\x00\
\x11\x2d\x3e\xf5\x52\xa0\xaf\xf7\xd3\x8e\xcb\xee\x85\xb6\x0b\x17\
\xb0\x1f\xfb\x1b\xfa\x43\x42\xa7\x4b\xe9\xee\xc7\xfc\xdb\xa3\xe8\
\xe1\x00\x43\xdd\xed\xae\x44\x74\xa2\x0d\x20\xa6\xaa\xc4\x54\x15\
\x71\x78\x60\x00\x80\x64\xd3\xaf\x5f\xff\xe7\x3f\x4e\x7f\xc5\x72\
\xf5\x3c\xf1\xa3\xc7\xfe\x67\x6b\xff\x93\xcc\xe3\x11\xe6\x7e\x74\
\x86\x05\xce\x74\x0c\x8c\x2f\x32\xbd\xfb\x87\x03\x39\xf6\x6c\xb2\
\x33\xed\x08\x9d\x9e\x36\x24\xd9\x50\x30\xe6\xeb\xbd\x1c\xf1\x5d\
\x50\xc4\x3d\x6f\x43\x4c\xe5\x51\x6a\x30\x7f\x0e\x83\x95\xcf\x90\
\xe9\x28\xd1\x72\x5d\x73\xcb\xac\xa9\x56\xb7\x28\x9b\x8c\x4c\xc6\
\xa2\xbf\x1a\x1e\xe9\x57\x84\x3f\x7e\xf0\xc8\xa1\x00\x59\x5e\x1f\
\x8a\x6f\x88\x89\xa0\x57\x1a\xf5\x77\xef\x0f\x8d\x0e\x23\x07\xfd\
\xfd\xb9\xdd\x1d\x1d\x55\xb6\xd1\x1b\x88\x1d\x5e\x74\x1e\xbd\x44\
\x5d\x27\xe7\xf3\x36\x6c\x2b\x9e\x46\x36\xdb\x96\x99\xd3\x67\xbb\
\xc4\x14\xa3\xe9\xe5\xd9\x76\x93\x62\xf8\xf4\x2c\xba\x9e\xe4\x71\
\xc9\x36\x3e\x41\xcf\xb9\xf3\xf4\xf6\xf5\x4a\xe8\xf1\x1f\x8a\x8a\
\xc9\xf2\x92\x14\x0c\x22\x76\xf5\xde\x13\x6c\x2d\x29\xa5\x68\xef\
\x7e\x1c\xb5\x75\x53\x6b\x8e\xda\x3a\x8a\xf6\xee\xbf\xf7\x1a\xa5\
\xd9\x28\xda\xbb\x1f\x6b\x49\xe9\xbd\xd0\x8a\x4a\xf2\xb6\xbe\x82\
\xdc\xde\xc3\xc8\xd0\x00\xd7\xaf\x7a\xd6\x8b\xa3\xc3\x81\xa2\xd8\
\x85\x2f\x90\xa2\x33\xcf\x36\x77\xe3\x16\x0a\x9b\xf6\x31\xd6\xda\
\x42\x7a\x45\x25\x00\x45\x7b\xf7\xe3\xaa\x6f\xc0\xbe\xba\x1a\x39\
\xcd\x36\x23\xbe\xe0\xb5\xd7\xb1\xaf\xae\x26\x11\x0e\xcd\x58\x77\
\xd4\xd6\x51\x72\xf0\x30\x46\x67\x3e\xa6\xa1\x51\x32\xd2\x52\x31\
\x19\x64\x87\x18\x0c\x78\x2d\xd2\x80\x1f\x5d\xd7\x67\x54\xea\xaa\
\x6f\xa0\xa3\x7e\x3b\x46\x67\x3e\x63\xad\x2d\x38\x6a\xeb\xb0\xaf\
\xae\x26\xd8\x7c\x82\xc0\x91\x43\x58\xa6\x55\x96\xbb\x71\x0b\x29\
\xce\x7c\x42\xad\x2d\x44\xbd\x3d\x77\x93\x69\xdc\x83\x9c\x66\x23\
\xea\xed\xa1\xff\xe0\x5b\x28\xd1\x9b\x88\xb1\x18\xb6\x8c\x8c\x14\
\xb9\x60\xfe\x7c\x69\x28\x3c\x8e\x30\x2d\xcb\x79\x8d\x7b\xe8\x3f\
\xf0\x26\x8e\xda\x3a\x6c\x15\x95\x9c\xaf\xaa\xa0\xec\x74\x2b\xc1\
\xe6\x13\x5c\xdd\xb9\x8d\x82\xc6\x3d\xc4\xfa\x7a\xa7\x2c\xce\xdd\
\xb0\x19\x2d\x1c\x62\xac\xb5\x65\xaa\x4a\xa3\x33\x1f\x4b\x49\x29\
\x5a\x38\x44\x22\x1c\x22\xea\xed\x41\x96\x15\xc2\x81\x61\x42\xf9\
\x21\x51\xd6\x05\x85\xe9\x3d\x95\xbb\x71\xcb\x94\x8d\xf6\xd5\xd5\
\x78\xb6\x6e\xc2\x52\x52\x4a\x22\x34\xc6\xd5\x9d\xdb\x30\xe6\xb9\
\xb0\x55\x54\xd2\xd5\xb8\x0b\x00\x57\x7d\x03\x3d\x4d\xbb\x91\xd3\
\x6c\x04\x9b\x4f\x60\xab\xa8\xc4\x55\xdf\x30\xc3\xee\xd0\xed\x84\
\x74\x5d\x47\xd4\x75\x06\xfa\xba\x05\x31\x3c\x1e\xd6\x04\x8b\xf9\
\x2e\x78\xc3\x66\x02\xef\xfd\x9e\x88\xc7\x8d\x67\xeb\x26\xb4\x70\
\x88\xcc\xaf\x7f\x83\x60\xf3\x09\xe4\x34\x1b\x85\x4d\xfb\xe8\x3f\
\xf8\x16\xc6\x3c\xd7\x2d\xfb\xd7\xd4\x4c\x41\x01\x26\x3c\x6e\x22\
\x1e\x37\x9f\x3d\xb3\x88\xc0\x91\x43\x04\x8e\x1c\xc2\xb3\x75\x13\
\x00\x1a\x3a\xa6\x34\x2b\x85\x05\x05\x9a\xa8\x68\xea\xa4\x98\x9b\
\x0d\xb7\xcd\xb6\x96\x94\x12\xf1\xb8\x09\xb5\xb6\xa0\x85\x43\xb8\
\xea\x1b\xf0\x1d\x7a\x17\x6b\x49\x29\x8b\x0e\x1e\x66\xc2\xe3\x26\
\x70\xe4\x10\x05\x8d\x7b\x70\xd5\x37\x4c\x75\xf3\xf2\xb3\xed\x38\
\x6a\xeb\x28\x3b\xdd\xca\xf5\xc6\x5d\x24\xc2\x21\xec\x6b\x6a\x30\
\xe6\xb9\x30\xe6\xb9\x00\x88\xcb\x32\xba\xd1\x88\x35\x6b\x4e\x5c\
\xce\x74\x3c\xd1\xe9\x5f\x50\x58\x1e\x6f\x39\x8b\xa4\x25\x48\xdc\
\x86\x4d\x78\xdc\xd8\x2a\x2a\x69\xaf\xfd\x2e\xd1\xbe\x5e\xba\x1a\
\x77\x21\xa7\xd9\x88\x78\xdc\x00\x0c\xdf\x3e\xef\x3b\xd6\x1b\x9d\
\xf9\x00\xf4\x34\xed\x9e\x8a\xe9\x3f\xf0\x26\xc1\xe6\x13\x53\x0d\
\x37\x69\x31\x73\x53\xd5\x88\xaa\xaa\x5f\x4e\x08\xea\x9f\x4d\x4f\
\x96\x97\x47\xb2\x4f\x61\xf2\xfb\xe9\x69\xda\x4d\xd6\xea\x6a\x00\
\xdc\x1b\xd6\x4e\x5d\x8f\xe9\xdd\x0a\x10\x38\x72\x08\x80\xc8\x6d\
\x6b\xef\xa7\xfe\x03\x6f\x4e\x3d\x27\x81\x58\xbe\x13\x4d\x07\x4d\
\x8d\x9d\x12\x2e\x5f\x6e\x73\x45\x82\xfd\x9d\x23\xc7\x3e\x90\x2d\
\xc7\x4f\xce\xe8\xee\x47\xa9\x11\x51\x62\xf4\x5b\xeb\x58\x5a\xf5\
\xcd\x64\x5a\x4e\x7e\xb1\x28\x8b\x4a\x4f\x66\xe6\xac\x96\xf4\x67\
\x97\x11\xb5\x58\x1f\x0b\x54\x07\x02\xb9\x76\xcc\x4e\x17\xd6\xcc\
\xbc\x8b\x5a\x82\x0e\x51\x51\x14\x64\x53\xea\xab\xb3\x17\x7f\x55\
\xd3\xbf\xfd\x22\xc9\xc7\x50\xf3\x90\x24\x33\x3c\x37\x0f\x0c\xa9\
\x49\x0d\xb6\xab\xf1\x38\xa2\x96\x88\xd3\xb7\x6e\x85\x3b\x81\xfc\
\x4e\x66\xe5\x73\x84\x4a\x0a\x1f\x29\x34\x0a\x0c\x97\x2d\xa5\xb4\
\x6a\x2d\xa5\xcb\x96\x1f\x95\x64\xf1\xac\x62\x52\x10\x65\x51\x02\
\xc0\x57\xbd\xf2\x95\xec\x6c\xa7\x67\xce\xf6\x6d\x84\xe6\xba\x1e\
\x09\x34\x01\x5c\x2b\x70\x92\xb7\x66\x2d\x65\xcf\x56\x75\x0f\x6d\
\x78\xf1\x3b\x92\xac\x20\x2b\x29\x88\xa2\x74\xf7\x1b\x2d\xa6\xa4\
\x2c\x9f\x5d\xf4\xa4\x37\xbf\xf1\x35\x42\xc5\xc5\xff\x17\x34\x26\
\xc0\x95\x92\x05\x24\xca\xca\x71\x16\x3f\x35\x38\x71\x33\x56\x06\
\xa0\xaa\x2a\xaa\xaa\x22\xc6\x12\xd1\xa9\xe0\x9e\xb5\x2b\x27\x27\
\xe3\xea\x22\x5b\xce\xdc\xab\xce\x1f\xed\x60\x64\xed\xf3\xa8\x8a\
\xe1\xa1\x1b\x29\x68\x36\xe1\x5f\xbf\x8e\xf2\x1d\x3b\xa9\xd9\xbc\
\xf5\x86\x35\x35\xb5\xd8\xff\xc2\xaa\x31\x80\x64\x32\x49\x32\x99\
\x44\xe8\xba\x76\x1e\xff\xfa\xea\x7b\x36\x98\xf7\xd7\xbf\xff\x26\
\xa9\xc6\xbe\x3f\xea\xed\x16\xbd\x07\xdf\xc1\xe8\xbe\x84\x21\x1a\
\x7d\x20\x30\x29\x08\x84\xad\x56\x46\x16\x17\x13\x71\xe5\xf1\x5c\
\xcd\x46\xdd\x66\xcf\x39\xdc\xb3\x66\xc5\xf7\x66\x8c\x41\xef\x9f\
\xbc\x35\xd0\x3f\x08\x0c\x90\xff\x97\x33\x4f\xc9\x02\x6f\xc7\x27\
\x46\x97\x75\x5d\x6c\x13\x25\xaf\x0f\xb5\xfd\x12\x31\x6f\x1f\x82\
\x1a\x47\x96\x53\x88\xa7\x18\x88\x58\x52\x30\x97\x95\x31\xf7\x6b\
\x2b\xb1\xd8\xd2\x74\x0d\xf1\x82\x62\x4a\xdd\x31\x50\xfd\xfc\x27\
\xf7\xcc\x5f\xd3\xc1\x33\xff\x2d\x24\x64\xd1\x80\x62\x48\x41\x4b\
\xa8\xe8\x9a\x86\x8c\xb4\x40\x54\x84\x1f\x24\x75\xed\x05\x49\x17\
\x1c\x63\x23\x7e\x43\x68\x3c\x22\x29\x52\x06\x19\x59\x96\xe4\xc4\
\x64\x28\x6e\x36\x5b\x7d\x8a\x6c\x39\xae\x26\x13\xfb\x0c\x26\xc3\
\x95\xe8\xcd\x18\x3a\x1a\x46\x45\x26\xa6\x26\x49\x7c\x69\x5c\xfe\
\xf7\x00\x0f\x35\x2d\x1b\x36\x45\x2d\xa4\x00\x00\x00\x00\x49\x45\
\x4e\x44\xae\x42\x60\x82\
\x00\x00\x04\x7e\
\x00\
\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x16\x00\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\
\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0a\x00\
\x00\xf0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\
\x11\x00\x02\x34\x6d\x02\x00\x03\x47\x00\x00\x00\x14\x00\x00\x03\
\x20\x00\x00\x11\x56\x02\x01\x00\x2f\x00\x00\x00\x13\x00\x00\x00\
\x15\x00\x00\x00\x15\x00\x00\x00\x15\x00\x00\x00\x15\x00\x00\x00\
\x15\x00\x00\x00\x15\x00\x00\x00\x16\x00\x00\x00\x09\x05\x19\xa7\
\x9b\x17\x42\xe7\xff\x14\x26\x98\xec\x6b\x65\x82\xd3\x28\x38\xa6\
\xe0\x01\x21\xc3\xf9\x2e\x35\x87\xe1\x8c\x80\x81\xd2\x8b\x7f\x7d\
\xd2\x85\x7a\x7a\xd2\x77\x6e\x6e\xd2\x8a\x7a\x7a\xd2\x88\x77\x77\
\xd2\x8c\x79\x79\xd3\x6b\x5e\x5e\xcd\x02\x03\x03\x43\x03\x13\x8e\
\x84\x23\x5d\xff\xff\x25\x57\xf7\xff\x31\x4d\xde\xff\x22\x54\xff\
\xff\x0d\x4a\xff\xff\x21\x37\xd3\xff\xf3\xdc\xe9\xff\xff\xf4\xf1\
\xff\xfe\xe5\xe5\xff\xdc\xc9\xc9\xff\xff\xea\xea\xff\xff\xe3\xe3\
\xff\xff\xe8\xe8\xff\xcb\xad\xad\xfd\x02\x03\x03\x4e\x0a\x0c\x2c\
\x22\x58\x6c\xd6\xf1\x32\x67\xfb\xff\x28\x61\xff\xff\x1c\x52\xfd\
\xff\x34\x50\xdd\xff\xce\xc4\xe3\xff\xfe\xee\xeb\xff\xff\xea\xea\
\xff\xf2\xde\xde\xff\xd1\xc2\xc2\xff\xff\xe4\xe4\xff\xff\xdd\xdd\
\xff\xff\xe1\xe1\xff\xc2\xa8\xa8\xf6\x02\x03\x03\x4c\x0b\x0a\x00\
\x0a\xbd\xb4\xbe\xe7\x47\x6e\xf7\xff\x2f\x69\xff\xff\x1e\x54\xf4\
\xff\x44\x52\xc4\xff\xfd\xf1\xef\xff\xff\xf4\xf2\xff\xff\xf0\xf0\
\xff\xf4\xe2\xe1\xff\xd3\xc5\xc5\xff\xff\xe9\xe9\xff\xff\xe1\xe1\
\xff\xff\xe6\xe5\xff\xc4\xab\xaa\xf6\x02\x03\x03\x4c\x12\x10\x08\
\x0e\x68\x76\xc3\xe9\x36\x6a\xff\xff\x37\x57\xe6\xff\x36\x61\xed\
\xff\x12\x41\xe1\xff\x8d\x91\xda\xff\xf9\xf8\xf2\xff\xf9\xef\xee\
\xff\xed\xe0\xe0\xff\xce\xc4\xc4\xff\xf9\xe7\xe6\xff\xf9\xdf\xde\
\xff\xf9\xe3\xe2\xff\xbf\xaa\xaa\xf8\x02\x03\x03\x50\x0e\x0d\x0a\
\x10\x47\x64\xcf\xef\x31\x5f\xfa\xff\x5e\x94\xec\xff\x68\xa3\xec\
\xff\x29\x5a\xf1\xff\x20\x3d\xd6\xff\x6f\xa4\xe0\xff\x6a\xb7\xe7\
\xff\x60\xa9\xe2\xff\x4a\x93\xd5\xff\x62\xac\xe7\xff\x5d\xa6\xe6\
\xff\x5a\xa7\xe7\xff\x57\x87\xb6\xff\x07\x05\x04\x56\x0a\x09\x06\
\x10\x64\x9c\xce\xef\x58\x9f\xfa\xff\x5f\xbf\xff\xff\x62\xcb\xff\
\xff\x4f\x91\xe9\xff\x55\x9c\xf2\xff\x54\xb9\xff\xff\x4c\xb7\xff\
\xff\x3f\xaa\xfb\xff\x20\x8c\xeb\xff\x41\xad\xff\xff\x39\xa4\xff\
\xff\x33\xa4\xff\xff\x3e\x85\xc9\xff\x08\x05\x03\x56\x0a\x07\x05\
\x10\x5f\xa5\xcf\xef\x5e\xcc\xff\xff\x5f\xc6\xff\xff\x64\xcb\xff\
\xff\x3b\xa4\xea\xff\x54\xbc\xfb\xff\x57\xbe\xff\xff\x54\xb9\xff\
\xff\x46\xac\xf8\xff\x27\x8e\xe8\xff\x47\xae\xff\xff\x40\xa6\xff\
\xff\x3a\xa5\xff\xff\x43\x87\xc7\xff\x08\x06\x03\x56\x0a\x07\x06\
\x10\x5a\xa4\xd1\xef\x51\xc5\xff\xff\x57\xc5\xff\xff\x5f\xce\xff\
\xff\x2c\x9c\xec\xff\x48\xb6\xfc\xff\x4e\xbd\xff\xff\x4a\xb8\xff\
\xff\x3c\xaa\xfb\xff\x1c\x8b\xec\xff\x3c\xac\xff\xff\x34\xa3\xff\
\xff\x2e\xa2\xff\xff\x3b\x86\xca\xff\x08\x06\x03\x56\x08\x07\x06\
\x0f\x87\xac\xc1\xed\x94\xce\xe9\xff\x96\xcd\xe8\xff\x99\xd0\xe8\
\xff\x76\xac\xd2\xff\x8c\xc2\xe2\xff\x93\xc9\xe8\xff\x90\xc7\xe8\
\xff\x86\xbc\xe2\xff\x6f\xa2\xd1\xff\x8a\xbf\xe6\xff\x86\xb8\xe4\
\xff\x83\xb9\xe5\xff\x74\x94\xb4\xfc\x06\x05\x04\x51\x06\x06\x06\
\x0e\xd3\xce\xcb\xe8\xff\xfc\xf8\xff\xff\xfc\xf8\xff\xff\xfc\xf8\
\xff\xda\xd2\xcc\xff\xf8\xef\xeb\xff\xff\xfd\xf8\xff\xff\xfd\xf8\
\xff\xf9\xf0\xeb\xff\xda\xce\xc7\xff\xff\xf7\xf1\xff\xff\xee\xe7\
\xff\xff\xf1\xea\xff\xca\xb5\xb0\xf6\x03\x03\x03\x4c\x06\x06\x06\
\x0e\xd1\xd1\xd1\xe8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xd2\xd2\xd3\xff\xf3\xf2\xf2\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xf3\xf2\xf2\xff\xd1\xce\xce\xff\xff\xf8\xf8\xff\xff\xef\xef\
\xff\xff\xf2\xf2\xff\xc6\xb5\xb5\xf6\x03\x03\x03\x4c\x00\x00\x00\
\x0e\xd2\xd2\xd2\xe9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xd4\xd4\xd4\xff\xf4\xf3\xf3\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xf4\xf1\xf1\xff\xd3\xce\xce\xff\xff\xf9\xf9\xff\xff\xef\xef\
\xff\xff\xf2\xf2\xff\xc8\xb6\xb6\xf7\x03\x03\x03\x4d\x2d\x2d\x2d\
\x0e\xd4\xd4\xd4\xf4\xff\xff\xff\xff\xfe\xfe\xfe\xff\xff\xff\xff\
\xff\xd4\xd4\xd4\xff\xf1\xf1\xf1\xff\xfd\xfd\xfd\xff\xfe\xfe\xfe\
\xff\xf2\xef\xef\xff\xd3\xce\xce\xff\xfe\xf5\xf5\xff\xfd\xec\xec\
\xff\xfe\xef\xef\xff\xc8\xb8\xb8\xff\x04\x05\x05\x48\x97\x97\x97\
\x06\x61\x61\x61\x67\x4b\x4b\x4b\x74\x4a\x4a\x4a\x71\x4a\x4a\x4a\
\x71\x46\x46\x46\x71\x46\x46\x46\x71\x46\x46\x46\x71\x46\x46\x46\
\x71\x44\x45\x45\x71\x41\x41\x41\x71\x43\x43\x43\x71\x42\x42\x42\
\x71\x42\x42\x42\x73\x3b\x3b\x3b\x69\x03\x03\x03\x0e\xff\xff\x00\
\x00\x00\x01\x00\x00\x00\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\xff\xff\x00\x00\
\x00\x00\x03\xb7\
\x47\
\x49\x46\x38\x39\x61\x2c\x00\x2c\x00\xf7\x00\x00\xff\x00\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xf9\x04\x01\
\x00\x00\x01\x00\x2c\x00\x00\x00\x00\x2c\x00\x2c\x00\x00\x08\x94\
\x00\x03\x08\x1c\x48\xb0\xe0\x40\x00\x08\x13\x22\x34\xc8\xb0\xa1\
\xc3\x83\x0a\x23\x2a\x7c\x48\xd1\xa0\xc4\x8b\x17\x2b\x52\xc4\xc8\
\x31\xa2\x46\x86\x1d\x43\x7a\xfc\x28\x50\xa4\xc9\x84\x24\x4f\xaa\
\x04\xa0\x71\xe5\xca\x8d\x2e\x5f\x36\x8c\x19\x73\x26\x4d\x99\x05\
\x6f\xd6\x24\xa8\x93\x26\xcf\x9e\x2e\x7f\x02\x55\x09\x71\xa8\x4c\
\xa3\x41\x03\x20\x7d\xb9\xb4\xa9\xd3\xa7\x50\xa3\x4a\x9d\x4a\xb5\
\xaa\xd5\xab\x12\x95\x62\x5d\xa8\x75\x6b\xc9\xad\x2c\xbf\x5e\x15\
\x6a\x95\x6c\xd5\x9c\x65\x2d\x52\xb5\x39\xd5\x61\xdb\x87\x51\x5b\
\x3a\x4d\xb9\x94\x64\x51\x9d\x76\xd1\xde\xcc\xcb\xd6\x24\x5f\xb9\
\x18\xf3\x06\x04\x00\x3b\
\x00\x00\x04\xe6\
\xff\
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x00\x00\x64\x00\
\x64\x00\x00\xff\xec\x00\x11\x44\x75\x63\x6b\x79\x00\x01\x00\x04\
\x00\x00\x00\x5a\x00\x00\xff\xee\x00\x0e\x41\x64\x6f\x62\x65\x00\
\x64\xc0\x00\x00\x00\x01\xff\xdb\x00\x84\x00\x01\x01\x01\x01\x01\
\x01\x01\x01\x01\x01\x02\x01\x01\x01\x02\x02\x02\x01\x01\x02\x02\
\x02\x02\x02\x02\x02\x02\x02\x03\x02\x03\x03\x03\x03\x02\x03\x03\
\x04\x04\x04\x04\x04\x03\x05\x05\x05\x05\x05\x05\x07\x07\x07\x07\
\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x01\x01\x01\x01\x02\
\x02\x02\x05\x03\x03\x05\x07\x05\x04\x05\x07\x08\x08\x08\x08\x08\
\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\
\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\
\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\xff\xc0\x00\x11\
\x08\x00\x22\x00\x22\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\
\xc4\x00\x7e\x00\x00\x02\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x09\x0a\x04\x07\x08\x0b\x01\x01\x01\x01\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x10\x00\
\x00\x05\x01\x06\x01\x07\x09\x06\x07\x00\x00\x00\x00\x00\x00\x01\
\x02\x03\x04\x05\x06\x00\x11\x12\x07\x08\x09\x31\x21\x61\x32\x62\
\x13\x33\x34\x41\x22\x52\x53\x14\x15\x35\x37\x38\x42\x23\x63\x16\
\x17\x19\x24\x44\x54\x55\x36\x56\x0a\x11\x01\x01\x01\x01\x01\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x11\x02\x12\xff\
\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\x68\x7d\xd5\
\xf7\x56\xa0\xf6\xe8\xa0\xa3\x22\xe2\xe3\x10\xaf\xb5\x07\x5f\xa0\
\xaa\x94\x05\x02\xa2\xa2\x46\xcd\x1a\x90\x45\x23\x49\x48\x8a\x62\
\x07\x2b\x72\x9c\x30\x90\x85\xb8\xca\x18\x04\x00\x40\x00\xc2\x05\
\x90\x92\x75\xb6\xac\xb7\x10\xdc\x9f\x39\xe0\x32\xfd\x5c\xc6\xa9\
\xf3\x42\xbb\xaf\xdd\x2a\xde\x8d\xca\x48\x17\x46\x8a\x89\x03\x02\
\x27\x72\xa1\x11\x62\xd1\x46\xed\x88\x92\x49\x24\x63\xa8\xaa\xc3\
\xe6\x90\xa6\x39\xcf\x70\x08\xda\x34\xaf\x2a\xb7\x7a\xea\xdb\xaf\
\x3a\x5c\x50\xd5\x0d\x4f\x58\x69\xdb\x37\x69\x80\x41\xda\x91\x2d\
\xe6\xcf\xd9\x2a\x83\x82\x89\x92\x58\x87\x8f\x72\xe1\x9b\xc4\x0f\
\x70\x80\x18\x86\x51\x31\x10\x10\xbe\xf0\x10\x02\x9a\x77\x68\x6d\
\xf6\x64\xb5\x17\x58\x53\xda\x64\xd5\xf9\xd9\x47\x66\xb5\x40\x20\
\xdb\x2d\xb3\x6d\xb2\x49\x31\x67\x3e\xef\xec\x32\x7c\x82\x78\x53\
\x45\xda\x81\xc8\x92\x89\x80\x11\x43\x79\xb8\x4a\x61\x0b\xcc\xd8\
\x68\x3b\x56\x5c\xb7\x37\x0d\xd4\x95\x41\xaa\xfd\x63\xe7\xb6\x72\
\x4e\x3c\x33\x86\x72\x93\x8e\xe3\xe8\xe6\xa2\x7c\x64\x69\x03\x12\
\xa9\xa3\xd8\x22\x9f\x20\x00\x07\x64\x90\x1c\x6e\xe2\x63\x18\x78\
\x8d\xa3\x72\x36\x26\xcb\x7a\x6c\xd6\xae\x67\x67\xec\xee\xa1\xb4\
\x55\x2f\x45\xc5\xd6\x5a\x60\x23\x35\xa7\x5b\x56\xef\x24\x11\x8b\
\x94\x4a\xa9\x6b\x23\x1c\x58\xe1\x42\x2d\xb3\x85\x54\x07\x08\x37\
\x71\x79\xb1\x24\x04\xc2\x06\x05\x0a\x70\x2d\x85\x47\xdf\x1d\xa6\
\xb0\x52\xd6\x4c\x0c\x8e\xb4\xdd\x51\xbf\xa8\xd5\x05\x0f\x0a\xf2\
\x8c\x83\xa1\x16\x93\x5e\x06\x22\x98\x19\x59\x56\xe8\x33\x03\xcc\
\x24\x93\x83\x38\x2b\xb4\x5d\x1d\x61\x30\x98\xa2\x63\x88\x90\xd8\
\x04\xa5\x28\x81\x01\x15\x2b\x23\x05\x29\x1b\x37\x0e\xf5\x48\xd9\
\x78\x77\x08\xba\x8a\x91\x44\xc2\x45\x9b\xb9\x6e\xa0\x2c\x92\x84\
\x30\x72\x81\x88\x62\x80\x80\xf9\x04\x2c\x53\x7e\x7e\xfe\x95\xd7\
\xaa\x43\xe9\xcb\xde\xfd\x22\x7c\xd5\xf5\xfd\x0e\x87\x53\x87\x35\
\x9a\xcf\x92\xb0\x6a\x4f\x2a\xe7\xb2\x3f\x50\x19\xcd\x94\x75\x33\
\x33\xb0\x99\xcb\xea\x96\x5e\x31\xca\x0a\x74\x84\x8d\xde\xa8\x09\
\x29\xce\x55\x13\xc2\x72\x8f\x94\x04\x06\xc6\x9b\x6f\x66\xc4\xeb\
\xe5\x37\x0f\xd3\x1f\xe5\x34\xe6\x14\xa7\x53\xaa\xe3\x4d\x5d\x7b\
\xb8\x1e\x8b\x22\xb5\x04\x9c\x76\x62\xff\x00\xd9\xbe\xec\x13\x01\
\xc5\x84\x55\xe4\xbe\xfb\xac\x4a\x21\x9f\xf4\xfb\x4f\x4f\x9b\x5b\
\x79\x49\x55\x16\x0d\xe1\xa9\x82\x65\x54\x03\x13\xd4\x60\xd9\x61\
\x60\x0f\x7f\x37\xd5\x4b\xfb\x38\xb8\xc3\xd9\xf6\xb8\x07\x16\x0c\
\x58\xae\xe5\xba\xeb\x29\xc9\x6a\xec\x51\xb2\xfd\xab\xf3\xe3\xfd\
\x35\xf7\xd3\x6f\xea\x5f\x0f\xe7\x7f\xb7\xf1\xef\xba\x9c\x6c\x4d\
\x1c\x1d\xf6\x76\x87\xab\xf5\x15\x22\x7d\x5f\xe9\x92\x9e\x19\xfc\
\xd6\x8d\x64\x93\x6c\xdb\xcb\x76\xc1\xfc\x5c\xfb\x36\x29\x76\x68\
\x3f\x64\x4e\x0a\x3b\x45\x32\x82\x6a\x24\x1c\xaa\x10\x0b\x86\xf3\
\x16\xe3\x12\x52\xd5\x68\x77\x71\xed\x4d\xed\x97\x2b\x9c\xd1\x39\
\x47\x4b\x53\xe3\x25\x9a\x29\xc6\xb3\xae\x60\xea\xf8\x69\x15\xd7\
\x62\xee\x08\xcf\x01\xaa\xa9\x11\xab\xc8\xf5\x52\x59\x2f\x6e\x58\
\x04\x8a\x89\x88\x37\xf9\xc4\x11\x00\xb1\x6c\x5a\x1a\xcb\xde\x83\
\x57\x1a\xe6\xc8\xd4\x72\x07\x38\xe0\xe8\xb8\xba\x40\x25\x99\xcc\
\x3e\x96\x81\x86\x93\x65\x28\xed\x76\x20\xaf\x62\x92\x8a\x3c\x93\
\x78\x88\x24\x51\x57\x17\xdd\xa2\x53\x08\x80\x5e\x6b\xaf\x01\x12\
\x34\xd6\xce\xbb\x3b\x66\x3e\xa9\xb3\x22\x90\xcf\xac\xfa\xa3\xdd\
\x52\x1a\x62\xa3\xdd\x23\x22\xdd\xb4\x8a\x2a\xb5\x73\x59\xb9\x6a\
\xa8\x28\x93\x56\xa9\x28\x05\x38\xb3\x13\x94\x05\x75\xae\x02\x98\
\xa0\x25\x28\x88\x88\x88\x0b\x4f\xc5\xee\xe8\xff\x00\xe8\x11\xee\
\x7d\x9b\xba\x27\x87\xf5\x5c\x3a\x1d\x5e\x16\xac\x26\x58\x14\x5b\
\x7f\x4f\xf3\xa4\x7e\x9c\xbb\x83\x7c\x5f\xe6\xaf\x40\x9d\xff\x00\
\x53\xd0\xe6\xba\xd1\xa8\x14\xdb\x58\x7c\xf9\xa3\x7e\x9b\x3c\x71\
\x7e\x65\x78\xdf\x2f\xc3\xff\x00\x1b\xd0\xe7\xb1\x6b\xa1\xb4\x77\
\xc3\xd8\x77\x3d\xca\x5e\x1b\xc3\xf4\x03\xba\xea\x7a\x3c\xd6\xac\
\x26\x58\x3f\xff\xd9\
\x00\x00\x08\xf6\
\x00\
\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x26\x00\x00\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x8e\x04\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\
\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x11\x00\x00\x00\
\x13\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x14\x00\x00\x00\
\x14\x00\x00\x00\x0a\x00\x1d\x01\x4f\x02\x41\x05\xac\x02\x3f\x04\
\xb1\x00\x1b\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x2d\x2d\x2d\x51\x8a\x7f\x7f\xd5\x89\x7d\x7d\
\xd0\x87\x7c\x7c\xcf\x8c\x7e\x7c\xcf\x67\x6d\x78\xd2\x35\x5d\x8b\
\xd0\x44\x61\xa0\xcc\x34\x7f\x59\xe8\x3a\xd7\x5d\xff\x2a\xcf\x4d\
\xff\x01\x3e\x01\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x44\x43\x43\x76\xfe\xed\xed\xff\xff\xf3\xf3\
\xff\xff\xf1\xf1\xff\xff\xf6\xf3\xff\xbc\xd0\xeb\xff\x52\xaf\xc2\
\xff\x37\xa5\x8f\xff\x2c\x9c\x53\xff\x4d\xde\x76\xff\x34\xd1\x5e\
\xff\x02\x5e\x05\xdf\x01\x3b\x03\xae\x00\x1b\x00\x71\x00\x00\x00\
\x00\x00\x00\x00\x00\x42\x41\x41\x71\xfa\xe8\xe8\xff\xff\xee\xee\
\xff\xff\xed\xed\xff\xff\xf2\xef\xff\xbf\xcb\xec\xff\x5e\xbe\x9c\
\xff\x33\xd5\x4d\xff\x3e\xdb\x68\xff\x4b\xe4\x7f\xff\x44\xdc\x74\
\xff\x39\xd8\x67\xff\x2c\xd5\x54\xff\x02\x40\x03\xab\x00\x00\x00\
\x00\x00\x00\x00\x00\x42\x42\x42\x71\xfb\xee\xee\xff\xff\xf4\xf4\
\xff\xff\xf3\xf3\xff\xff\xf8\xf5\xff\xbf\xcf\xed\xff\x6d\xc7\xa5\
\xff\x66\xee\x81\xff\x69\xef\x90\xff\x56\xea\x86\xff\x4b\xe4\x7e\
\xff\x5d\xe4\x86\xff\x4a\xdb\x6f\xff\x03\x3e\x05\xa3\x00\x00\x00\
\x00\x00\x00\x00\x00\x43\x43\x43\x71\xf1\xe9\xe9\xff\xf5\xee\xee\
\xff\xf3\xed\xed\xff\xfd\xf2\xef\xff\xb2\xca\xe3\xff\x4f\xad\xd4\
\xff\x4f\xaf\xc4\xff\x3e\xab\x6f\xff\x56\xea\x7d\xff\x3c\xdd\x65\
\xff\x0b\x5b\x0d\xc2\x09\x24\x0a\x49\x00\x10\x01\x26\x00\x00\x00\
\x00\x00\x00\x00\x00\x43\x44\x44\x71\xe6\xe4\xe4\xff\xe9\xe6\xe6\
\xff\xe7\xe6\xe6\xff\xf1\xeb\xe7\xff\xa5\xc2\xd8\xff\x32\x9b\xf4\
\xff\x43\xa4\xff\xff\x3f\xa9\x88\xff\x67\xe9\x79\xff\x4d\xe3\x70\
\xff\x00\x42\x03\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x45\x46\x46\x71\xfc\xfc\xfc\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7\xd5\xe8\xff\x4b\xb2\xf8\
\xff\x56\xbb\xff\xff\x5a\xbb\xdd\xff\x5b\xbd\xc5\xff\x30\x69\x52\
\xd1\x00\x0a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x46\x46\x46\x71\xfc\xfc\xfc\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb8\xd6\xe8\xff\x4d\xb4\xf8\
\xff\x54\xbb\xff\xff\x53\xba\xff\xff\x56\xbd\xff\xff\x29\x47\x5c\
\xb3\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x47\x47\x47\x71\xfd\xfd\xfd\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xba\xd9\xe8\xff\x56\xbc\xf8\
\xff\x5d\xc4\xff\xff\x5c\xc3\xff\xff\x5e\xc5\xff\xff\x2c\x4a\x5d\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x47\x47\x47\x71\xe7\xe7\xe7\xff\xe8\xe8\xe8\
\xff\xe6\xe6\xe6\xff\xef\xea\xe7\xff\xa9\xc7\xd9\xff\x46\xae\xee\
\xff\x4b\xb3\xf4\xff\x4a\xb2\xf4\xff\x4e\xb6\xfb\xff\x28\x47\x5b\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x49\x49\x49\x71\xf7\xf8\xf8\xff\xfa\xfb\xfb\
\xff\xf8\xf9\xf9\xff\xff\xfe\xfb\xff\xb6\xd5\xe4\xff\x56\xbd\xf5\
\xff\x5c\xc3\xfc\xff\x59\xc0\xfc\xff\x5a\xc2\xff\xff\x2b\x4b\x5d\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x4a\x4a\x4a\x71\xfe\xfe\xfe\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xbb\xda\xe8\xff\x5a\xc1\xf8\
\xff\x61\xc8\xff\xff\x5f\xc5\xff\xff\x60\xc7\xff\xff\x2d\x4c\x5e\
\xb7\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x4b\x4b\x4b\x72\xfe\xfe\xfe\xff\xff\xff\xff\
\xff\xff\xff\xff\xff\xff\xff\xff\xff\xba\xd9\xe8\xff\x54\xbd\xf8\
\xff\x5b\xc4\xff\xff\x5a\xc3\xff\xff\x5d\xc6\xff\xff\x2c\x4c\x5f\
\xb8\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x61\x61\x61\x77\xfa\xfa\xfa\xff\xfe\xfe\xfe\
\xff\xfc\xfc\xfc\xff\xff\xff\xfe\xff\xbd\xd8\xe8\xff\x5e\xbb\xf4\
\xff\x64\xc0\xfb\xff\x63\xc0\xfb\xff\x69\xc5\xff\xff\x33\x4e\x60\
\xb3\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x92\x92\x92\x32\x50\x50\x50\x77\x4a\x4a\x4a\
\x71\x4a\x4a\x4a\x71\x4a\x4a\x4a\x71\x45\x46\x46\x74\x3b\x41\x44\
\x72\x3b\x40\x43\x71\x3a\x3f\x43\x71\x3d\x43\x46\x77\x1e\x20\x20\
\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe7\x00\
\x00\xe0\x03\x00\x00\xe0\x01\x00\x00\xe0\x00\x00\x00\xe0\x00\x00\
\x00\xe0\x03\x00\x00\xe0\x03\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\
\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\
\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xff\xff\x00\x00\x28\x00\x00\
\x00\x10\x00\x00\x00\x20\x00\x00\x00\x01\x00\x20\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x01\x00\x00\x00\x11\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\
\x13\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x00\x00\x1d\x01\
\x00\x02\x41\x05\x00\x02\x3f\x04\x00\x00\x1b\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x2d\x2d\
\x51\x8a\x7f\x7f\xd5\x89\x7d\x7d\xd0\x87\x7c\x7c\xcf\x8c\x7e\x7c\
\xcf\x67\x6d\x78\xd2\x35\x5d\x8b\xd0\x44\x61\xa0\x00\x5f\xc5\xff\
\x00\x5f\xc5\xff\x00\x2a\xcf\x4d\x00\x01\x3e\x01\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x43\x43\
\x76\xfe\xed\xed\xff\xff\xf3\xf3\xff\xff\xf1\xf1\xff\xff\xf6\xf3\
\xff\xbc\xd0\xeb\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x34\xd1\x5e\x00\x02\x5e\x05\x00\x01\x3b\x03\
\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x41\x41\
\x71\xfa\xe8\xe8\xff\xff\xee\xee\xff\xff\xed\xed\xff\xff\xf2\xef\
\xff\xbf\xcb\xec\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x44\xdc\x74\x00\x39\xd8\x67\x00\x2c\xd5\x54\
\x00\x02\x40\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x42\x42\
\x71\xfb\xee\xee\xff\xff\xf4\xf4\xff\xff\xf3\xf3\xff\xff\xf8\xf5\
\xff\xbf\xcf\xed\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x4b\xe4\x7e\x00\x5d\xe4\x86\x00\x4a\xdb\x6f\
\x00\x03\x3e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x43\x43\
\x71\xf1\xe9\xe9\xff\xf5\xee\xee\xff\xf3\xed\xed\xff\xfd\xf2\xef\
\xff\xb2\xca\xe3\xff\x5c\xc1\xf9\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x3c\xdd\x65\x00\x0b\x5b\x0d\x00\x09\x24\x0a\
\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x44\x44\
\x71\xe6\xe4\xe4\xff\xe9\xe6\xe6\xff\xe7\xe6\xe6\xff\xf1\xeb\xe7\
\xff\xa5\xc2\xd8\xff\x32\x9b\xf4\xff\x43\xa4\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x4d\xe3\x70\x00\x00\x42\x03\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x46\x46\
\x71\xfc\xfc\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xb7\xd5\xe8\xff\x51\xb8\xfa\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x30\x69\x52\x00\x00\x0a\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x46\x46\
\x71\xfc\xfc\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xb8\xd6\xe8\xff\x57\xbe\xfc\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x29\x47\x5c\xb3\x00\x00\x00\x0a\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x47\x47\
\x71\xfd\xfd\xfd\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xba\xd9\xe8\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x2c\x4a\x5d\xb7\x00\x00\x00\x0f\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x47\x47\
\x71\xe7\xe7\xe7\xff\xe8\xe8\xe8\xff\xe6\xe6\xe6\xff\xef\xea\xe7\
\xff\xa9\xc7\xd9\xff\x46\xae\xee\xff\x51\xb9\xf7\xff\x4e\xb5\xf6\
\xff\x5a\xc1\xfd\xff\x28\x47\x5b\xb7\x00\x00\x00\x0f\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x49\x49\
\x71\xf7\xf8\xf8\xff\xfa\xfb\xfb\xff\xf8\xf9\xf9\xff\xff\xfe\xfb\
\xff\xb6\xd5\xe4\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x2b\x4b\x5d\xb7\x00\x00\x00\x0f\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x4a\x4a\
\x71\xfe\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xbb\xda\xe8\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x2d\x4c\x5e\xb7\x00\x00\x00\x0f\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x4b\x4b\
\x72\xfe\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xba\xd9\xe8\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x2c\x4c\x5f\xb8\x00\x00\x00\x10\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x61\x61\
\x77\xfa\xfa\xfa\xff\xfe\xfe\xfe\xff\xfc\xfc\xfc\xff\xff\xff\xfe\
\xff\xbd\xd8\xe8\xff\x5f\xc5\xff\xff\x5f\xc5\xff\xff\x5f\xc5\xff\
\xff\x5f\xc5\xff\xff\x33\x4e\x60\xb3\x00\x00\x00\x0c\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x92\x92\
\x32\x50\x50\x50\x77\x4a\x4a\x4a\x71\x4a\x4a\x4a\x71\x4a\x4a\x4a\
\x71\x45\x46\x46\x74\x3b\x41\x44\x72\x3b\x40\x43\x71\x3a\x3f\x43\
\x71\x3d\x43\x46\x77\x1e\x20\x20\x3d\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\xff\xff\x00\x00\xe0\x7f\x00\x00\xe0\x0f\x00\
\x00\xe0\x0f\x00\x00\xe0\x0f\x00\x00\xe0\x0f\x00\x00\xe0\x0f\x00\
\x00\xe0\x0f\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\
\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\x00\xe0\x07\x00\
\x00\xff\xff\x00\x00\
\x00\x00\x09\x86\
\x42\
\x4d\x86\x09\x00\x00\x00\x00\x00\x00\x36\x04\x00\x00\x28\x00\x00\
\x00\x27\x00\x00\x00\x22\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\
\x00\x50\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\
\x00\x00\x00\x00\x00\x8a\x5a\x59\x00\x8c\x5b\x5b\x00\x8e\x5d\x5c\
\x00\x91\x60\x5d\x00\x94\x63\x5f\x00\x97\x66\x61\x00\x9a\x69\x64\
\x00\x9e\x6c\x66\x00\xa1\x70\x68\x00\xa5\x73\x6b\x00\xa8\x76\x6c\
\x00\xa3\x77\x74\x00\xa5\x7a\x76\x00\xae\x7c\x70\x00\xa9\x7d\x77\
\x00\xb2\x7f\x73\x00\x99\x84\x78\x00\x9b\x87\x7b\x00\xae\x81\x79\
\x00\xb2\x85\x7b\x00\xb7\x8a\x7c\x00\xbd\x8f\x7f\x00\xd9\xa1\x75\
\x00\xfc\xc4\x7a\x00\x57\x8d\x9c\x00\x60\x8c\x98\x00\x00\x99\xcc\
\x00\x1a\xa9\xd6\x00\x26\xb3\xd9\x00\x3f\xb3\xd9\x00\x49\xb9\xdc\
\x00\x7b\xcc\xe6\x00\x66\xdc\xef\x00\x6c\xd2\xff\x00\x71\xd7\xff\
\x00\x76\xdc\xff\x00\x73\xe6\xf2\x00\x7b\xe1\xff\x00\x9f\x8c\x80\
\x00\xa0\x8c\x81\x00\xa2\x8e\x83\x00\xa5\x92\x88\x00\xa9\x97\x8d\
\x00\xa4\x98\x8f\x00\xae\xa3\x9a\x00\xbc\xae\xa7\x00\xb0\xb0\xb0\
\x00\xc3\x94\x81\x00\xc9\x99\x83\x00\xcd\x9a\x80\x00\xcf\x9f\x85\
\x00\xd3\xa0\x84\x00\xda\xa7\x87\x00\xdc\xa9\x87\x00\xd5\xa5\x88\
\x00\xdd\xb1\x8e\x00\xe0\xb0\x8d\x00\xe6\xb3\x8f\x00\xf2\xa4\x9e\
\x00\xeb\xb8\x91\x00\xef\xbd\x92\x00\xf2\xbf\x94\x00\xc1\xb5\xae\
\x00\xc8\xbc\xb6\x00\xf3\xbb\xb1\x00\xff\xcc\x99\x00\xd8\xc6\xbb\
\x00\xdb\xca\xbf\x00\xff\xd3\xa7\x00\xff\xd5\xaa\x00\xff\xd6\xac\
\x00\xff\xd7\xaf\x00\xff\xd8\xb0\x00\xff\xda\xb4\x00\xff\xda\xb6\
\x00\xff\xdc\xb8\x00\xff\xdc\xba\x00\xff\xdd\xbc\x00\xff\xde\xbd\
\x00\xff\xdf\xbf\x00\x9c\xc5\xcb\x00\x9e\xd1\xcc\x00\x88\xd9\xec\
\x00\x80\xe5\xff\x00\x85\xea\xff\x00\x89\xef\xff\x00\x9c\xe6\xf2\
\x00\x8f\xf5\xff\x00\x92\xf5\xff\x00\x96\xf6\xff\x00\x9c\xf6\xff\
\x00\x93\xf9\xff\x00\x95\xf9\xfc\x00\x98\xfe\xff\x00\x99\xff\xff\
\x00\xa1\xf7\xff\x00\xa7\xf8\xff\x00\xa3\xff\xff\x00\xae\xf8\xff\
\x00\xad\xff\xff\x00\xbc\xf9\xff\x00\xc0\xc0\xc0\x00\xdd\xcd\xc2\
\x00\xdd\xd6\xd2\x00\xd8\xd8\xd8\x00\xd9\xd9\xd9\x00\xda\xda\xda\
\x00\xdc\xdc\xdc\x00\xdd\xdd\xdd\x00\xdf\xdf\xdf\x00\xff\xce\xc2\
\x00\xe0\xd0\xc5\x00\xe4\xd4\xca\x00\xe6\xd7\xcc\x00\xe9\xdb\xd1\
\x00\xeb\xde\xd3\x00\xff\xe1\xc3\x00\xff\xe3\xc8\x00\xff\xe4\xca\
\x00\xee\xe2\xd8\x00\xf6\xe1\xd0\x00\xff\xe7\xd0\x00\xff\xe8\xd1\
\x00\xf1\xe5\xda\x00\xf7\xea\xdf\x00\xc3\xfa\xff\x00\xc4\xf9\xfc\
\x00\xc2\xff\xff\x00\xcb\xfb\xff\x00\xd2\xfb\xff\x00\xd1\xff\xff\
\x00\xd9\xfc\xff\x00\xdb\xff\xff\x00\xe0\xe0\xe0\x00\xe2\xe2\xe2\
\x00\xe3\xe3\xe3\x00\xe5\xe5\xe5\x00\xe6\xe6\xe6\x00\xe7\xe7\xe7\
\x00\xe9\xe9\xe9\x00\xea\xea\xea\x00\xec\xec\xec\x00\xed\xed\xed\
\x00\xef\xef\xef\x00\xf6\xef\xe7\x00\xfa\xed\xe1\x00\xfc\xef\xe4\
\x00\xff\xf2\xe5\x00\xff\xf6\xeb\x00\xe0\xfd\xff\x00\xe6\xfc\xff\
\x00\xe6\xff\xff\x00\xeb\xff\xff\x00\xed\xfd\xff\x00\xf0\xf0\xf0\
\x00\xf2\xf2\xf2\x00\xf3\xf3\xf3\x00\xf7\xf3\xf0\x00\xf4\xf4\xf4\
\x00\xf6\xf6\xf6\x00\xf7\xf7\xf7\x00\xf9\xf6\xf4\x00\xf8\xf6\xf5\
\x00\xff\xf8\xf0\x00\xff\xfa\xf6\x00\xf2\xfe\xff\x00\xf9\xf9\xf9\
\x00\xfa\xfa\xfa\x00\xfb\xfb\xfb\x00\xfc\xfc\xfc\x00\xfd\xfd\xfd\
\x00\xff\xfd\xfc\x00\xfe\xfe\xfe\x00\xff\xff\xff\x00\x2f\x29\x4b\
\x00\x78\xf0\x4a\x01\x00\x00\x00\x40\x00\x00\x00\x00\xa4\x11\x8d\
\x00\x02\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x2e\x05\x00\
\x00\x38\x12\x8d\x00\x1c\x63\xd4\x77\x43\x3a\x5c\x77\x6f\x72\x6b\
\x5c\x41\x57\x69\x63\x6f\x6e\x73\x5c\x48\x65\x6c\x70\x5c\x70\x61\
\x73\x74\x65\x5f\x74\x2e\x62\x6d\x70\x00\x63\xd4\x77\x48\x07\x05\
\x00\x8d\x16\xf5\x77\xd8\x11\x8d\x00\x00\x00\x00\x00\x99\x25\xf5\
\x77\xb0\x11\x8d\x00\x00\x00\x00\x00\xb3\x16\xf5\x77\xa8\x77\x0a\
\x00\x71\x16\xf5\x77\xe8\x06\x05\x00\xc8\x11\x8d\x00\x00\x00\x00\
\x00\xb3\x16\xf5\x77\xb0\x94\x09\x00\x71\x16\xf5\x77\xd8\x07\x05\
\x00\x8d\x16\xf5\x77\x14\x12\x8d\x00\x04\x00\x00\x00\x08\x01\x00\
\x00\xb8\x01\x3f\x00\x07\x00\x00\x00\x38\x00\x00\x00\x04\x00\x00\
\x00\x20\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\
\x00\xd8\x4a\x70\x01\x00\x00\x37\x00\x07\x00\x00\x00\x38\x00\x00\
\x00\x84\x11\x8d\x00\x02\x24\xf8\x77\x10\x55\xf7\x77\xff\xff\x01\
\x00\x00\x00\x37\x00\xb8\x10\x8d\x00\x00\x00\x37\x00\xac\x11\x8d\
\x00\x02\x24\xf8\x77\xf8\x54\xf7\x77\xff\xff\xff\xff\x8d\x16\xf5\
\x77\x6f\x28\x49\x00\x00\x00\x37\x00\x00\x00\x00\x00\xd8\x4a\x70\
\x01\x00\x00\x00\x00\x04\x12\x8d\x00\x1c\x63\xd4\x77\xd8\x4a\x70\
\x01\x44\x15\x05\xca\x5e\x2d\xc7\x77\x60\xc0\xca\x77\x0c\x00\x00\
\x00\x00\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\xb6\x41\x46\
\x00\x78\xf0\x4a\x01\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\x00\x65\x2e\x2e\
\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\
\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\
\x2e\x2e\x2e\xad\x00\x65\xad\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\
\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\
\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2e\xad\x00\x65\xad\xa9\
\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\
\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\xa9\
\xa9\xa9\x2e\xad\x00\x65\xad\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\
\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\
\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\xa7\x2e\xad\x00\x65\xad\xa6\
\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\
\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\
\xa6\xa6\x2e\xad\x00\x65\xad\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\
\xa0\xa0\xa0\xa0\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\
\x0b\x00\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\x2e\xad\x00\x65\xad\x9f\
\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x9f\x0c\x42\x6e\x6e\
\x6e\x6e\x6e\x6e\x6e\x6e\x6e\x6e\x6e\x01\x9f\x9f\x9f\x9f\x9f\x9f\
\x9f\x9f\x2e\xad\x00\x65\xad\x9e\x9e\x9e\x9e\x9e\x9e\x9e\x9e\x1a\
\x1a\x1a\x1a\x1a\x0e\x43\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\
\x4e\x02\x9e\x9e\x9e\x9e\x9e\x9e\x9e\x9e\x2e\xad\x00\x65\xad\x9c\
\x9c\x9c\x9c\x9c\x9c\x9c\x1a\x1b\x20\x24\x24\x24\x12\x66\x90\x4c\
\x4a\x49\x48\x47\x46\x45\x44\x90\x4e\x03\x9c\x9c\x9c\x9c\x9c\x9c\
\x9c\x9c\x2e\xad\x00\x65\xad\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x1a\x57\
\x21\x21\x21\x21\x13\x6f\x90\x41\x41\x41\x41\x41\x41\x41\x41\x90\
\x4e\x04\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x2e\xad\x00\x65\xad\x9a\
\x9a\x9a\x9a\x9a\x9a\x9a\x1a\x58\x22\x22\x22\x22\x14\x70\x90\x90\
\x90\x90\x90\x90\x90\x90\x90\x90\x4e\x05\x9a\x9a\x9a\x9a\x9a\x9a\
\x9a\x9a\x2e\xad\x00\x65\xad\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x1a\x59\
\x23\x23\x23\x23\x15\x71\x90\x7a\x79\x76\x75\x74\x4f\x4d\x4b\x90\
\x4e\x06\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x8f\x2e\xad\x00\x65\xad\x8e\
\x8e\x8e\x8e\x8e\x8e\x8e\x1a\x5a\x25\x25\x25\x25\x2f\x72\x90\x41\
\x41\x41\x41\x41\x41\x41\x41\x90\x4e\x07\x8e\x8e\x8e\x8e\x8e\x8e\
\x8e\x8e\x2e\xad\x00\x65\xad\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x1a\x5f\
\x53\x53\x53\x53\x30\x73\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\
\x4e\x08\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x8d\x2e\xad\x00\x65\xad\x8c\
\x8c\x8c\x8c\x8c\x8c\x8c\x1a\x60\x54\x54\x54\x54\x32\x77\xa1\x4e\
\x4e\x4e\x4e\x4e\x4e\x4e\x4e\x90\x4e\x09\x8c\x8c\x8c\x8c\x8c\x8c\
\x8c\x8c\x2e\xad\x00\x65\xad\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x1a\x62\
\x55\x55\x55\x55\x36\x7b\xa1\x41\x41\x41\x41\x41\x41\x41\x41\x90\
\x4e\x0a\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x2e\xad\x00\x65\xad\x8a\
\x8a\x8a\x8a\x8a\x8a\x8a\x1a\x64\x5b\x5b\x5b\x5b\x38\x7c\xad\xad\
\xad\xab\xa4\xa3\x94\x93\x78\x40\x3a\x0d\x8a\x8a\x8a\x8a\x8a\x8a\
\x8a\x8a\x2e\xad\x00\x65\xad\x89\x89\x89\x89\x89\x89\x89\x1a\x7d\
\x5d\x5d\x5d\x5d\x39\x91\xad\xad\xad\xad\xab\xa4\xa3\x94\x0f\x0f\
\x0f\x0f\x89\x89\x89\x89\x89\x89\x89\x89\x2e\xad\x00\x65\xad\x88\
\x88\x88\x88\x88\x88\x88\x1a\x80\x5e\x5e\x5e\x5e\x3b\x92\xad\xad\
\xad\xad\xad\xab\xa4\xa3\x0f\x17\x16\x31\x88\x88\x88\x88\x88\x88\
\x88\x88\x2e\xad\x00\x65\xad\x87\x87\x87\x87\x87\x87\x87\x1a\x81\
\x61\x61\x61\x61\x3c\x93\xad\xac\xa9\xa8\xa7\xa6\xa2\x9d\x0f\x37\
\x33\x87\x87\x87\x87\x87\x87\x87\x87\x87\x2e\xad\x00\x65\xad\x86\
\x86\x86\x86\x86\x86\x86\x1a\x83\x63\x63\x63\x63\x3d\x35\x35\x35\
\x35\x35\x35\x35\x35\x35\x0f\x34\x86\x86\x86\x86\x86\x86\x86\x86\
\x86\x86\x2e\xad\x00\x65\xad\x85\x85\x85\x85\x85\x85\x85\x1a\x95\
\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x7f\x52\x1a\
\x85\x85\x85\x85\x85\x85\x85\x85\x85\x85\x2e\xad\x00\x65\xad\x6d\
\x6d\x6d\x6d\x6d\x6d\x6d\x1a\x96\x82\x7e\x56\x56\x56\x56\x56\x56\
\x56\x56\x56\x56\x82\x82\x52\x1a\x6d\x6d\x6d\x6d\x6d\x6d\x6d\x6d\
\x6d\x6d\x2e\xad\x00\x65\xad\x6c\x6c\x6c\x6c\x6c\x6c\x6c\x1a\x99\
\x84\x50\x27\x27\x27\x27\x27\x27\x27\x27\x27\x27\x52\x84\x52\x1a\
\x6c\x6c\x6c\x6c\x6c\x6c\x6c\x6c\x6c\x6c\x2e\xad\x00\x65\xad\x6b\
\x6b\x6b\x6b\x6b\x6b\x6b\x1a\xa5\x97\x2c\x67\x67\x67\x67\x67\x67\
\x67\x67\x67\x27\x1e\x98\x52\x1a\x6b\x6b\x6b\x6b\x6b\x6b\x6b\x6b\
\x6b\x6b\x2e\xad\x00\x65\xad\x6a\x6a\x6a\x6a\x6a\x6a\x6a\x1a\x1c\
\x5c\x51\x2b\x3e\xad\xad\xad\xad\xad\x67\x2a\x19\x1d\x1f\x1a\x1a\
\x6a\x6a\x6a\x6a\x6a\x6a\x6a\x6a\x6a\x6a\x2e\xad\x00\x65\xad\x69\
\x69\x69\x69\x69\x69\x69\x69\x1a\x1a\x1a\x1a\x29\x3f\x3f\x3f\x3f\
\x3f\x2d\x18\x1a\x1a\x1a\x1a\x69\x69\x69\x69\x69\x69\x69\x69\x69\
\x69\x69\x2e\xad\x00\x65\xad\x68\x68\x68\x68\x68\x68\x68\x68\x68\
\x68\x68\x68\x11\x28\x28\x28\x28\x28\x26\x10\x68\x68\x68\x68\x68\
\x68\x68\x68\x68\x68\x68\x68\x68\x68\x68\x2e\xad\x00\x65\xad\x88\
\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\
\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\
\x88\x88\x2e\xad\x00\x65\xad\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\
\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\
\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x9b\x2e\xad\x00\x65\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\x2e\xad\x00\x65\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\
\xad\xad\xad\xad\xad\xad\xad\xad\xad\xad\x2e\xad\x00\x65\x65\x65\
\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\
\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\x65\
\x65\x65\x65\xad\x00\
\x00\x00\x07\x28\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x1d\x00\x00\x00\x1d\x08\x02\x00\x00\x01\xae\xf6\xc0\xce\
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\
\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
\x46\x00\x00\x06\x9e\x49\x44\x41\x54\x78\xda\x62\xfc\xff\xff\xff\
\x8e\x1d\xbb\x18\xc0\x00\x20\x80\x18\xb6\x6f\xdf\xf9\xf7\x1f\x08\
\x74\xb7\x4f\x01\x08\x20\x16\xa0\xc0\xfd\xa7\x0c\x3c\x82\x0c\x6f\
\xae\x2a\x00\x04\x10\x23\x50\xe6\xc8\x4d\xb6\x5f\xff\x7e\x57\x25\
\x5a\x00\x04\x10\x88\x03\x51\xef\xe1\xe1\x06\x10\x40\x8c\x40\xd5\
\x75\x5b\x5e\x08\x1d\x7d\xa6\xe9\xf0\x16\x20\x80\x40\x7a\x7c\xd4\
\x25\x7e\xfd\x12\xfa\xca\x70\x10\x20\x80\x98\xff\x89\x3a\x5d\xb9\
\x71\x3b\x38\x48\xf2\xc9\x93\x27\x00\x01\x04\x32\xfa\xfd\xfb\x4f\
\x40\x04\x36\xff\xdf\xc4\xbe\xd9\x40\x36\x50\x10\x20\x80\x98\x80\
\x5a\xf8\xf9\x79\x3e\x7d\xe3\x39\x7d\x9b\xe1\xde\x6b\x06\x33\x95\
\xd8\xee\xc2\x63\x40\x41\x80\x00\x02\x49\x7c\xff\xcf\xf0\xe6\x07\
\xc3\xb7\x3f\x0c\x6c\x5c\x0c\x42\x2a\x6c\x3f\x7f\xfe\x01\x0a\x02\
\x04\x10\x23\x8a\x93\x61\x00\xe8\x14\x80\x00\x62\x3c\x72\xe4\xd8\
\xe7\xcf\x9f\x91\x45\x79\x79\x79\x01\x02\x88\x01\x62\xed\xd4\xca\
\x8b\x40\x6b\xcf\xec\x7b\xff\xfa\xf5\x3b\x20\x17\x20\x80\x18\x20\
\x2e\xf9\xfd\xef\xdf\x9b\x0f\xff\x0e\x6d\x7a\x91\x1d\x7a\x14\x28\
\x02\x10\x40\x8c\x40\xfc\xe3\x27\xcf\xeb\xaf\x0c\xcf\x3f\xfd\x13\
\x7f\xf3\xe7\xeb\x37\x66\x2d\xbb\xef\x00\x01\x04\x72\xc9\xaf\x7f\
\x0c\xff\x19\x18\x58\x59\x99\x7e\xfe\x62\xf8\xfe\x13\x64\x34\x40\
\x00\x81\xfc\xfa\xe1\x3b\xc3\xb7\xbf\x20\x39\x65\x35\x36\xde\xef\
\x20\x51\x80\x00\x02\x89\xae\xd8\x7c\x00\xa8\xf8\xf7\xff\xdf\x07\
\x5e\x1d\x28\x2f\xaf\x04\x8a\x00\x04\x10\x76\x97\x01\x04\x10\x48\
\x54\x5b\x5b\x87\x81\x08\x70\xf5\xea\x15\x80\x00\x62\x81\x18\xb0\
\xfa\xc0\xcb\x3f\xbf\xff\xfe\xff\xff\xef\x2f\xe3\x9f\x28\x77\x1d\
\x21\x5e\x06\x86\xff\xff\xee\x5d\xfa\xb9\x7e\x07\x27\x13\xd3\xf4\
\xb8\xa4\x48\x16\x16\x90\x4a\x80\x00\x62\x81\xe8\x4b\xf1\x57\x86\
\x30\xfe\x31\x30\x9c\xb8\xfb\xfb\xe2\x53\x56\xb3\xd7\x1f\x79\x98\
\xf9\x5d\x4c\xfe\xfd\xfe\x93\x3e\xb1\x6c\x6f\x71\x9f\x25\x50\x16\
\x20\x80\x58\xd0\xac\xfb\xf7\x8f\xc1\x58\x81\x55\xff\x3f\xc3\x0f\
\x45\xc1\x27\x47\x7e\xfd\xfa\xce\xf0\xeb\x2f\xd3\xdf\x3f\xff\x21\
\xb2\x00\x01\x04\x55\xfd\x9b\x81\xe1\xf1\x53\x86\xdf\xff\x18\xbe\
\x02\x83\xe4\x0f\x50\x05\x83\x86\x02\xc3\xcf\x5f\x4c\x7f\xfe\x30\
\xfe\xfd\xcf\xf8\xf3\xf7\x6f\x88\x32\x80\x00\x82\xaa\xfe\xf1\x8f\
\x41\x50\x0c\xe8\x54\x06\x51\x06\x86\xbf\xff\x19\xfe\xff\x67\xf8\
\xf4\x8b\xa1\x73\x4e\x84\xba\xba\x3a\x50\x96\x4d\x01\x48\xd8\x03\
\x31\x40\x00\xb1\x80\x62\x0c\xe8\x80\xcf\x5f\x98\x60\x8e\x61\x06\
\x93\x40\x6d\xf3\xe6\x2d\x40\x0b\x41\x80\x00\x62\xbc\x7a\xf5\xfa\
\xa3\x47\x8f\x08\x06\x9f\x9c\x9c\x1c\x40\x00\x31\xbe\x78\xf1\x9a\
\x9d\x9d\x9d\xa0\xd2\x9f\x3f\x7f\x02\x04\x10\x13\x9a\x3a\x60\xf2\
\x84\xa3\x9a\xf8\x2d\xcf\x9e\x3d\x85\x88\x03\x95\x01\x04\x10\xc8\
\x73\xed\x8b\xae\xc8\xcb\x08\x03\x63\xe4\xff\x9f\x7f\x5f\xbf\x7c\
\x2c\x4b\xb2\x00\x7a\xf3\xdf\x7f\x26\x35\x13\xfb\x19\xf5\x67\xd3\
\x1b\xfe\x4b\x4b\xcb\x00\x95\x01\x04\x10\x48\xa9\xac\x98\x50\x66\
\xa0\x2a\xc8\x7f\xff\x19\x9e\x7f\x60\xa8\x9c\x71\xba\x3d\xc3\x94\
\x89\x91\xe1\xc3\xe3\x3b\xdc\x82\x92\x53\x2b\xcf\x66\xb7\x33\x00\
\x55\x03\x04\x10\x28\x71\x4e\x59\x75\xe3\x1f\x0c\x3c\x7c\xf3\xef\
\xc8\xab\x7f\x65\x93\x8f\xde\x3e\xf9\xe7\xf2\x81\x3f\xa7\xb6\xff\
\x79\xf1\xfc\x5f\x67\x67\x37\x50\x19\x40\x00\x81\x42\xe9\xcf\xdf\
\x7f\x2f\x5e\x31\x3c\x7f\x09\xca\xae\x6f\x3e\x30\xfc\x7b\xc3\x60\
\x6f\x65\x32\xef\xc4\x91\x9f\xdf\xff\xfc\xfe\xfe\xf7\xdf\x5f\xa0\
\x71\xef\x80\xca\x00\x02\x88\x05\x1c\xb1\xbf\x25\xc4\x40\x6e\x07\
\x86\x3f\x30\x3a\x81\x91\xf7\x8f\x81\xf5\xc8\x61\x20\x0f\x14\xe7\
\x7f\xa1\x11\xcc\x00\x10\x40\x20\xa5\x7f\xff\xfc\x79\xf4\x02\x24\
\x0a\x54\xf4\x19\x18\xc3\xbf\x41\x1a\xfe\xfe\xff\xf3\xe3\x27\xd0\
\xc2\xff\xa0\x04\x05\x06\x00\x01\x04\x36\xf5\xcf\xaf\x3f\x7f\x41\
\xf9\x03\x98\x06\x80\x0c\x90\x2c\xd8\x40\x46\x46\xe6\xbf\x8c\x0c\
\x3f\x7e\x40\x95\x02\x04\x10\x48\xe9\xef\x7f\x7f\x81\xc9\x05\xc4\
\x00\xdb\x0e\x54\x0d\x34\x15\xe8\x45\x09\x75\xe6\xbf\xbf\x19\x3e\
\x7f\x80\x2a\x05\x08\x20\x90\x52\x60\x80\x4a\x4b\x33\x80\x33\x3c\
\xc8\x48\x46\x46\x50\x46\xdb\xf1\xf7\x5f\x47\x4f\x86\x88\x88\x30\
\x50\x5c\x43\x43\x13\x48\x02\x04\x10\x28\xcf\x56\x4e\xd8\x23\x28\
\x28\x00\xd2\x03\xb4\x99\xf1\xff\xdf\x3f\x40\x3d\x7f\xdf\xbc\x79\
\x13\x6c\x23\x64\x6d\x6d\x03\x8f\x48\x80\x00\x22\x21\x0d\x00\x04\
\x10\xcb\xdb\xb7\x6f\x88\x4c\x59\x00\x01\x04\x4a\x84\xc0\xf8\x16\
\x15\x15\x25\xc6\x6c\x62\x2c\x7f\xfd\xfa\x35\x13\x13\x23\x40\x00\
\xb1\x00\xed\xb7\xb0\xb0\xc4\xa5\xae\x2b\xf7\x82\xbc\x92\xd0\xaf\
\xdf\x7f\xd9\x98\xfe\xff\xfc\xff\x9f\x8d\xf1\xff\xef\x3f\xff\xff\
\x30\xfc\x7f\xf5\xf2\x81\x9e\x33\x83\x89\xb9\xa1\xa0\xa0\x20\xb0\
\x2c\x80\xab\x07\x3a\x4e\x46\x46\xe6\xc4\x89\xe3\x00\x01\xc4\x82\
\xdf\x7e\x19\x19\xbe\xb4\x06\x2d\x50\x4e\x85\x16\x1c\x4c\x40\x53\
\x19\x59\x18\xee\x5f\xd6\x9a\x36\xf9\xf9\xc9\xcd\xb7\x15\xcd\x1e\
\xb8\x7a\xda\x8b\x89\x89\x23\x9b\x0e\x04\x00\x01\x04\xcf\xb0\x0c\
\x4b\xf7\x3c\x47\xce\x33\x10\x94\xd9\xa6\x77\xfb\x05\x43\x7e\xfb\
\xee\xb7\x9f\x99\x18\x18\x81\xfe\x63\x60\x66\x01\xd9\xf1\xe3\xd7\
\x1f\x37\x77\xbe\x80\x2c\xb7\x3f\xff\xd2\x66\x35\x3d\x5c\xb2\x60\
\xe5\xd3\xa7\x4f\xfe\xfc\xf9\x03\x37\x0d\x20\x80\x10\x96\xc0\xd3\
\x27\x4a\x59\xf5\x9f\x81\x8b\x95\xc1\xc0\xd1\x72\xc5\x53\x86\x7b\
\x73\x8f\x44\x18\x69\x8a\xf3\xf1\x7d\xfb\xfa\xf7\xef\x2f\x76\x09\
\x7e\xb6\x4f\xaf\xbf\xe8\x88\xfe\x51\x73\x35\x56\x31\x70\x58\xda\
\x7d\xc4\xd0\xf7\x86\xb3\xb3\x0b\x44\x23\x40\x00\x21\x39\x1e\x9b\
\xc1\xc0\xf4\xf6\xea\xe3\xcf\xc7\x97\xae\x08\x89\x08\xf0\x8b\xf2\
\x2f\xbd\xfe\xe0\xcf\xab\x67\x35\xd9\x3e\x42\xbc\x8c\xc0\xb0\xf9\
\xf7\x97\xed\x2f\xb8\x4a\xf8\xfe\x0d\x94\xe8\xce\x9c\x39\x0d\x37\
\x17\x20\x80\x58\x90\x9c\x06\x4a\xea\xaf\xde\x40\x8b\x54\xa0\x4b\
\xff\xfc\x03\xd5\x66\xac\xcc\xec\xbe\xae\x56\xbf\xff\x82\x32\x01\
\x03\x23\x83\x86\x9c\x71\xdf\xcc\x03\x61\xda\x56\xc0\x74\x0b\x2c\
\x35\xff\xfc\x62\x64\x62\x65\x52\x32\x66\x06\x66\x5d\x46\x24\x07\
\x01\x04\x10\x52\x38\xfc\x05\x85\xce\x37\x70\x3e\x02\x9a\xf0\x07\
\x6c\x34\x30\xef\xfd\xfd\x0b\xca\x53\x40\x04\x64\xfc\x67\x02\x89\
\x03\x33\x36\xd4\xd0\x3f\xc0\x5c\xf4\xff\xcf\x2f\x90\x32\xc6\xff\
\x28\xde\x05\x08\x20\x24\xf7\xfe\x01\xe5\x5b\x56\x66\x68\xb0\xfe\
\x87\xd4\x1b\x40\x06\x23\x98\x0d\xce\xf4\xc0\x60\x01\x3a\x19\x58\
\xda\xfd\xfa\x05\xcc\x67\x8c\x7f\x80\x69\x0e\x98\x44\x18\x81\x01\
\x02\xd4\xf2\x97\x09\xc9\x5c\x80\x00\x42\x98\xfb\xfb\xef\x6f\xa0\
\x5b\x3f\xff\x82\x56\x44\xa0\xe0\xfb\xc7\xf0\xe3\x0f\x38\x40\x18\
\x40\x05\xc0\x1f\x90\xc1\x0c\xc0\x02\xe0\xdf\xbf\x3f\x4a\x66\xec\
\x40\xe7\x33\x33\x41\x8b\x11\x60\x91\xf0\xfb\xcf\x3f\xe4\x7c\x05\
\x10\x40\x48\xee\xfd\xf7\x07\xe8\xd9\x9f\xff\xa0\xe1\xf0\x0f\xcc\
\xf8\xc7\x04\x71\x0b\xb4\xee\x00\x3a\x0d\x58\xf5\xfc\xf9\xf7\xaf\
\xb7\x7c\x27\xd3\x7f\x50\x59\xf2\xeb\xff\x3f\x56\x50\x14\x32\x7d\
\xf9\xf6\x01\xd9\x5c\x80\x00\x42\x32\xf7\xef\xff\x8f\x5f\x19\xc0\
\x05\x0a\x38\x25\x40\x5c\xfd\x1f\xc4\x00\x06\xc5\x5f\x50\x04\x80\
\x44\x80\x15\x18\x13\x23\xe3\x7b\xb6\xf5\x9a\x9a\x1a\xea\xea\x1a\
\x60\x85\x90\x08\x03\x96\x05\x5a\x70\xd3\x00\x02\x08\x61\xae\x87\
\x11\xe7\xde\xf5\x4b\x6e\xdc\xb8\x4e\xb0\x10\x60\x65\x60\xb0\xb1\
\xb1\xd1\xd4\xd4\x54\x53\x53\xc7\xa5\x06\x20\x80\x68\x55\xee\x00\
\x04\x18\x00\x34\x65\x4b\x5a\x80\xf0\x5b\x5d\x00\x00\x00\x00\x49\
\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x00\xc6\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x8d\x49\x44\x41\x54\x58\x85\xed\xd7\xdd\x0a\x80\x20\
\x0c\x05\xe0\xcd\x17\x77\x3e\xb9\x5d\x94\x31\xa4\xfc\x99\x34\xbb\
\x38\xbb\x08\x05\xf5\x7c\x68\x81\x31\x5d\x25\x42\x99\x1c\x4b\x84\
\x98\x88\xce\x87\x77\xb8\x46\xb0\x0e\x8f\xd1\xc7\x91\x12\xdf\xed\
\xe0\x1d\x5e\x67\x85\xc6\x38\x97\x02\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\xf8\x0f\x40\xdf\xd3\xbe\x2e\x9d\xb5\xff\x56\xac\x3a\xfb\
\xfe\x0b\x8c\x0b\x64\xd5\x36\xaf\x63\x9a\xf8\xb4\x5b\x56\xc4\xf4\
\xa4\xd6\x51\x59\x10\x53\x9f\x61\x09\xaf\x83\x4a\xdf\xf2\x1e\x0d\
\x03\xde\xc2\x57\x11\x43\x80\x5e\xf8\x0a\xa2\x0b\x18\x0d\xb7\x22\
\x0e\xe1\xa9\x38\x38\x39\xd3\xfb\x7e\x00\x00\x00\x00\x49\x45\x4e\
\x44\xae\x42\x60\x82\
\x00\x00\x04\x46\
\xff\
\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\
\x01\x00\x00\xff\xdb\x00\x84\x00\x09\x06\x06\x08\x06\x05\x09\x08\
\x07\x08\x0a\x09\x09\x0a\x0d\x16\x0e\x0d\x0c\x0c\x0d\x1a\x13\x14\
\x10\x16\x1f\x1c\x21\x20\x1f\x1c\x1e\x1e\x23\x27\x32\x2a\x23\x25\
\x2f\x25\x1e\x1e\x2b\x3b\x2c\x2f\x33\x35\x38\x38\x38\x21\x2a\x3d\
\x41\x3c\x36\x41\x32\x37\x38\x2c\x01\x09\x0a\x0a\x0d\x0b\x0d\x19\
\x0e\x0e\x19\x35\x24\x1e\x24\x35\x35\x35\x35\x35\x35\x35\x35\x35\
\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\x35\
\x35\x35\x35\x35\x35\x35\x35\x35\x35\x34\x35\x35\x35\x35\x35\x35\
\x35\x35\x35\x35\x35\x35\x35\x35\x29\xff\xc0\x00\x11\x08\x00\x30\
\x00\x30\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x19\
\x00\x01\x00\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x06\x03\x05\x07\x04\x00\xff\xc4\x00\x32\x10\x00\x01\x03\x03\
\x02\x04\x02\x09\x04\x03\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\
\x00\x05\x11\x06\x12\x21\x41\x51\x61\x13\x31\x07\x22\x32\x52\x71\
\x81\x91\xa1\xf0\x72\xa2\xc2\xd1\x14\x34\x62\xff\xc4\x00\x19\x01\
\x01\x01\x01\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x05\x04\x06\x00\x01\x03\xff\xc4\x00\x26\x11\x00\x02\x01\x03\x03\
\x03\x04\x03\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x00\x04\
\x11\x12\x21\x41\x05\x31\x51\x13\xa1\xb1\xc1\x22\x71\x91\xff\xda\
\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xdc\x15\x9d\xa7\
\x6e\x37\x63\x86\x6b\x3a\xb7\xcc\xb9\x3a\xe2\x90\xf5\xde\x7b\x17\
\x06\xff\x00\xd8\x64\xa9\x3e\xaa\xb9\x90\x95\x02\x36\xf4\x23\x85\
\x30\xd4\x3a\x81\xbb\x14\x54\xe1\x1e\x34\xa7\xb2\x19\x67\x38\xdc\
\x47\x99\x27\x92\x47\x33\xfd\xd1\x08\xca\x54\xb9\xc6\x74\xc7\x3c\
\x79\x8a\x1b\x7c\x42\x30\x10\x3d\xd4\x0e\x43\xee\x79\x93\x46\x5f\
\x4c\xab\x85\x0d\xf9\x54\x17\x52\x00\x40\x07\x7a\xb8\x66\x6d\xf9\
\xbe\x28\xb8\x46\x7c\x7b\xb2\x22\xf1\x3f\x34\x28\x63\xe9\x57\x3a\
\x7a\xf6\x9b\xe4\x15\xb8\x5b\x0d\x3c\xcb\x8a\x65\xe4\x05\x6e\x01\
\x69\x38\x38\x3c\xc5\x51\xc4\x9a\xcb\xbb\xbc\x27\x50\xe6\xc5\x6d\
\x5e\xd5\x03\xb4\xf4\x3d\x0d\x49\xe8\xd4\x78\x9a\x65\x52\x88\xe3\
\x25\xe5\x38\x7e\x75\xcb\x29\x5e\x46\x21\x8e\x6b\xbb\x67\x66\x6c\
\x13\x4b\x2b\xd4\x0f\x5d\xcc\xbc\xe9\x19\xad\xdf\x6d\x92\x9c\x7a\
\x13\xab\x08\x93\x0d\xe5\x15\x20\x1e\x45\x39\xf6\x73\x8c\x70\xe7\
\x8a\x4f\xa6\xf5\x14\x5d\x4d\x68\x6e\x6c\x42\x46\x78\x2d\xb3\xe6\
\x85\x73\x06\x90\x0e\x0b\x15\xe6\x96\x78\x19\x63\x12\x8d\xd4\xfc\
\xf8\x34\x13\x50\xcf\x54\xbd\x49\x35\xd5\x9f\x61\xd3\x19\xb1\xee\
\xa5\x18\xcf\xd5\x45\x47\xe9\x50\xd9\x2d\x33\x35\x6b\xea\x4b\x2e\
\x2a\x35\xb5\x07\x0b\x75\x3e\x6e\x76\x1d\xbf\x0f\x41\x1e\xba\x86\
\xe5\xb2\xfb\x31\x24\x10\xdc\xad\xcf\xb4\xae\xbb\x80\xdc\x3e\x20\
\x8f\xb8\xad\x07\x47\xb0\xd4\x7d\x2b\x04\x32\x06\x14\xd0\x52\x88\
\xe6\x4f\x9d\x17\x04\x02\x4b\x87\x69\x38\xa0\xe0\x8f\x5c\xcf\xaf\
\x8a\x37\x76\xd3\x12\x74\xfb\x6b\x16\x18\x86\x43\x0f\x32\x10\x51\
\xbf\x0a\x43\x83\x3e\xb7\x70\x41\xfd\xb4\x9b\x49\xdb\x5c\xb4\xe9\
\xb8\xb1\x5e\x4e\xd7\x12\x9c\xa9\x3d\x09\xe3\x5c\x9a\xe5\xf7\x9b\
\xb2\x34\xcc\x77\x56\xd2\xe4\xbe\x96\xca\x90\xac\x1d\xbb\x54\xa3\
\xc4\x7e\x9a\x39\x62\xd4\xb3\x2c\x4d\x49\x88\xfb\x52\x27\x00\x02\
\xa3\xee\x57\x01\x9f\x30\x56\x79\x67\xe2\x7b\x55\x1e\xac\x50\x4c\
\x41\xdb\x3b\xe6\x9f\x83\xa6\x33\xc4\x66\x8f\xb9\x3d\xbe\xea\xd3\
\xd2\xac\xd6\x59\xd1\x6e\x45\x59\x05\xd9\x6e\x21\x2d\xa7\x9f\xaa\
\xa0\xa2\x7e\x83\xee\x28\x6f\xa2\x49\xce\x43\xd4\x8e\xc3\xc9\xf0\
\xa4\x23\x25\x3f\xf4\x39\xd7\x16\xa3\x99\x3a\xf1\x3d\x52\xae\x0b\
\xdc\xe6\x36\xa5\x29\x18\x4b\x69\xe8\x91\xf9\x9a\xb9\xf4\x57\x67\
\x5b\xf7\xa7\xae\x25\x24\x32\xca\x76\xa4\xf5\x3f\x99\xfb\x54\xf1\
\x4e\x6e\x2e\xb2\xbd\x85\x68\x67\xb5\x5b\x2e\x96\x51\xce\x59\x8f\
\xbe\xdf\x42\xb4\x4d\x41\x60\x8d\xa8\x6d\xe6\x3c\x91\xb5\x49\x3b\
\x9b\x71\x3e\xd2\x15\xd4\x55\x5e\x90\xb7\xdd\x6c\x41\x76\xc9\xa9\
\x43\xd1\x11\xc5\x87\xd0\x7c\x87\xba\x45\x27\xaf\x52\x9a\x17\x56\
\xae\x6b\x21\xe9\xae\xad\x7c\xd1\xfd\x4a\xd7\xf9\x57\x2b\x6c\x7e\
\xcf\x3b\x8f\x82\x42\x7f\x9d\x53\xca\x84\x10\x93\x91\x49\xef\x36\
\x71\x75\x6d\xb5\x36\xfa\xe3\x48\x64\x92\xd3\xc8\xf3\x4e\x7c\xc7\
\x71\xc0\x70\xed\x47\xe4\xe9\xfd\x46\x13\x84\x4f\x89\x2f\xbb\xcd\
\x6d\x3f\xb7\x14\x75\xcd\xab\xc8\xe5\x94\x53\x56\xd7\x48\x88\xaa\
\x5b\x18\xfd\xf9\x3e\x28\xa4\x5b\x2b\xfa\x9e\xf8\xb8\x43\x6c\x46\
\x99\x39\x73\x79\x1b\xd6\x3a\x81\xd3\xf3\xb5\x6a\x36\xbb\x5c\x7b\
\x44\x06\xe2\xc4\x46\xd6\xd0\x3e\x64\xf5\x34\x19\x9d\x33\x7f\x5d\
\xf6\x13\xce\x34\xcb\x21\x87\x42\xd4\xf3\x6b\xe5\xcc\x7c\xeb\x44\
\xaa\x6d\x23\x31\xc7\x82\xb8\x3f\x35\xe3\xd4\x67\x13\x48\x0a\xbe\
\x46\x3f\x95\xff\xd9\
\x00\x00\x04\x7e\
\x00\
\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x20\x00\x68\x04\x00\
\x00\x16\x00\x00\x00\x28\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\
\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x0a\x00\
\x00\xf0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\
\x11\x00\x02\x34\x6d\x01\x00\x03\x47\x00\x00\x00\x13\x00\x00\x03\
\x1f\x00\x00\x11\x56\x04\x02\x00\x30\x03\x00\x00\x17\x03\x00\x00\
\x19\x03\x00\x00\x19\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\
\x13\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x09\x05\x19\xa7\
\x9b\x17\x42\xe7\xff\x14\x26\x98\xec\x68\x63\x7f\xd1\x27\x37\xa5\
\xde\x03\x22\xc3\xf9\x27\x32\x88\xe3\x46\x67\x89\xd9\x38\x61\x88\
\xda\x38\x5e\x84\xdb\x6f\x6a\x6c\xd6\x86\x76\x76\xce\x83\x73\x73\
\xcf\x86\x74\x74\xd0\x69\x5c\x5c\xcc\x03\x03\x03\x45\x03\x13\x8e\
\x84\x23\x5d\xff\xff\x25\x57\xf7\xff\x31\x4d\xde\xff\x22\x54\xff\
\xff\x11\x4c\xff\xff\x19\x35\xd4\xff\x4c\xa0\xfe\xff\x38\xa8\xff\
\xff\x37\xa0\xfe\xff\xd0\xc5\xc9\xff\xff\xeb\xea\xff\xff\xe2\xe2\
\xff\xff\xe7\xe7\xff\xce\xaf\xaf\xff\x03\x04\x04\x51\x0b\x0c\x2c\
\x22\x58\x6c\xd6\xf1\x32\x67\xfb\xff\x28\x61\xff\xff\x1e\x53\xfd\
\xff\x32\x4f\xdd\xff\x51\x96\xef\xff\x42\xa8\xff\xff\x3c\xa4\xff\
\xff\x3a\x9d\xf3\xff\xc8\xbf\xc2\xff\xff\xe5\xe4\xff\xff\xdc\xdc\
\xff\xff\xe1\xe1\xff\xc5\xaa\xaa\xf9\x03\x03\x03\x4f\x0c\x0a\x01\
\x0a\xbe\xb4\xbf\xe8\x47\x6d\xf7\xff\x2e\x69\xff\xff\x21\x54\xf5\
\xff\x3c\x4f\xc4\xff\x56\xb0\xfb\xff\x41\xab\xff\xff\x42\xa9\xff\
\xff\x3f\xa2\xf4\xff\xc9\xc1\xc4\xff\xff\xea\xe9\xff\xff\xe1\xe1\
\xff\xff\xe4\xe4\xff\xc6\xad\xad\xf9\x03\x03\x03\x4f\x12\x10\x08\
\x0e\x67\x75\xc3\xe9\x35\x6a\xff\xff\x34\x56\xe6\xff\x32\x5f\xed\
\xff\x16\x43\xe0\xff\x45\x75\xde\xff\x4a\xb0\xfc\xff\x3c\xa7\xfa\
\xff\x3c\xa1\xef\xff\xc3\xc0\xc3\xff\xf7\xe7\xe5\xff\xf3\xde\xde\
\xff\xf7\xe2\xe2\xff\xbf\xae\xae\xf9\x04\x04\x04\x4f\x10\x0e\x0a\
\x0e\x4c\x66\xcf\xea\x29\x5c\xfa\xff\xa9\xb1\xeb\xff\xc0\xc3\xeb\
\xff\x2a\x5a\xf1\xff\x1e\x3d\xd7\xff\x47\x95\xea\xff\x3a\xa5\xf4\
\xff\x3a\x9c\xe9\xff\xbc\xbb\xbe\xff\xea\xde\xdd\xff\xe7\xd6\xd6\
\xff\xea\xda\xda\xff\xb7\xa9\xa9\xf9\x04\x04\x04\x4f\x09\x08\x06\
\x0e\xbd\xbf\xce\xe9\xb7\xc2\xfa\xff\xf8\xf9\xff\xff\xff\xff\xff\
\xff\xa6\xb0\xdf\xff\x4f\x96\xef\xff\x56\xb8\xfe\xff\x50\xb8\xff\
\xff\x4b\xae\xf3\xff\xc9\xc8\xcb\xff\xff\xf7\xf5\xff\xff\xeb\xeb\
\xff\xff\xee\xee\xff\xc9\xb4\xb4\xf9\x03\x04\x04\x4f\x06\x06\x06\
\x0e\xd3\xd2\xcf\xe9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xd0\xd6\xd2\xff\x53\xb8\xf2\xff\x53\xbb\xff\xff\x52\xba\xff\
\xff\x4d\xaf\xf2\xff\xc9\xc8\xcb\xff\xff\xf7\xf5\xff\xff\xeb\xeb\
\xff\xff\xed\xed\xff\xc8\xb5\xb5\xf9\x04\x04\x04\x4f\x06\x06\x06\
\x0e\xd2\xd1\xd1\xe9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xc9\xcf\xd2\xff\x59\xba\xf2\xff\x5d\xc4\xff\xff\x5a\xc2\xff\
\xff\x54\xb5\xf3\xff\xca\xcb\xcd\xff\xff\xfb\xfa\xff\xff\xf0\xf0\
\xff\xff\xf3\xf3\xff\xca\xb8\xb8\xf9\x04\x04\x04\x4f\x07\x07\x07\
\x0e\xc0\xc0\xc0\xe9\xea\xeb\xeb\xff\xe6\xe6\xe6\xff\xea\xe9\xe9\
\xff\xbb\xc1\xc5\xff\x4a\xad\xe9\xff\x4b\xb3\xf4\xff\x49\xb2\xf4\
\xff\x46\xa8\xe9\xff\xbc\xbf\xc2\xff\xea\xe5\xe5\xff\xe6\xde\xde\
\xff\xeb\xe3\xe3\xff\xb9\xb0\xb0\xf9\x04\x04\x04\x4f\x06\x06\x06\
\x0e\xcc\xcc\xcc\xe9\xf9\xf9\xf9\xff\xf8\xf9\xf9\xff\xf9\xf9\xf9\
\xff\xc5\xcc\xce\xff\x59\xbb\xef\xff\x5b\xc4\xfc\xff\x57\xbf\xfc\
\xff\x50\xb2\xef\xff\xc5\xc7\xca\xff\xf9\xf5\xf4\xff\xf8\xe9\xe9\
\xff\xf9\xeb\xeb\xff\xc4\xb4\xb4\xf9\x04\x04\x04\x4f\x07\x07\x07\
\x0e\xd3\xd3\xd3\xe9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xc9\xd0\xd1\xff\x5d\xbf\xf1\xff\x61\xc9\xff\xff\x5d\xc4\xff\
\xff\x55\xb6\xf2\xff\xc9\xca\xce\xff\xff\xfb\xfa\xff\xff\xef\xef\
\xff\xff\xf1\xf1\xff\xca\xb9\xb9\xf9\x04\x04\x04\x4f\x01\x01\x01\
\x0e\xd3\xd3\xd3\xea\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
\xff\xca\xd0\xd3\xff\x57\xbb\xf3\xff\x5b\xc4\xff\xff\x58\xc2\xff\
\xff\x51\xb5\xf4\xff\xca\xcb\xce\xff\xff\xfc\xfb\xff\xff\xf0\xf0\
\xff\xff\xf2\xf2\xff\xcc\xb9\xb9\xfa\x04\x04\x04\x50\x2e\x2e\x2e\
\x0e\xd5\xd5\xd5\xf5\xfd\xfd\xfd\xff\xfc\xfc\xfc\xff\xfd\xfd\xfd\
\xff\xcb\xd1\xd4\xff\x64\xbb\xf0\xff\x67\xc3\xfc\xff\x64\xc2\xfe\
\xff\x5e\xb7\xf2\xff\xcc\xcd\xcf\xff\xfd\xf7\xf6\xff\xfc\xed\xed\
\xff\xfd\xef\xef\xff\xcb\xbb\xbb\xff\x05\x06\x06\x4a\x97\x97\x97\
\x06\x61\x61\x61\x67\x4b\x4b\x4b\x73\x4b\x4b\x4b\x71\x49\x49\x49\
\x70\x48\x48\x48\x78\x45\x47\x48\x7f\x44\x46\x48\x7e\x43\x46\x48\
\x7e\x42\x45\x47\x7f\x44\x44\x44\x78\x44\x45\x44\x70\x44\x43\x43\
\x71\x44\x44\x44\x73\x3d\x3d\x3d\x69\x04\x04\x04\x0e\xff\xff\x00\
\x00\x00\x01\x00\x00\x00\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\x00\x80\x01\x00\
\x00\x80\x01\xef\xc2\x80\x01\x85\x42\x80\x01\x86\x3f\x80\x01\x30\
\xbf\x80\x01\x30\x3f\x80\x01\x86\x3f\xff\xff\x00\x00\
\x00\x00\x01\x45\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x84\x11\x00\xf7\x90\x0e\xf7\
\x93\x0e\xf7\x94\x0e\xf7\x97\x0e\xf7\x99\x0e\xf7\x9e\x0e\xf7\xa0\
\x0e\xf7\xa2\x0d\xf7\xb2\x0d\xf8\xb8\x0d\xf8\xc4\x0d\xf8\xcd\x0d\
\xf8\xce\x0d\xf8\xd3\x0d\xf8\xf5\xee\xf8\xf6\xf0\xf9\xf8\xf5\xf5\
\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\
\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\
\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\x21\xfe\x15\x43\
\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\
\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x1f\x00\x2c\x00\x00\
\x00\x00\x28\x00\x27\x00\x00\x05\xa9\xe0\x27\x8e\x64\x69\x9e\x68\
\xaa\x7e\x45\xd2\x3c\x4f\x93\x14\x6b\x6d\x2a\x50\xae\xef\xb9\x62\
\xab\x01\x9e\x70\x18\xf8\x95\x16\xc3\x24\x6f\x61\xfc\x00\x94\x50\
\x1e\xc0\x36\x88\x5a\x75\x83\x95\xe0\xca\x85\x08\x54\xdd\x6e\x2a\
\x1c\x3e\x1d\xc8\xdd\x83\x09\x5d\x26\x19\xd8\x5d\x03\x09\xde\x16\
\xd1\xc5\x22\xc2\x9d\x4b\x10\x21\xf6\x57\x08\x22\x0c\x80\x56\x0c\
\x22\x0e\x85\x51\x0e\x88\x8a\x50\x8c\x1f\x84\x8e\x49\x87\x1f\x7f\
\x93\x43\x82\x1f\x7a\x98\x42\x7d\x76\x9d\x3c\x73\xa1\x3b\x6e\xa4\
\x39\x72\xa3\xa4\x26\x67\xa1\x6a\x6b\xa1\x63\x98\x2a\x5b\x8e\x5f\
\x2a\x55\x85\x59\x35\x4f\x7b\x53\x46\x48\x6c\x4c\x4d\x22\x41\x64\
\x45\xc4\x25\x38\x51\x3e\xc9\x2a\x2d\x2f\x31\x33\xce\xd4\xd5\xd6\
\x3f\x21\x00\x3b\
\x00\x00\x01\x45\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x84\x11\x00\x40\x62\xf0\x41\
\x62\xef\x3f\x62\xf5\xf7\x90\x0e\xf7\x93\x0e\xf7\x94\x0e\xf7\x97\
\x0e\xf7\x99\x0e\xf7\x9e\x0e\xf7\xa0\x0e\xf7\xa2\x0d\xf7\xb2\x0d\
\xf8\xb8\x0d\xf8\xc4\x0d\xf8\xcd\x0d\xf8\xce\x0d\xf8\xd3\x0d\xf5\
\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\
\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\
\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\x21\xfe\x15\x43\
\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\
\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x1f\x00\x2c\x00\x00\
\x00\x00\x28\x00\x27\x00\x00\x05\xa9\xe0\x27\x8e\x64\x69\x9e\x68\
\xaa\x7e\x08\x03\x01\x00\xc4\x20\x6b\x6d\x36\x42\xae\xef\x79\x63\
\xab\x04\x9e\x70\x48\xf8\x95\x1c\xc3\x24\xcf\x61\xfc\x0c\x94\x50\
\xde\xc0\x66\x88\x5a\x75\x86\x55\xe1\xca\x15\x14\x54\xdd\x6e\x2a\
\x1c\x3e\x29\xc8\x5d\x85\x09\x5d\x26\x25\xd8\xdd\x04\x09\xde\x16\
\xd1\xc5\xa2\xc3\x9d\x7b\x10\x2d\xf6\x57\x0b\x22\x0f\x80\x56\x0f\
\x22\x01\x85\x51\x01\x88\x8a\x50\x8c\x1f\x84\x8e\x49\x87\x1f\x7f\
\x93\x43\x82\x1f\x7a\x98\x42\x7d\x76\x9d\x3c\x73\xa1\x3b\x6e\xa4\
\x39\x72\xa3\xa4\x26\x67\xa1\x6a\x6b\xa1\x63\x98\x2a\x5b\x8e\x5f\
\x2a\x55\x85\x59\x35\x4f\x7b\x53\x46\x48\x6c\x4c\x4d\x22\x41\x64\
\x45\xc4\x25\x38\x51\x3e\xc9\x2a\x2d\x2f\x31\x33\xce\xd4\xd5\xd6\
\x3f\x21\x00\x3b\
\x00\x00\x08\x7f\
\x47\
\x49\x46\x38\x39\x61\x2b\x00\x30\x00\x87\x00\x00\x3e\x2e\x55\xaf\
\x91\x4e\x9c\x2d\x3d\x7c\x5c\x32\x6b\x2d\x39\xdd\xca\x47\x92\x6b\
\x30\x4c\x44\x7e\x93\x42\x4e\xd9\xce\x9a\x5f\x43\x37\xbe\x97\x9e\
\x6b\x4b\x35\xf3\xe9\xb4\xcf\x26\x3d\xce\xb3\x42\x56\x58\x9e\xbe\
\x44\x55\x86\x2d\x3d\x50\x4f\xa2\x9a\x7b\x3b\x4c\x41\x5e\x5c\x2c\
\x38\xbd\x34\x45\xcd\xbd\x85\xe3\xcb\x67\xd4\xd2\xdf\xf3\xd6\x3a\
\x56\x51\x88\x77\x73\xb0\xd4\x44\x50\xdb\xbd\x47\x6a\x3a\x39\x8c\
\x6c\x33\xe7\xe8\xe0\x69\x67\xad\xc3\x7c\x80\x5d\x52\x69\xd2\x34\
\x48\xdd\xd8\xdb\x82\x40\x46\x64\x44\x55\x5a\x4b\x7e\xb5\xb2\xc3\
\xc1\x55\x5c\x9e\x8b\x92\x64\x3f\x35\x44\x3a\x60\xc6\xa9\x42\xa9\
\x2c\x3c\x56\x59\xb1\x87\x3a\x45\xf6\xfb\xfa\x82\x5e\x36\x79\x2d\
\x39\xef\xd8\x3e\xbd\x5e\x65\x74\x52\x2e\xd7\xc0\x51\xa0\x87\x6a\
\xee\xd9\xdc\xea\xcd\x49\x4f\x4e\x92\xac\x44\x53\x64\x50\x49\xd2\
\xb4\x40\xab\x8a\x3a\xcd\x34\x48\x5d\x43\x47\xcc\x45\x52\x65\x2d\
\x39\xf3\xd5\x44\xf1\xe9\xe9\xd5\x25\x40\x93\x3d\x49\x6c\x37\x37\
\x4e\x49\x80\x55\x54\xa9\x4d\x43\x73\xdb\xc2\x57\xd4\xc5\x9a\x87\
\x66\x2d\xb9\xa0\x51\xab\x86\x3b\xbc\x3d\x4f\x54\x53\x99\xd3\x49\
\x52\x59\x46\x72\xb2\x69\x6b\x55\x55\xb4\x4a\x38\x50\xb8\x95\x3d\
\xe9\xdd\xa0\xc1\x95\x9c\x6f\x43\x57\x62\x5a\x9d\x83\x36\x41\x54\
\x33\x42\xdc\xc2\x46\x7d\x39\x43\xd2\x3b\x4b\xdb\xdc\xe9\x46\x3c\
\x6e\x61\x5b\xb2\x85\x3b\x4c\xee\xcd\x54\xb5\x52\x5f\x4b\x2c\x49\
\xce\xb8\x47\xbd\x4a\x53\x9e\x84\x4a\xde\xc4\x63\xe4\xcc\xcf\xf4\
\xd9\x36\x6d\x3b\x49\x77\x68\x6d\x5c\x4a\x5c\xd0\xad\x44\x5a\x59\
\xb3\x73\x57\x48\xeb\xe4\xec\xb2\x48\x53\xd5\xba\x5a\x65\x4c\x49\
\xf6\xf3\xe8\x68\x30\x42\xd5\xba\xb8\x85\x65\x3f\xe4\xcb\x4b\xac\
\xa6\xcb\x8b\x83\x92\xec\xdb\x74\xc1\x8a\x8a\xc7\xc7\xd8\xd4\xa5\
\xaa\x8e\x56\x60\xc5\x6c\x78\x52\x3d\x60\xb3\x3d\x4c\xf0\xe6\xb2\
\xf4\xec\xcd\xb9\xa5\xa8\xa5\x32\x4a\xd8\xc9\x8d\xa4\x42\x54\xd2\
\x90\x96\xe1\xc3\xc3\x84\x7d\xb1\x88\x68\x4b\xef\xf0\xf4\x93\x8d\
\xb5\xe5\xdb\xc3\x97\x74\x37\xbb\x9b\x41\xde\xd2\xaa\x67\x4a\x30\
\x6c\x69\xa6\xe4\xe1\xd6\xce\x50\x60\xa5\x3b\x48\xe6\xd4\xd4\xd3\
\x8c\x92\xcb\x75\x7e\x42\x33\x52\x99\x33\x43\xcc\x2c\x3f\xd5\xc2\
\x7f\xb5\x34\x46\xbd\x61\x69\xf3\xd9\x44\xd3\x2c\x42\x55\x4a\x75\
\xe7\xe7\xf0\xd7\xc3\xc5\x76\x5a\x41\xca\xb4\x54\x99\x78\x48\xbd\
\x36\x4d\x7f\x7c\xb5\x8f\x72\x3c\xed\xec\xf0\xc8\xad\x50\x7c\x35\
\x44\xed\xd2\x47\xd4\xbb\x48\xa7\x8a\x4b\xcc\x3b\x4d\xcd\x4b\x56\
\x64\x32\x41\x6c\x49\x42\x64\x61\xa0\x4e\x34\x45\xdb\xc7\x7f\xf5\
\xf4\xf5\xf5\xf0\xd2\x5d\x4d\x69\xeb\xd4\x5e\x94\x6b\x41\x5b\x4f\
\x90\x65\x39\x46\xc3\x9a\x9c\xa5\x4c\x52\xb6\x95\x3b\x71\x4d\x31\
\x53\x43\x5f\x59\x51\x8a\xda\x45\x53\xe1\xbd\x4a\x89\x41\x4d\x7a\
\x57\x30\xb4\x44\x51\x53\x4b\x82\x8c\x34\x44\x5e\x32\x41\xe2\xc5\
\x44\xd9\x3b\x4e\xf8\xd8\x38\x63\x4c\x55\xf1\xe4\xe4\x72\x6c\xa1\
\x73\x2b\x37\x52\x45\x7c\x99\x40\x4c\x62\x45\x35\x5c\x5a\xa0\xc4\
\x43\x51\xa2\x7f\x33\xc2\x33\x43\xef\xea\xdf\x65\x52\x67\xe3\xde\
\xd2\xb9\xb4\xcf\x4b\x3d\x61\xcc\xab\x40\xb4\x2d\x45\x8a\x3a\x41\
\xff\xff\xfe\x8c\x5b\x37\x54\x4b\x94\x63\x43\x48\x9e\x3b\x4b\x72\
\x31\x38\x59\x56\xa9\x54\x46\x71\x8b\x63\x30\xc4\x3b\x4e\x5a\x55\
\x96\xd9\x48\x54\x59\x56\xb4\x4a\x3e\x6d\x8c\x3e\x4f\xc7\x4a\x51\
\xa4\x86\x43\x72\x3b\x45\x73\x35\x44\xdc\xbf\xc4\x21\xf9\x04\x00\
\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x2b\x00\x30\x00\x00\x08\xfe\
\x00\xd9\x09\x1c\x48\xb0\xa0\xc1\x83\x08\x13\x2a\x5c\xc8\xb0\xa1\
\xc3\x81\xda\x82\x3d\x9c\x88\x10\x4f\x28\x4f\xa2\x40\x51\xdc\xc8\
\x4e\x5b\xa8\x5d\x56\x76\x79\xf0\x14\x4a\x22\xc7\x85\x34\x82\x2d\
\x60\xb1\xcb\x19\x48\x0f\xce\xac\xe0\xf8\x77\xf2\x20\x0d\x1a\x92\
\x44\xa9\x01\x01\x2d\x9c\x15\x0f\x1e\xac\x84\xfc\xd1\xaf\x0b\x9e\
\x9a\x04\xe1\x90\x10\xe9\x21\x1c\x9a\x63\x3f\x8a\x58\x29\x22\x0d\
\x8c\x92\x08\x32\xfd\x98\xe4\xa8\x74\x1f\xd0\xaf\x45\x3e\x55\xd3\
\xf7\x63\xdd\x8c\x70\x64\xbe\xee\x22\x84\x64\x23\xa8\x05\xbc\xbc\
\x15\x49\x0b\xd4\x19\x50\x48\x61\xc2\x20\x70\x66\xd7\xae\x50\x67\
\xa8\x5a\xd1\x70\x08\x0a\xd5\x10\x13\xea\x08\xd8\x42\xeb\x81\x8c\
\x33\x45\x60\xfc\xfd\xf8\x64\x44\x9f\x57\x2b\x7c\x63\xfe\xf0\xd2\
\x68\x2b\x42\x1e\xa2\xd4\x99\xd0\x35\xba\x94\x04\x5e\xd2\xa8\x46\
\x56\x54\xc4\x2e\x95\x19\xfe\xa4\xc1\xf4\x20\xcd\x96\x2d\xd6\x58\
\xe0\x24\x6c\xf1\x43\x55\x29\x55\xbe\x87\x5c\x2b\x45\xca\x88\x1c\
\x02\x9f\xea\xcd\x9e\x0d\xc9\x1f\x82\x1f\x63\xe2\x7d\x82\x79\xcf\
\x19\x0b\x43\x9e\x05\xb2\x7a\x51\x0d\x52\x29\x07\x0e\x7e\xfe\x0f\
\x09\x47\x8d\xc0\x31\x7f\x8a\xbe\x5e\xe3\x0b\x14\x5e\x18\x22\xd4\
\x74\x51\xf7\x70\xcf\xc3\x2e\x12\x47\x09\x96\xa9\xe2\x64\x8d\xbe\
\x71\xe0\x5d\x40\x4a\x3c\x8e\x8c\x33\x0e\x35\x46\x90\x42\x17\x50\
\xf5\x94\x47\x0d\x1a\x63\xb4\xd1\x97\x33\xd5\xc5\x74\xc8\x09\x04\
\xb1\xd2\x44\x13\xee\x8c\x22\x87\x22\xa4\x70\x43\x4d\x29\x24\xaa\
\x62\xc2\x27\x04\xc4\x33\xce\x35\xba\x90\x42\x00\x35\x45\x00\xf5\
\x83\x2d\x3f\x60\x36\x5b\x1e\x63\x84\xa0\x09\x41\xb4\x80\x93\x45\
\x16\x4d\xe4\x93\xcd\x31\x17\x90\x68\xc2\x70\x26\xa8\x72\x01\x35\
\x16\xd8\x62\x04\x35\x54\x98\x00\x53\x5a\xbb\xe8\x03\xcd\x2e\xf7\
\xb4\xb1\x0e\x3d\x41\x6c\xd0\x00\x41\x95\x6c\x08\xa4\x0f\x74\xfc\
\x02\x46\x29\x49\x94\x62\x82\x09\x64\x98\x30\x84\x23\x61\xa4\xd0\
\x4f\x8c\xd7\xac\x97\x99\x07\xc9\xc8\x01\x4d\x3b\xe9\x6c\xe0\xe7\
\x97\x03\x05\x73\x46\x13\x63\x1a\xe3\x8e\x16\xfe\x9c\xf2\x1d\x89\
\xea\xd8\x60\x83\x3a\x8e\x28\x86\x55\x66\x76\x45\x00\xcd\x3b\xae\
\xdc\xe2\xe7\x06\xb7\x30\x52\x10\x38\x32\xfc\x58\x45\x15\x1b\x56\
\x60\x01\x3c\xa5\x9c\x22\x01\x37\x31\xfc\xa6\xca\x38\xfe\x4e\xfe\
\x40\x57\x11\x4a\x80\x40\x81\x1e\x7f\xa4\xb2\xe9\x06\xc2\x10\x64\
\xce\x28\x4c\x40\x00\x64\x33\x32\x34\x21\x0f\x13\xbf\x78\x61\x84\
\x00\x68\x02\xe7\xec\x27\xbc\xa0\x11\x8e\x37\x20\x14\x23\x46\x1c\
\xb7\xcc\x72\xc4\xa6\x47\xf4\x3a\x10\x1e\xf6\xbc\xf0\xc2\x86\xc4\
\xe2\x23\x83\x0c\x1c\x30\xe3\x0f\x69\xce\xb6\x1b\x4b\x35\xd9\xfc\
\xf1\xc1\xa6\x3d\x50\xb0\x41\x1c\x9c\xe6\x22\x02\x8f\xf2\x34\x71\
\x00\x00\xf3\x18\x93\x85\x1d\x04\x73\xb0\xca\x3c\x16\x48\x93\xa4\
\xb3\x26\x28\x62\x8b\x02\xef\x00\x72\xaf\x9f\xd6\xf0\xe3\x67\x26\
\x39\xe4\x62\x0e\x41\xc1\xf8\x78\xc6\x34\x00\x74\xf3\x23\xc1\xcd\
\x4c\x23\x8f\x3b\x63\x91\x01\x5c\x3d\xeb\xb8\xc0\x4f\x1a\x03\xf4\
\x80\x0d\xbe\x71\x88\xe1\x46\x26\x03\x60\x22\x46\xa7\x1c\x83\xd3\
\x04\x3e\x1f\x57\x70\x00\xa1\x32\xd8\x33\xcd\xb9\xf2\x24\x12\x9b\
\x12\x4b\x50\x60\x4d\x1c\x71\x0c\xa0\x29\xbe\x1b\x04\x41\xc4\x00\
\xe9\x6c\x7b\x0b\x1f\x60\x82\x43\x70\x13\x55\x1c\x70\x80\x19\x13\
\x64\xc1\xc1\xd1\x04\xdb\x33\x4f\x0a\x7f\x3c\x03\x35\x36\xa9\xe4\
\x70\x04\x36\x7e\xc2\xe0\xca\x1d\x9a\x1e\x71\x44\xfe\x1a\x5c\x13\
\xb4\x0d\x04\x32\xd8\x71\x76\x16\xee\x38\xe1\x4e\xc9\x04\x13\x0c\
\x0e\x1d\x05\x40\x0d\x75\xdc\xdb\x06\xf1\x07\x3d\x52\x68\xeb\xe7\
\x11\xc4\xf4\x2d\x10\x0d\xcc\x30\x21\x4f\x16\xf6\x1c\x00\xa4\x3c\
\xab\x30\x33\x4f\xe2\x76\xd8\xb3\xc7\x2d\x33\x3b\x9e\x83\x1e\x21\
\x44\x93\xf5\x07\xf6\x6e\x9a\xc1\x60\x04\xf9\x32\x4f\x3e\xf2\x84\
\xfd\x23\x90\x25\x04\x9c\x38\x38\xab\x3b\x1e\x07\x20\xdf\x6c\xb2\
\x85\xa6\x1b\xe0\xf2\xb2\x9f\xb5\xec\x60\x90\x2f\x67\xb8\x63\xc6\
\x2a\xa2\x67\x61\x2e\x38\xcc\xa0\xe3\xce\xb9\xe0\x00\x71\x0b\xd5\
\xca\x2c\xb3\xc7\x2b\x9b\xc6\x11\x44\x2e\x47\x58\x23\x4e\x26\x18\
\x18\xc4\x49\xa8\x55\xe4\x33\x4d\xd9\x03\x1b\xdd\x84\x13\xdd\xc8\
\x00\x41\x36\xa9\x88\x43\x3a\x6a\x10\x02\x3d\x30\x40\x62\x13\x4b\
\x47\x2e\xb6\x30\x05\x6b\x6c\xc0\x14\xb8\x1b\x48\x07\x42\x05\xa4\
\x79\x1c\x00\x1f\x18\x34\x5a\x16\xce\xc0\x81\x7c\xa8\x00\x08\xaf\
\x08\x41\x0d\x1e\x00\xb5\x03\xce\xec\x62\x7f\xe8\xd2\x06\x8e\x60\
\x0a\x83\xc8\xe2\x0c\x59\x90\x81\x3c\xe6\xe1\x03\x33\x7c\xae\x0a\
\x22\x0b\x9c\x3c\xd0\x41\x87\x6f\x64\x42\x57\xfe\x71\x48\xc5\x26\
\x10\xb8\x81\x4c\x30\x60\x5e\x97\x7b\x44\x04\x05\x72\x0e\xaf\xc9\
\x43\x1e\xd3\x00\x5b\x3e\x0e\x37\x0d\xed\xd9\x21\x0b\x8b\x63\x83\
\xf1\x6e\xb1\x0c\x4d\x05\xc1\x00\x75\x70\x03\x12\xe3\x70\x84\x04\
\x1c\x44\x03\x9c\x90\xc7\x19\xe6\x41\xa8\x33\x38\x81\x19\xd3\xc0\
\xc7\xc0\xec\xd0\x84\x6c\x5c\xeb\x6d\xb7\x38\xa2\x01\x84\xb0\x2d\
\xa7\xe9\xea\x08\x05\xd8\xd8\x41\x68\x61\x89\x2f\x5c\xe1\x73\x81\
\x9b\x06\x33\xec\x31\x30\x7c\xc8\xc3\x8e\x8e\x3b\x82\x18\x18\x10\
\x85\x31\x62\xa2\x07\xd8\x32\x45\x27\xd8\xb1\x44\x8e\xad\xa0\x04\
\x72\xd4\x5e\xd2\xa6\xe1\x0e\x39\xd6\xb1\x71\xf8\x52\x46\x34\x7a\
\xc1\xbc\x7b\x85\xe0\x16\x6f\xd0\x04\x1f\x3a\x39\x48\x5f\x10\xca\
\x91\x15\x38\xd9\xd0\xaa\x90\x8d\xc6\xa5\x83\x1e\xfc\x20\x86\xdc\
\xb8\x45\x09\x0c\x90\x83\x96\x09\xd1\xc0\x36\x60\xd8\x04\x66\xc8\
\x51\x1e\x07\x68\x46\x36\x42\x48\x0f\x31\x70\x2a\x07\x37\x78\xdc\
\x1b\x04\x49\x11\x42\xca\xb0\x02\xe6\x32\x96\x22\xbf\x01\x83\x23\
\xe0\xeb\x16\xd1\xd0\xd5\x2d\x80\x41\x8e\x9a\xd0\xe0\x1c\x5f\x60\
\x86\x3c\xf0\x71\xc5\x33\xd0\xa1\x16\xd9\x61\xf4\x13\x20\x06\x90\
\x8a\x37\x5c\x82\x93\x48\x61\xc7\x09\x04\x71\x06\x3b\xd0\x13\x1f\
\xc3\xd0\x22\xcd\x9e\xe0\x0a\x28\xb4\x25\xa0\x03\xa1\x41\x21\x46\
\x90\xb8\x61\xe0\x02\x5f\xd8\x38\x02\x17\x68\x01\xd1\x83\xe0\x61\
\x12\x67\x38\x43\x09\xf4\x10\xc4\x41\x78\xaa\xa3\x08\xa1\x41\x20\
\xbe\x50\x0e\x31\x10\x63\x11\xc8\x44\xe9\xe6\xd8\xa1\x81\x39\x40\
\x41\x73\x32\x4d\xc8\x4d\x72\xca\x53\x84\x04\x04\x00\x3b\
\x00\x00\x23\xc8\
\x47\
\x49\x46\x38\x39\x61\x31\x00\x24\x00\x84\x00\x00\xb4\xba\xb4\xdc\
\xde\xd4\xc4\xce\xc4\xec\xee\xe4\xd4\xd6\xcc\xbc\xc6\xbc\xe4\xe6\
\xdc\xf4\xf6\xec\xcc\xd6\xcc\xbc\xc2\xb4\xcc\xce\xc4\xf4\xf2\xe4\
\xdc\xda\xd4\xc4\xc6\xbc\xec\xea\xdc\xe4\xe2\xdc\xd4\xda\xcc\xfc\
\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xb4\xbe\xb4\xdc\xe2\xd4\xec\xf2\
\xe4\xe4\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\xd4\xda\xd4\
\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x00\x00\x00\x21\xff\x0b\x4e\
\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\
\xf9\x04\x08\x06\x00\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\
\x00\x05\xfe\x20\x27\x8e\x64\x69\x9e\xe2\xa0\x1d\x4b\x60\x70\xc7\
\x70\xa0\x74\x8d\x1e\xda\xb0\x48\x4a\x15\x08\x92\x47\x40\x11\xe0\
\x2c\x2c\xb6\x24\xed\xa2\xe8\x40\x04\x02\x45\x74\x2a\xe8\x04\x08\
\x04\x8d\x72\x0b\xbb\x04\x36\x1e\xa9\x42\x2c\xe6\x49\x25\x82\xca\
\x40\x46\x9a\xc1\x44\xee\x38\x7c\x0e\xeb\x84\xa3\x64\xa8\x74\xda\
\x19\xf7\x3b\x03\x5c\x34\x07\x06\x79\x63\x02\x1e\x0d\x05\x8a\x1e\
\x78\x51\x1d\x88\x06\x6e\x82\x25\x16\x8d\x62\x90\x0a\x18\x05\x9c\
\x8b\x18\x8a\x1d\x3c\xa1\x12\x1d\x1b\x19\x94\x25\x17\x9b\x87\x4d\
\x02\x9b\x8a\x8a\x9c\x18\x1e\x7d\xa2\x13\x1e\x81\xa8\x70\x1a\x78\
\x1d\xb5\x88\x1e\x04\x1b\x04\x0a\x1e\x05\x18\x40\xa1\x55\x63\x17\
\x49\x07\xcf\x30\xcf\x6e\x06\x18\xb3\x4d\xd7\x3d\xd2\x19\x17\x76\
\xa2\xbe\x68\x02\x45\x27\xd2\x1c\x17\x08\x92\x03\xbe\x16\x31\x1b\
\x00\x14\xb4\x90\xa1\xbe\x0c\x06\x17\x0e\x0f\x04\xa4\xa3\xbe\x18\
\x09\x1b\xe3\x17\x36\x5c\xb0\xf0\xc3\xca\x86\x26\x01\x2a\x20\xf0\
\xf0\xae\x58\x13\x52\x12\x22\x42\x94\x27\x81\x80\x2f\x62\x52\x1c\
\x8c\x43\xe0\x6b\x83\xaf\x43\xbe\x42\x6a\x2a\xa0\x80\x13\xc5\x6f\
\xdf\xfe\x2c\xca\x23\x30\x81\x02\xc9\x5c\xd1\x36\x54\x30\xc0\x71\
\x8c\x1f\x91\xa1\x9a\xf8\x12\xd0\x40\x81\x84\x30\x2b\x2b\x86\xb2\
\x48\x2c\x22\x06\x00\x12\x26\x1d\xf0\x58\xe5\x4f\x48\x94\xfa\x28\
\x2a\x78\xe7\xc1\x5d\x87\x7c\xfa\xf2\x5d\x15\x40\x01\x83\x82\x96\
\x01\x22\xc0\x39\x50\x61\x99\x94\x3f\x3e\x1f\x4d\xcc\x67\x11\x62\
\x57\x1e\x05\x3c\x48\x40\x50\xb2\x00\x31\x00\xee\xe2\x36\x83\xf1\
\x85\xee\xd3\x9d\xc6\x62\x85\x41\x10\xd5\x62\xb1\x02\xee\x5c\x5a\
\xf3\x90\x00\x40\x81\x96\x5d\x21\x38\x98\xd6\xeb\xe4\x84\x58\x9c\
\x62\x35\xc1\x52\x91\xf0\xad\x02\x14\xba\x1e\x53\x44\x01\xc0\x26\
\x63\x13\xb4\x8c\xb8\xd0\x08\xaa\x9d\x4e\x0d\x36\xc9\x2e\x20\x94\
\x00\x02\x2c\xb7\x4b\x36\xe8\x30\x81\x53\x31\x97\x12\x34\x6c\x90\
\x34\x22\x43\x80\x3f\x6b\x17\x2d\x12\x20\x8c\x40\xa2\xdd\xb7\x6d\
\xdb\x2e\x86\x28\x00\xa1\x5b\x06\x16\x14\xb3\x2e\x96\x44\xa1\x89\
\x57\x49\x4d\xf0\x4a\x9c\x43\x04\xb2\xa4\x70\x63\x21\x80\x81\x02\
\x84\x05\x62\x5b\x54\x58\xc0\xc1\xc2\x82\x49\x6f\x38\x04\x38\x56\
\x11\xa2\x61\x40\x26\x2c\xb5\x1e\x16\x10\xe4\x13\x0e\x2a\x17\x80\
\xfe\x72\xd5\x6d\x0b\x06\x40\xdf\x1c\x03\x54\x40\x00\x04\x14\x16\
\x08\xc1\x6d\x10\x94\x87\x5f\x09\xf8\x69\xc0\x11\x5b\x57\x49\x77\
\xdb\x4c\x17\x18\xf0\xc5\x84\xeb\x6d\x50\x60\x7b\x18\x88\xd3\x06\
\x1d\x1c\x5a\xc0\xd2\x04\x0b\x4a\x37\xe0\x80\xc3\x40\xb0\x81\x8a\
\x3b\xb2\x17\x5a\x05\xa8\x68\x87\x17\x73\x36\x12\x28\x4c\x8f\x3a\
\x0a\x03\x01\x03\x14\x32\x69\xcc\x0b\xa8\x6c\x80\x4c\x91\x28\xe6\
\x48\xe1\x8e\x4b\x66\xc9\x58\x15\x72\x9d\x92\xdf\x16\x17\x30\x27\
\x81\x22\x55\x5e\xa9\x23\x93\x4c\x7e\x11\x00\x04\x47\x01\x90\x40\
\x07\xf0\xe9\x92\x01\x4b\x47\x51\x20\x80\x8a\x3a\xaa\x88\x26\x04\
\x6b\x86\xc2\xe7\x54\x2e\x11\x30\xc3\x86\x5b\x64\x00\xd9\x04\x2a\
\xc6\x26\xc1\x06\x0c\x48\xb7\x41\x00\x08\xb4\xe7\xc1\x13\x89\x14\
\xf0\x00\xa1\x82\xb0\x19\x57\x1f\x00\x00\x30\x29\x04\x1e\x60\x30\
\x01\x9f\x04\x20\xe6\x52\x03\x1a\x54\x50\x01\xa6\x5c\xc4\x20\x4f\
\x01\x8d\xd9\x89\x45\x3f\x24\xf5\x01\x6b\x02\xb3\x04\xd2\xdd\x20\
\x74\x60\x9a\xc1\x02\x06\xc8\xf2\xd8\x63\x8a\x65\x96\xa1\x00\x24\
\x21\x51\x03\xab\x01\x8a\x90\x41\x49\xb8\x54\x00\x8b\x4c\xba\x29\
\x05\xa2\x81\x83\xbb\x32\x3b\xce\x0d\x04\x35\xa3\x81\x31\x70\xea\
\xd7\x80\x00\xb9\xc8\x71\xc3\x08\xe6\x26\x21\x16\x59\x04\x5c\x5a\
\x9f\x01\x16\xec\xaa\x8b\x09\x21\x00\x00\x21\xf9\x04\x08\x06\x00\
\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x84\xac\xba\xb4\xdc\
\xde\xd4\xc4\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\xcc\xe4\xe6\
\xdc\xf4\xf6\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\xf4\xf2\xe4\
\xc4\xc6\xbc\xdc\xda\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\xe2\xdc\xd4\
\xda\xcc\xfc\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\xd4\xec\xf2\
\xe4\xe4\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\xb4\xbe\xb4\
\xd4\xda\xd4\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x05\xfe\x60\x27\
\x8e\x64\x69\x9e\xdd\x31\x2c\x87\xc3\x0d\xdd\x30\x1c\x68\x6d\xa3\
\xea\x61\x28\x45\x55\x08\x11\x48\x41\x71\x39\x68\x16\xb7\x64\x2d\
\xe0\x89\xfc\x04\x0a\x68\x34\x5a\x88\x78\x0a\x34\xa5\x56\x75\xf1\
\x7c\xa6\x8a\x30\x74\x2c\x9e\x18\x2a\x33\x52\x76\x2d\x62\xa7\xda\
\xa2\x8c\x57\x3c\x1d\x4b\xa3\x13\x85\x27\xea\xc9\x6a\x71\x06\x1f\
\x64\x7b\x02\x1f\x1f\x04\x0c\x04\x82\x62\x84\x0a\x06\x19\x7f\x28\
\x16\x1e\x64\x63\x04\x18\x04\x99\x99\x89\x1e\x79\x7b\x7b\x1c\x90\
\x91\x25\x17\x18\x18\x7a\x7a\x13\x1f\x98\x89\xad\x97\x02\x9f\x0a\
\xaa\x02\x48\xa3\x23\x07\x17\x86\x84\x7b\x13\x14\x1f\x05\x05\x1c\
\x0a\x89\x18\x1f\x13\x9f\x13\xb0\x06\x4a\x07\xcd\x29\xce\x1d\xb9\
\x0c\x50\x9f\x50\x15\xcd\x07\x19\x5d\xc6\x9d\xdd\x1f\x14\x11\x38\
\xd8\x07\x09\x1c\x16\x19\x1c\x1e\x15\x1d\xe8\x1b\x0f\x04\xdd\x7a\
\x1e\x1e\x0d\x06\x17\x0e\x10\x56\xc7\xfb\x1e\x14\x18\x01\x28\x06\
\x70\x30\x67\x00\x54\xba\x2b\x17\xd2\x61\x9a\xd2\x69\xdf\x04\x7e\
\xfc\xe2\x41\xd1\x50\x02\x9b\x01\x58\xf3\x62\xed\x91\xa7\x60\x03\
\x06\x0f\x98\x20\xce\xe3\x57\xe0\xca\x84\x21\x1b\xfe\x36\xd0\x52\
\xc3\x21\x41\x85\x74\xa8\x32\x1e\xcb\x98\x51\x96\xa1\x3c\xa9\x0a\
\x9c\x34\x69\x32\x8c\x97\x0d\x0a\x44\xa5\xb8\x80\x31\xa6\xd1\x4e\
\xa9\xba\x4d\xd8\x40\xa0\xa3\xca\x21\x4a\x95\xa6\x9c\xf6\x6f\xcd\
\x80\x2e\x7c\x3e\x21\x85\x32\x33\xc1\x31\xaf\x8d\x30\x3c\x80\xf5\
\x61\x5a\x49\x7f\x3c\x30\x00\x60\xfa\xc1\x41\x9b\x83\x1c\x47\x16\
\x42\x94\xe9\xcb\xc9\x93\x25\x4b\x2a\x20\x90\x12\x03\x82\x4c\x61\
\xc4\x6e\xf0\xf7\x00\xc3\x84\x5a\x31\x04\x14\x1d\xe9\x65\x93\x26\
\xc0\x19\x13\x94\x54\xe5\x0b\x81\x47\x53\x99\xd4\x32\x55\x70\x08\
\x02\x89\x01\x9c\xbb\x75\x13\x90\x28\x33\x22\x4c\x04\xf0\xe2\xed\
\x94\xc0\xc3\x2b\x05\x98\x28\x4c\x60\x75\xc1\x9e\x9f\x01\xfa\xa2\
\x16\x60\xc0\x8a\x87\x13\xd2\xf0\x0a\x48\x96\x3c\x79\xe3\x8a\x09\
\x04\x0a\x64\xa8\xf0\xa1\x8f\x09\x08\xd4\xee\xea\xec\xd7\xd4\x40\
\x16\x09\x07\x2a\xe8\x01\xc6\x3d\x01\x01\x04\x05\x16\xc0\xd0\x11\
\x40\x03\x0d\xc4\xb7\x3a\x18\xf0\xcb\xf8\x4a\x02\x59\x30\x4a\x64\
\x08\x00\x4c\xb2\x93\x02\xab\x38\x48\x60\x36\x62\x40\xa1\x9d\xc2\
\xe9\x54\x40\x00\xb5\xd0\x90\x0d\x7d\x09\x44\xfe\xe0\xc4\x82\x4e\
\xac\x83\x03\x1c\x24\x38\xd0\x4d\x5e\x78\x11\x57\x81\x3d\x06\xd0\
\xa7\xa0\x13\x1c\x04\x53\x00\x22\x02\x40\xe0\x87\x1b\x01\xc1\x96\
\x5a\x80\xc4\x11\xc7\x1d\x07\x1c\xb2\xe8\xe2\x52\x0f\x6c\xb0\xcc\
\x28\x0b\x08\xf0\x00\x02\x57\x74\x07\x4c\x8b\xc1\x44\xe0\x62\x03\
\x11\x34\x10\x40\x04\x7b\x11\x30\xe3\x1b\x4a\x48\x10\xc0\x07\x92\
\x4d\x40\x1c\x87\x3d\xba\x18\xe4\x94\x11\x7c\xd3\xe1\x17\x42\x45\
\x72\x81\x4d\x08\xfc\xc2\xa1\x82\x3d\x02\x29\x26\x07\x01\x74\x04\
\x00\x06\x14\x24\xb0\x8c\x1f\x7f\x64\x10\x01\x01\x0f\x00\x00\x5e\
\x87\x3e\x72\x00\x64\x00\x76\xfa\x28\xd9\x90\x62\x21\x80\x81\x88\
\xb6\xf4\xf7\x1d\x06\x09\x76\xc4\x40\x02\x40\x96\x14\xc1\x90\x02\
\xf8\xe9\xc4\x07\x7f\x51\x70\x41\xa0\x23\x48\x90\x00\x9a\x5f\xb8\
\xb3\xc1\x80\xb3\xa5\x16\xc0\x92\x08\xbc\xc3\x80\x3a\xf4\xb0\x19\
\xe8\x00\x03\x1e\xd2\x97\x64\x1f\xb0\xa5\xd3\x2a\x1e\x25\x77\x00\
\x0b\xe9\x51\xda\xcc\x87\xaf\x10\xb3\x41\x69\x04\x50\x10\x80\x77\
\x04\x44\x60\xea\x09\x6e\x90\x48\xc2\x96\x0c\x10\xe8\x9a\xa7\x1c\
\xf0\xc6\x41\x07\x0b\x04\x89\xde\xb0\x7f\x21\x8c\x38\x80\x75\x07\
\xbc\xc9\xc0\x32\x0b\x1c\xd2\x00\x84\xe0\x56\x44\xe9\x08\x1a\xe0\
\x39\x9e\x01\x06\xa0\x87\xe4\x0d\xc5\x8e\x10\x02\x00\x21\xf9\x04\
\x08\x06\x00\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x84\xac\
\xba\xb4\xdc\xde\xd4\xc4\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\
\xcc\xe4\xe6\xdc\xf4\xf6\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\
\xc4\xc6\xbc\xdc\xda\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\xe2\xdc\xf4\
\xf2\xe4\xd4\xda\xcc\xfc\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\
\xd4\xec\xf2\xe4\xe4\xea\xdc\xbc\xc2\xbc\xec\xea\xe4\xb4\xbe\xb4\
\xd4\xda\xd4\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x00\x00\x00\x05\
\xfe\x20\x27\x8e\x64\x69\x9e\xdc\x31\x1c\x52\x15\x1c\x47\x33\xa0\
\x74\x4d\x1f\xd0\xc1\x28\x41\xa5\xf0\xbe\x0e\xc4\x72\x81\xd8\x8e\
\x28\x5d\xa2\x32\x11\x28\x04\xd0\xe7\x33\x52\xe0\x21\xaf\x22\x5c\
\x46\xe0\x91\x3a\x7f\x1d\xc1\xc4\x5b\xa8\x6c\x56\xa4\x43\x76\x9d\
\x62\xab\xdb\x9c\x41\x27\xec\xfd\x41\x9d\x5f\x67\xd8\x53\xc0\xd6\
\x0e\x06\x1e\x5d\x5f\x7b\x0b\x04\x0b\x0b\x1e\x7a\x4f\x1d\x0a\x1d\
\x06\x68\x7e\x25\x16\x74\x0a\x4d\x4f\x18\x18\x87\x04\x04\x9a\x8a\
\x8d\xa0\x1e\x1b\x6f\x92\x23\x17\x18\x0b\x84\x98\x9c\xac\x86\x18\
\x1e\x63\x8d\x13\xb0\x46\xa5\x59\xa7\x83\x61\x8d\x14\x7c\x1b\x55\
\x1e\x9d\x96\x1d\x13\xc3\x8e\x15\x48\x30\x6a\xc9\x22\x17\x5c\x8e\
\xcf\x63\x15\x2c\x38\x06\x1d\x14\xc3\xd8\x13\x9c\x1b\x49\x07\x16\
\x6a\x15\x8f\x07\x17\x09\xa3\x07\x0f\x1a\x0e\x18\x73\x4d\x73\x1d\
\x0c\x06\x06\x0d\x06\x05\xd9\xd8\x02\x0b\xc7\x27\x07\x1b\x09\x06\
\x17\x1b\x04\x24\x08\xb0\xc1\xd1\x83\x6a\x0b\x30\x10\x22\x36\xa1\
\x21\x31\x7b\xd8\x1a\x75\xc9\x50\xc2\x9b\x37\x50\xee\xc0\xe8\x99\
\x83\x41\x43\x07\x4e\x8e\x1e\xb2\x9b\x53\x60\x42\xc9\x02\x55\xfe\
\xd2\x11\xb0\x90\x66\x43\x87\x72\xcf\x1a\x39\x72\x37\x67\x26\x2c\
\x05\x04\xec\x99\xec\x50\x92\xa4\x44\x62\x08\x14\x90\x82\xa1\x2b\
\x26\x4d\x9d\x11\x3b\x09\x20\xa0\x61\x01\xcf\x86\x4f\x2d\x25\x20\
\xe0\x40\x03\xb0\x0d\x12\xb2\x54\x30\x90\x80\x26\x23\x3b\x60\xb0\
\x25\x38\x49\x81\x80\x02\x0c\x00\x30\x54\x21\x00\xab\x80\x00\x04\
\x39\x15\x38\x00\x60\x76\x46\x8a\x82\x35\x65\xd5\x64\xcb\x29\x91\
\x82\xb1\xc4\xea\xf1\x54\xe0\x01\x81\x06\x4d\x9d\x60\x79\x70\xe0\
\x80\x93\x61\x01\xb5\x52\x74\xe8\xa2\x13\x58\x5f\x56\x6c\x4d\x06\
\x1e\x76\xc8\x03\x06\x04\x9a\x40\x73\xaa\xaa\x90\x70\x80\x11\x2a\
\xdc\x8e\x24\x86\x6f\x93\x26\x4d\x86\x78\x16\x18\x5b\xcf\x92\x8f\
\x43\x38\x71\x0b\xf8\x1c\x01\x42\x03\x52\x03\x7a\x42\x1d\x56\xa0\
\x95\x80\x02\x54\x3c\x18\x52\x50\x0f\x25\xed\x81\x1d\xf2\x1d\x08\
\xf0\x2a\x83\x05\x62\x76\x49\x3c\xe0\xf5\x70\xa7\x35\x0c\x0a\x0c\
\xbc\x91\x70\xc0\xc7\x73\xe7\x14\x30\x6c\x80\x80\x06\x42\x0f\x35\
\x59\xd3\x88\x68\xc0\x89\x38\xc9\x04\x8e\xb2\xa3\xf6\x85\x12\x39\
\x4a\xa6\x11\xc4\xb7\xcf\x09\x19\xc4\xd2\x1c\x60\x05\x04\xfe\x10\
\x99\x1a\x03\x54\x80\x12\x15\x10\xfa\xd2\xc1\x0b\x6c\x54\x08\x07\
\x33\x7a\xcd\x76\x12\x6d\x5b\x5d\x60\x00\x41\x05\x6c\x40\x85\x88\
\xbe\x88\x51\x86\x09\xa4\xec\x33\xc0\x02\x87\x21\xd8\x1f\x6d\xfd\
\x85\x88\x9c\x88\x21\x46\x20\x57\x63\x06\xc8\x77\x04\x04\x02\x58\
\xf5\xa2\x86\x23\x6e\x20\x24\x89\x11\x30\x20\xa2\x91\x09\x74\x84\
\x01\x45\x17\x1e\x21\x41\x00\x4f\x1d\xf7\x20\x84\x54\x16\x69\x25\
\x03\x11\x98\x14\x40\x02\xa9\xe4\x50\xca\x05\xb3\x68\x60\x55\x04\
\x11\x90\x18\xe2\x06\x58\x62\xb9\x41\x00\x65\x2e\xa6\x81\x02\xd7\
\x9c\x66\xcb\x01\x11\xa4\xf3\xa6\x84\x65\xa6\x59\xe4\x9a\x23\x06\
\x20\xc0\x5c\x08\x78\x20\x9e\x2d\x22\x18\xa0\x14\x15\x1d\x31\x47\
\xc5\x58\x11\x40\xc9\xe2\x84\x09\x20\x00\x9a\x07\xd9\xa5\x78\xc5\
\x01\xc5\xf1\xb2\x00\x00\x0e\x50\x10\x40\x00\x9d\x78\xba\x25\x8b\
\x0a\x2d\x50\x8f\xa7\x96\x96\x32\xc0\x03\xa0\x76\xe4\x80\x07\x5d\
\x1d\x46\xc0\x6c\x38\x29\x49\x81\x78\x83\xfe\xe1\x06\x0a\x16\x58\
\xf6\x84\x21\x1a\xc0\x65\x48\x2a\x05\x94\xb5\xc0\x05\x3a\x56\x74\
\xa9\x08\x0f\x88\x01\x81\xa1\x87\xac\x89\x93\x07\x39\x2a\x34\xab\
\x20\xa1\x4d\x96\x30\x40\x0e\x03\xa4\x37\x81\x1a\x1b\xb0\x65\x84\
\x0a\xa8\x1d\xf1\x46\xaa\x16\xa2\xf6\x61\x8e\x1c\x34\x10\xc0\x05\
\xe8\xa6\x9b\x6d\xb9\x22\x84\x00\x00\x21\xf9\x04\x08\x06\x00\x00\
\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x84\xb4\xba\xb4\xdc\xde\
\xd4\xc4\xce\xc4\xec\xee\xe4\xd4\xd6\xcc\xbc\xc6\xbc\xf4\xf6\xec\
\xe4\xe6\xdc\xcc\xd6\xcc\xbc\xc2\xb4\xcc\xce\xc4\xf4\xf2\xe4\xdc\
\xda\xd4\xc4\xc6\xbc\xe4\xe2\xdc\xd4\xda\xcc\xfc\xf6\xec\xec\xea\
\xdc\xcc\xd2\xc4\xc4\xca\xbc\xb4\xbe\xb4\xdc\xe2\xd4\xec\xf2\xe4\
\xe4\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xd4\xda\xd4\xfc\xfa\xec\xcc\
\xd2\xcc\xc4\xca\xc4\x00\x00\x00\x00\x00\x00\x05\xfe\xe0\x26\x8e\
\x64\x69\x9e\x5b\xb6\x18\x8b\x16\xb1\xc7\x82\xce\xf4\x6c\xb0\x08\
\xe2\x3c\x02\x57\x69\x8a\x80\xe5\x70\x30\xd4\x8e\xa8\x8c\x86\x11\
\x10\x28\x9e\x50\x41\x8f\xc0\x51\xbc\x8c\x48\xe4\xed\xd0\x71\x2a\
\x9c\xd2\xef\x13\xac\xd0\x68\x1e\x83\x12\x76\x2d\x62\x6f\xdc\x03\
\x2a\xd9\x1b\xf6\x2a\x24\x77\x45\x27\x70\xcb\xda\x2a\x05\x1d\x63\
\x77\x02\x1d\x0d\x05\x87\x5d\x62\x3d\x02\x04\x01\x69\x7e\x27\x06\
\x1c\x60\x78\x5f\x18\x05\x88\x9a\x81\x12\x55\x9e\x1d\x1a\x58\x91\
\x23\x06\x17\x0d\x82\x55\x8c\x98\x99\xac\x0d\x14\x3d\x78\x55\x1d\
\x0f\x32\xa3\x24\x07\x14\x05\x5f\x1c\x96\x13\x1d\x04\x1a\x54\x87\
\xba\x0a\xbc\x12\x78\x02\x01\x5a\x37\x46\x7d\x1b\x17\x82\xc5\xc5\
\x3d\x0a\x15\x19\x06\x10\x0b\x17\x7a\xbc\x9e\x1c\x05\x18\x0f\x36\
\x16\x16\x06\x16\x39\xe6\x1a\x08\x17\x1b\x07\x18\x14\x18\x94\xdd\
\x9d\x01\x07\x17\x17\x0e\x1a\x9d\xfb\xc6\x1d\x0e\x28\x06\x2a\x70\
\xd0\x70\x21\x00\x87\x81\x0c\xaa\x68\x18\xa0\xa1\x03\xa6\x79\xf3\
\x3a\x75\x83\xc8\xa1\x83\x2e\x76\x24\x4a\x0d\x30\xa0\xe1\xe0\x41\
\x28\xde\x10\x54\x7c\xa5\x40\x17\x45\x09\x54\xfe\x08\xa0\xe4\xa0\
\x92\x40\x01\x00\x05\x20\xb5\xa9\xd0\x43\x24\x14\x69\x1e\x3f\x1e\
\x54\x84\xa1\x03\x3f\x95\xf3\xa8\x1c\x3b\x25\xa1\x81\x82\x5a\x6f\
\x0c\x34\xf1\x56\x2c\x27\xbf\xa0\x0e\x9d\x24\xc0\xd0\xa9\x25\xaf\
\x27\x08\x14\x00\x80\x59\x80\x8f\x08\x0b\x1a\x02\x74\x6c\xfa\x25\
\xeb\xa2\x6e\x40\xa9\x4c\xc8\x85\x01\x00\x05\x05\x08\x0c\x35\xe2\
\xf0\xae\x18\x05\xb7\x04\x20\x29\xed\xe1\xb1\xa9\xac\x4c\x89\xee\
\xb0\xac\xca\xb2\x0a\x85\x5c\x86\xc0\x3d\xb9\x9b\xab\x40\x82\x02\
\x16\x48\x04\x28\xe0\x89\x9f\x00\xc0\x98\x75\x89\x4c\x89\x40\xc2\
\x04\x5f\x87\x30\x60\x7a\x5c\xe0\x30\x86\x09\x04\x92\x41\x68\x73\
\x00\xc8\x41\xcb\xc3\x32\xad\x42\x84\x12\x01\x81\xdb\x15\x3b\x1c\
\x78\x80\xa8\xd0\xe3\x5f\x99\x3a\x2c\xd8\x38\x22\x82\x37\x89\xbc\
\x42\x1b\x05\x46\x20\x31\xcb\x96\xb6\x09\x20\x38\x50\xa1\x01\x87\
\x01\x0b\x1c\x3e\xc8\x20\xf0\x80\x09\x53\x94\xf7\xb5\xcc\xa4\xa0\
\x88\x08\x08\x01\x8b\x49\xbf\x2d\xfd\x4b\x80\xe1\x11\xde\x1c\x78\
\x44\x63\x40\xa1\x83\x40\x6d\x17\x93\xf9\xe6\x0d\x83\xe8\xb7\x3d\
\xc0\x41\x02\x14\x10\x90\x85\x28\x07\xf0\xfe\x22\x5d\x6d\x54\x20\
\xf0\x5e\x1b\x5f\x05\xf0\x00\x01\x0f\x3c\x10\xcc\x84\x7a\x68\xd0\
\x9f\x09\x6e\x8c\xb0\x4d\x03\x8d\xd8\xf6\xdc\x7a\x15\xd8\x33\x5f\
\x30\xcc\x51\x18\x0c\x02\x13\x2a\x43\x0a\x84\x00\x45\xf0\x52\x01\
\xb8\xdd\x06\xe0\x6d\x28\x06\x73\xc6\x8e\x0f\x74\x30\x55\x07\x18\
\x45\x92\x41\x49\x0c\xae\x17\x20\x73\x3c\x5a\xf8\x00\x03\x4b\xbc\
\x04\x93\x5e\x92\x48\x22\x50\x6e\xec\x4d\x38\x21\x8f\x67\x30\xb0\
\xe4\x84\x8e\xf0\x80\x81\x00\x48\x45\x12\x81\x02\x6d\x51\x80\xd2\
\x95\x67\x00\xb3\x25\x93\x12\x6a\xe0\xca\x2f\x02\x4c\xc0\x80\x28\
\x91\x18\x40\xc0\x5d\x34\x36\x58\xe1\x12\x4b\x6c\x69\xa1\x84\x09\
\x6c\x55\x80\x04\xe6\xd9\x22\x02\x20\x83\xa6\x86\xd7\x19\x2c\x3d\
\x20\xa1\x02\xa7\x04\xc0\x40\x69\xb9\x10\x80\x14\x9d\x07\x36\xd7\
\x41\x07\x5b\x15\x18\x80\x04\x8f\x71\x20\x96\x45\x24\x09\x20\x81\
\x21\x5e\x19\x3a\x42\x06\x03\x3c\xf0\x0e\x05\x09\x70\x80\x80\x2b\
\xba\x08\x38\xc1\x4b\xa1\x2e\x50\x41\xaa\x47\x74\x58\x82\x03\xc1\
\x11\x70\xc8\x61\x87\x1c\x32\xc1\x25\x34\x1a\xb1\x5a\xaf\x34\xac\
\x51\x01\xa1\x06\x5c\x86\x41\x35\x2e\x2c\x35\xc0\xc7\x00\xee\xa9\
\x11\xe5\xb6\x27\x5c\xb3\x81\xb0\x05\xc4\x37\x40\x26\x15\xac\x36\
\xc0\x00\xcb\x62\xda\x6c\x24\x0b\xcc\x67\x44\x06\x0c\x54\xc0\x9f\
\x16\x2f\xd6\xbb\x41\x08\x00\x21\xf9\x04\x08\x06\x00\x00\x00\x2c\
\x00\x00\x00\x00\x31\x00\x24\x00\x84\xac\xba\xb4\xdc\xde\xd4\xc4\
\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\xcc\xe4\xe6\xdc\xf4\xf6\
\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\xf4\xf2\xe4\xc4\xc6\xbc\
\xdc\xda\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\xe2\xdc\xd4\xda\xcc\xfc\
\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\xd4\xec\xf2\xe4\xe4\xea\
\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\xb4\xbe\xb4\xd4\xda\xd4\
\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x05\xfe\x60\x27\x8e\x64\x69\
\x9e\x52\x76\x74\x46\x35\x48\x97\x21\x75\xeb\x69\xdf\xf7\x7a\x25\
\xcd\xe5\x29\x91\x8a\x67\x62\x18\x54\x0c\xb8\x64\x32\x13\xa8\x34\
\x04\x0a\x05\x14\x2a\xf5\x14\x04\x85\x8c\x4a\xc9\x15\x1d\x0e\x9c\
\x8f\x74\x4c\x2d\x47\x81\x9e\xc4\x76\x54\x6b\x7b\xdf\x34\xf8\x20\
\xe0\x31\x93\xc7\x77\xe8\x65\xdd\xb5\x85\xa7\x51\x02\x02\x1f\x0c\
\x04\x85\x1f\x50\x43\x3f\x13\x09\x11\x1a\x7d\x36\x07\x1e\x1f\x62\
\x55\x0a\x18\x04\x86\x99\x99\x0c\x75\x0a\x3f\x0a\x1f\x01\x35\x90\
\x24\x17\x94\x96\x52\x98\x9b\x0c\x18\x0c\x1b\x02\x43\x13\xb1\x02\
\x1c\x0b\xa5\x24\x07\x06\x1b\x18\x13\x0a\xbe\x75\x14\x1f\x05\xc4\
\x1e\x85\x04\x1f\x13\x1e\x8a\x0a\x14\x01\x49\x2b\x5f\x5f\x34\x35\
\x06\x88\x9f\xb1\xbf\x0a\x15\x5f\x29\x3e\x1f\xb2\x9f\x13\xaf\xcf\
\x91\x16\x17\x5f\x74\x06\xba\x09\x1c\xba\xad\x04\x9f\xe2\xcb\x0d\
\x06\x17\x17\x10\x11\xca\xca\x8a\x43\x48\x25\xd3\x2c\x2c\x83\x50\
\x21\x01\x16\x0e\x05\x96\x69\xa8\x20\x00\xc3\x06\x45\xfb\x26\x48\
\x5c\xc6\x4f\x59\x81\x09\x05\x3e\x20\x60\x70\x01\xa0\x11\x0b\x06\
\x7e\x2c\xfb\x34\x72\x59\x82\x1f\xc8\xfe\x26\x20\xea\x47\x31\xe1\
\xc5\x8b\x26\x3f\x6c\x20\x30\xa0\xc4\x05\x41\x25\xe5\x89\xa4\xb8\
\xcc\x03\x32\x05\x04\x7a\x29\x82\x39\xd1\xe5\xb8\x5e\xc9\x32\x8c\
\xb0\x70\xae\x27\xb6\x9d\x10\xa3\xa2\x4c\xd6\xea\x97\x15\x2b\xbe\
\x92\x79\x40\x00\x60\xe3\x28\x11\x16\x38\xb4\x03\x05\x75\x4c\x3f\
\x8c\x58\x15\x6c\x98\xf9\xe0\x01\x85\x02\xcd\x28\x58\xa1\xf0\x20\
\x1e\x83\x07\x1b\x0a\x58\x18\x61\xed\xcc\x4e\x29\x1f\x34\xfd\xac\
\x78\x55\x99\xda\x0d\x0c\x06\x05\x15\x43\x00\x40\xdd\x4c\x18\xfe\
\xd1\xe8\x0b\x75\x52\xa1\x63\x9b\x3e\x15\x2b\x90\x20\x63\xe0\x63\
\x98\x10\x60\xc2\x80\x97\x00\xb1\x00\x33\x3a\x30\x49\x40\xb2\xe7\
\xac\x4d\x41\x0d\x61\x62\xc0\x88\x33\xb1\x09\x86\x2a\x40\xf8\x7c\
\x09\x93\x3e\x57\xeb\x48\x0d\xa8\xc2\x53\x19\x05\x57\xf1\x8a\x01\
\x25\x80\x95\x58\x67\x65\x06\x16\x08\x60\x50\x21\x43\x04\x43\x16\
\x06\x44\x80\x40\x4a\xc4\x00\x0a\xcc\x2d\xa2\x05\xaf\x60\xdd\x88\
\x0c\x10\x34\x3b\xdf\x5c\x41\xc2\x00\xf3\x46\x20\xa4\x3e\xa1\x41\
\x24\x46\x65\x9d\x3f\xd5\x04\x18\x61\x7d\x81\x08\x5b\x6d\xd0\x40\
\x77\x39\x8c\x00\xc1\x44\xcb\xb8\xfe\xb4\x4c\x00\xb7\xbc\x61\xc4\
\x7f\x11\x44\x80\x50\x7f\x04\x08\x48\x60\x1c\x6c\x94\x60\x00\x01\
\x08\x60\xf1\x52\x67\x9c\x05\x61\x8f\x01\x01\x20\x84\x10\x31\x12\
\x16\xc0\x41\x03\x1e\x54\x00\x50\x2e\x26\x1c\x30\x00\x01\x0f\x0c\
\x03\xa2\x6d\xc4\xe4\x48\xcc\x84\x1c\x70\x20\x61\x04\x81\x45\x01\
\x01\x1c\x5c\x2c\x30\xc4\x7a\x37\xfe\xa7\xa2\x8a\x3e\xfa\x28\x61\
\x03\xfd\x71\xe5\xd6\x5e\xa5\x48\x20\x84\x00\x08\x0c\x83\xa2\x92\
\x4d\x46\xb8\x62\x04\x50\x82\xc9\x81\x07\x0e\x09\x70\x21\x17\x1a\
\xd0\xf5\x00\x02\x8d\xa8\xf8\x63\x97\x50\x42\x19\x40\x01\x04\x50\
\xd0\x1f\x05\x0c\x70\x80\x8b\x17\x6a\x31\x97\x50\x2c\x4f\x82\x29\
\x68\x89\x25\x2a\xd0\x16\x06\x14\x24\x10\xc0\x7e\x7b\x56\x90\xd2\
\x56\x0f\x60\x00\xa5\x15\x2a\xce\x29\xc0\x5b\x01\x44\xb0\x01\x5e\
\xd4\xcd\x77\x26\x34\x1c\xa8\x24\x25\x05\x3e\x62\xd0\x21\x94\xb8\
\x21\xca\xda\x07\xe0\x7d\x20\xd9\x9e\x5e\x0c\x67\xea\x06\xc9\xa8\
\x85\xe8\x7f\x40\x39\x94\xc9\x11\x1e\x7c\xf5\x29\x86\x6e\xc4\x18\
\x01\x26\x09\x05\xb5\x26\x32\x9c\x34\xe4\x4a\x47\x0b\xfc\x8a\xcb\
\x01\x10\x04\x80\xde\x26\x01\x2c\x04\x10\xe4\x1e\x0d\x10\x20\xc0\
\x23\x4a\x7c\xda\xdd\xb7\x1d\x7c\xd7\x0b\x0d\x3e\x29\x50\x93\x05\
\x10\x30\x4a\x64\x24\xeb\xe2\x20\x63\x11\x22\xe4\xc3\xdd\x09\xbf\
\x3a\x2b\x42\x08\x00\x21\xf9\x04\x08\x06\x00\x00\x00\x2c\x00\x00\
\x00\x00\x31\x00\x24\x00\x84\xac\xba\xb4\xdc\xde\xd4\xc4\xce\xc4\
\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\xcc\xe4\xe6\xdc\xf4\xf6\xec\xbc\
\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\xf4\xf2\xe4\xc4\xc6\xbc\xdc\xda\
\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\xe2\xdc\xd4\xda\xcc\xfc\xf6\xec\
\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\xd4\xec\xf2\xe4\xe4\xea\xdc\xbc\
\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\xb4\xbe\xb4\xd4\xda\xd4\xfc\xfa\
\xec\xcc\xd2\xcc\xc4\xca\xc4\x05\xfe\x60\x27\x8e\x64\x69\x9e\xd2\
\xa1\x42\x86\x5a\x0d\xe2\x71\xce\x74\xdd\x1d\x55\x01\x55\xca\x14\
\x34\x82\xc2\xc0\xd0\xb8\xd8\x8e\x34\x4b\x45\x93\x50\xf4\x04\x02\
\x45\xb4\x27\x0d\x1c\x06\x32\x24\x52\x55\xf8\x38\xa1\x4e\xe9\x57\
\x3a\xf1\x78\x14\x05\x15\x29\xcb\x8e\xb9\x6f\xef\x01\x2f\x3a\x05\
\xdb\xc3\x74\x8f\xc3\x92\xd5\xce\x38\x1f\x74\x52\x1e\x02\x1f\x0c\
\x04\x87\x81\x0a\x67\x13\x8b\x1e\x42\x7e\x33\x07\x1e\x04\x78\x1e\
\x1f\x18\x04\x88\x9a\x89\x02\x8d\x67\x85\x10\x91\x27\x17\x8a\x02\
\x67\x84\x08\x87\x04\x99\xad\x1f\xa0\x1e\x8d\x11\x46\xa3\x24\x06\
\x18\x18\x4e\x67\x4e\x1f\x1f\x05\x11\x05\x1e\x87\x18\x9e\xb1\xb1\
\xbd\x01\x36\x6c\x2a\x32\x6a\xb7\x04\xb0\x8c\x15\x19\x07\x12\x0b\
\x17\x97\x65\xda\x1e\x14\x04\xc9\x92\x16\x06\x7c\x03\x1e\x09\x07\
\x16\x1c\x1c\xe1\xbd\xd0\xb1\x83\x1e\x0d\x06\x17\x17\x10\x05\xdb\
\xda\x8b\xa2\x25\xcc\x1d\x1c\x02\x1c\x10\x38\x98\x69\x20\xd0\x43\
\x05\x03\x1f\x08\x6c\x78\x65\x26\xd6\x84\x87\x66\xca\xd8\x0b\x36\
\xa1\xcb\x06\x0c\xb4\x46\x5c\xe1\x20\x2f\x01\x2a\x5d\x66\x16\x25\
\x28\xa0\xa0\x57\x98\x6d\x11\xfe\x29\xa6\x8c\x88\x08\x86\x9b\x49\
\x50\x76\x35\x64\x64\xac\x21\x2b\x4a\x1b\xca\xc4\xb2\xb7\x92\x22\
\x83\x0d\x0c\x4e\xf5\xb1\x70\x61\x40\x13\x54\x84\x50\xdd\xab\xd9\
\x23\x61\x23\x06\xaf\x78\x52\xf4\x72\xe9\xc1\x03\x02\x15\x24\x88\
\x40\x37\x73\xd1\x29\x77\x9e\x1c\x49\x1c\xbb\xe1\x2a\x86\xab\x65\
\x14\x04\x25\xb9\x61\xa1\x80\xb6\x05\x16\x8c\xb0\xd0\x6b\x26\xbe\
\x84\xab\xa8\x8e\x7d\xd4\xeb\x43\xdb\xa0\x0a\x58\x11\xf3\x0b\x40\
\x15\xa2\x0a\x23\x06\x68\x18\xd4\xc3\x58\xc2\x4d\x9a\x34\x2d\x0a\
\x46\x39\xc1\xc3\x4c\x91\x59\x01\xc5\xb0\x01\x41\xae\x00\x59\x63\
\x14\x34\x86\x0f\x51\x2b\x56\xab\x2a\x8e\x1c\x39\xe1\x50\x01\x03\
\x05\x30\x04\x65\x90\x49\x41\x84\x43\x1c\x52\x24\x2e\xb9\x48\x67\
\x19\xda\x88\x82\x70\xe8\x72\xe8\x51\x81\xe3\x23\xa3\x18\x90\x10\
\x00\x83\x87\x6b\x98\xac\x18\x80\xd0\x47\xc4\x02\x01\x0c\x8c\x4d\
\xe4\x56\xa9\x85\x88\x14\x3c\x1e\x8d\x3c\x4e\x1e\x71\x38\x07\xd5\
\x0c\x54\x90\x3b\x03\x76\x19\xd6\x3b\x4f\xb9\x5c\xd3\x80\xfc\xf1\
\x08\x94\xbc\x69\x3d\xd2\x67\xce\xa3\x8a\xe2\x15\x10\x00\x7b\x70\
\xc8\x51\x40\x02\xc0\x44\xfe\x00\xcc\x04\x6d\x35\x50\x9d\x46\x6f\
\xd8\x72\x56\x10\x8f\x18\x67\xdc\x41\x17\x18\x10\xc0\x70\x09\xfe\
\xc2\x41\x04\xc3\x7d\x80\x18\x1c\x24\xd2\x70\x05\x05\x18\x00\x88\
\x9c\x7d\xc7\x0d\xf7\x4b\x01\x1f\xc6\x18\x81\x13\xf6\x8c\x18\x49\
\x06\x11\xb0\x76\x20\x79\x08\xc2\x08\x8c\x8c\x1c\x34\x10\x01\x41\
\x13\x3c\xd0\x96\x07\x19\xd4\xd2\x01\x04\x02\x70\xe6\xcb\x7d\x09\
\x02\x39\xa4\x82\x42\x0a\xc9\xd9\x06\x1e\x44\xa8\xc5\x05\x67\x2d\
\xd4\x21\x88\x1e\x4e\x29\xe4\x86\x09\x7c\x90\x40\x00\xc2\x78\xf3\
\xa0\x16\x19\x28\x80\x40\x10\x5d\x98\x19\x63\x95\x43\x72\xb0\xe1\
\x6d\x0f\xbc\xf9\x41\x23\xf3\xd5\x52\x01\x01\x7b\x12\x00\xc0\x03\
\x0a\x08\x39\x01\x82\x44\x46\x11\x40\x00\x14\x0c\x8a\xc0\x07\x17\
\xac\x19\x09\x0e\x05\x10\x60\x15\x02\x08\x2a\x00\x94\x07\x01\x44\
\xd0\x0d\x06\xc7\x7d\x80\x00\x2b\x1f\xf4\xa9\xa4\x08\x08\x11\x30\
\xea\x22\x18\x00\x40\xc0\x04\xc3\x69\xb2\x81\x26\x02\x5c\x50\x00\
\x05\x56\xd4\xd0\x06\x89\x0f\x66\x90\xc0\x67\x98\xfc\xc5\xc0\x2a\
\xc3\xbc\x2a\x41\x06\x17\xec\xa7\xa5\x1f\x6c\x40\x80\x45\x60\x29\
\x56\x40\x09\x03\x42\x26\x68\xd0\x4d\x01\x5a\x48\xca\x1f\xa3\x14\
\x68\xd0\x81\x01\x87\x8c\xb8\xa8\xa9\xda\x42\xc8\xab\x32\x03\x44\
\xda\xc1\x00\x20\x7a\x5b\xe2\xbb\x92\xd4\x10\x02\x00\x21\xf9\x04\
\x08\x06\x00\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x84\xac\
\xba\xb4\xdc\xde\xd4\xc4\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\
\xcc\xe4\xe6\xdc\xf4\xf6\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\
\xf4\xf2\xe4\xc4\xc6\xbc\xdc\xda\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\
\xe2\xdc\xd4\xda\xcc\xfc\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\
\xd4\xec\xf2\xe4\xe4\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\
\xb4\xbe\xb4\xd4\xda\xd4\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x05\
\xfe\x60\x27\x8e\x64\x69\x9e\xc7\xd1\x0d\xd0\x70\x38\x55\xd6\xa5\
\x67\x6d\xdf\x5d\x56\x35\x0e\x27\x14\x95\x82\x20\x30\x68\x04\x16\
\xb8\xa4\xcd\x72\x31\x28\x04\x93\xa7\x54\xa1\x98\x08\x14\x97\x81\
\x81\xa6\x4c\x1e\x32\x1e\x85\xe7\x7a\x9d\x92\x9f\xe1\xa1\x8a\xb4\
\x6e\x8b\xdc\xb3\xb7\xc8\x52\xf9\x9c\xa5\x82\x3c\xba\x2a\xe5\x18\
\x34\x6b\x5d\x28\x1c\x53\x78\x1f\x0c\x0c\x04\x0c\x1f\x1f\x7b\x13\
\x61\x1e\x03\x82\x35\x07\x0a\x18\x78\x63\x18\x04\x9b\x89\x9b\x8d\
\x51\x69\x02\x80\x93\x26\x03\x7a\x62\x54\x02\x18\x89\x9d\x8a\x18\
\x02\x69\x61\x8f\x0e\xa4\x25\x06\x9a\xb0\xb0\x54\x8c\x05\xbd\x0a\
\x89\xaf\x8f\x13\x8f\x14\x04\x15\x38\x6d\x29\x2a\xcb\xb7\x97\x90\
\x51\x13\x31\xca\x06\x1e\x1f\xc3\x1e\x1e\x8f\x02\x1f\x10\x37\x07\
\x06\x15\x29\x3e\x17\x07\x17\x7e\x06\x76\x8d\xd9\x63\xd8\x0d\x06\
\x17\x0e\x10\x11\x8f\xeb\xc3\x8d\xc7\x25\x29\x16\xe5\xb0\x15\x01\
\xd8\x05\x02\x24\x10\x90\x00\xdd\x87\x0d\xd6\xc4\x64\x1b\x46\xaf\
\x61\x81\x09\x05\xc2\x6c\x40\x60\xa0\x54\x02\x3f\x1c\xb0\x41\x52\
\xa8\xb0\xc0\x13\x06\xb0\xea\x69\xa4\xf7\x70\xa4\xb6\x0f\x48\xfe\
\xde\xa4\xa8\xa0\x2b\x0c\x95\x8d\x90\x34\x7e\x78\x45\x01\xa1\x87\
\x92\x0f\x71\x42\x9c\xf0\xe1\x01\x02\x06\x05\x64\xcc\xa9\x60\x20\
\x40\xcb\x90\x0a\x35\x62\x13\x56\xe6\x12\x4f\x0a\x0d\x6f\xf2\x64\
\x90\x0d\x03\x00\x0c\xf8\x66\xf8\xd0\x98\x14\xdb\x13\x2b\xeb\x70\
\x62\x3b\xa8\x09\xc1\xa5\x87\x1f\x28\x60\x23\xf0\xe0\x15\x86\x0d\
\x0a\x84\xaa\xa8\xf6\xd2\xeb\x98\x62\x8a\x08\x58\x7b\xa4\xf3\xc3\
\xa6\x07\x1b\x30\x34\x9a\xb9\x81\x82\x02\x04\x00\x36\x20\x32\x36\
\x42\x43\x90\x90\xf5\xfc\xe6\x9d\x2c\x06\xe2\xcd\x88\x0f\xdf\x6e\
\xda\x6c\x96\xc0\x5b\x04\x1f\x88\x4a\x78\x23\x64\xe4\x3a\x01\xad\
\x34\xa9\xa6\x8a\xd9\x72\xb1\x0f\x01\x02\x24\x32\x8c\x01\x03\x85\
\x00\x13\x08\x14\x48\xa9\x62\x81\x02\x02\x95\x35\x16\xd8\xb4\x4a\
\x41\x01\x0e\x05\x0e\x11\x80\x98\xa0\x57\x81\x04\x89\x02\x1c\x58\
\x70\xc8\x80\x85\xe1\x02\x16\x68\x91\x11\x68\x41\x82\x0f\x00\x85\
\x15\x48\xa4\x60\x8b\x08\x09\x07\x2a\xf0\xed\xd5\xdc\x79\xb7\x6f\
\xe1\x24\xb0\x70\x10\xa8\x04\x84\xe6\xe2\x6f\x42\x92\x94\x0f\xb9\
\xf3\x08\xcf\x3d\x11\x0e\x29\x01\x1c\x62\x99\x54\xcf\x1d\xfe\x31\
\x82\x0a\x03\x04\x11\x41\x04\xc8\x41\xa8\xc0\x06\x1b\x44\x30\x9a\
\x37\x6c\x18\x80\xc0\x06\xb0\x3c\xe7\xa1\x87\x44\x35\x11\x40\x84\
\xbd\x20\xc7\x01\x80\x33\x05\x90\x8f\x1c\x35\x0c\x80\x86\x73\xcc\
\x39\x57\xe2\x8c\x1c\x9c\x08\x61\x04\x1e\x3c\x28\x00\x3e\xf5\x21\
\x83\x1c\x58\x32\x16\x00\xe0\x89\xc7\xdd\x78\x63\x03\x11\x4c\x28\
\x98\x02\xfc\x4d\x22\x41\x05\x18\x00\x66\x9c\x90\x54\x0e\x79\x64\
\x04\x48\x36\xc0\x41\x81\x1b\x00\x16\x01\x1b\x82\x68\xb8\x01\x01\
\x39\x26\x60\xe5\x89\x27\x22\xc9\x81\x9a\x8f\xc4\xc6\x00\x06\x08\
\xa8\x18\xc7\x24\xbe\xe9\xe6\xd1\x2b\x42\xd6\x98\xe5\x96\x11\x8c\
\x58\xc0\x86\x50\xa4\xf5\x41\x93\xa4\x7c\xb3\x48\x4d\x00\x20\x70\
\x5c\x14\xc7\x05\xf0\x90\x02\x5b\x26\x80\x00\x60\x18\x4c\x30\x00\
\xa1\xb5\x94\xe3\x01\x85\x0f\x08\x80\xdc\x5b\xb0\x19\xe5\xd9\x04\
\x00\xbe\xa5\x89\x07\x0b\x62\x38\x67\x8f\x01\x10\x67\x18\x5b\x1c\
\x0a\xe9\x57\x6d\x7e\x1d\x57\x0c\x04\x3d\xd6\x22\xc2\x00\x1e\xdc\
\x16\x81\x67\x13\x29\x42\x81\x26\x0c\x20\xa0\x08\x39\x10\x98\x87\
\x4c\x17\x07\x68\xd0\x01\x04\x9c\xc4\xe6\x17\x05\x06\x2e\x0c\x50\
\xc0\x2a\x17\xa0\xb0\xec\x9c\xa9\x92\x30\xc0\x77\x11\x7c\x61\x89\
\x00\x32\x5c\x90\x40\x0c\x2b\x6a\x3b\xc9\x1a\x19\x0c\x80\xc4\x01\
\x8e\x4a\xd7\x81\x04\x42\xb1\xe8\x45\xba\x21\x00\x00\x21\xf9\x04\
\x08\x06\x00\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x00\x05\
\xfe\x20\x27\x8e\x64\x69\x9e\x07\x77\x38\x46\x76\x3c\x46\xea\x9e\
\x74\x6d\x73\x43\xf0\x5c\x9d\x10\x04\x12\x89\xc1\x40\xa8\xa4\x6e\
\x48\x9a\x25\x53\x11\x28\x3a\x0a\xa7\xc0\xa9\x88\x12\x2e\x0f\x63\
\x72\x8b\xeb\x78\xa3\x55\x2a\x58\x5a\x55\x5c\x52\x47\x95\xe8\xc8\
\x5e\xbb\xd5\x1c\x4b\xc0\x43\x16\x48\xa2\xd3\xe8\x5d\xe2\xec\xfc\
\x2e\x5c\x35\x07\x01\x1d\x1e\x60\x77\x02\x1e\x0d\x05\x8b\x1e\x86\
\x4f\x90\x02\x08\x19\x81\x28\x1e\x05\x63\x51\x18\x05\x8c\x9c\x8d\
\x02\x50\xa0\x4f\x67\x95\x25\x03\x8e\x55\x1d\x88\x9b\x9e\xac\x18\
\x76\xaa\x90\x66\xa5\x24\x06\x05\x74\x3d\x90\x13\x1e\x04\x04\x1b\
\x0a\x8b\x18\x1e\x77\xb1\x97\x0f\x37\x68\x2a\x16\x07\xc9\x06\x00\
\x14\x90\xa1\x1d\x0f\xcc\x07\x0b\x3c\x13\x5e\x12\xda\x4e\x15\x36\
\x07\x17\x1b\xcb\x06\x1d\x1b\x07\x19\x1b\x06\x1b\x86\xa0\xdb\xee\
\x12\x10\x06\x0e\x58\x10\xaa\xee\x5e\x0d\x1e\xde\x25\xcc\x67\x16\
\xbf\x1b\x2a\xfc\xf2\xb3\xa1\xc7\x3a\x01\x9b\xa0\xa8\x5a\x78\x6f\
\x1b\x81\x0e\x04\x24\x10\x50\x40\x01\x83\x01\x13\x07\x10\x94\x23\
\x24\x4b\x21\x14\x05\x08\x9e\xec\x6a\xa8\x4d\x5b\x44\x86\x7d\xfe\
\x04\x58\x18\x51\xcd\x82\x28\x85\xa2\x40\x79\x54\x85\x90\x4e\x82\
\x06\x25\x23\x3e\x84\x28\x11\x0a\x05\x00\x05\x08\x2c\x18\xf1\x6f\
\x03\xc7\x1e\x33\x4b\xde\xeb\x30\x41\x81\x84\x84\x12\x86\xe5\xbc\
\x73\x8b\x40\x01\x00\x09\x2a\x44\x58\x13\xa0\x4f\x34\x2f\xa1\x88\
\x2d\xe4\xf9\x05\x03\x86\x09\x05\xce\xf6\x9a\xd0\x40\x00\x01\x0f\
\xcf\xf2\x51\x10\x30\x54\xc5\x81\x0a\xec\xc0\xd2\x5c\xc4\xd7\x50\
\x07\x04\x27\x23\x22\xfc\x09\xe0\xac\x93\x02\x15\x81\x01\x78\x96\
\x28\xc0\x56\x0e\xea\x26\xea\x0d\xa2\x88\x93\x65\x4e\x4e\x21\x42\
\x7c\xb8\x2d\x41\xc5\xcb\x09\x80\x22\xde\x14\x60\x40\x04\x34\x04\
\xfa\x94\xec\xd1\x29\x58\xa7\x02\x3c\x1f\xf6\x4a\x84\x13\x82\x02\
\x46\x97\x36\x15\x19\x36\x80\xc4\x01\xab\x4a\x55\x35\xd8\xd4\xd6\
\xd7\xdb\x45\x12\x09\x00\x06\x8c\x21\x41\x07\xd3\x10\x60\x1f\x30\
\xd0\xa0\x01\xb5\x01\x75\x47\x0c\xb0\x3d\x56\x27\xe6\x18\x22\x4e\
\x57\x78\xa2\xbc\x57\x2f\x55\xfb\x72\x38\x50\x61\x80\xd4\x09\x42\
\xdb\xc8\x72\x7e\x6e\x02\x1d\x01\x08\xbd\x20\x40\x58\x4e\x0d\x49\
\x9b\x00\x69\x39\xd4\xd3\x43\x01\x64\x97\xc2\x00\x15\xe4\xfe\x77\
\xdf\x7d\x02\x24\x80\x01\x04\x2c\xa1\x60\x82\x2d\x09\x80\x24\x1b\
\x60\xe6\x55\xd0\x9e\x01\x01\x6c\x60\x1c\x7e\x1b\x78\x48\x11\x06\
\x01\xa4\xc1\x0f\x0d\x0b\x80\xd5\x0b\x86\xe5\x99\xe7\xe2\x06\x10\
\xc0\x08\x63\x8c\x1e\xea\xe3\xdb\x1b\x34\x1c\x60\xdb\x2e\x18\xb2\
\x08\xa2\x87\x21\xc6\xc8\x00\x04\x0c\xfc\x82\xc1\x36\x1e\xac\x07\
\x47\x12\x11\x6c\xf0\x53\x02\xc9\xe1\xa7\x9f\x2f\x34\x12\x69\xe5\
\x06\x0c\x10\x10\x1a\x56\x5a\x94\x62\x0b\x06\x0a\x28\xd7\x81\x94\
\x30\x52\x39\x24\x96\x31\xde\xb7\x01\x02\x9e\x59\x44\x0b\x07\x0b\
\x44\x85\x00\x02\xcd\x29\x10\xa3\x90\x56\x06\x00\x81\x9e\x14\x4d\
\x80\x1f\x27\x13\xac\xf4\x66\x05\x12\x0c\x07\x00\x00\x02\xd4\x08\
\x4f\x91\x3a\x85\xe8\xc1\x4f\x9c\x30\x10\x80\x01\x8f\x99\xc8\xc5\
\x29\x14\x50\x10\x14\x04\x70\x61\x40\x80\x9e\x9c\x78\xc0\x67\xa6\
\x66\x5d\xb4\x24\x2d\xbf\x85\x3a\x81\x00\x87\x26\x80\x40\x41\x9c\
\x24\xe0\x01\x8f\x68\x15\x00\xc8\x9b\xa6\x40\x64\xc0\x25\x9e\x31\
\x82\xd6\x4d\x66\x15\x20\xc1\x02\x1a\x48\xf0\xc0\x63\xdf\xbc\x61\
\xa9\x1a\x07\x44\x90\x22\x27\x04\x90\xa3\x9b\x01\x15\x29\x40\x6b\
\xe2\xb2\xb8\xaa\x70\xc1\x44\x1a\x70\x00\x20\x06\xc7\xfc\xd6\x01\
\x78\x49\x60\x7b\xaa\xa5\x11\x64\x20\xe8\x00\xca\xf5\x06\x67\xb3\
\x11\x96\x8b\xa3\x08\x21\x00\x00\x21\xf9\x04\x08\x06\x00\x00\x00\
\x2c\x00\x00\x00\x00\x31\x00\x24\x00\x84\xac\xba\xb4\xdc\xde\xd4\
\xc4\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\xd4\xd6\xcc\xe4\xe6\xdc\xf4\
\xf6\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\xce\xc4\xf4\xf2\xe4\xc4\xc6\
\xbc\xdc\xda\xd4\xec\xea\xdc\xb4\xba\xb4\xe4\xe2\xdc\xd4\xda\xcc\
\xfc\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\xdc\xe2\xd4\xec\xf2\xe4\xe4\
\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\xea\xe4\xb4\xbe\xb4\xd4\xda\
\xd4\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\xc4\x05\xfe\x60\x27\x8e\x64\
\x69\x9e\x47\x77\x18\xce\x31\x04\x83\xba\x48\x67\x6d\xdf\x6e\x35\
\x18\xc2\x04\x45\x82\x82\x21\x90\xb8\xa8\x6e\x48\xdc\xa1\xd0\xf3\
\x28\x04\x8a\xa7\x62\xf2\x6c\x18\x38\x86\x54\x2a\x99\x3c\x68\x3c\
\x05\xaa\x74\x0c\x85\x4e\x05\x9e\xc1\x76\xb4\x6d\x8b\xdc\xc7\xf8\
\x81\xf3\x29\x47\xcb\x02\xf3\x58\xe1\x89\x14\x8c\x5c\x38\x01\x1e\
\x66\x76\x1f\x0c\x0c\x04\x0c\x75\x7c\x68\x51\x1f\x05\x6b\x81\x26\
\x16\x1f\x04\x7b\x02\x18\x04\x9b\x9c\x89\x1e\x54\x13\x84\x42\x92\
\x93\x23\x03\x87\x50\x84\x84\x9a\x89\x0c\x9a\x04\x18\x1f\xa1\x54\
\x84\x1f\x80\xa5\x24\x17\x1f\x1f\x4e\xb4\x0a\xbb\x05\x05\x1c\xbf\
\xb0\x53\x7c\x13\x13\x87\x06\x48\x5a\x2a\x07\xcf\x47\x15\x1b\x1b\
\xa9\xc6\x13\x15\x19\xcf\x19\x17\x1e\xb2\x1e\x9f\xc7\x1e\x15\x35\
\x5b\x16\x58\x07\x16\xdf\x6a\x17\x15\x1c\xb1\x8d\xdf\xb4\x01\x06\
\x17\x0e\x3f\xb3\xdf\xdf\x18\x18\x01\x26\xcf\x17\x6a\x2a\xa0\x09\
\xc0\xc1\x09\x87\x0a\xb5\x30\x28\xd8\x04\x2e\xde\xa7\x87\xa1\x20\
\x7e\xda\xb4\xac\xc4\x9c\x6f\x1c\x0a\x38\xf9\xc6\x67\xe3\xaf\x0f\
\x4f\x14\x7a\x48\x80\x2f\xe2\x84\x30\x60\xfe\x26\x24\xf8\x40\x81\
\x4a\x8c\x37\x2e\xe6\x38\xf2\x98\xaf\x66\xbe\x58\x13\x14\x3d\x4c\
\xa9\x31\x65\x4a\x0c\x0f\x36\x78\x58\x63\xce\x43\xc1\x8d\x68\xf2\
\x21\x2b\xf9\x89\xa5\x07\x02\x1b\xf8\x44\x89\x17\x2a\x0c\x2c\x2a\
\x1b\x30\x54\xa0\xa1\xe2\xd4\xcc\x8e\x54\xec\x28\x05\x03\xf1\x03\
\x82\x3a\x08\x28\x28\x08\x93\x48\x23\x02\x00\x9a\x30\x30\x78\xe9\
\xc2\x80\x54\x89\x02\x0e\x6d\xb2\xd4\x31\x8c\xc6\x02\x87\x36\x3c\
\x08\x4a\x40\xd6\x07\xa0\x14\x3e\x08\xde\xa0\x76\x9c\x08\x03\x35\
\xf1\x3d\x49\xb4\x89\x32\x83\x1e\x09\xc8\xa2\x9c\x80\x21\xeb\x2b\
\x58\x0f\x5e\x21\xc0\x50\x20\xdb\x1b\xc0\x53\xf0\x6e\x92\x1b\xb7\
\x32\x98\x02\x09\x82\x91\x4c\x46\xc0\xea\x22\x0a\x1b\x2e\x41\xf8\
\x74\xab\x83\x84\x0a\x04\x24\x7e\x6a\x75\x49\x18\x93\x44\x2a\x65\
\x07\x83\x45\xa1\x82\x17\x4b\x06\x16\x24\x60\x90\x60\xc1\x81\x0c\
\x71\x3a\x5c\xd0\x88\xcf\xef\x61\x05\x59\x60\x42\x50\x10\x1b\xb6\
\x6c\x05\x0c\xb6\xaa\xa8\x10\x20\xc5\x0e\xec\x27\x02\xa4\x4a\x19\
\xbb\xd7\x4b\x12\x07\xfc\x98\x0f\x16\x2c\x82\x63\x2e\x5b\x04\xd0\
\x59\x44\x28\xc1\x16\xc0\x02\x6c\x74\xfe\x60\x41\x00\xfc\xf9\x11\
\x41\x04\x39\x7d\xd0\x0f\x0e\x26\x9c\x42\xc1\x6b\xaf\xc5\x96\x80\
\x7f\xf4\x0c\x11\x4c\x46\x1c\xf8\x91\x11\x03\x00\x3c\xc0\x41\x76\
\xf8\xd5\x30\x00\x6c\x55\x69\xc8\x1f\x7f\x19\x09\x13\x41\x88\xc2\
\x70\xd0\x80\x1f\x0b\x4d\x68\x11\x0e\x05\xb8\x42\xc1\x7e\x2f\x82\
\x28\xa3\x8c\x37\x42\xa8\x00\x07\x09\x50\x50\xd1\x1b\x5c\x48\x10\
\xc1\x60\xb5\xf1\xb7\xa1\x88\x05\xcc\x38\xe3\x8d\x0d\x70\x30\x88\
\x60\x08\x10\xd0\x1e\x2e\x8f\x11\x10\x04\x13\x53\xca\x68\x25\x96\
\x11\x04\xf0\x20\x83\x04\x04\x35\x57\x82\x93\x64\x90\x8c\x07\x14\
\x84\xd6\x47\x88\x59\x46\x90\xa5\x9a\x44\x1c\x96\xa6\x02\x9a\x7c\
\x00\x1f\x98\xda\x15\x00\xd4\x03\xb5\x35\xf0\x4b\x02\x45\x92\xd4\
\xc0\x20\x08\x84\xc6\xd2\x30\x8e\x91\x32\x89\x01\x04\x8c\x26\x00\
\x84\xd3\x50\x10\x80\x7c\x6d\x85\xd8\x66\x6e\x1f\x3c\xc3\x15\xa1\
\x22\xc8\x49\x00\x05\x79\x01\xb5\xc1\x07\x7e\x24\x82\x01\xab\x89\
\x99\xb5\x2a\x1c\x36\xc0\x21\x89\x0b\x7f\x04\x90\xe9\x06\x08\x2c\
\x02\xcb\x6a\xab\x42\x70\x00\x15\xff\xa1\x7a\x82\x06\x89\x7c\x60\
\x00\x70\xb0\xcc\x13\xa1\x11\xd7\x25\x05\x62\xe9\x8e\x6c\x20\xd4\
\x4f\x06\xae\x28\x90\x42\x05\x90\xdc\x97\x22\x33\x4c\xde\x20\x01\
\x34\x1d\x64\x34\xe1\x01\x0b\xcc\x00\x67\xae\x48\x84\x00\x00\x21\
\xf9\x04\x08\x06\x00\x00\x00\x2c\x00\x00\x00\x00\x31\x00\x24\x00\
\x84\xac\xba\xb4\xdc\xde\xd4\xc4\xce\xc4\xec\xee\xe4\xbc\xc6\xbc\
\xd4\xd6\xcc\xe4\xe6\xdc\xf4\xf6\xec\xbc\xc2\xb4\xcc\xd6\xcc\xcc\
\xce\xc4\xf4\xf2\xe4\xc4\xc6\xbc\xdc\xda\xd4\xec\xea\xdc\xb4\xba\
\xb4\xe4\xe2\xdc\xd4\xda\xcc\xfc\xf6\xec\xcc\xd2\xc4\xc4\xca\xbc\
\xdc\xe2\xd4\xec\xf2\xe4\xe4\xea\xdc\xbc\xc2\xbc\xf4\xf2\xec\xec\
\xea\xe4\xb4\xbe\xb4\xd4\xda\xd4\xfc\xfa\xec\xcc\xd2\xcc\xc4\xca\
\xc4\x05\xfe\x60\x27\x8e\x64\x69\x9e\xa2\x75\x2d\x87\x11\x1c\xd2\
\xb2\xa0\x74\x8d\x1e\x9a\x31\x34\x42\x51\x79\x8a\x40\x25\x51\xb0\
\x1c\x32\xb6\xe4\x2d\x33\xe9\x4d\x14\x50\x81\x42\x00\x54\x54\x02\
\x11\xc3\x41\xb4\x55\xd6\x0e\x83\x02\x47\x4a\x9e\x42\xcd\x64\x41\
\xc3\x92\xe9\x72\xdf\x9d\xae\x1c\x2e\x2f\x7c\xa4\x66\xb4\x00\x5f\
\x55\x78\x0a\x1e\x03\x5e\x5f\x3f\x1f\x79\x7b\x1f\x0c\x04\x0c\x8a\
\x64\x1e\x02\x4f\x1f\x15\x83\x34\x16\x1f\x77\x51\x8f\x18\x04\x8b\
\x9c\x9d\x40\x4f\x8f\x05\x2f\x94\x26\x03\x9c\x7e\x52\x1e\x1f\x9d\
\x9e\x8a\x18\x54\x7e\x0a\x13\x97\x17\xa5\x24\x07\x17\x0a\x86\x1e\
\xa1\x0a\x14\x1f\x05\xc2\xbb\x04\xb0\x13\xbd\xbd\x7b\x1a\x49\x07\
\x72\xcd\x5d\x10\x1b\x1b\x78\xb1\x1e\x15\x6d\x47\xba\x1f\x40\xdc\
\x55\x01\x37\x5b\x07\x15\x1c\x03\x07\x1c\x1e\x1c\x07\x16\x06\x1c\
\x1b\x04\x7e\x1e\xc8\x7e\x01\x06\x0e\x17\x10\x1c\xc7\xfa\xc7\x18\
\x1b\xdf\x26\x2d\xb4\x5c\x88\xc7\x81\x43\x02\x0f\x09\xf0\x79\x28\
\x76\xe9\x1d\xb2\x7d\xf1\x7a\x01\x9a\x00\x28\x19\x05\x03\x00\x07\
\x50\x49\xc0\x01\x4a\x3c\x8f\x55\x12\x6d\xc3\xb0\x4d\x1f\x32\x89\
\x28\xfe\x29\x52\x20\x39\x41\x10\x97\x75\x03\x0c\x3c\x92\xf5\x28\
\x22\xbc\x88\x1e\x28\x30\x78\xc4\xe0\x58\xbc\x02\xfa\x26\x16\xf0\
\x43\xe1\xc1\x86\x09\x6e\xcc\x51\xa9\x99\xea\xe3\x43\x93\x4d\x60\
\x31\x00\xc0\x20\xc1\x84\xab\x7f\x80\x00\xa2\xb0\x61\xe4\x86\x49\
\x5c\x0e\xcc\xc4\x69\x13\x8a\x4f\x64\x40\xe5\x6d\xa0\xe0\x41\x51\
\x30\x5a\x18\x14\x24\x98\xfa\x40\x11\x85\x65\x71\x2a\x54\x18\xea\
\xf4\xc9\x2f\x57\x77\xd2\x12\xf9\xa3\xa0\x18\x00\x69\x8a\xa0\x10\
\xd8\x80\x80\x95\x51\x02\x05\x20\x8c\x90\x79\xf3\x21\xab\x56\x9c\
\x18\xbc\x05\x5a\xc0\xea\x94\x7e\x1b\x30\x6c\xe2\xf4\x98\x42\x31\
\x05\x33\xc2\x55\x60\x50\x4d\x9f\x00\x45\x99\x45\x7b\xa2\xf8\x87\
\x48\xe7\x02\x02\x10\x10\x5d\x54\x18\x03\x83\x00\x10\x26\x68\x19\
\x21\xa1\x82\xaa\x78\x3e\x61\x33\xf0\xc3\x01\xb7\xa2\x3f\xb7\x3b\
\x33\x60\xb9\x20\x43\x01\xc8\x19\x20\x10\x10\xe0\xa0\x59\x09\x99\
\x11\x8f\x71\x46\x35\x5c\x44\x76\xb9\xc2\xd2\x17\x58\xd9\x20\x9c\
\x03\x7a\x71\x06\xb0\x38\x11\xe0\x03\xdb\x89\x83\x8f\xb9\xc4\x15\
\x41\x98\xed\xfe\x09\x24\xe4\x86\x17\xda\x1d\x95\x15\x20\x80\x04\
\xfe\x30\xc3\x1b\x03\xec\x55\x40\x7f\x11\xf4\x07\x8a\x01\x12\x8c\
\x30\x47\x09\x6e\x0c\x30\x0b\x82\x14\x45\xe7\x83\x01\x17\xb8\xd0\
\x5c\x7f\xcd\x71\x10\x01\x07\x04\x18\x15\x01\x1c\x18\x9e\x60\xc1\
\x50\x54\xf8\x27\xa3\x7a\xc2\x94\x18\xa1\x89\xcd\x15\xe6\xcf\x2d\
\x19\x78\x80\x40\x57\xd1\xd9\xd6\x59\x41\x36\x9e\x18\x41\x03\x10\
\xe6\xc3\x80\x2d\xb7\x44\x10\x9a\x02\xea\x25\x19\xa1\x18\x27\x22\
\xd9\x80\x89\x0a\x18\xb5\x4b\x11\xb7\x74\x60\xc0\x4e\x11\x08\xf0\
\x41\x02\x24\x3e\x68\xa2\x95\x11\x62\x11\x40\x47\x1b\x1c\xf6\xc1\
\x80\x94\xf4\x28\x26\x02\x54\xdd\x78\xe4\x91\x1c\xa8\xd9\x5c\x4f\
\x6b\x16\x13\xd7\x85\x94\x58\xa0\xc0\x06\x46\x4d\xd0\xdc\x3b\x54\
\x02\x15\x01\x16\x1f\x48\x83\x06\x05\x60\x75\x29\x42\x00\xa2\xed\
\x54\x00\x06\x46\x8d\x92\x00\x2a\x0d\x04\x20\x00\xa1\x9b\x44\xb0\
\x40\x79\x92\x76\x20\x28\x01\x39\x2d\xf6\x00\x06\x64\x2a\x50\xa9\
\x14\xaf\x14\xc3\x41\x8b\x27\x5c\x08\x67\x07\x31\x2d\x20\x00\x06\
\x3f\x12\xa0\x53\x31\xc0\xa2\xea\x40\x05\xef\x60\x64\xc3\xad\x5f\
\x34\xc0\x49\x03\x03\x2c\x84\xc1\x04\xf8\xac\x54\xc0\x16\x06\x25\
\x2c\x18\x47\xa9\xd7\x8e\x60\x41\x00\x05\xcc\x80\x22\x03\x93\x2c\
\x30\x05\x29\x16\x7e\x51\x6e\xb6\xb7\x26\x25\x42\x18\xe4\xc4\x57\
\x0e\xb6\x26\x84\x00\x00\x3b\
\x00\x00\x09\xd9\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\
\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\
\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\
\x79\x71\xc9\x65\x3c\x00\x00\x09\x6b\x49\x44\x41\x54\x78\xda\x62\
\xfc\xff\xff\x3f\xc3\x40\x02\x80\x00\x62\x62\x18\x60\x00\x10\x40\
\x03\xee\x00\x80\x00\x62\x24\x46\xd1\xc1\x54\x06\x81\xbf\xff\x19\
\x1c\xff\xfe\x63\x70\x00\x72\x0d\x80\x9a\xec\x98\x39\xb8\x18\xb8\
\x25\x65\x18\x40\x51\xf8\xff\xdf\x7f\x86\x37\xf7\xee\x30\x00\xd5\
\x7c\xfc\xf3\x8f\xe1\xd2\x9f\x3f\x0c\x87\xbe\xfc\x62\xd8\x98\xbc\
\x9e\xe1\x1c\x50\xfd\x3f\x20\xc6\x19\xcf\x00\x01\x84\xd7\x01\x87\
\xd2\x18\x14\x80\x86\x36\x00\x99\x01\x22\x06\x01\xfc\xfc\x6a\xf6\
\x0c\x0f\xb9\xad\x18\xfe\x88\x18\x30\x28\x08\xb3\x31\x28\x08\x21\
\x29\xfe\xf7\x93\xe1\xf7\xa7\x07\x0c\x1f\x1f\x9c\x67\x78\x76\x6e\
\x07\xc3\xd3\xd3\x1b\x18\x3e\xbe\xff\x78\xf9\xdb\x2f\x86\xa9\x40\
\x87\xcc\x03\xaa\xf8\x83\xcd\x21\x00\x01\x84\xd5\x01\x87\xd3\x81\
\x16\xff\x63\x68\x60\xe5\xe2\x8f\x97\x76\xce\x65\x00\x61\x16\x4e\
\x41\x86\x5d\x37\x59\x18\x6c\x95\x11\x5a\x0e\xdf\x63\x60\x70\x53\
\xff\x87\x30\xe6\xcb\x47\x06\x86\x97\x0f\x20\x6c\x51\x71\x86\x57\
\xb7\xf7\x31\x5c\x59\xd7\xc9\xf0\xec\xe6\xe5\xc7\x6f\xbe\x31\xa4\
\x17\x6e\x67\xd8\x0d\x94\xf9\x8b\xec\x10\x80\x00\x62\xc6\x08\xee\
\x34\x86\x40\x20\xb5\x5d\xde\xb7\xc2\x42\x33\x65\x3e\x83\x90\x96\
\x13\x03\x13\x0b\x0b\xc3\x86\x2b\x0c\x0c\x97\x5f\xb1\x31\x7c\x03\
\x6a\xbd\xff\x09\x88\x3f\x30\x30\x5c\x7c\xc2\xc0\xc0\xc3\xfc\x9d\
\x41\x82\xe7\x17\x03\xc3\x0b\xa0\x6b\x5e\x3d\x63\x60\x50\xd4\x65\
\x60\xe0\x17\x65\x60\xf8\xf9\x93\x81\x85\x47\x86\x41\xd5\x33\x83\
\x41\x50\x42\x8c\xff\xfd\xf5\x03\xd1\x8e\x72\x7f\x39\xb7\xdd\x66\
\x38\x8c\x1c\x2d\x00\x01\xc4\x8c\x66\xf9\x04\x56\x2e\xbe\x7e\xfd\
\xb2\x6d\x1c\x62\x26\xfe\x40\x8b\x81\xd2\xff\x81\x21\xf7\xff\x37\
\xc3\xca\xeb\xac\x0c\xab\x5e\xb2\x31\x7c\xe6\x64\x60\xb8\x0b\x14\
\xba\xfa\x99\x81\x61\x07\xd0\xb3\x16\x02\xaf\x18\x54\x85\x80\x02\
\x9b\x66\x31\x30\x08\x8b\x33\x30\xbc\x05\x0a\xbe\x01\xe2\xf7\x2f\
\x18\xfe\x9f\xda\xce\xc0\xac\x69\xc8\xc0\x2f\x6b\xc0\xa0\x66\x17\
\xc8\xf0\xea\xfc\x16\x6b\x6b\xf1\x2f\xaa\xdb\x6f\x33\x6c\x85\x85\
\x04\x40\x00\x31\x23\x5b\xce\x23\xa3\x95\x6f\x54\xb5\x9d\x81\x43\
\x48\x02\x6c\x29\x1c\xff\xfb\xcd\xf0\x01\x98\xd8\x26\xbd\xe5\x61\
\x78\xc5\xc3\xc0\xc0\xc2\xc1\xc0\xb0\xfb\x2b\x03\xc3\xa3\x2f\x0c\
\x0c\xb9\xf2\x2f\x19\x64\xb8\x81\x21\xb0\xad\x17\xe8\x6b\xa0\xc5\
\xbf\x9f\x32\x30\x7c\xba\xc5\xc0\xf0\xec\x02\x03\xf3\x9e\x79\x0c\
\xdf\x6d\x42\x19\x58\x99\xfe\x32\x30\xb3\x71\x32\x28\x99\x38\x31\
\x3c\xbf\xb0\x53\xc7\x4c\xe4\xab\xf8\xae\xbb\x0c\x7b\x41\x8e\x00\
\x08\x20\xb0\x03\x0e\xa4\x32\x24\x72\x0a\x4b\xb7\xeb\x64\xcf\x61\
\xb8\xbb\xbe\x8b\xe1\xd2\xf4\x74\x86\x7b\x9b\x27\x32\xdc\x01\xe2\
\x4f\x8f\xae\x30\x70\x8b\x49\x33\xe8\x4b\xb3\x33\x5c\xfc\xc9\xc2\
\x60\x23\xc6\xc5\x90\x22\xc9\xc0\xf0\x04\xe8\x69\x13\x8e\x67\x0c\
\xf9\x8a\x6f\x81\xc6\xfc\x60\x60\x78\xb0\x9f\x81\xe1\xdd\x4e\x06\
\x06\x6e\xa0\xc4\xbf\x97\x40\xd7\x6d\x67\xf8\xc9\x25\xce\xc0\x6c\
\xe2\xcb\xc0\xfc\xff\x17\x58\x0d\x33\x2b\x07\x83\xb2\xbe\x11\xc3\
\xed\xc3\x9b\x8d\x54\x05\xff\x9d\x3b\xfe\x98\xe1\x1e\x40\x00\x31\
\x03\x7d\x2e\x00\x4c\x42\xdb\xf5\x0a\xe6\x70\x5c\x9d\x5b\xc2\x70\
\xe5\xc4\x91\xa5\x2d\xfb\x19\x32\x3b\x0f\x31\xf4\xdc\x7e\xcb\xb0\
\x48\xec\xe7\xfd\x37\x5f\x2f\xef\xb0\x55\x76\x0e\x65\x08\x13\x7c\
\xc9\x20\xc9\xf0\x81\x81\xf7\xdf\x67\x06\x0f\xc6\xeb\x0c\xa9\x12\
\x2f\x18\x18\x81\xa9\x9f\xe1\x1f\xd0\x01\x22\x52\x0c\x0c\xdf\x80\
\x3e\x37\x28\x60\x60\x10\x33\x01\x46\xc1\x79\x86\x1f\xda\x61\x0c\
\x9c\x22\xd2\x0c\x0c\x9f\x81\x21\xf3\x05\xe8\xa8\x6f\xaf\x80\x21\
\xc1\xcd\x20\xc0\xcf\xca\xf0\xe2\xc6\x25\xeb\x1d\x77\x18\xe6\x01\
\x04\x10\x73\x9c\x21\x43\xa5\x84\x85\x97\xbb\x94\xb5\x0f\xc3\xf5\
\x65\x5d\x0c\x81\x4b\x18\x62\x9e\x7d\x66\x78\x0d\x0c\x98\x77\x4f\
\x3f\x31\xbc\xda\x72\x93\xe1\x78\x90\xfa\x2f\x5f\x29\x1d\x23\x31\
\x4e\x1e\x6e\x06\x09\xc6\x4f\x0c\x62\x40\x69\x11\x96\x6f\x10\xcb\
\xff\x7e\x87\x84\x00\x3b\x17\xc3\x3f\x29\x4b\x86\x5f\xc0\xe4\xf5\
\xfb\xf7\x6f\x86\x9f\xa2\xa6\x0c\x3c\xd2\xca\x40\x53\x6e\x00\x1d\
\x67\xc1\xc0\x20\x69\xc3\xc0\x20\xa8\x05\x54\x27\xcc\xc0\xcf\xf0\
\x8c\xe1\xd9\xf5\x93\x7c\xf2\xdc\xbf\xdf\x00\x04\x10\x0b\xd0\xa2\
\x3c\x05\xf7\x28\x60\x2e\xfd\xc2\x20\x69\xea\xc2\xb0\xee\xe7\x9e\
\xb9\xaf\xbf\x32\x4c\xe5\x63\x67\x78\xc6\xca\xcc\xc0\xc7\xcc\xc8\
\x10\x27\x20\x2d\xaf\xcd\x2f\x26\xc2\xc0\xf0\x0b\x98\xcd\xfe\x03\
\x6d\xf8\xf7\x0f\x42\x83\xea\x11\x38\xff\x3f\x03\x13\x10\xb3\x33\
\x03\xc5\x98\x80\x7c\x36\x60\xec\xfe\x00\x46\xcf\x8b\x93\x40\x8b\
\x81\x0e\x79\x7b\x0f\x92\xd8\x80\x31\xf4\xf7\xed\x0d\x06\x15\x6d\
\x4d\x86\xeb\x0f\xce\xb8\x03\x04\x10\x0b\xb7\x94\xa2\x00\x07\x3f\
\x37\x50\xe2\x33\x83\x76\x38\xb0\xc8\x53\x50\x36\x7d\x7c\xea\xe0\
\x02\x50\xe9\x06\x2a\xe5\x24\xb4\x0c\x18\x64\x8d\x2c\x81\x96\x7f\
\x80\x5a\xf4\x17\xe1\x80\x7f\x68\x8e\x81\xb3\x91\xf9\xe7\x19\x18\
\xbe\x02\x1d\x22\xa4\x08\x71\xc0\xcf\xf7\x0c\xac\xdf\x77\x33\xc8\
\xc9\xd8\x80\xdc\x68\x06\x10\x40\x2c\xcc\xec\x1c\x60\xcb\x19\xfe\
\x82\x12\xcf\x5f\x06\x69\x03\x43\x06\x69\x3d\x3d\x30\x1b\x82\x41\
\xe2\xc0\x44\xf4\xeb\x3b\x94\xff\x0f\x41\xc3\x1c\x03\x77\xd0\x5f\
\xa8\xc5\x7f\x11\xa1\xc3\xcf\xce\xc0\xc0\x77\x02\x98\x38\x7f\x43\
\xaa\x9e\x7f\x67\x18\xbe\xf3\xf2\x32\x70\x31\xb2\x31\xb0\xb3\x32\
\xf2\x02\x04\x10\xcb\x9b\xdb\xd7\x19\xfe\x7c\x7a\xc5\xc0\xc2\xc6\
\x0a\xb1\x0c\xec\x10\x88\x63\x60\x8e\x82\xf3\xb1\x62\x1c\x0e\x82\
\xf1\x19\x54\x81\x05\x25\xd0\x62\xb6\x34\x20\xcd\x0c\x4c\xaf\x2f\
\x19\x7e\x7c\x14\x60\x10\xfc\xff\x8e\x41\x54\x80\x99\x01\x20\x80\
\x58\x7e\xfc\x61\x98\x7a\x66\xc1\x8c\x6c\xe3\xe8\x78\x06\x56\x56\
\x16\x70\x9e\x87\x3b\x02\x4c\x43\xf9\x7f\x7f\xa3\x3a\x10\xc6\x47\
\x71\x28\x12\xfe\x8f\x70\xdc\xbf\xe3\x7c\x0c\xbf\xf9\x56\x00\x99\
\xff\x19\xfe\xbe\xe7\x62\x10\x64\x02\x86\xe8\xef\xf7\x40\xe9\xff\
\x0c\x00\x01\xc4\xbc\xe2\x12\xc3\x5e\x67\xb1\x77\xe2\xcf\xce\x1c\
\x37\xfe\xfc\xea\x15\x03\x2b\x30\x24\xb8\x78\xb9\x51\x2d\x47\x71\
\x04\x88\xfd\x0b\x4a\x03\xf1\x1f\x50\x1e\x07\xe6\x86\x3f\x3f\xa1\
\xf4\x77\x08\xfe\xfd\x0d\x88\x81\xa5\xd5\xaf\xaf\x0c\x17\x81\x0e\
\x05\xd6\x90\x0c\xac\xef\x6e\x31\xf0\x01\x13\x3b\xc3\xcf\x4f\x60\
\xbc\xe9\xe4\x4f\x06\x80\x00\x02\x15\x44\xff\xd7\x5e\x65\xd8\xc3\
\xcb\xf2\x67\xd3\xcf\xd7\x2f\x5e\x3f\xbf\x7c\x51\xf4\xf1\xc5\xcb\
\x22\xac\x6c\x2c\x0c\x02\xa2\x02\x10\x4b\xf0\x3a\x06\x29\x64\xd0\
\xc4\x3e\x00\x1d\x75\xd9\xa8\x96\x41\xcf\x6e\x1a\x03\x9f\x66\x12\
\xc3\x37\xa5\x20\x86\x5f\xf7\x36\x32\x70\x02\xcb\x83\x1f\x3f\x7e\
\x32\x1c\xba\xfe\xff\x33\x40\x00\x31\x43\x2b\x85\xbf\x67\x9e\x32\
\xbc\xde\x7e\x8b\xe1\x14\xd0\x31\x4b\xe5\xb9\x7e\x9e\xfb\xfa\xe8\
\xae\xf6\x9b\x47\x4f\x44\xc4\xa5\x45\x19\xd8\x58\x19\x11\xc1\x8e\
\x35\x5a\xb0\x3b\x26\xf3\xeb\x6b\x06\x35\xdd\x54\x86\x87\x3f\x1e\
\x32\x3c\xfc\xfe\x90\xe1\x25\x30\x27\x6d\xf9\xfc\x86\xc1\xea\xf5\
\x05\x86\x7b\x2f\xfe\x31\x9c\x7b\xc0\x70\x05\x20\x80\x60\x75\xc1\
\x7f\x68\xe5\xf0\x0b\x94\x51\x8e\x3c\x64\xb8\xb3\xe1\x3a\xc3\x62\
\x13\xa1\x2f\xec\x4f\xae\xdf\xb1\x90\x92\x17\x65\xe0\x64\x67\x46\
\x58\x82\x25\x44\x3e\xbf\x17\x63\x78\xfb\x52\x85\x81\x9d\xe5\x1d\
\x03\x33\xe3\x17\xb0\xba\x89\x5c\x9f\x19\xee\x88\xfc\x60\x78\xca\
\xf1\x94\xe1\x16\xe3\x2d\x86\x2b\x3f\xae\x30\xcc\x78\xb2\x96\xa1\
\xe0\xcd\x4f\x86\x93\x77\xfe\x33\x5c\x7d\xce\xb0\x14\x20\x80\xd0\
\xab\x63\x98\x43\x40\x8d\x87\x5f\xc0\x5a\xeb\x90\x99\xe4\xdf\xd7\
\x2f\xef\x3e\xf2\x50\x52\x91\x60\x60\x03\x15\x5b\x70\x9f\x22\x1c\
\xf3\x86\xad\x88\x81\xcb\xbd\x93\x41\xc0\x2e\x80\xe1\xaf\x6c\x04\
\xc3\xdf\xc7\xa7\x19\x58\x7e\xde\x67\xd8\x28\xfe\x9d\x61\xad\xc2\
\x25\x86\x4f\xc2\x9f\x18\x9e\x72\x3e\x65\xd8\xf9\x7f\x27\x83\xc0\
\xc7\xaf\x0c\x69\x0f\x19\x18\x76\x5d\x02\x36\x78\x1e\x31\x34\x01\
\x04\x10\x33\x9e\x06\x11\xa8\xce\xfe\xb3\xe7\x2e\xc3\x05\x5b\xd9\
\x7f\x1c\x9f\xdf\x7e\xb4\x52\x53\x13\xc5\xf0\xfd\xcd\x4b\xde\x0c\
\x8c\xba\xf9\x0c\xbf\x81\xe9\xef\xeb\x1b\x60\xe1\xf7\x85\x9d\xe1\
\xc9\x73\x77\x06\x91\x1f\x7d\x0c\x9a\xbf\xff\x33\xec\xd2\x11\x60\
\x48\x65\xcf\x61\x30\x63\x34\x63\xb8\xc0\x76\x81\xa1\xee\xe0\x67\
\x06\x96\xdb\xc0\xb6\xc4\x23\x86\xb3\xcb\xae\x30\xcc\x03\x08\x20\
\x66\x02\xcd\x41\x70\x88\xec\xbc\xc3\x70\xd8\x4a\xfc\x7b\x00\x3f\
\x0f\xab\x98\x88\x20\x1b\x4a\x7a\x78\xfc\xd0\x81\xe1\xe9\x63\x33\
\xb0\x62\x90\x03\x3e\xbf\x00\xb6\x17\x0e\x72\x30\x70\xff\x3b\xc0\
\xa0\xce\x72\x8f\x21\xe0\xd6\x2f\x06\xf6\x2f\x8c\x0c\x22\xf7\xef\
\x33\x44\xec\xbb\xca\xe0\xf8\xe6\x0f\xc3\xda\x93\xff\x19\x8e\x3f\
\x61\x28\xbc\xf3\x9e\xe1\x01\x40\x00\xb1\x10\xd1\x26\x05\x39\xe2\
\xe7\x87\x1f\x0c\xa5\x87\x8f\xdc\xdd\xa6\x20\xcd\x09\x8c\xe7\xff\
\x70\x47\xb0\xb0\xff\x65\xf8\x00\x6c\x19\x31\x01\xdd\xc5\xc2\x09\
\xa9\xf4\x7e\x02\x93\x00\x9b\xec\x1d\xb0\x1a\xf9\x2f\xff\x19\xe4\
\x2f\xec\x80\x1b\xb5\xe8\xf4\x7f\x86\xe7\x9f\x19\x96\xed\xb8\xcb\
\x70\x11\xd4\x88\x03\x08\x20\x66\x22\x5b\xcf\xff\xf7\xdd\x67\x78\
\x60\x2b\xf7\x5f\xfc\xe7\xf7\x5f\x26\xca\x32\x9c\xf0\x74\xc0\xcf\
\x73\x89\xe1\xd9\xf7\x18\x06\x19\x53\x0e\x06\x09\x60\x6b\xec\xfb\
\x3b\x06\x06\xce\x5f\x0b\x19\xd4\xc5\x16\x00\x13\x23\xaa\x3f\x36\
\x9e\xf9\xcf\x70\xf9\x31\xc3\xcd\xee\xe3\x0c\x79\x40\x01\x60\xcd\
\xc6\xf0\x09\x20\x80\x98\x49\x68\xc2\xff\x57\x10\x60\x38\xfd\xf7\
\xdb\x0f\xcf\x37\x6f\xbf\x8b\x49\x0a\x31\x03\x6b\xbe\xbf\x0c\x2c\
\x0c\x5f\x18\x44\xb9\xd6\x30\xfc\x06\xd6\x80\xac\x8c\x37\x18\x58\
\x9e\x4d\x64\x50\xe7\x6d\x62\xe0\x64\x45\x58\xfc\x01\x58\x26\x2d\
\x3a\x04\x4c\xf5\x4f\x19\xce\xae\xbc\xc6\x90\xf1\xfe\x07\x03\x30\
\xb2\x80\x0d\x0b\x60\x92\x01\x08\x20\x46\x32\x3a\x32\xdc\xb5\xf6\
\x0c\x4d\xdc\x2c\x0c\xc9\xba\x4a\x1c\xbc\xb2\xa2\x4c\x0c\x72\xc2\
\xff\x19\xf8\x39\xa0\x75\x06\x52\x57\xef\x05\xd0\x0a\x50\x76\x3b\
\xff\x80\xe1\xf3\xbb\xef\x0c\xcb\x26\x9f\x66\x98\x0c\x14\xfe\x0c\
\xb5\xfc\x2b\x28\x7d\x01\x04\x10\x23\x19\x9d\x19\x50\xa8\x71\x5a\
\xc8\x30\x48\x9b\x49\x31\xf8\xf3\xb1\x31\xb8\x31\x33\x31\x68\x02\
\x83\x1b\x54\x5c\xc0\xc1\x03\x60\x93\xe6\xd7\x5f\x86\x9b\x6f\xbf\
\x33\x6c\xde\x7b\x9f\x61\xed\xed\x77\x60\x5f\x7f\x81\x3a\xe0\x07\
\x34\xbb\x33\x00\x04\x10\x23\x05\x5d\x3a\x50\x02\xe6\x80\x62\x60\
\x9d\xcb\xc0\x06\x15\x67\x44\x4b\xc0\xbf\xa1\x16\x7e\x83\xd2\x7f\
\xa0\x59\x1c\x0c\x00\x02\x88\x91\x0a\x7d\x4b\x66\x24\xcc\x88\xc5\
\x01\xff\xa0\x8e\xf8\x8b\x6c\x31\x0c\x00\x04\x10\xe3\x40\x77\xcf\
\x01\x02\x0c\x00\x59\x0a\x66\xe4\x9a\x94\x5e\x09\x00\x00\x00\x00\
\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x02\xba\
\x47\
\x49\x46\x38\x39\x61\x17\x00\x16\x00\xe6\x00\x00\xff\xff\xff\xf7\
\xfb\xff\xf8\xf7\xf6\xf7\xf3\xff\xf4\xf1\xed\xe7\xf3\xff\xff\xeb\
\xc6\xea\xed\xf0\xed\xe9\xe5\xdf\xe5\xe9\xd6\xe3\xff\xe4\xde\xd8\
\xb0\xea\x93\xb4\xe3\xa8\xa2\xe5\xb3\x9b\xea\x93\xcd\xd4\xd4\x8e\
\xeb\x9d\xcc\xcc\xcc\xc1\xce\xd1\xff\xc3\x73\xba\xc9\xce\x90\xd8\
\x7d\x89\xda\x6d\x7c\xda\x6d\x7f\xd8\x7d\xac\xb9\xc4\x91\xc4\x75\
\x9a\xc0\x85\x84\xc4\x75\x89\xc0\x85\x7f\xc6\x63\xa5\xb2\xbc\xa2\
\xaf\xb8\x71\xc6\x63\x9c\xad\xb9\x94\xaa\xd6\x94\xaa\xc6\x94\xa6\
\xb3\x75\xb7\x58\x7f\xb1\x7a\x77\xb4\x69\x94\xa2\xc6\x68\xb7\x58\
\x8e\xa0\xae\xd6\x92\x42\x84\x9a\xc6\x80\xa3\x6c\x84\x92\xc6\x82\
\x96\xa6\x6a\xa4\x51\x73\x8a\xb5\x65\x92\x55\x73\x82\xb5\x68\x80\
\x57\x63\x79\xa5\xd6\x61\x31\x5c\x80\x57\x58\x7e\x4d\x50\x7e\x4d\
\x52\x71\xa5\xd6\x51\x21\x52\x69\xa5\xc6\x51\x21\x4c\x70\x3f\x45\
\x62\x3f\x40\x55\x32\x31\x49\x84\x21\x49\x84\x21\x41\x84\x34\x46\
\x25\x2a\x46\x25\x21\x38\x84\x10\x38\x84\x10\x30\x84\x10\x30\x73\
\x00\x00\x00\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xf9\x04\x05\
\x14\x00\x4d\x00\x2c\x00\x00\x00\x00\x17\x00\x16\x00\x00\x07\xff\
\x80\x4d\x10\x23\x31\x85\x86\x87\x88\x85\x26\x13\x4d\x13\x1a\x09\
\x00\x91\x92\x93\x94\x91\x07\x1a\x13\x26\x07\x95\x9c\x95\x07\x26\
\x31\x9d\xa2\x92\x02\x85\x93\x24\xa8\x24\x25\x2a\x2e\x30\x33\x35\
\x37\x37\x3c\x3e\x91\x04\xa6\x92\x24\x9c\x01\x03\x05\x05\x0a\x43\
\x00\x02\xb6\xa1\xb8\x95\x05\x38\x38\x0a\xbe\x44\xc1\xc3\xa7\x94\
\x01\x38\x06\x14\x3d\xcb\xcd\xb7\x91\x25\x93\xbb\x38\x14\x2d\x3f\
\xbe\x45\xd7\xc4\x91\x2a\x92\xbb\xbd\x3d\x3f\xca\x0a\xe2\xc2\xd8\
\x00\x2e\x91\x0e\x34\x34\x0f\xbd\xf8\xed\xe3\x93\x30\x00\xf4\x0d\
\x0f\x84\x74\x10\x22\xa4\x97\x02\x24\xfb\x24\xcd\xf8\xd7\x20\x82\
\x87\x20\x1c\x38\x30\xf1\x95\x24\x61\xa4\x1a\x34\x1a\x32\xc0\x90\
\xe1\x43\x10\x14\x2f\x98\x28\xa8\xf8\x8e\x1c\x80\x1b\x1a\x2f\x7c\
\x10\x91\x82\x86\x11\x1b\x39\x98\x28\xb1\x78\x32\xc2\x03\x0b\x2b\
\x4f\xc8\xa0\x01\xc4\x48\x10\x21\x4b\x68\xf2\x60\xb0\xe1\xc4\x8a\
\x9d\x3a\x76\x00\x11\x72\xe4\x48\xd0\x92\x93\x7c\x0c\x21\x42\xa4\
\x88\x55\x24\x49\x92\x28\x59\xc2\x75\x9c\x80\x48\x5f\x83\x81\x1d\
\x2b\xb6\x19\x82\x18\x2c\x10\xa8\x5d\xcb\xb6\x6d\xdb\x05\x2c\x17\
\x2a\x80\x90\xb0\xa0\xae\xdd\xbb\x78\xeb\x42\x08\x51\x41\x10\xa1\
\x44\x80\x0d\x2d\x6a\x12\x08\x00\x3b\
\x00\x00\x06\xb3\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\
\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
\xd4\x07\x18\x0f\x33\x0b\x0a\x13\xac\x7c\x00\x00\x06\x40\x49\x44\
\x41\x54\x78\xda\xc5\x96\x5d\x6c\x14\xd7\x15\xc7\x7f\xf7\xde\xf9\
\xd8\x99\xdd\xb5\xd7\xf6\x02\x06\x02\x5e\x27\x84\x52\x4a\x94\xa5\
\x15\x55\xe9\x87\xea\x84\xa8\x58\x69\x2b\x48\x53\x3f\xe4\xa1\x82\
\x3e\xb5\x7d\x0a\x48\x95\x8a\xd4\x48\xa0\x28\x0f\xf0\x92\x14\x29\
\x15\x6a\x5f\x30\xcd\x87\x64\x19\x11\x40\x4d\x10\xfd\xa0\x7e\x28\
\x55\x1b\x14\x44\x2b\xec\x18\x02\x8e\x03\xb8\x80\xf1\xda\x8b\x3f\
\x66\x67\x67\x67\xe6\xf6\x61\xec\x85\x34\x41\xb5\x53\x68\x8f\x74\
\x35\xa3\xd1\x9d\x39\xbf\xf3\x3f\xe7\xfe\x35\x82\x7b\xc4\xc9\x93\
\xa7\xb7\x2b\xa5\xb7\x48\x49\x87\xe3\x58\xb9\x54\xca\x26\x0c\x43\
\xa6\xa7\x3d\xe2\x98\xbe\x38\xe6\x58\x1c\xcb\xee\xcd\x9b\xbf\x56\
\xe6\xbf\x08\xf1\xef\x0f\x8e\x1f\xef\xeb\x30\xcd\xf8\x60\x4c\x54\
\x08\x91\xd8\x6e\x1a\xad\x35\x52\x4a\xa4\x94\xc4\x71\x8c\x21\x20\
\xaa\x55\x21\x0c\xca\x61\x28\xf7\x3f\xfd\xf4\x93\x7b\xee\x0b\xc0\
\x91\x23\xbf\xdb\x63\x5a\xd1\xee\x00\x03\x37\x93\x21\x93\x71\xeb\
\x89\xa5\x00\x29\x25\x42\x0a\x04\x82\xa0\x16\x52\xf1\x2a\x54\xa7\
\x6f\x13\x05\xd5\xbe\x6a\x55\x3d\xf3\xec\xb3\x9b\xcb\x9f\x19\xa0\
\xa7\xe7\xed\x3d\xca\x8c\x76\x8b\x54\x96\x7c\x3e\x87\x61\x18\x98\
\x86\x42\x29\x85\x10\x02\x21\x04\x7e\x35\xc0\x32\x0d\xa4\x92\x18\
\x4a\xa2\xb5\xc6\xf7\x03\xc6\x6f\xde\xc0\x9b\x9a\x3c\x57\xad\xaa\
\x27\x9e\x7b\xee\xbb\x0b\x82\x90\x00\xdd\xdd\x47\x3b\x62\xed\xed\
\xc6\xce\x90\xcf\xe7\x48\xd9\x16\xae\x9b\xaa\xaf\x54\xca\x22\x95\
\xb2\xc8\x66\x1c\xaa\x41\x8d\xa0\x1a\x10\x04\x21\x52\x4a\xb2\xd9\
\x34\x4b\x56\xac\xc0\x4c\x39\x45\xf0\x76\x2f\x54\x01\x99\x5c\xbc\
\x83\x73\x95\xa7\x6c\x0b\xc7\xb1\x71\x9d\x14\xe9\xb4\x43\xda\x75\
\xc8\xa4\x5d\x2a\x95\x2a\xae\x9b\x22\xd7\x98\xc1\xb4\x4c\x94\xa1\
\x88\xe3\x18\x80\x6c\xda\x61\x45\x7b\x3b\xb1\x66\xc7\xc1\x83\x6f\
\x74\x2c\x08\xe0\xd5\x57\xdf\xd8\x1e\xa1\x0b\xb9\xa6\x59\xd9\x2d\
\x13\xcb\x4a\x2a\x76\x6c\x1b\xd7\xb6\x70\x6d\x0b\xcb\x34\xa8\x56\
\x6b\x64\xd2\x2e\xb6\x65\x62\xcf\xee\x93\x52\x22\x55\xa2\xc4\xca\
\xf6\x02\x61\x18\x3c\xbf\x20\x80\x28\xf2\xb7\x58\x6e\x06\xc7\xb1\
\x51\x4a\x61\x1a\xc9\xb2\x0c\x03\xcb\x30\x48\x59\x16\x29\xcb\xc2\
\xb4\x4c\xe2\x38\xae\x27\xb7\xed\x3b\x4b\x4a\x89\x69\x99\x2c\x5e\
\xda\x4a\x10\x04\x5b\x5f\x7e\xf9\xd7\xb9\x05\x00\x54\x3a\x9a\xf3\
\x79\xa4\x94\x28\x99\x0c\xdb\xdc\xe4\x2b\xa5\xea\x55\xc6\x71\x8c\
\x69\x9a\x08\x04\xa6\x65\x62\x1a\x26\x96\x61\x60\x2a\x85\xa9\x14\
\x4a\x08\x5c\xd7\xa5\x31\xd7\x08\x04\xc5\x79\x03\xd8\xb6\x99\x53\
\x4a\x7d\xec\x9c\x6b\x74\x72\xd5\x1a\xbf\x1a\x70\x7d\xac\x84\x69\
\xa8\x44\x76\x33\x49\x6a\xa8\x04\xf0\xee\x65\x28\x49\x7e\x51\x9e\
\x20\xf0\xe7\x0d\x60\x58\x96\x85\x61\x18\x08\x21\x40\x40\x14\x6b\
\x6e\x8e\x4e\xe0\x3a\x16\xa6\x61\xa2\xd1\x98\xa6\x89\x65\x19\x34\
\xa4\x5d\xa2\x28\xba\xe3\x0d\x90\xbc\x07\x68\xad\x89\x49\xde\xaf\
\xd5\x6a\xf3\x6f\x41\xa9\x34\x41\x14\x45\xc9\x59\x47\x60\x28\x49\
\x36\xe3\x10\x86\x31\x61\x14\x26\x95\x19\x92\x4c\x2a\x85\x52\x8a\
\x30\x8e\x31\xa4\xc4\x90\x9f\xa2\x80\x94\xc4\x51\x88\xef\x87\xf3\
\xf6\x02\x63\x74\x74\x92\x20\x08\x90\xb3\x96\x74\x7b\x72\x86\xc6\
\x86\x34\xcd\xcd\x0d\x48\x21\xeb\x92\xc7\x80\xe7\xfb\xf5\xc4\x52\
\xca\x64\x5e\x66\x3f\x14\x03\x71\x1c\x73\xe5\xa3\x2b\x54\x2a\xd1\
\xb9\x79\x2b\x30\x33\xa3\x8f\x8e\xdf\x1a\xad\xbb\x9d\x69\x28\x3c\
\xcf\xa7\x7c\x7b\x9a\x19\xaf\x82\x57\xf1\xf1\x82\x80\x30\x0c\xef\
\x48\x2f\x25\x4a\x88\x44\x09\xc3\xa8\x57\x1f\x54\x03\x2e\x7d\x70\
\x89\x4a\x45\xcc\x1f\xc0\xf3\xf4\xb1\x81\xfe\x4b\x04\xb5\x10\x04\
\x58\xb6\x55\x87\x11\x42\xd4\xbd\x7f\xae\xd7\x73\xcf\xe7\x4e\xc9\
\xdd\x8a\x0c\xf4\x0f\x50\xa9\x44\x47\x0f\x1c\xd8\x3d\xef\x16\xc8\
\xd7\x5e\x7b\xb1\xfb\xea\xd0\xd8\xf0\xf0\xd0\x30\x3a\xd6\xf5\xe9\
\x96\xe2\x9e\xb6\xf9\x49\x10\x21\xf0\x2b\x3e\x27\xde\x3e\xc1\xd4\
\x94\xda\xbf\x60\x2b\xae\xd5\xd4\xce\xbe\x3f\x9e\xa5\x5c\x9e\x04\
\xc0\x71\xec\x7a\xc5\x77\x47\x7c\xd7\xbd\xd6\x1a\xad\x35\x61\x1c\
\x13\x69\xcd\xe1\xc3\x47\xd0\xba\x81\x55\xab\x56\x6d\x59\x30\x40\
\x6f\xef\xde\xa3\xb7\x4b\xfe\x2f\x7a\x7b\x4f\x31\x3e\x31\x89\xd6\
\x1a\xcb\x4a\x5a\xa1\x63\x8d\x46\xd7\x13\x6a\x9d\x78\x44\x1c\xc7\
\x44\x51\x44\x14\x45\xfc\xe6\xd0\xeb\x0c\xbe\x7f\x83\xf5\xeb\x8b\
\x4c\x4d\x79\xb9\xcf\xfc\x3f\xd0\xd5\xb5\xeb\x95\x74\x73\xc3\x8e\
\xa7\x9e\xe9\xa0\xb8\xaa\x15\x27\x65\x27\x12\x1b\x89\xd3\xcd\xf5\
\x7c\xae\xff\x13\xe3\x13\x1c\x3e\xfc\x0e\x37\x46\xa6\xd8\xb4\x69\
\x23\x57\xaf\xde\x24\x9b\x75\xcb\x8b\x17\x37\xed\x77\xce\xee\x68\
\x13\x41\xb9\xbc\xf1\xe7\x03\x3b\x17\xf4\x47\xd4\xd5\xb5\x6b\x2b\
\xf0\xca\xd2\x47\x57\x16\x36\x7c\x73\x3d\x8f\xaf\x6b\x27\xad\x04\
\x29\x95\x24\xc6\x30\x18\xb9\x76\x9d\x33\x7f\xfd\x3b\x7f\x3b\xdd\
\x8f\x21\xad\xee\x4d\x9b\x36\x6c\x1f\x1a\x1a\x19\xde\xb8\xf1\xb1\
\x42\xa5\x52\x25\x73\xf5\x75\x72\xd3\xa7\xd0\x35\x8f\xf1\x4a\xb6\
\xfb\xc9\x17\xdf\xff\xe1\xbc\x01\xee\x02\xd9\x0e\x6c\x03\x3a\xf2\
\x4b\x5a\x70\x5a\x1a\xd1\x7e\x95\xd1\x6b\xa3\x04\x41\xed\x1c\xd0\
\x07\xec\xef\xed\xdd\x3b\xfc\xc2\x0b\x07\x8a\x2f\xbd\xf4\x93\x73\
\xfb\xf6\x1d\x7a\xeb\x31\xfb\xcf\x5b\x97\x66\x6e\xf2\x70\x5b\x8a\
\x60\xe4\x5d\x3e\xbc\x52\xe3\xd6\x4c\x43\xf7\xb7\xf7\x7d\x3a\x84\
\x98\x4f\x9f\xba\xba\x76\x15\x80\xc2\xec\xbc\xf4\xdd\x6b\xdf\x9b\
\xcf\x7f\xf1\xad\xd5\xc5\x47\xb7\x16\xbf\xf7\x63\x6a\xff\x7c\x8f\
\x60\xe4\x5d\x82\x91\x33\x5c\xb8\x5c\xe3\xfa\xed\x6c\x77\xd7\xfe\
\x4f\x42\x18\xf3\x01\xe8\xed\xdd\x3b\x0c\x0c\xff\xa7\x7d\x51\xe0\
\x15\x72\xce\x18\x2a\xb8\x02\xcb\xbe\x34\x5b\x9f\xe0\x73\x9c\x21\
\x18\x9c\xdc\x7e\xe8\x47\x6b\xd8\xf6\xab\xc1\x8f\x41\x28\xee\x63\
\x7c\xa7\x98\xef\x19\xba\x34\xd5\x99\xd1\x1f\xb6\x2e\x6a\x6b\x43\
\x34\x7d\x1e\x21\x92\x14\x8b\xec\x9b\x4c\x96\xbd\xe2\xd7\x57\x2f\
\x2f\xfc\xf6\xdc\xd8\xb1\x07\x02\x70\xfc\xec\x98\xff\xad\x2f\xb4\
\xf4\x7c\x70\x71\xb2\x33\xcb\x50\xeb\x92\xf6\x36\x44\xd3\x5a\x84\
\x94\x20\xa0\xd5\x1d\xa5\x3c\xee\x15\x37\xb4\x2f\x2b\x9c\x3c\x5f\
\x3a\x76\xdf\x01\x00\x4e\xfc\xa3\xe4\x3f\xb1\x26\xdf\x33\x38\x38\
\xd5\xd9\x28\x2e\xb7\x2e\x6d\x5f\x89\x6c\x5a\x0b\xb3\x4a\x2c\xcf\
\x8c\x32\x3e\xee\x15\x1f\x7f\x68\x59\xe1\xd4\x60\xe9\xd8\x7d\x07\
\x00\xf8\xc3\x40\xc9\xff\xc6\xaa\x7c\x4f\x7f\xff\x54\x67\xa3\xbc\
\xdc\xba\xec\x91\x95\xc8\xe6\xb5\x20\x92\x91\x5b\xd9\x30\xca\x78\
\xc9\x2b\xae\x59\xbc\xb4\xf0\x40\x00\x00\xfa\x2e\x96\xfc\xaf\x14\
\x5a\x7a\xce\x9f\x9f\xee\x6c\x32\x2e\xb7\x2e\x7f\xe4\x21\x64\xf3\
\x3a\x90\x0a\x04\xb8\xfa\x16\x67\x2f\x39\xc5\x07\x06\x00\x70\x7a\
\xa8\xe4\x7f\xf5\xe1\x96\x9e\xfe\xfe\xe9\x4e\x27\xbc\xdc\x5a\x58\
\xbd\x1c\xd9\xbc\x8e\x1b\x23\x65\xde\x3c\x7c\x85\xec\xfa\x1f\xf0\
\x40\x01\x00\xfe\x32\x0b\x71\xe1\xc2\x4c\xe7\xc4\xb5\x8b\xad\x2d\
\x2d\x16\x87\x7e\xf9\x7b\xd6\x7f\xff\x67\xbc\x37\x30\x56\x16\xfc\
\x8f\xe2\xa7\x4f\xad\xce\x01\x7f\x8a\x85\x59\x6c\xfe\xf2\x36\x3e\
\x1a\xad\x95\xcb\xe5\xa9\x9d\x42\x6b\xcd\xff\x33\xfe\x05\x07\x33\
\x7a\xb8\x86\x8f\x19\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
\x60\x82\
\x00\x00\x06\xc8\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x0d\x00\x00\
\x0b\x0d\x01\xed\x07\xc0\x2c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
\xd3\x09\x09\x13\x0e\x0c\xa1\x33\x95\x56\x00\x00\x06\x55\x49\x44\
\x41\x54\x78\xda\xc5\x97\xdb\x6f\x1c\xd5\x1d\xc7\x3f\x73\x66\xe7\
\xb2\xbb\xb6\x77\xd7\x71\x62\xc7\xc6\x89\x13\x62\x14\x27\x4d\xb0\
\x3d\x2d\x52\x9b\x84\x92\x16\x8a\x8a\x90\xda\xa2\xbe\x20\xd1\x0a\
\x68\xad\x36\x0f\x7d\xa8\x84\xf2\x58\x89\xfe\x03\xbc\x82\x96\x86\
\x06\xf1\xd2\x3e\xf4\xc2\x03\x42\x05\x14\x95\xa8\x84\x4a\x78\x8d\
\x6d\x51\x10\xca\xa6\x36\xa9\xb3\x49\x7c\xd9\x5d\xdb\xbb\x33\xbb\
\x33\x73\x4e\x1f\x76\xbd\x17\xaf\x43\x48\x52\xa9\x23\x7d\xa5\x33\
\xe7\xfc\xce\xf9\x5d\xce\xef\xfc\x2e\xf0\x7f\xfe\xb4\x3b\x21\x9e\
\x3c\x33\x7b\x00\xd4\x69\x90\xe3\xc0\x38\x4a\xb6\x9c\xa1\xe6\x50\
\x72\x0e\xe9\x5f\x70\x38\x9f\x05\x64\x3a\x9d\x56\xff\x13\x01\x26\
\xcf\xcc\x3e\x07\x3c\x0b\x3c\x0c\x0a\x90\x20\x4c\x10\x76\x8d\x40\
\x7a\x10\x7a\xad\x5b\x3e\x40\x06\x6f\x38\xea\x77\xe7\x00\x3f\x9d\
\x4e\xcb\xbb\x12\x60\xf2\xcc\xec\x04\x9a\x78\x09\x25\xbf\x8d\xd0\
\xc1\x4c\x82\xd9\x8b\x69\x45\x19\xee\x59\xe7\x1b\xf7\xe5\x01\xd8\
\xf4\xe0\xbd\x85\xfd\xb8\x5e\x15\x2a\xcb\xe0\xad\x82\xf2\x01\xe5\
\x12\x7a\x2f\x38\xbc\xfe\x7b\xc0\xdb\x49\x10\xed\x36\x5a\x9f\x03\
\x20\x3a\x80\xd9\xb5\x87\x9f\x3d\xb4\xc4\xb1\x83\x5d\x3c\x70\x5f\
\x0c\xdb\x14\x1d\x7b\x96\x56\x2a\x7c\xf8\x69\x91\x8b\x9f\xc1\x47\
\x0b\x06\x94\x16\x6b\x0b\x61\xf5\xcf\x0e\xaf\xfd\x1c\x58\x4f\xa7\
\xd3\xc1\x6d\x05\x68\x30\xd7\x2d\xe8\x79\x80\x67\x26\xfe\xc3\x0f\
\x4e\xf4\x91\xea\x8a\xb4\xd1\xcd\x64\xcb\x00\x4c\xdc\x1f\x43\x6d\
\x3b\xea\xe2\x7c\x81\x57\x2e\x18\xdc\xb8\x7e\x1d\x82\x4d\x90\xfe\
\x9c\xa3\xce\x7d\x0f\x58\x6e\xb5\x84\x7e\x4b\xe6\x91\x18\xc3\xc3\
\x7b\x79\xe1\xf1\x4d\x1e\xfb\x7a\x2f\x46\x44\x10\x48\x1a\x98\x5f\
\x70\x79\xf0\x60\x8c\x3d\x49\x83\xd9\x2b\x65\x52\xdd\x11\x42\xa9\
\x1a\x18\xea\xb3\x38\x75\x18\xf2\x9b\x01\x0b\xcb\x1a\xa8\xb0\x3f\
\xa7\x8e\x1e\x19\x64\xf6\xaf\x8e\xe3\x04\x99\x4c\x46\x75\x08\x30\
\x79\xe6\xe3\x09\xd0\xde\x42\x37\x18\x1a\x1a\xe2\xec\x93\x8a\x91\
\x7e\x1b\x3f\x50\x6d\xb8\x7c\xad\xc2\x91\x7d\x36\x7b\x92\x26\x86\
\xae\x11\xb5\x04\x9f\x5d\xf5\x88\x5b\xa2\x8d\x2e\xa2\x6b\x1c\x1b\
\x89\x72\x73\x5d\x72\x75\x15\x40\x8d\xe6\xfc\x03\x97\x06\xc5\xbf\
\xae\xd6\x85\x20\xb2\xcd\x00\xaf\x41\x08\x3d\xc7\x78\xfe\xd4\x2a\
\x3d\xb1\x18\xe5\x4a\xfb\x4b\x5a\x2e\xfa\x8c\x0e\xd9\xec\x4e\x98\
\x00\x98\x86\xa0\xb7\xdb\x60\xa4\x5f\xb1\x70\xa3\xc2\xee\x84\xd1\
\x71\xa5\x3f\x3d\xdd\xc3\x8d\x0d\x83\xcb\x57\x36\xc1\x4c\xbe\x88\
\x64\x06\xf0\x01\x5f\x6f\x6a\x9f\x79\x0e\xd4\x2f\x88\x0e\xf2\x93\
\x87\xf2\x8c\xed\xef\xc2\x0f\x55\x1b\x0a\xa5\x90\x91\x7e\x8b\xc1\
\x5d\x26\x46\xa4\xe9\x84\x46\x44\xc3\x34\x34\x82\x50\x71\xb3\xe0\
\xa3\x69\xb4\xed\x53\xc0\x48\x9f\xe4\xfd\x6c\x12\xfc\xf5\xbd\x39\
\x39\x56\x18\xd4\xe6\x66\x1c\xc7\xa9\x36\x4f\x51\xf2\x59\xd0\xe9\
\xef\xeb\xe6\xf0\xfe\x38\x25\x4f\x76\x60\xa0\xd7\x60\xa8\xcf\xc4\
\x8c\x74\xbe\x80\xb8\xad\x33\xd2\x6f\xd1\x15\x15\x3b\xee\xed\x89\
\x1b\xfc\x68\xbc\x08\x9a\x01\xba\xfd\x14\x90\x04\x0c\x01\x30\xf9\
\xcb\x8f\x0e\x00\x0f\x63\xef\xe2\x3b\x87\x56\x09\x42\x28\x57\xc2\
\x36\x24\xe2\x82\xd1\x41\x1b\xcb\x10\xb7\x8c\x1b\x71\x5b\xe7\xf8\
\x81\x38\x52\xc9\xb6\xbd\xc5\x52\xc0\x95\x5c\x19\x85\x0e\xf6\x2e\
\xd0\xf4\xf1\xe9\xca\x13\x63\x80\xbd\xe5\x03\xa7\x6b\x17\xda\x4b\
\x5f\xcf\x3a\x25\xb7\x19\x2f\x34\x0d\x86\x77\x9b\x38\xa3\xdd\x5f\
\x29\x5c\xdb\xa6\xe0\xd1\x89\x14\x6f\x5e\x5a\xe3\xdf\xb9\x32\x5f\
\xac\x69\xfc\x73\x69\xa8\x49\x60\xba\xe0\x5e\x07\x23\x71\x02\x98\
\xd9\x52\x67\x1c\x60\x20\x21\x51\xb4\x6b\xbf\x27\x19\xe1\x9b\x47\
\x7a\xee\x38\xc9\x3c\x3a\x99\xc0\x34\x44\x3b\x73\xc0\xb4\xa2\xb5\
\x81\x30\x0f\x03\xd1\xa6\x00\xba\x4d\x2a\x5a\x65\xd3\x95\x0d\xf4\
\xa7\x4c\x1e\x79\x30\x79\x57\x59\x2e\x66\xe9\xfc\xf0\x64\x3f\xc7\
\xf7\xd5\xac\xd8\x08\x3c\x82\x9a\x1f\x08\xe3\x10\x60\x37\x2f\x54\
\xd8\xf4\x58\x55\x4a\x15\x49\xa9\x22\x39\xb8\xd7\xe6\xbb\xe3\x89\
\x7b\x4a\xb5\x7b\x53\x3a\xbf\xfe\x3e\x8c\x6f\x13\x82\x48\x1c\x94\
\xd2\x1a\x4e\xb8\x15\x92\x4b\xbe\xc9\x86\x0b\x1b\x2e\x8c\xed\x8b\
\x61\x99\xe2\x9e\xf3\xfd\xe8\x00\x4c\x8c\xdc\x72\x59\x34\x03\x91\
\xf4\xc8\xbb\x36\x11\x51\x0b\x3c\xaf\xff\xdd\x23\x66\x55\x00\x18\
\xee\xd3\x79\xfa\x54\xfc\x8e\x18\xff\xea\x7c\x73\x7c\xbd\xd0\x74\
\x68\x00\x82\x52\xd3\x18\x8d\x62\x22\xf4\x4e\x16\x2a\x16\x81\xaa\
\x4d\xe5\x36\x9b\x07\x1c\x73\x35\x9e\xde\x81\xc9\xa9\xdf\xb6\xff\
\x5f\xfc\x4d\x73\xfc\xf1\x62\x27\x7d\x44\x80\x1f\x52\x4b\xd5\xca\
\xcf\x02\x32\x52\x0f\x42\x73\x68\x3a\x25\x37\xc0\xd0\x23\x1d\x1b\
\xfd\xf0\xde\xae\xc1\x68\xc9\x38\xae\x57\xad\xa7\xe8\x4a\x16\x1d\
\xbf\x76\xc9\xd2\xbf\x00\x40\x75\x15\x21\x44\x07\x34\x71\x6f\xbe\
\xa0\x8b\x26\xa8\xae\xd6\x26\xab\xf9\x0c\xe0\x09\x80\x7a\x0d\xf7\
\x01\xee\x32\x86\xe6\x13\x8d\xb4\xc3\xd2\x83\x3b\x66\x9a\x8a\xfa\
\x0d\x6c\x9d\x63\x68\x3e\xb8\xcb\x20\x83\x79\x27\xfa\xb7\x45\xc0\
\xdd\xb2\xb7\x44\x06\x6f\x20\xf8\xd6\x7a\x61\x85\xfb\x87\xda\x1d\
\xae\xdb\xd4\x9b\xee\xd2\xf2\x1d\x4c\xad\x6f\x9b\x69\x06\xac\x94\
\xed\x76\xd0\x67\x97\x4a\xb5\xfb\x0f\x36\xdf\x41\xa7\x04\xb8\x02\
\x20\x9d\x4e\xab\x5a\x01\xa9\x3e\x74\x8b\xd7\x90\x81\x4f\xc2\xaa\
\x36\x10\x37\x76\xb6\x40\x2b\x4d\xc2\xaa\x7e\xe9\x9a\x0c\x7c\xdc\
\xe2\xb5\x9a\xf6\xfa\x1f\xde\x04\x8a\x80\xd7\xaa\x96\x4f\xe8\x9d\
\x45\x8f\xbe\x9f\x5d\x5c\xe2\xe4\xf1\xdd\x18\x7a\xed\x49\x16\x37\
\x7c\x5e\x7d\xdb\x6f\x10\xe6\xd6\x7c\x3c\x5f\xd1\x6d\xb5\x0b\xf4\
\xea\xdb\x2b\x4d\xab\xb5\x08\xe4\x87\x1a\xd9\xc5\xe5\xda\x8f\x97\
\x7b\x19\x8b\x02\x50\x68\xab\x07\x32\x99\x8c\x7a\xd2\x89\xe4\x72\
\xea\x6b\xf9\x50\x8a\xc7\x57\x0a\x15\x0e\x0d\x9a\x98\x86\x8e\xa6\
\xc1\xa6\x27\x1b\xd0\x34\x30\x74\xad\x03\xad\x34\x5b\x73\x82\x80\
\x7f\xcc\xe5\x29\x7b\x3e\x54\xf3\x2f\x39\xc6\x5f\xde\x03\x72\x40\
\x21\x9d\x4e\x87\xdb\xdd\x3b\x70\x38\xff\x0a\xa1\x7b\x76\xa3\x5c\
\xe5\xdd\xe9\x3c\x7e\xc5\xc5\x32\xc4\x5d\xc1\xaf\xb8\xbc\x3b\x9d\
\x67\xa3\x5c\xad\x31\xd7\xff\xf8\x27\xe0\x06\x90\x07\x82\x8e\x9a\
\x30\x93\xc9\xe0\x38\x4e\x38\xc8\xec\x6c\x4e\x1d\x2d\xfa\x52\x7f\
\xec\xf3\x25\x0f\x5f\x0a\x86\x77\x09\x8c\x88\x20\x22\xb8\x2d\x34\
\x15\x30\x7d\xb9\xcc\xa5\x4f\x0a\xf8\x81\x6c\x65\x9e\x03\x6e\x02\
\xee\x56\xd7\xb4\x63\x59\x3e\x35\x35\x25\x80\xd8\x74\xf0\xe3\x47\
\x30\x93\x2f\xa2\xe9\x93\x96\x21\xd8\x37\x10\xe3\xe8\xa0\xa4\xb7\
\x37\x81\xae\xb7\xd7\x7e\x61\xe8\xb3\xb6\x56\xe4\x93\x6b\x82\x2f\
\xae\x97\xa9\xf8\x12\x64\x30\x8f\x97\x7b\xd9\xb1\xde\x9a\xa9\x6b\
\x7e\x13\x28\xb7\x96\xe5\xb7\x6c\x4c\xea\x42\xd8\x40\x6a\x5a\x3d\
\xf3\x3c\xba\xfd\x14\x9a\x3e\xbe\xb5\x1e\x35\xa1\x2f\x51\xf3\xe1\
\x95\x62\x80\xdb\xfa\x08\x64\x30\x4f\xb0\xf9\x4e\xdd\xdb\x0b\xc0\
\x4a\xdd\xec\x1d\xdd\xd1\x97\xb6\x66\x53\x53\x53\x5a\x3d\x00\xc4\
\x81\xe4\x74\xe5\x89\x31\x8c\xc4\x09\x84\x79\x18\x61\x1c\xaa\xa7\
\xd4\x7a\x3a\xf1\xb3\x84\x95\x2c\xd5\x7c\xa6\x1e\x64\x4a\xf5\xa7\
\x56\xa8\x8f\x83\x9d\x9a\xd5\xaf\xd4\x9c\xd6\xad\x61\xd4\x2d\x12\
\xad\xc3\xae\xcf\x89\x46\x30\xab\x95\xda\x1e\xe0\xd6\xe1\xdd\xae\
\x39\xfd\x2f\xd0\x42\x12\x9f\x36\x7a\xba\x3a\x00\x00\x00\x00\x49\
\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x01\x45\
\x47\
\x49\x46\x38\x39\x61\x28\x00\x27\x00\x84\x11\x00\xf7\x90\x0e\xf7\
\x93\x0e\xf7\x94\x0e\xf7\x97\x0e\xf7\x99\x0e\xf7\x9e\x0e\xf7\xa0\
\x0e\xf7\xa2\x0d\x78\xe9\x14\x7b\xe8\x13\x7c\xe8\x13\xf7\xb2\x0d\
\xf8\xb8\x0d\xf8\xc4\x0d\xf8\xcd\x0d\xf8\xce\x0d\xf8\xd3\x0d\xf5\
\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\
\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\
\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\xf5\x10\x10\x21\xfe\x15\x43\
\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\
\x47\x49\x4d\x50\x00\x21\xf9\x04\x01\x0a\x00\x1f\x00\x2c\x00\x00\
\x00\x00\x28\x00\x27\x00\x00\x05\xa9\xe0\x27\x8e\x64\x69\x9e\x68\
\xaa\x7e\x05\x03\x25\x09\xc4\x14\x6b\x6d\x36\x48\xae\xef\x79\x63\
\xab\x01\x9e\x70\x18\xf8\x95\x1c\xc3\x24\xcf\x61\xfc\x00\x94\x50\
\x1e\xc0\x36\x88\x5a\x75\x83\x95\xe0\xca\x45\x08\x54\xdd\x6e\x2a\
\x1c\x3e\x1d\xc8\xdd\x83\x09\x5d\x26\x19\xd8\x5d\x03\x09\xde\x16\
\xd1\xc5\x22\xc2\x9d\x4b\x10\x2d\xf6\x57\x0b\x22\x0f\x80\x56\x0f\
\x22\x0a\x85\x51\x0a\x88\x8a\x50\x8c\x1f\x84\x8e\x49\x87\x1f\x7f\
\x93\x43\x82\x1f\x7a\x98\x42\x7d\x76\x9d\x3c\x73\xa1\x3b\x6e\xa4\
\x39\x72\xa3\xa4\x26\x67\xa1\x6a\x6b\xa1\x63\x98\x2a\x5b\x8e\x5f\
\x2a\x55\x85\x59\x35\x4f\x7b\x53\x46\x48\x6c\x4c\x4d\x22\x41\x64\
\x45\xc4\x25\x38\x51\x3e\xc9\x2a\x2d\x2f\x31\x33\xce\xd4\xd5\xd6\
\x3f\x21\x00\x3b\
\x00\x00\x06\x59\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x0d\x00\x00\
\x0b\x0d\x01\xed\x07\xc0\x2c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
\xd3\x09\x09\x13\x12\x2a\x95\x49\x4d\xf6\x00\x00\x05\xe6\x49\x44\
\x41\x54\x78\xda\xc5\x97\x5d\x8c\x5b\x47\x15\xc7\x7f\x77\xee\xbd\
\xfe\xda\xac\xf7\x23\x2e\x49\x76\x13\x36\x81\x50\x25\xa4\x91\x36\
\x7b\xa1\x0f\x44\x09\x09\x10\x22\xa2\x88\x96\x0a\x29\x2f\x2d\x6d\
\x0a\x2b\xc8\x43\xdf\xaa\xbe\x54\x42\x4a\x05\x02\x89\x87\x22\xf5\
\xa5\xc8\x22\x25\xb4\x12\x2a\x0f\x14\x10\x0a\x12\x55\x1a\xd4\x88\
\x0d\x91\xba\xde\xee\x2e\x5d\xaa\xb6\x86\x6c\x83\xe3\x4d\xf6\xc3\
\x5e\xc7\xf6\xbd\xbe\x1f\x33\x3c\xf8\xee\xda\x8e\xed\x6c\x8a\x0a\
\x8c\xf4\x7f\xf0\x9d\x33\xf3\xff\x9f\xe3\x99\x33\xe7\xc0\xff\x79\
\x68\x1f\xc5\x78\xec\xcc\xf4\x2e\x50\x47\x41\x8e\x02\xa3\x28\xd9\
\xb4\x87\x9a\x41\xc9\x19\xa4\x77\xc9\xe2\x7c\x16\x90\xe9\x74\x5a\
\x7d\x2c\x02\xc6\xce\x4c\x9f\x06\x9e\x00\x0e\x83\x02\x24\x88\x08\
\x88\x58\xdd\x40\x3a\x10\x38\xcd\x4b\x26\x90\xfe\x2b\x96\xfa\xf9\
\x39\xc0\x4b\xa7\xd3\xf2\x3f\x12\x30\x76\x66\xfa\x00\x9a\x78\x1e\
\x25\xbf\x88\xd0\x21\xd2\x0f\x91\x41\x22\xd1\x38\x3b\x92\x25\x3e\
\xbf\xbd\x00\x40\xd9\x81\x8b\xd7\x46\xb0\x1d\x17\x6a\x8b\xe0\x2c\
\x83\xf2\x00\x65\x13\x38\x4f\x5b\xfc\xf2\x17\x80\xd3\x49\x88\xb6\
\x81\xd7\xe7\x00\x88\x6f\x25\xb2\xe9\x13\x7c\xfb\xc1\x1c\xfb\x3f\
\xb5\x89\xfb\xb7\x27\x88\x45\x44\xdb\x9a\xdc\x52\x8d\xbf\xfe\x7d\
\x95\xcb\xef\xc2\x5b\xd7\x4c\xa8\xcc\xd7\x27\x02\xf7\x35\x8b\x97\
\xbe\x03\x94\xd2\xe9\xb4\xbf\xa1\x80\x75\x72\x3d\x0a\xc9\xfb\x79\
\xf4\xc0\xbf\x78\xe8\x60\x8a\x81\x4d\x46\xd7\x68\xa9\x3b\xb6\xba\
\x3c\x5b\xe4\x67\x97\x4c\x6e\x2e\x2c\x80\x5f\x06\xe9\xcd\x58\xea\
\xdc\x57\x81\xc5\xe6\x48\xe8\x5d\xc9\x8d\x04\x3b\x76\x6c\xe3\xe9\
\xe3\x65\x8e\x7d\x6e\x10\xd3\x10\xf8\x92\x16\xbc\xf1\x76\x89\x6c\
\xbe\xc6\xf0\x7d\x51\x02\xa9\x5a\x30\x9c\x8a\x72\x68\x0f\x14\xca\
\x3e\xd7\x16\x35\x50\xc1\x96\xbc\xda\xf7\xd9\x21\xa6\x7f\x67\x59\
\x96\x9f\xc9\x64\x54\x9b\x80\xb1\x33\x6f\x1f\x00\xed\x02\xba\xc9\
\xf0\xf0\x30\xcf\x9c\x54\xec\xdc\x12\xc3\xf3\x55\x1b\xae\xcc\x95\
\x39\x75\x24\xc5\x03\x3b\x13\x5c\xb8\x5a\xe0\xbe\x3e\xa3\xcd\xc6\
\xd0\x35\xf6\xef\x8c\x73\xab\x24\xb9\xbe\x0c\xa0\x3e\x93\xf7\x76\
\x5d\x19\x12\x73\xd7\x43\x11\xdc\x19\xd3\x97\x20\x80\xe4\x7e\x9e\
\x3c\xb4\x4c\x32\x91\xa0\x5a\x6b\xbf\x49\x73\xf3\x55\x4e\x1d\x49\
\xad\xff\x3e\x75\x24\xc5\xec\x3f\xab\x5d\xff\x9e\x6f\x1d\x4d\x72\
\xf3\xb6\xc9\x07\xff\x28\x43\xa4\xff\x2c\x92\x29\xc0\x03\x3c\xbd\
\xe1\x7d\xe6\x34\xa8\xef\x12\x1f\xe2\xb1\x07\x0b\xec\x1d\xd9\x84\
\x17\xa8\x36\xbc\x9f\x73\x5a\xc8\xd7\xc6\xb5\x9b\x4e\x47\x7b\x2f\
\x50\x28\x60\x67\x4a\xf2\x66\xb6\x1f\xbc\xd2\xb6\xbc\xdc\x5b\x1c\
\xd2\x66\xa6\x2c\xcb\x72\x1b\x11\x50\xf2\x09\x34\x93\x2d\xa9\x5e\
\xf6\x8c\x38\x54\x9c\xf6\xab\xbb\x58\xf4\x3a\x92\x03\x1d\xed\x9b\
\x47\xb2\xc7\xe4\x1b\xa3\x4b\xbc\x36\x61\x82\x1e\x7b\x04\xc9\xcb\
\x80\x6d\x00\x8c\x7d\xef\xad\x5d\xc0\x61\x62\x9b\xf9\xd2\xee\x65\
\xfc\xa0\x07\x3f\x08\x5a\x09\x6c\xd9\x95\xfc\x0f\x57\x57\xee\x4a\
\xee\xf9\x8a\xe5\x92\x8b\x42\x87\xd8\x66\xb0\x17\x46\x27\x6b\x27\
\xf6\x5a\xd1\x0b\x85\xb5\x08\x1c\x05\x20\x32\x48\x2a\x59\xa2\x62\
\xb7\x7b\xd3\x8d\xfc\xd5\x3f\x2f\x75\x25\x5e\x58\x71\xf8\x70\x45\
\xe3\x6a\x6e\xb8\xf1\x31\x62\x83\xbd\x00\x66\xdf\x41\x60\x6a\x4d\
\xc0\x28\xc0\xd6\x3e\x89\x02\xaa\xb5\x56\xef\x4f\x1f\xdf\x72\xcf\
\xe4\xcd\x6b\x57\xca\x01\x57\x73\x23\x2d\xf3\x91\x68\x1c\x17\x40\
\x44\xf6\x00\xf1\x86\x00\x3d\xc6\x40\xdc\xa5\x7c\x87\xf7\x4f\x3d\
\xbc\xad\xab\x87\xdd\xa2\xd2\x3c\xce\x02\x87\x9e\x03\x15\x5e\x26\
\x5d\x00\x9a\x09\x22\xd8\x8d\x24\xd6\xc8\xa7\x22\x46\x32\xea\x52\
\xa9\xc9\x75\xdc\x8d\xfc\xa3\x8c\xcb\xdf\x07\xad\x39\x51\x1a\x3d\
\xa0\x94\x06\x98\x46\x73\x4a\xae\x78\x11\x6e\xdb\xfe\xff\xb2\x1c\
\x10\x8d\x6b\x28\x1d\x0a\x76\x0c\x43\xa8\xff\x1a\xdb\x7a\x14\xfc\
\x4a\x43\xc1\x7a\x31\x11\x38\x14\x6b\x51\xf2\xe5\xde\x75\x9c\xf8\
\xb1\xf7\xb1\x10\x1f\x7a\x2e\x8c\xbc\x08\xcf\x82\xf2\x40\x79\x59\
\x40\x1a\x61\x12\x9a\x41\xd3\xa9\xd8\x3e\xa6\xde\x9a\x9d\xbf\xfc\
\x43\xc9\xc5\x67\xc5\x5d\x37\xde\x68\x98\x4d\x2f\x8e\xed\xb8\xe1\
\x13\x5d\xcb\xa2\xe3\xd5\x77\x96\xde\x25\x00\xdc\x65\x84\x10\x6d\
\x38\xf6\xa3\xee\x87\xeb\x5e\x86\x2e\x1a\xc0\x5d\xae\x7f\x74\x0b\
\x19\xc0\x11\x00\x61\x0d\x37\x81\xbd\x88\xa9\x79\xc4\x8d\x76\x7c\
\xfd\x27\xde\x3d\x8b\x18\x88\x7b\x2d\x58\xdb\xc3\xd4\x3c\xb0\x17\
\x41\xfa\xb3\x56\xfc\x4f\xf3\xeb\xa9\x18\x90\x48\xff\x15\x04\x5f\
\x28\x15\x97\xf8\xf4\x70\x4f\x47\xb2\xc7\x5f\xb0\x39\xff\x54\xb2\
\xa3\x88\xc7\x5f\x28\x6d\x18\x89\x6c\xae\x52\xff\xff\xfd\xf2\xeb\
\xe8\x54\x00\x5b\x07\xc8\x64\x32\x9c\x1c\xd3\x66\xf3\xc2\xfa\x8a\
\x5f\x2b\x6f\x4f\x0d\x24\xe9\x8f\x07\xc4\x8c\x76\xfc\x71\xb2\xca\
\xd7\xac\x44\xdb\xe6\x97\xa6\x6f\x77\xb4\x5f\x83\x5d\x93\xe4\x6f\
\x5c\xaf\x7b\xaf\xbd\xfc\x53\xe0\x26\x50\x6c\x3e\x5d\x1e\x81\xf3\
\x0c\x40\x76\x3e\x47\xcc\xf0\xe8\x8d\xba\x1d\xf1\xec\xf9\x1b\x6d\
\x02\xba\xd9\xf6\x46\x5d\x62\x86\x47\x76\x3e\x57\x37\x74\xf2\x2f\
\x02\xc5\x10\x8d\x7a\x20\x93\xc9\xa8\x93\x96\x91\xcf\xab\x07\x0a\
\x81\x14\xc7\x97\x8a\x35\x76\x0f\x45\x88\x98\x3a\xa6\xae\xb5\xe1\
\xcd\xbf\x95\x39\xbc\xbf\x17\x80\x1f\xfc\x2a\xdf\xd1\xc6\xd4\x35\
\x04\x3e\x7f\x99\x29\x50\x75\x3c\x70\x0b\xcf\x5b\xe6\x6f\x2f\x02\
\x79\xa0\x98\x4e\xa7\x83\x96\x92\xcc\xb2\x2c\x35\xc4\xf4\x74\x5e\
\xed\x5b\x75\x03\x71\xec\xfa\xa2\xcb\x48\x4a\x90\x88\x47\x31\x74\
\xad\x0d\x13\x73\x15\x26\xe6\x2a\x1d\xe7\x0c\x5d\xc3\xb1\xab\x5c\
\x9c\x5a\xa5\x62\x87\xe4\xfa\xaf\x7f\x03\x2c\x00\x4b\x80\x9b\xc9\
\x64\x5a\x6b\xc2\x4c\x26\x83\x65\x59\xc1\x9a\x08\x4f\xea\xc7\xde\
\xcb\x39\x78\x52\xb0\x63\xb3\xc0\x34\x04\x86\x60\x43\x68\xca\x67\
\xf2\x83\x2a\x57\xde\x29\xe2\xf9\xb2\x99\x3c\x0f\xdc\x02\xec\xb5\
\xae\xa9\x63\x59\x3e\x3e\x3e\x2e\x80\xc4\xa4\xff\xcd\x23\x44\xfa\
\xcf\xa2\xe9\x63\x51\x53\xf0\xc9\xad\x09\xf6\x0d\x49\x06\x07\xfb\
\xd0\x75\xb3\x65\x4d\x10\x78\xac\xac\xac\xf2\xce\x0d\xc1\x87\x0b\
\x55\x6a\x9e\x04\xe9\xcf\xe2\xe4\x5f\xb4\xa2\x17\xa6\xc2\x43\x77\
\x0b\xa8\x36\x97\xe5\x5d\x1b\x93\x50\x44\x0c\x18\x98\x54\x8f\x3e\
\x89\x1e\x7b\x04\x4d\x1f\x5d\x9b\x8f\x47\x20\xd5\x57\xbf\xc5\x4b\
\xab\x3e\xb6\xdb\xb4\x58\xfa\xb3\xf8\xe5\xd7\x2d\xfd\xd5\xdf\x87\
\x87\x6d\x09\x28\x74\xea\x8e\xee\xda\x9a\x8d\x8f\x8f\x6b\x80\x01\
\xf4\x00\xfd\x93\xb5\x13\x7b\x31\xfb\x0e\x22\x22\x7b\x10\xe6\xee\
\xf0\x49\x0d\x9f\x13\x2f\x4b\x50\xcb\xe2\x16\x32\x61\x92\xa9\x00\
\xab\xa1\x80\x0a\xe0\x77\x6a\x56\xef\xa9\x39\x0d\xa3\x61\x86\x11\
\x89\x87\x88\x85\xdf\xc4\x7a\x32\xab\x97\xda\x0e\x60\x87\x70\x36\
\x6a\x4e\xff\x0d\xcd\x4a\x06\xf6\x87\x57\xde\x02\x00\x00\x00\x00\
\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x00\x8f\
\x23\
\x54\x68\x69\x73\x20\x69\x73\x20\x6a\x75\x73\x74\x20\x61\x20\x66\
\x69\x6c\x65\x20\x70\x6c\x61\x79\x69\x6e\x67\x20\x74\x68\x65\x20\
\x72\x6f\x6c\x65\x20\x6f\x66\x20\x61\x20\x70\x79\x74\x68\x6f\x6e\
\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x0a\x23\x53\x68\x6f\x72\x74\
\x6c\x79\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x70\x79\x74\x68\
\x6f\x6e\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x73\x20\x77\x69\x6c\
\x6c\x20\x62\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x0a\x23\x54\
\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x74\x65\x6d\x70\x6c\
\x61\x74\x65\x20\x69\x6e\x20\x6c\x6f\x63\x61\x6c\x0a\x0a\
\x00\x00\x00\x8d\
\x54\
\x68\x69\x73\x20\x69\x73\x20\x6a\x75\x73\x74\x20\x61\x20\x66\x69\
\x6c\x65\x20\x70\x6c\x61\x79\x69\x6e\x67\x20\x74\x68\x65\x20\x72\
\x6f\x6c\x65\x20\x6f\x66\x20\x61\x20\x63\x6f\x6c\x61\x20\x73\x63\
\x72\x70\x74\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x0a\x53\x68\x6f\
\x72\x74\x6c\x79\x20\x73\x75\x69\x74\x61\x62\x6c\x65\x20\x63\x6f\
\x6c\x61\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x73\x20\x77\x69\x6c\
\x6c\x20\x62\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x0a\x54\x68\
\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x74\x65\x6d\x70\x6c\x61\
\x74\x65\x20\x69\x6e\x20\x6c\x6f\x63\x61\x6c\x0a\
"

qt_resource_name = "\
\x00\x0b\
\x00\xb0\xe2\x96\
\x00\x6c\
\x00\x6f\x00\x61\x00\x64\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0c\
\x03\x50\x85\x56\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x67\x00\x75\x00\x69\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0d\
\x06\x52\xd9\xe7\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x70\x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x14\
\x0d\x60\xa4\x5f\
\x00\x63\
\x00\x6f\x00\x6c\x00\x75\x00\x6d\x00\x6e\x00\x5f\x00\x61\x00\x64\x00\x64\x00\x5f\x00\x61\x00\x66\x00\x74\x00\x65\x00\x72\x00\x2e\
\x00\x69\x00\x63\x00\x6f\
\x00\x0b\
\x04\x14\x52\xc7\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x6e\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x08\
\x0c\xf7\x5e\x27\
\x00\x74\
\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x6a\x00\x70\x00\x67\
\x00\x0a\
\x03\x69\xb5\x96\
\x00\x79\
\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00\x77\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0b\
\x0c\x12\x65\x87\
\x00\x61\
\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x55\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0f\
\x0f\xf5\x97\xa7\
\x00\x64\
\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0d\
\x01\x40\x1d\x27\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x09\
\x08\x15\xc3\x57\
\x00\x63\
\x00\x79\x00\x61\x00\x6e\x00\x2e\x00\x6a\x00\x70\x00\x65\x00\x67\
\x00\x0c\
\x00\xf5\x40\x07\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x73\x00\x77\x00\x61\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x0b\xdf\x7d\x87\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x61\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x07\
\x0a\xc7\x57\x87\
\x00\x63\
\x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x10\
\x0e\xf5\xba\x47\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x75\x00\x6e\x00\x6d\x00\x69\x00\x72\x00\x72\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0a\
\x0f\x6e\x56\x07\
\x00\x70\
\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x09\
\x07\x9e\x9f\xb6\
\x00\x62\
\x00\x6c\x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x09\
\x09\x28\xa5\x87\
\x00\x74\
\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\
\x00\x08\
\x03\x67\x43\x16\
\x00\x70\
\x00\x6c\x00\x6f\x00\x74\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0c\
\x09\xa7\x0e\x47\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x71\x00\x75\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0c\
\x06\xd4\x1c\xa7\
\x00\x61\
\x00\x64\x00\x64\x00\x5f\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x0a\x81\x46\x27\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x69\x00\x6e\x00\x76\x00\x65\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0b\
\x07\x55\x95\x3f\
\x00\x72\
\x00\x6f\x00\x77\x00\x5f\x00\x61\x00\x64\x00\x64\x00\x2e\x00\x69\x00\x63\x00\x6f\
\x00\x0d\
\x08\x13\x81\x87\
\x00\x61\
\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x44\x00\x6f\x00\x77\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x13\
\x04\xe2\x9a\xe7\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x6d\x00\x69\x00\x72\x00\x72\x00\x6f\x00\x72\x00\x68\x00\x6f\x00\x72\x00\x69\x00\x7a\x00\x2e\x00\x70\
\x00\x6e\x00\x67\
\x00\x08\
\x0c\x33\x40\x36\
\x00\x68\
\x00\x65\x00\x6c\x00\x70\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x07\
\x08\xb7\x4d\x16\
\x00\x72\
\x00\x65\x00\x64\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x12\
\x07\x49\xa9\xe7\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x6d\x00\x69\x00\x72\x00\x72\x00\x6f\x00\x72\x00\x76\x00\x65\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\
\x00\x67\
\x00\x0c\
\x0b\x21\x0f\x87\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0c\
\x05\x68\x0e\x67\
\x00\x66\
\x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x08\
\x06\x24\x5a\x07\
\x00\x63\
\x00\x6f\x00\x6c\x00\x61\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x01\x0f\x01\x9f\
\x00\x72\
\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x69\x00\x63\x00\x6f\
\x00\x0b\
\x05\x46\xb6\x76\
\x00\x6d\
\x00\x61\x00\x67\x00\x65\x00\x6e\x00\x74\x00\x61\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x08\
\x04\xd2\x5f\x67\
\x00\x69\
\x00\x6e\x00\x66\x00\x6f\x00\x2e\x00\x6a\x00\x70\x00\x67\
\x00\x09\
\x0a\x6c\x78\x43\
\x00\x72\
\x00\x65\x00\x73\x00\x6f\x00\x75\x00\x72\x00\x63\x00\x65\x00\x73\
\x00\x11\
\x02\xe4\xa0\x3f\
\x00\x63\
\x00\x6f\x00\x70\x00\x79\x00\x5f\x00\x63\x00\x6f\x00\x6c\x00\x75\x00\x6c\x00\x75\x00\x6d\x00\x6e\x00\x2e\x00\x69\x00\x63\x00\x6f\
\
\x00\x09\
\x0a\xa8\xa4\x40\
\x00\x70\
\x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x62\x00\x6d\x00\x70\
\x00\x08\
\x06\x7c\x5a\x07\
\x00\x63\
\x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x0f\x73\xcc\x87\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x6d\x00\x69\x00\x72\x00\x72\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0b\
\x07\x69\xdf\x27\
\x00\x72\
\x00\x65\x00\x70\x00\x6c\x00\x61\x00\x63\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\
\x00\x11\
\x06\x86\x90\xdf\
\x00\x63\
\x00\x6f\x00\x6c\x00\x75\x00\x6d\x00\x6e\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x69\x00\x63\x00\x6f\
\
\x00\x09\
\x00\xa8\xb6\x16\
\x00\x77\
\x00\x68\x00\x69\x00\x74\x00\x65\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x08\
\x03\xb8\x40\xd6\
\x00\x62\
\x00\x6c\x00\x75\x00\x65\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x08\
\x0b\x88\x40\xb6\
\x00\x63\
\x00\x75\x00\x62\x00\x65\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0b\
\x00\xbd\xc7\x56\
\x00\x72\
\x00\x75\x00\x6e\x00\x6e\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x08\
\x0a\x61\x5a\xa7\
\x00\x69\
\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x09\
\x07\xd8\xad\x96\
\x00\x69\
\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x0c\
\x0b\x2a\x4f\x67\
\x00\x65\
\x00\x64\x00\x69\x00\x74\x00\x7a\x00\x6f\x00\x6f\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x08\
\x06\x38\x5a\xa7\
\x00\x68\
\x00\x6f\x00\x6d\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x09\
\x0b\xc1\x90\xf6\
\x00\x67\
\x00\x72\x00\x65\x00\x65\x00\x6e\x00\x2e\x00\x67\x00\x69\x00\x66\
\x00\x08\
\x07\x9e\x5a\x47\
\x00\x62\
\x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0e\
\x08\x3c\x5a\xc3\
\x00\x63\
\x00\x6f\x00\x6c\x00\x61\x00\x5f\x00\x74\x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x61\x00\x74\x00\x65\x00\x73\
\x00\x10\
\x0a\xac\x52\xe3\
\x00\x70\
\x00\x79\x00\x74\x00\x68\x00\x6f\x00\x6e\x00\x5f\x00\x74\x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x61\x00\x74\x00\x65\x00\x73\
\x00\x10\
\x04\x85\x92\xb9\
\x00\x74\
\x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x74\x00\x65\x00\x73\x00\x74\x00\x2e\x00\x70\x00\x79\
\x00\x11\
\x08\x59\x36\xdc\
\x00\x74\
\x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x61\x00\x74\x00\x65\x00\x5f\x00\x74\x00\x65\x00\x73\x00\x74\x00\x2e\x00\x63\x00\x6f\x00\x6c\
\
"

qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x33\x00\x00\x00\x01\
\x00\x00\x04\xba\x00\x00\x00\x00\x00\x01\x00\x01\x4a\xbf\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x04\xfe\x00\x00\x00\x00\x00\x01\x00\x01\x55\xd4\
\x00\x00\x01\x4c\x00\x00\x00\x00\x00\x01\x00\x00\x43\x5b\
\x00\x00\x03\x92\x00\x00\x00\x00\x00\x01\x00\x01\x1a\x52\
\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x52\
\x00\x00\x03\xfe\x00\x00\x00\x00\x00\x01\x00\x01\x27\x79\
\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x64\
\x00\x00\x02\x10\x00\x00\x00\x00\x00\x01\x00\x00\xd9\xa5\
\x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x2e\x67\
\x00\x00\x04\xd2\x00\x00\x00\x00\x00\x01\x00\x01\x4c\x08\
\x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xef\
\x00\x00\x03\xd0\x00\x00\x00\x00\x00\x01\x00\x01\x22\x8f\
\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\xfa\xfb\
\x00\x00\x03\xb4\x00\x00\x00\x00\x00\x01\x00\x01\x1e\xd4\
\x00\x00\x03\x5e\x00\x00\x00\x00\x00\x01\x00\x01\x0d\x3f\
\x00\x00\x03\x7c\x00\x00\x00\x00\x00\x01\x00\x01\x12\x87\
\x00\x00\x05\x66\x00\x00\x00\x00\x00\x01\x00\x01\x8c\xf2\
\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x15\x08\
\x00\x00\x04\x3e\x00\x00\x00\x00\x00\x01\x00\x01\x39\xfd\
\x00\x00\x04\x92\x00\x00\x00\x00\x00\x01\x00\x01\x46\x3d\
\x00\x00\x02\x44\x00\x00\x00\x00\x00\x01\x00\x00\xe3\xbd\
\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x01\x02\xa5\
\x00\x00\x02\x84\x00\x00\x00\x00\x00\x01\x00\x00\xf2\xf1\
\x00\x00\x04\x76\x00\x00\x00\x00\x00\x01\x00\x01\x41\xf3\
\x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x01\x95\x07\
\x00\x00\x01\xe0\x00\x00\x00\x00\x00\x01\x00\x00\xd5\x1f\
\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x01\x83\x7d\
\x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xf7\x73\
\x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x40\x72\
\x00\x00\x03\x02\x00\x00\x00\x00\x00\x01\x00\x01\x01\xfb\
\x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x00\xd6\x68\
\x00\x00\x02\x26\x00\x00\x00\x00\x00\x01\x00\x00\xdc\x3e\
\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x01\x79\xa0\
\x00\x00\x03\xe6\x00\x02\x00\x00\x00\x02\x00\x00\x00\x34\
\x00\x00\x02\x62\x00\x00\x00\x00\x00\x01\x00\x00\xf2\x32\
\x00\x00\x04\x26\x00\x00\x00\x00\x00\x01\x00\x01\x30\x73\
\x00\x00\x01\x8c\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x2a\
\x00\x00\x03\x40\x00\x00\x00\x00\x00\x01\x00\x01\x03\x98\
\x00\x00\x05\x48\x00\x00\x00\x00\x00\x01\x00\x01\x86\x3b\
\x00\x00\x04\xe8\x00\x00\x00\x00\x00\x01\x00\x01\x4d\x51\
\x00\x00\x05\x7c\x00\x00\x00\x00\x00\x01\x00\x01\x93\xbe\
\x00\x00\x01\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x44\x11\
\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x2f\xb0\
\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\xfb\xe4\
\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x27\x93\
\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x6d\
\x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x52\x6c\
\x00\x00\x01\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x53\x8d\
\x00\x00\x04\x54\x00\x00\x00\x00\x00\x01\x00\x01\x41\x29\
\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x33\x1c\
\x00\x00\x05\xaa\x00\x02\x00\x00\x00\x01\x00\x00\x00\x37\
\x00\x00\x05\xcc\x00\x02\x00\x00\x00\x01\x00\x00\x00\x36\
\x00\x00\x05\xf2\x00\x00\x00\x00\x00\x01\x00\x01\x9b\x64\
\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x01\x9b\xf7\
"

def qInitResources():
    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)

def qCleanupResources():
    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)

qInitResources()
####START ./../development/new_exceptions.py

class gipsyException(Exception):
    def __init__(self, msj):
        self.msj=msj

class tableException(Exception):
    def __init__(self, msj):
        self.msj=msj

class imageException(Exception):
    def __init__(self, msj):
        self.msj=msj
class sessionException(Exception):
    def __init__(self, msj):
        self.msj=msj

####START ./../development/general.py
#import os
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


p=os.environ.get("HOME")
GUIPSYDIR=p+"/.gipsy/"
TASKFILES=GUIPSYDIR+"guipsyfiles/"
#LASTPATH=os.getcwd()
FORMATS={
         "FITS":"*;; FITS (*.fits)", 
         "SET":"Set (*.image)", 
         "SESSION":"Session files (*.ses)", 
         "TABLE":"*;; DAT (*.dat);; TXT (*.txt);; XML (*.xml)", 
         "VOTABLE":"*;; XML (*.xml)", 
         "IMAGE":"Image files (%s);; EPS (*.eps)" % " ".join(["*.%s" % unicode(format).lower()  for format in QImageReader.supportedImageFormats()]), 
         "PYFILE":"PY (*.py);;PYC (*.pyc)", 
         "TEXT":"*;; TXT (*.txt)", 
         "COLA":"*;; COL (*.col)", 
         "PARAM":"Parameters (*.param)"
         }
menuTips={

#FILE MENU
        "empty_cola_file":"Create an empty  cola file", 
        "empty_python_file":"Create an empty python file", 
        "new_text_file":"Create text file",
        "new_session":"Create a new session", 
        
        "open_set":"Open Set",
        "open_fits":"Create the Set associated to the fits and open it",
        "open_table":"Open ASCII Table ", 
        "open_image":"Open Image File",
        "open_pyfile": "Open Python File", 
        "open_cola":"Open Cola File",
        "open_text":"Open Text File",
        "open_session":"Open Session", 
        
        "save_session": "Save Current Session", 
        "save": "Save Current File", 
        "save_as": "Save the file using a new name",
        "save_as_fits":"Save the Set as fits using WFITS task", 
        "save_as_vot":"Save the table as VOTable (xml file) ",
        "save_as_ascii":"Save the current VOtable as an ASCII table",
        "close":"Close Current Document", 
        "close_session":"Close Current Session", 
        "close_all": "Close all opened documents", 
        "samp": "Register Samp", 
        "delete_set":"Delete the current Set",
        "delete_settable":"Delete the table from the Set",
        "rename" :"Change the name of the file", 
        'remove_fileAndChildren':"Remove the file and all output (its descendants)", 
        "remove":"Remove the file from the current session", 
        "quit":"Close the application", 
        

#SET EDITION MENU

        "Clip":"Clip", 
        "Combin":"Combin", 
        "Copy":"Copy", 
        "Decim":"Decim", 
        "Diminish":"Diminish", 
        "EditSet":"Editset", 
        "Extend":"Extend", 
        "Insert":"Insert", 
        "Mean":"Mean/Sum", 
        "MinBox":"MinBox", 
        "Regrid":"Regrid", 
        "Snapper":"Snapper", 
        "Transform":"Transform",
        "Transpose":"Transpose",  
        "Velsmo":"Velsmo", 
        "PyBlot":"PyBlot", 
        "ConDit":"ConDit", 
        "ConRem":"ConRem", 
        "FindGauss":"FindGauss", 
        "MFilter":"MFilter", 
        "Patch":"Patch", 
        "Smooth":"Smooth", 
        
#DISPLAY MENU
        "Maps":"Maps", 
        "Coords":"Coords", 
        "SkyCalq":"SkyCalq", 
        "Sliceview":"Sliceview", 
        "Render":"Render", 
        "VTKVolume":"VTKVolume", 
        "Inspector":"Inspector", 
        "AllSkyPlot":"AllSkyPlot", 
        "CPlot":"CPlot",
        "Reproj":"Reproj", 
        "ReprojFits":"ReprojFits", 
        "WCSFlux":"WCSFlux", 
        
#ANALYSIS MENU
        "EllInt":"EllInt", 
        "GalMod":"GalMod", 
        "Moments":"Moments", 
        "Potential":"Potential", 
        "PPlot":"PPlot", 
        "Profil":"Profil", 
        "ResWri":"ResWri", 
        "RotCur":"RotCur",
        "Shuffle":"Shuffle",  
        "Slice":"Slice", 
        "VelFi":"VelFi", 
        "RotMas":"RotMas", 
        "XGauFit":"XGauFit", 
        "XGauProf":"XGauProf", 
        "GaussCube":"GaussCube", 
        "RotMod":"RotMod", 
        
#VO MENU
        "TOPCAT":"TOPCAT", 
        "ALADIN":"ALADIN", 
        "VOSPEC":"VOSPEC", 
        "VOSearch":"VOSearch", 
        "Send_to":"Send to"
        
      }

GIPSY_COORDS={
              "DEC":["DEGREE"], 
              "RA":["DEGREE"], 
              "FREQ":["HZ", "KHZ", "MHZ", "GHZ"], 
              "VELO":["KM/S", "M/S", "MM/S", "CM/S"], 
              "TIME":["SECOND", "MINUTE", "HOUR", "DAY", "YEAR"], 
              "LAMDA":["METER", "ANGSTROM", "MICRON", "MM", "CM", "INCH", "FOOT", "YARD", "M", "KM", "MILE", "PC","KPC", "MPC"], 
              "GLONG":["DEGREE"], 
              "GLAT":["DEGREE"], 
              "ELON":["DEGREE"], 
              "ELAT":["DEGREE"], 
              "SLONG":["DEGREE"], 
              "SLAT":["DEGREE"]
              }
ERROR_SETBROWSER={
                      'syntax': "BAD INPUT: syntax error", 
                      'overflow': "BAD INPUT: Output buffer overflow", 
                      'twovalues': "BAD INPUT: Exactly 2 items required"
                      
                      }
TASKS_CLASS={#Fclass, Fsubdim 
             "CLIP":(1, 0), 
             "COMBIN":(1, 0), 
             #"COPY":(-1, -1),  # Indeed it is (1,0)
             "COPY":(1, 0, -1), #Added a special class to avoid the control
             "DECIM":(1, 0), 
             "DIMINISH":(1, 0), #Diminish is not in $gip_tsk !??
             "EDITSET":(1, 0), 
             #"EXTEND":(1, 0), 
             "EXTEND":(-1, -1), 
             "INSERT":(1, 0), 
             "INSPECTOR":(1, 2), 
             "MEAN":(2, 0), 
             "MINBOX":(1, 0), 
             #"REGRID":(1, 0), 
             "REGRID":(-1, -1),
             "SNAPPER":(1, 2), 
             "TRANSFORM":(1, 2), 
             "TRANSPOSE":(-1, -1), 
             "VELSMO":(2, 1), 
             "ELLINT":(1, 2), 
              "GALMOD":(1, 2), 
             "MOMENTS":(2, 1), 
             "POTENTIAL":(1, 2), 
             "PPLOT":(-1, -1),  # PPLOT does not have classdim or class. (1,0)
             "PROFIL":(1, 0), 
             "RENDER":(2, 1), 
             "RESWRI":(1, 2), 
             "ROTCUR":(1, 2), 
             "SLICEVIEW":(1, 2), 
             "SHUFFLE":(2, 1), 
             "SLICE":(1, 2), 
             "VELFI":(1, 2) , 
             "VTKVOLUME":(-1, -1) # VTKVOLUME does not have classdim or class.
             }
ROTCURHEADER="!   radius    width systemic  error rotation  error expansion  error    pos.  error incli-  error x-pos.  error y-pos.  error npts   sigma\n\
!                   velocity        velocity         velocity          angle        nation        centre        centre             velocity\n\
! (arcsec) (arcsec)   (km/s) (km/s)   (km/s) (km/s)    (km/s) (km/s)  (deg.) (deg.) (deg.) (deg.) (grid) (grid) (grid) (grid)        (km/s)\n"
ELLINTHEADER="! radius radius    Msd-t   Mass-t Cum.Mass      Msd     Mass Cum.Mass      sum subpix     area  area-bl  segLO  segHI  width     pa   incl\n\
! arcsec    Kpc  Mo/pc^2  10^9 M0  10^9 M0  Mo/pc^2  10^9 M0  10^9 M0        ?      #   pixels   pixels   deg.   deg. arcsec   deg.   deg.\n\
"

DIRPYTHONTEMPLATE=":resources/python_templates/"
DIRCOLATEMPLATE=":resources/cola_templates/"
class counter ( object ):
    def __init__ ( self , ini =0 , *a ,** k ):
        super ( counter , self ). __init__ (* a ,** k )
        self . value = ini
    def __call__ ( self ):
        current = self . value
        self . value += 1
        return current
        

newId=counter()
taskCounter=counter()
ID_POLL=['TASKCOM0=', 'TASKCOM1=','TASKCOM2=']

def insetDefaultText(setname, axes, gdsClass, classDim):
     i=0
     boxtext=""
     subsetText=setname
     xbox=[]
     ybox=[]
    
     if gdsClass==-1: # TRANSPOSE
        subsetText=setname
        boxtext=""
     else:
        
     
         if gdsClass==1:
            limit=2 if classDim==0 else classDim
         else:
                dim=len(axes)
                if classDim!=0:
                    limit=dim-classDim
                else: # if required dim is 0, select one default axis , the last one
                    limit=dim-1
    
         for axe in axes:
             (axename, range)=axe
             axename=axename.split("-")[0].upper()
             if i<limit:
                 x, y=range.split()
                 xbox.append(x)
                 ybox.append(y)
             else:
                 subsetText=subsetText+" "+axename
             
             i +=1
     
    
         for x in xbox:
             boxtext=boxtext+" "+x
         for y in ybox:
             boxtext=boxtext+" "+y
    
     
     return (subsetText, boxtext)
        
####START ./../development/workflow/Ui_workflow.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'workflow.ui'
#
# Created: Mon Nov  7 11:32:55 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_workflow(object):
    def setupUi(self, workflow):
        workflow.setObjectName("workflow")
        workflow.resize(400, 300)
        self.verticalLayout = QtGui.QVBoxLayout(workflow)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtGui.QLabel(workflow)
        font = QtGui.QFont()
        font.setFamily("Sans Serif")
        font.setPointSize(14)
        font.setWeight(75)
        font.setBold(True)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.saveButton = QtGui.QPushButton(workflow)
        self.saveButton.setMaximumSize(QtCore.QSize(100, 16777215))
        self.saveButton.setObjectName("saveButton")
        self.verticalLayout.addWidget(self.saveButton)

        self.retranslateUi(workflow)
        QtCore.QMetaObject.connectSlotsByName(workflow)

    def retranslateUi(self, workflow):
        workflow.setWindowTitle(QtGui.QApplication.translate("workflow", "Form", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("workflow", "Workflow", None, QtGui.QApplication.UnicodeUTF8))
        self.saveButton.setText(QtGui.QApplication.translate("workflow", "Save as a file", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/workflow/Ui_workflow.py
####START ./../development/launch/Ui_launch.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'launch.ui'
#
# Created: Tue Nov  6 10:20:19 2012
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_launch(object):
    def setupUi(self, launch):
        launch.setObjectName("launch")
        launch.resize(400, 311)
        self.verticalLayout = QtGui.QVBoxLayout(launch)
        self.verticalLayout.setObjectName("verticalLayout")
        self.plainTextEdit = QtGui.QPlainTextEdit(launch)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.verticalLayout.addWidget(self.plainTextEdit)
        self.frame = QtGui.QFrame(launch)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtGui.QSpacerItem(73, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.launchButton = QtGui.QPushButton(self.frame)
        self.launchButton.setObjectName("launchButton")
        self.horizontalLayout.addWidget(self.launchButton)
        self.verticalLayout.addWidget(self.frame)

        self.retranslateUi(launch)
        QtCore.QMetaObject.connectSlotsByName(launch)

    def retranslateUi(self, launch):
        launch.setWindowTitle(QtGui.QApplication.translate("launch", "Form", None, QtGui.QApplication.UnicodeUTF8))
        self.launchButton.setText(QtGui.QApplication.translate("launch", "Launch", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/launch/Ui_launch.py
####START ./../development/help/Ui_help.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'help.ui'
#
# Created: Tue Mar 29 01:49:18 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_help(object):
    def setupUi(self, help):
        help.setObjectName("help")
        help.resize(400, 300)
        self.verticalLayout = QtGui.QVBoxLayout(help)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtGui.QLabel(help)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.lineEdit = QtGui.QLineEdit(help)
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.splitter = QtGui.QSplitter(help)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName("splitter")
        self.listWidget = QtGui.QListWidget(self.splitter)
        self.listWidget.setObjectName("listWidget")
        self.textBrowser = QtGui.QTextBrowser(self.splitter)
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.splitter)

        self.retranslateUi(help)
        QtCore.QMetaObject.connectSlotsByName(help)

    def retranslateUi(self, help):
        help.setWindowTitle(QtGui.QApplication.translate("help", "Form", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("help", "Search task:", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/help/Ui_help.py
####START ./../development/help/Ui_helpFile.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'helpFile.ui'
#
# Created: Tue Mar 29 15:27:58 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_helpFile(object):
    def setupUi(self, helpFile):
        helpFile.setObjectName("helpFile")
        helpFile.resize(493, 300)
        font = QtGui.QFont()
        font.setFamily("Courier 10 Pitch")
        helpFile.setFont(font)
        self.verticalLayout = QtGui.QVBoxLayout(helpFile)
        self.verticalLayout.setObjectName("verticalLayout")
        self.textBrowser = QtGui.QTextBrowser(helpFile)
        font = QtGui.QFont()
        font.setFamily("Sans Serif")
        font.setPointSize(10)
        self.textBrowser.setFont(font)
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.textBrowser)
        self.frame = QtGui.QFrame(helpFile)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.label = QtGui.QLabel(self.frame)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem1)
        self.launchButton = QtGui.QPushButton(self.frame)
        self.launchButton.setObjectName("launchButton")
        self.horizontalLayout.addWidget(self.launchButton)
        self.verticalLayout.addWidget(self.frame)

        self.retranslateUi(helpFile)
        QtCore.QMetaObject.connectSlotsByName(helpFile)

    def retranslateUi(self, helpFile):
        helpFile.setWindowTitle(QtGui.QApplication.translate("helpFile", "Form", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("helpFile", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Courier 10 Pitch\'; font-size:12pt; font-weight:400; font-style:normal;\">\n"
"<table border=\"0\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\">\n"
"<tr>\n"
"<td>\n"
"<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/help.gif\" /></p></td>\n"
"<td>\n"
"<p align=\"justify\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt; font-weight:600;\">The process information of this <br />task is sent to HERMES screen</span></p></td></tr></table></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.launchButton.setText(QtGui.QApplication.translate("helpFile", "Launch Task", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/help/Ui_helpFile.py
####START ./../development/text/Ui_text.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'text.ui'
#
# Created: Tue Mar 29 01:51:27 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_text(object):
    def setupUi(self, text):
        text.setObjectName("text")
        text.resize(400, 311)
        self.verticalLayout = QtGui.QVBoxLayout(text)
        self.verticalLayout.setObjectName("verticalLayout")
        self.plainTextEdit = QtGui.QPlainTextEdit(text)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.verticalLayout.addWidget(self.plainTextEdit)

        self.retranslateUi(text)
        QtCore.QMetaObject.connectSlotsByName(text)

    def retranslateUi(self, text):
        text.setWindowTitle(QtGui.QApplication.translate("text", "Form", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/text/Ui_text.py
####START ./../development/dialog/Ui_historyDlg.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'historyDlg.ui'
#
# Created: Tue Mar 29 01:49:37 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_historyDlg(object):
    def setupUi(self, historyDlg):
        historyDlg.setObjectName("historyDlg")
        historyDlg.resize(400, 300)
        self.verticalLayout = QtGui.QVBoxLayout(historyDlg)
        self.verticalLayout.setObjectName("verticalLayout")
        self.historyArea = QtGui.QPlainTextEdit(historyDlg)
        self.historyArea.setEnabled(True)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        self.historyArea.setPalette(palette)
        self.historyArea.setReadOnly(True)
        self.historyArea.setPlainText("")
        self.historyArea.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
        self.historyArea.setObjectName("historyArea")
        self.verticalLayout.addWidget(self.historyArea)
        self.buttonBox = QtGui.QDialogButtonBox(historyDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Close)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(historyDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), historyDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), historyDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(historyDlg)

    def retranslateUi(self, historyDlg):
        historyDlg.setWindowTitle(QtGui.QApplication.translate("historyDlg", "HISTORY", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/dialog/Ui_historyDlg.py
####START ./../development/dialog/Ui_fitsHeaderDlg.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'fitsHeaderDlg.ui'
#
# Created: Wed Nov  9 10:17:04 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_fitsHeaderDlg(object):
    def setupUi(self, fitsHeaderDlg):
        fitsHeaderDlg.setObjectName("fitsHeaderDlg")
        fitsHeaderDlg.resize(642, 662)
        self.verticalLayout = QtGui.QVBoxLayout(fitsHeaderDlg)
        self.verticalLayout.setObjectName("verticalLayout")
        self.headerArea = QtGui.QTextBrowser(fitsHeaderDlg)
        self.headerArea.setEnabled(True)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.headerArea.sizePolicy().hasHeightForWidth())
        self.headerArea.setSizePolicy(sizePolicy)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        self.headerArea.setPalette(palette)
        self.headerArea.setReadOnly(True)
        self.headerArea.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
        self.headerArea.setObjectName("headerArea")
        self.verticalLayout.addWidget(self.headerArea)
        self.buttonBox = QtGui.QDialogButtonBox(fitsHeaderDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Close)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(fitsHeaderDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), fitsHeaderDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), fitsHeaderDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(fitsHeaderDlg)

    def retranslateUi(self, fitsHeaderDlg):
        fitsHeaderDlg.setWindowTitle(QtGui.QApplication.translate("fitsHeaderDlg", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.headerArea.setHtml(QtGui.QApplication.translate("fitsHeaderDlg", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/dialog/Ui_fitsHeaderDlg.py
####START ./../development/dialog/Ui_plotTableWindow.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'plotTableWindow.ui'
#
# Created: Wed Oct 17 09:23:09 2012
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_plotTableWindow(object):
    def setupUi(self, plotTableWindow):
        plotTableWindow.setObjectName("plotTableWindow")
        plotTableWindow.resize(600, 796)
        self.centralwidget = QtGui.QWidget(plotTableWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtGui.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.plot_frame = QtGui.QFrame(self.centralwidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.plot_frame.sizePolicy().hasHeightForWidth())
        self.plot_frame.setSizePolicy(sizePolicy)
        self.plot_frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.plot_frame.setFrameShadow(QtGui.QFrame.Raised)
        self.plot_frame.setObjectName("plot_frame")
        self.plot_frame_Layout = QtGui.QVBoxLayout(self.plot_frame)
        self.plot_frame_Layout.setObjectName("plot_frame_Layout")
        self.horizontalLayout.addWidget(self.plot_frame)
        self.frame_2 = QtGui.QFrame(self.centralwidget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
        self.frame_2.setSizePolicy(sizePolicy)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.verticalLayout = QtGui.QVBoxLayout(self.frame_2)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox = QtGui.QGroupBox(self.frame_2)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout = QtGui.QGridLayout(self.groupBox)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(self.groupBox)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.label_2 = QtGui.QLabel(self.groupBox)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.label_3 = QtGui.QLabel(self.groupBox)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.label_4 = QtGui.QLabel(self.groupBox)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 5, 0, 1, 1)
        self.plotLabel = QtGui.QLineEdit(self.groupBox)
        self.plotLabel.setObjectName("plotLabel")
        self.gridLayout.addWidget(self.plotLabel, 5, 1, 1, 1)
        self.tableList = QtGui.QComboBox(self.groupBox)
        self.tableList.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
        self.tableList.setMinimumContentsLength(15)
        self.tableList.setObjectName("tableList")
        self.gridLayout.addWidget(self.tableList, 0, 1, 1, 2)
        self.XAxis = QtGui.QComboBox(self.groupBox)
        self.XAxis.setObjectName("XAxis")
        self.gridLayout.addWidget(self.XAxis, 1, 1, 1, 1)
        self.YAxis = QtGui.QComboBox(self.groupBox)
        self.YAxis.setObjectName("YAxis")
        self.gridLayout.addWidget(self.YAxis, 2, 1, 1, 1)
        self.addButton = QtGui.QPushButton(self.groupBox)
        self.addButton.setObjectName("addButton")
        self.gridLayout.addWidget(self.addButton, 5, 2, 1, 1)
        self.XError = QtGui.QComboBox(self.groupBox)
        self.XError.setEnabled(False)
        self.XError.setObjectName("XError")
        self.gridLayout.addWidget(self.XError, 3, 1, 1, 1)
        self.YError = QtGui.QComboBox(self.groupBox)
        self.YError.setEnabled(False)
        self.YError.setObjectName("YError")
        self.gridLayout.addWidget(self.YError, 4, 1, 1, 1)
        self.xerrorCheck = QtGui.QCheckBox(self.groupBox)
        self.xerrorCheck.setObjectName("xerrorCheck")
        self.gridLayout.addWidget(self.xerrorCheck, 3, 0, 1, 1)
        self.yerrorCheck = QtGui.QCheckBox(self.groupBox)
        self.yerrorCheck.setObjectName("yerrorCheck")
        self.gridLayout.addWidget(self.yerrorCheck, 4, 0, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)
        self.groupBox_2 = QtGui.QGroupBox(self.frame_2)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2)
        self.gridLayout_2.setObjectName("gridLayout_2")
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem, 0, 2, 1, 1)
        self.plotList = QtGui.QListWidget(self.groupBox_2)
        self.plotList.setObjectName("plotList")
        self.gridLayout_2.addWidget(self.plotList, 0, 0, 3, 1)
        self.delPlotButton = QtGui.QPushButton(self.groupBox_2)
        self.delPlotButton.setObjectName("delPlotButton")
        self.gridLayout_2.addWidget(self.delPlotButton, 0, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_2)
        self.groupBox_3 = QtGui.QGroupBox(self.frame_2)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_3)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.plotButton = QtGui.QPushButton(self.groupBox_3)
        self.plotButton.setObjectName("plotButton")
        self.gridLayout_3.addWidget(self.plotButton, 3, 2, 1, 1)
        self.legendFrame = QtGui.QFrame(self.groupBox_3)
        self.legendFrame.setEnabled(False)
        self.legendFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.legendFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.legendFrame.setObjectName("legendFrame")
        self.gridLayout_4 = QtGui.QGridLayout(self.legendFrame)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.label_5 = QtGui.QLabel(self.legendFrame)
        self.label_5.setObjectName("label_5")
        self.gridLayout_4.addWidget(self.label_5, 1, 0, 1, 1)
        self.titleLine = QtGui.QLineEdit(self.legendFrame)
        self.titleLine.setInputMask("")
        self.titleLine.setObjectName("titleLine")
        self.gridLayout_4.addWidget(self.titleLine, 1, 1, 1, 3)
        self.label_6 = QtGui.QLabel(self.legendFrame)
        self.label_6.setObjectName("label_6")
        self.gridLayout_4.addWidget(self.label_6, 2, 0, 1, 1)
        self.xposSpin = QtGui.QDoubleSpinBox(self.legendFrame)
        self.xposSpin.setMaximum(1.0)
        self.xposSpin.setSingleStep(0.1)
        self.xposSpin.setObjectName("xposSpin")
        self.gridLayout_4.addWidget(self.xposSpin, 2, 1, 1, 1)
        self.yposSpin = QtGui.QDoubleSpinBox(self.legendFrame)
        self.yposSpin.setMaximum(1.0)
        self.yposSpin.setSingleStep(0.1)
        self.yposSpin.setObjectName("yposSpin")
        self.gridLayout_4.addWidget(self.yposSpin, 2, 2, 1, 1)
        self.positionCombo = QtGui.QComboBox(self.legendFrame)
        self.positionCombo.setObjectName("positionCombo")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.positionCombo.addItem("")
        self.gridLayout_4.addWidget(self.positionCombo, 2, 3, 1, 1)
        self.label_7 = QtGui.QLabel(self.legendFrame)
        self.label_7.setObjectName("label_7")
        self.gridLayout_4.addWidget(self.label_7, 3, 0, 1, 1)
        self.ncolSpin = QtGui.QSpinBox(self.legendFrame)
        self.ncolSpin.setObjectName("ncolSpin")
        self.gridLayout_4.addWidget(self.ncolSpin, 3, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.legendFrame)
        self.label_8.setObjectName("label_8")
        self.gridLayout_4.addWidget(self.label_8, 4, 0, 1, 1)
        self.textSizeSpin = QtGui.QSpinBox(self.legendFrame)
        self.textSizeSpin.setObjectName("textSizeSpin")
        self.gridLayout_4.addWidget(self.textSizeSpin, 4, 1, 1, 1)
        self.fancyBox = QtGui.QCheckBox(self.legendFrame)
        self.fancyBox.setObjectName("fancyBox")
        self.gridLayout_4.addWidget(self.fancyBox, 5, 0, 1, 1)
        self.shadowBox = QtGui.QCheckBox(self.legendFrame)
        self.shadowBox.setObjectName("shadowBox")
        self.gridLayout_4.addWidget(self.shadowBox, 6, 0, 1, 1)
        self.gridLayout_3.addWidget(self.legendFrame, 1, 0, 1, 3)
        self.showLegendBox = QtGui.QCheckBox(self.groupBox_3)
        self.showLegendBox.setObjectName("showLegendBox")
        self.gridLayout_3.addWidget(self.showLegendBox, 0, 0, 1, 1)
        self.saveButton = QtGui.QPushButton(self.groupBox_3)
        self.saveButton.setEnabled(False)
        self.saveButton.setObjectName("saveButton")
        self.gridLayout_3.addWidget(self.saveButton, 3, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_3)
        self.horizontalLayout.addWidget(self.frame_2)
        plotTableWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(plotTableWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 600, 25))
        self.menubar.setObjectName("menubar")
        plotTableWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(plotTableWindow)
        self.statusbar.setObjectName("statusbar")
        plotTableWindow.setStatusBar(self.statusbar)

        self.retranslateUi(plotTableWindow)
        QtCore.QMetaObject.connectSlotsByName(plotTableWindow)

    def retranslateUi(self, plotTableWindow):
        plotTableWindow.setWindowTitle(QtGui.QApplication.translate("plotTableWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("plotTableWindow", "Data", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("plotTableWindow", "Table", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("plotTableWindow", "X Axis", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("plotTableWindow", "Y Axis", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("plotTableWindow", "Plot Label", None, QtGui.QApplication.UnicodeUTF8))
        self.addButton.setText(QtGui.QApplication.translate("plotTableWindow", "ADD", None, QtGui.QApplication.UnicodeUTF8))
        self.xerrorCheck.setText(QtGui.QApplication.translate("plotTableWindow", "X Error", None, QtGui.QApplication.UnicodeUTF8))
        self.yerrorCheck.setText(QtGui.QApplication.translate("plotTableWindow", "Y Error", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("plotTableWindow", "Plots", None, QtGui.QApplication.UnicodeUTF8))
        self.delPlotButton.setText(QtGui.QApplication.translate("plotTableWindow", "DELETE", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_3.setTitle(QtGui.QApplication.translate("plotTableWindow", "Legend", None, QtGui.QApplication.UnicodeUTF8))
        self.plotButton.setText(QtGui.QApplication.translate("plotTableWindow", "PLOT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("plotTableWindow", "Title", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("plotTableWindow", "Position", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(0, QtGui.QApplication.translate("plotTableWindow", "<-- Position", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(1, QtGui.QApplication.translate("plotTableWindow", "best", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(2, QtGui.QApplication.translate("plotTableWindow", "upper right", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(3, QtGui.QApplication.translate("plotTableWindow", "upper left", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(4, QtGui.QApplication.translate("plotTableWindow", "lower left", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(5, QtGui.QApplication.translate("plotTableWindow", "right", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(6, QtGui.QApplication.translate("plotTableWindow", "center left", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(7, QtGui.QApplication.translate("plotTableWindow", "center right", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(8, QtGui.QApplication.translate("plotTableWindow", "lower center", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(9, QtGui.QApplication.translate("plotTableWindow", "upper center", None, QtGui.QApplication.UnicodeUTF8))
        self.positionCombo.setItemText(10, QtGui.QApplication.translate("plotTableWindow", "center", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("plotTableWindow", "Num. Col", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("plotTableWindow", "Text Size", None, QtGui.QApplication.UnicodeUTF8))
        self.fancyBox.setText(QtGui.QApplication.translate("plotTableWindow", "Fancy Box", None, QtGui.QApplication.UnicodeUTF8))
        self.shadowBox.setText(QtGui.QApplication.translate("plotTableWindow", "Shadow", None, QtGui.QApplication.UnicodeUTF8))
        self.showLegendBox.setText(QtGui.QApplication.translate("plotTableWindow", "Show legend", None, QtGui.QApplication.UnicodeUTF8))
        self.saveButton.setText(QtGui.QApplication.translate("plotTableWindow", "Save to Table", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/dialog/Ui_plotTableWindow.py
####START ./../development/dialog/Ui_tableHeadersDlg.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'tableHeadersDlg.ui'
#
# Created: Tue Mar 29 01:50:59 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_tableHeadersDlg(object):
    def setupUi(self, tableHeadersDlg):
        tableHeadersDlg.setObjectName("tableHeadersDlg")
        tableHeadersDlg.resize(400, 300)
        self.verticalLayout = QtGui.QVBoxLayout(tableHeadersDlg)
        self.verticalLayout.setObjectName("verticalLayout")
        self.plainTextEdit = QtGui.QPlainTextEdit(tableHeadersDlg)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.verticalLayout.addWidget(self.plainTextEdit)
        self.buttonBox = QtGui.QDialogButtonBox(tableHeadersDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(tableHeadersDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), tableHeadersDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), tableHeadersDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(tableHeadersDlg)

    def retranslateUi(self, tableHeadersDlg):
        tableHeadersDlg.setWindowTitle(QtGui.QApplication.translate("tableHeadersDlg", "Dialog", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/dialog/Ui_tableHeadersDlg.py
####START ./../development/dialog/Ui_gipsyHeadersDlg.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'gipsyHeadersDlg.ui'
#
# Created: Thu Aug 25 14:14:45 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_gipsyHeaderDlg(object):
    def setupUi(self, gipsyHeaderDlg):
        gipsyHeaderDlg.setObjectName("gipsyHeaderDlg")
        gipsyHeaderDlg.resize(495, 713)
        self.verticalLayout = QtGui.QVBoxLayout(gipsyHeaderDlg)
        self.verticalLayout.setObjectName("verticalLayout")
        self.scrollArea = QtGui.QScrollArea(gipsyHeaderDlg)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 475, 591))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.headerLayout = QtGui.QGridLayout(self.scrollAreaWidgetContents)
        self.headerLayout.setObjectName("headerLayout")
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.verticalLayout.addWidget(self.scrollArea)
        self.groupBox = QtGui.QGroupBox(gipsyHeaderDlg)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.newHeaderName1 = QtGui.QLineEdit(self.groupBox)
        self.newHeaderName1.setMaxLength(8)
        self.newHeaderName1.setObjectName("newHeaderName1")
        self.horizontalLayout.addWidget(self.newHeaderName1)
        self.newHeaderData1 = QtGui.QLineEdit(self.groupBox)
        self.newHeaderData1.setMaxLength(72)
        self.newHeaderData1.setObjectName("newHeaderData1")
        self.horizontalLayout.addWidget(self.newHeaderData1)
        self.newHeaderButton1 = QtGui.QPushButton(self.groupBox)
        self.newHeaderButton1.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/add_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.newHeaderButton1.setIcon(icon)
        self.newHeaderButton1.setObjectName("newHeaderButton1")
        self.horizontalLayout.addWidget(self.newHeaderButton1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.verticalLayout.addWidget(self.groupBox)
        self.buttonBox = QtGui.QDialogButtonBox(gipsyHeaderDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Close)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(gipsyHeaderDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), gipsyHeaderDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), gipsyHeaderDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(gipsyHeaderDlg)

    def retranslateUi(self, gipsyHeaderDlg):
        gipsyHeaderDlg.setWindowTitle(QtGui.QApplication.translate("gipsyHeaderDlg", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("gipsyHeaderDlg", "Add a new header item", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/dialog/Ui_gipsyHeadersDlg.py
####START ./../development/dialog/Ui_editPlotDlg.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'editPlotDlg.ui'
#
# Created: Tue Mar 29 02:42:04 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_editPlotDlg(object):
    def setupUi(self, editPlotDlg):
        editPlotDlg.setObjectName("editPlotDlg")
        editPlotDlg.resize(278, 230)
        self.gridLayout = QtGui.QGridLayout(editPlotDlg)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(editPlotDlg)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.buttonBox = QtGui.QDialogButtonBox(editPlotDlg)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout.addWidget(self.buttonBox, 5, 0, 1, 4)
        self.label_2 = QtGui.QLabel(editPlotDlg)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.label_3 = QtGui.QLabel(editPlotDlg)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.plotLabel = QtGui.QLineEdit(editPlotDlg)
        self.plotLabel.setObjectName("plotLabel")
        self.gridLayout.addWidget(self.plotLabel, 0, 1, 1, 1)
        self.styleList = QtGui.QComboBox(editPlotDlg)
        self.styleList.setObjectName("styleList")
        self.styleList.addItem("")
        self.styleList.addItem("")
        self.styleList.addItem("")
        self.styleList.addItem("")
        self.gridLayout.addWidget(self.styleList, 2, 1, 1, 1)
        self.colorList = QtGui.QComboBox(editPlotDlg)
        self.colorList.setObjectName("colorList")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/blue.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon, "")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/green.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon1, "")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/red.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon2, "")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/cyan.jpeg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon3, "")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/magenta.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon4, "")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/yellow.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon5, "")
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(":/black.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon6, "")
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap(":/white.gif"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.colorList.addItem(icon7, "")
        self.gridLayout.addWidget(self.colorList, 1, 1, 1, 1)

        self.retranslateUi(editPlotDlg)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), editPlotDlg.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), editPlotDlg.reject)
        QtCore.QMetaObject.connectSlotsByName(editPlotDlg)

    def retranslateUi(self, editPlotDlg):
        editPlotDlg.setWindowTitle(QtGui.QApplication.translate("editPlotDlg", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("editPlotDlg", "Label", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("editPlotDlg", "Color", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("editPlotDlg", "Style", None, QtGui.QApplication.UnicodeUTF8))
        self.styleList.setItemText(0, QtGui.QApplication.translate("editPlotDlg", "Solid Line", None, QtGui.QApplication.UnicodeUTF8))
        self.styleList.setItemText(1, QtGui.QApplication.translate("editPlotDlg", "Dashed Line", None, QtGui.QApplication.UnicodeUTF8))
        self.styleList.setItemText(2, QtGui.QApplication.translate("editPlotDlg", "Dash-Dot Line", None, QtGui.QApplication.UnicodeUTF8))
        self.styleList.setItemText(3, QtGui.QApplication.translate("editPlotDlg", "Dotted Line", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(0, QtGui.QApplication.translate("editPlotDlg", "Blue", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(1, QtGui.QApplication.translate("editPlotDlg", "Green", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(2, QtGui.QApplication.translate("editPlotDlg", "Red", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(3, QtGui.QApplication.translate("editPlotDlg", "Cyan", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(4, QtGui.QApplication.translate("editPlotDlg", "Magenta", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(5, QtGui.QApplication.translate("editPlotDlg", "Yellow", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(6, QtGui.QApplication.translate("editPlotDlg", "Black", None, QtGui.QApplication.UnicodeUTF8))
        self.colorList.setItemText(7, QtGui.QApplication.translate("editPlotDlg", "White", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/dialog/Ui_editPlotDlg.py
####START ./../development/images/Ui_images.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'images.ui'
#
# Created: Tue Mar 29 01:49:59 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_images(object):
    def setupUi(self, images):
        images.setObjectName("images")
        images.resize(400, 300)
        self.horizontalLayout = QtGui.QHBoxLayout(images)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.graphicsView = QtGui.QGraphicsView(images)
        self.graphicsView.setObjectName("graphicsView")
        self.horizontalLayout.addWidget(self.graphicsView)

        self.retranslateUi(images)
        QtCore.QMetaObject.connectSlotsByName(images)

    def retranslateUi(self, images):
        images.setWindowTitle(QtGui.QApplication.translate("images", "Form", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/images/Ui_images.py
####START ./../development/table/Ui_tablePreview.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'tablePreview.ui'
#
# Created: Mon Jun  6 18:05:27 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_tablePreview(object):
    def setupUi(self, tablePreview):
        tablePreview.setObjectName("tablePreview")
        tablePreview.resize(505, 288)
        self.verticalLayout = QtGui.QVBoxLayout(tablePreview)
        self.verticalLayout.setObjectName("verticalLayout")
        self.textEdit = QtGui.QTextEdit(tablePreview)
        self.textEdit.setEnabled(True)
        self.textEdit.setLineWrapMode(QtGui.QTextEdit.NoWrap)
        self.textEdit.setReadOnly(True)
        self.textEdit.setObjectName("textEdit")
        self.verticalLayout.addWidget(self.textEdit)
        self.frame = QtGui.QFrame(tablePreview)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtGui.QLabel(self.frame)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.numberLines = QtGui.QLineEdit(self.frame)
        self.numberLines.setObjectName("numberLines")
        self.horizontalLayout.addWidget(self.numberLines)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.verticalLayout.addWidget(self.frame)
        self.buttonBox = QtGui.QDialogButtonBox(tablePreview)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(tablePreview)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), tablePreview.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), tablePreview.reject)
        QtCore.QMetaObject.connectSlotsByName(tablePreview)

    def retranslateUi(self, tablePreview):
        tablePreview.setWindowTitle(QtGui.QApplication.translate("tablePreview", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.textEdit.setHtml(QtGui.QApplication.translate("tablePreview", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("tablePreview", "Number of header lines:", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/table/Ui_tablePreview.py
####START ./../development/table/Ui_table.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'table.ui'
#
# Created: Thu Mar  7 13:56:52 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_table(object):
    def setupUi(self, table):
        table.setObjectName("table")
        table.resize(717, 567)
        self.horizontalLayout = QtGui.QHBoxLayout(table)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.scrollArea = QtGui.QScrollArea(table)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtGui.QWidget(self.scrollArea)
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 697, 547))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.scrollAreaWidgetContents.sizePolicy().hasHeightForWidth())
        self.scrollAreaWidgetContents.setSizePolicy(sizePolicy)
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.verticalLayout = QtGui.QVBoxLayout(self.scrollAreaWidgetContents)
        self.verticalLayout.setObjectName("verticalLayout")
        self.tableData = QtGui.QTableView(self.scrollAreaWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tableData.sizePolicy().hasHeightForWidth())
        self.tableData.setSizePolicy(sizePolicy)
        self.tableData.setObjectName("tableData")
        self.verticalLayout.addWidget(self.tableData)
        self.tableStat = QtGui.QTableView(self.scrollAreaWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tableStat.sizePolicy().hasHeightForWidth())
        self.tableStat.setSizePolicy(sizePolicy)
        self.tableStat.setMaximumSize(QtCore.QSize(16777215, 100))
        self.tableStat.setObjectName("tableStat")
        self.verticalLayout.addWidget(self.tableStat)
        self.widget = QtGui.QWidget(self.scrollAreaWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
        self.widget.setSizePolicy(sizePolicy)
        self.widget.setObjectName("widget")
        self.gridLayout = QtGui.QGridLayout(self.widget)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(self.widget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 1, 1, 1)
        self.label_2 = QtGui.QLabel(self.widget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 1, 1, 1)
        self.addRowButton = QtGui.QPushButton(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.addRowButton.sizePolicy().hasHeightForWidth())
        self.addRowButton.setSizePolicy(sizePolicy)
        self.addRowButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/row_add.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.addRowButton.setIcon(icon)
        self.addRowButton.setObjectName("addRowButton")
        self.gridLayout.addWidget(self.addRowButton, 1, 9, 1, 1)
        self.delRowButton = QtGui.QPushButton(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.delRowButton.sizePolicy().hasHeightForWidth())
        self.delRowButton.setSizePolicy(sizePolicy)
        self.delRowButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/row_delete.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.delRowButton.setIcon(icon1)
        self.delRowButton.setObjectName("delRowButton")
        self.gridLayout.addWidget(self.delRowButton, 1, 10, 1, 1)
        self.label_3 = QtGui.QLabel(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy)
        self.label_3.setMinimumSize(QtCore.QSize(15, 15))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(228, 229, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(134, 136, 170))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(228, 229, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(228, 229, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(134, 136, 170))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(228, 229, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(228, 229, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(134, 136, 170))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(100, 102, 127))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(201, 204, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        self.label_3.setPalette(palette)
        self.label_3.setAutoFillBackground(True)
        self.label_3.setText("")
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.label_4 = QtGui.QLabel(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy)
        self.label_4.setMinimumSize(QtCore.QSize(15, 15))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(236, 255, 227))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(145, 170, 133))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(236, 255, 227))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(236, 255, 227))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(145, 170, 133))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(236, 255, 227))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(236, 255, 227))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(145, 170, 133))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
        brush = QtGui.QBrush(QtGui.QColor(108, 127, 99))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(217, 255, 199))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        self.label_4.setPalette(palette)
        self.label_4.setAutoFillBackground(True)
        self.label_4.setText("")
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 3, 1, 3)
        self.frame = QtGui.QFrame(self.widget)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout_2.setSpacing(6)
        self.horizontalLayout_2.setMargin(0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.headersButton = QtGui.QPushButton(self.frame)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.headersButton.setIcon(icon2)
        self.headersButton.setObjectName("headersButton")
        self.horizontalLayout_2.addWidget(self.headersButton)
        self.plotButton = QtGui.QPushButton(self.frame)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/plot.gif"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.plotButton.setIcon(icon3)
        self.plotButton.setObjectName("plotButton")
        self.horizontalLayout_2.addWidget(self.plotButton)
        self.sampButton = QtGui.QPushButton(self.frame)
        self.sampButton.setObjectName("sampButton")
        self.horizontalLayout_2.addWidget(self.sampButton)
        self.gridLayout.addWidget(self.frame, 0, 6, 1, 5)
        self.delColumnButton = QtGui.QPushButton(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.delColumnButton.sizePolicy().hasHeightForWidth())
        self.delColumnButton.setSizePolicy(sizePolicy)
        self.delColumnButton.setText("")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(":/column_delete.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.delColumnButton.setIcon(icon4)
        self.delColumnButton.setObjectName("delColumnButton")
        self.gridLayout.addWidget(self.delColumnButton, 1, 8, 1, 1)
        self.addColumnButton = QtGui.QPushButton(self.widget)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.addColumnButton.sizePolicy().hasHeightForWidth())
        self.addColumnButton.setSizePolicy(sizePolicy)
        self.addColumnButton.setText("")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(":/column_add_after.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.addColumnButton.setIcon(icon5)
        self.addColumnButton.setObjectName("addColumnButton")
        self.gridLayout.addWidget(self.addColumnButton, 1, 7, 1, 1)
        self.verticalLayout.addWidget(self.widget)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.horizontalLayout.addWidget(self.scrollArea)

        self.retranslateUi(table)
        QtCore.QMetaObject.connectSlotsByName(table)

    def retranslateUi(self, table):
        table.setWindowTitle(QtGui.QApplication.translate("table", "Form", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("table", "Mean", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("table", "Deviation", None, QtGui.QApplication.UnicodeUTF8))
        self.addRowButton.setToolTip(QtGui.QApplication.translate("table", "Add row", None, QtGui.QApplication.UnicodeUTF8))
        self.delRowButton.setToolTip(QtGui.QApplication.translate("table", "Delete row", None, QtGui.QApplication.UnicodeUTF8))
        self.headersButton.setText(QtGui.QApplication.translate("table", "View Headers", None, QtGui.QApplication.UnicodeUTF8))
        self.plotButton.setText(QtGui.QApplication.translate("table", "Plot Table", None, QtGui.QApplication.UnicodeUTF8))
        self.sampButton.setText(QtGui.QApplication.translate("table", "Send it to SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.delColumnButton.setToolTip(QtGui.QApplication.translate("table", "Delete column", None, QtGui.QApplication.UnicodeUTF8))
        self.addColumnButton.setToolTip(QtGui.QApplication.translate("table", "Add column", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/table/Ui_table.py
####START ./../development/browser/Ui_workspaceBrowser.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'workspaceBrowser.ui'
#
# Created: Tue Mar 29 01:52:10 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_workspaceBrowser(object):
    def setupUi(self, workspaceBrowser):
        workspaceBrowser.setObjectName("workspaceBrowser")
        workspaceBrowser.resize(400, 300)
        self.horizontalLayout = QtGui.QHBoxLayout(workspaceBrowser)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.workspaceTree = QtGui.QTreeWidget(workspaceBrowser)
        self.workspaceTree.setObjectName("workspaceTree")
        self.workspaceTree.headerItem().setText(0, "1")
        self.horizontalLayout.addWidget(self.workspaceTree)

        self.retranslateUi(workspaceBrowser)
        QtCore.QMetaObject.connectSlotsByName(workspaceBrowser)

    def retranslateUi(self, workspaceBrowser):
        workspaceBrowser.setWindowTitle(QtGui.QApplication.translate("workspaceBrowser", "Form", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/browser/Ui_workspaceBrowser.py
####START ./../development/gipsyClasses/Ui_galmod.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'galmod.ui'
#
# Created: Fri Feb  8 11:20:10 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_galmod(object):
    def setupUi(self, galmod):
        galmod.setObjectName("galmod")
        galmod.resize(590, 529)
        galmod.setFrameShape(QtGui.QFrame.StyledPanel)
        galmod.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(galmod)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(galmod)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.label_3 = QtGui.QLabel(galmod)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1)
        self.label_2 = QtGui.QLabel(galmod)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
        self.radiiLine = QtGui.QLineEdit(galmod)
        self.radiiLine.setObjectName("radiiLine")
        self.gridLayout.addWidget(self.radiiLine, 3, 1, 1, 5)
        self.label_4 = QtGui.QLabel(galmod)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1)
        self.vrotLine = QtGui.QLineEdit(galmod)
        self.vrotLine.setObjectName("vrotLine")
        self.gridLayout.addWidget(self.vrotLine, 4, 1, 1, 5)
        self.vrotButton = QtGui.QPushButton(galmod)
        self.vrotButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.vrotButton.setIcon(icon)
        self.vrotButton.setIconSize(QtCore.QSize(20, 20))
        self.vrotButton.setObjectName("vrotButton")
        self.gridLayout.addWidget(self.vrotButton, 4, 6, 1, 1)
        self.label_5 = QtGui.QLabel(galmod)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 5, 0, 1, 1)
        self.vdispLine = QtGui.QLineEdit(galmod)
        self.vdispLine.setObjectName("vdispLine")
        self.gridLayout.addWidget(self.vdispLine, 5, 1, 1, 5)
        self.vdispButton = QtGui.QPushButton(galmod)
        self.vdispButton.setText("")
        self.vdispButton.setIcon(icon)
        self.vdispButton.setIconSize(QtCore.QSize(20, 20))
        self.vdispButton.setObjectName("vdispButton")
        self.gridLayout.addWidget(self.vdispButton, 5, 6, 1, 1)
        self.label_6 = QtGui.QLabel(galmod)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 6, 0, 1, 1)
        self.densLine = QtGui.QLineEdit(galmod)
        self.densLine.setObjectName("densLine")
        self.gridLayout.addWidget(self.densLine, 6, 1, 1, 5)
        self.densButton = QtGui.QPushButton(galmod)
        self.densButton.setText("")
        self.densButton.setIcon(icon)
        self.densButton.setIconSize(QtCore.QSize(20, 20))
        self.densButton.setObjectName("densButton")
        self.gridLayout.addWidget(self.densButton, 6, 6, 1, 1)
        self.label_7 = QtGui.QLabel(galmod)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 7, 0, 1, 1)
        self.zoLine = QtGui.QLineEdit(galmod)
        self.zoLine.setObjectName("zoLine")
        self.gridLayout.addWidget(self.zoLine, 7, 1, 1, 5)
        self.zoButton = QtGui.QPushButton(galmod)
        self.zoButton.setText("")
        self.zoButton.setIcon(icon)
        self.zoButton.setIconSize(QtCore.QSize(20, 20))
        self.zoButton.setObjectName("zoButton")
        self.gridLayout.addWidget(self.zoButton, 7, 6, 1, 1)
        self.label_8 = QtGui.QLabel(galmod)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 8, 0, 1, 1)
        self.inclLine = QtGui.QLineEdit(galmod)
        self.inclLine.setObjectName("inclLine")
        self.gridLayout.addWidget(self.inclLine, 8, 1, 1, 5)
        self.inclButton = QtGui.QPushButton(galmod)
        self.inclButton.setText("")
        self.inclButton.setIcon(icon)
        self.inclButton.setIconSize(QtCore.QSize(20, 20))
        self.inclButton.setObjectName("inclButton")
        self.gridLayout.addWidget(self.inclButton, 8, 6, 1, 1)
        self.label_9 = QtGui.QLabel(galmod)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 9, 0, 1, 1)
        self.paLine = QtGui.QLineEdit(galmod)
        self.paLine.setObjectName("paLine")
        self.gridLayout.addWidget(self.paLine, 9, 1, 1, 5)
        self.paButton = QtGui.QPushButton(galmod)
        self.paButton.setText("")
        self.paButton.setIcon(icon)
        self.paButton.setIconSize(QtCore.QSize(20, 20))
        self.paButton.setObjectName("paButton")
        self.gridLayout.addWidget(self.paButton, 9, 6, 1, 1)
        self.label_10 = QtGui.QLabel(galmod)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 10, 0, 1, 1)
        self.cdensLine = QtGui.QLineEdit(galmod)
        self.cdensLine.setObjectName("cdensLine")
        self.gridLayout.addWidget(self.cdensLine, 10, 1, 1, 1)
        self.label_11 = QtGui.QLabel(galmod)
        self.label_11.setEnabled(False)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 10, 3, 1, 1)
        self.label_12 = QtGui.QLabel(galmod)
        self.label_12.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_12.setObjectName("label_12")
        self.gridLayout.addWidget(self.label_12, 10, 4, 1, 1)
        self.nvLine = QtGui.QLineEdit(galmod)
        self.nvLine.setObjectName("nvLine")
        self.gridLayout.addWidget(self.nvLine, 10, 5, 1, 1)
        self.label_13 = QtGui.QLabel(galmod)
        self.label_13.setObjectName("label_13")
        self.gridLayout.addWidget(self.label_13, 11, 3, 1, 1)
        self.layerBox = QtGui.QComboBox(galmod)
        self.layerBox.setObjectName("layerBox")
        self.layerBox.addItem("")
        self.layerBox.addItem("")
        self.layerBox.addItem("")
        self.layerBox.addItem("")
        self.layerBox.addItem("")
        self.gridLayout.addWidget(self.layerBox, 11, 4, 1, 2)
        self.label_14 = QtGui.QLabel(galmod)
        self.label_14.setObjectName("label_14")
        self.gridLayout.addWidget(self.label_14, 13, 0, 1, 1)
        self.iseedLine = QtGui.QLineEdit(galmod)
        self.iseedLine.setObjectName("iseedLine")
        self.gridLayout.addWidget(self.iseedLine, 13, 1, 1, 1)
        self.radiiButton = QtGui.QPushButton(galmod)
        self.radiiButton.setText("")
        self.radiiButton.setIcon(icon)
        self.radiiButton.setIconSize(QtCore.QSize(20, 20))
        self.radiiButton.setObjectName("radiiButton")
        self.gridLayout.addWidget(self.radiiButton, 3, 6, 1, 1)
        self.saveParamsButton = QtGui.QPushButton(galmod)
        self.saveParamsButton.setObjectName("saveParamsButton")
        self.gridLayout.addWidget(self.saveParamsButton, 14, 0, 1, 1)
        self.loadParamsButton = QtGui.QPushButton(galmod)
        self.loadParamsButton.setObjectName("loadParamsButton")
        self.gridLayout.addWidget(self.loadParamsButton, 14, 1, 1, 1)
        self.cmode0Radio = QtGui.QRadioButton(galmod)
        self.cmode0Radio.setChecked(True)
        self.cmode0Radio.setObjectName("cmode0Radio")
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8) = QtGui.QButtonGroup(galmod)
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8).setObjectName("QtGui.QApplication.translate(\"galmod\", \"buttonGroup1\", None, QtGui.QApplication.UnicodeUTF8)")
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8).addButton(self.cmode0Radio)
        self.gridLayout.addWidget(self.cmode0Radio, 11, 1, 1, 1)
        self.cmode1Radio = QtGui.QRadioButton(galmod)
        self.cmode1Radio.setObjectName("cmode1Radio")
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8) = QtGui.QButtonGroup(galmod)
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8).setObjectName("QtGui.QApplication.translate(\"galmod\", \"buttonGroup1\", None, QtGui.QApplication.UnicodeUTF8)")
#        self.QtGui.QApplication.translate("galmod", "buttonGroup1", None, QtGui.QApplication.UnicodeUTF8).addButton(self.cmode1Radio)
        self.gridLayout.addWidget(self.cmode1Radio, 12, 1, 1, 1)
        self.frame = QtGui.QFrame(galmod)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.xcentreLine = QtGui.QLineEdit(self.frame)
        self.xcentreLine.setMaximumSize(QtCore.QSize(70, 16777215))
        self.xcentreLine.setObjectName("xcentreLine")
        self.horizontalLayout.addWidget(self.xcentreLine)
        self.ycentreLine = QtGui.QLineEdit(self.frame)
        self.ycentreLine.setMaximumSize(QtCore.QSize(70, 16777215))
        self.ycentreLine.setObjectName("ycentreLine")
        self.horizontalLayout.addWidget(self.ycentreLine)
        self.gridLayout.addWidget(self.frame, 0, 1, 1, 1)
        self.frame_2 = QtGui.QFrame(galmod)
        self.frame_2.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame_2.setFrameShadow(QtGui.QFrame.Plain)
        self.frame_2.setLineWidth(0)
        self.frame_2.setObjectName("frame_2")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame_2)
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setContentsMargins(0, 0, 12, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.vsysLine = QtGui.QLineEdit(self.frame_2)
        self.vsysLine.setMaximumSize(QtCore.QSize(70, 16777215))
        self.vsysLine.setObjectName("vsysLine")
        self.horizontalLayout_2.addWidget(self.vsysLine)
        self.label_15 = QtGui.QLabel(self.frame_2)
        self.label_15.setObjectName("label_15")
        self.horizontalLayout_2.addWidget(self.label_15)
        self.gridLayout.addWidget(self.frame_2, 1, 1, 1, 2)
        self.label_16 = QtGui.QLabel(galmod)
        self.label_16.setObjectName("label_16")
        self.gridLayout.addWidget(self.label_16, 2, 0, 1, 1)
        self.drvalLine = QtGui.QLineEdit(galmod)
        self.drvalLine.setObjectName("drvalLine")
        self.gridLayout.addWidget(self.drvalLine, 2, 1, 1, 2)
        self.emptyCheck = QtGui.QCheckBox(galmod)
        self.emptyCheck.setChecked(True)
        self.emptyCheck.setObjectName("emptyCheck")
        self.gridLayout.addWidget(self.emptyCheck, 1, 3, 1, 1)
        self.checkSampCentre = QtGui.QCheckBox(galmod)
        self.checkSampCentre.setEnabled(False)
        self.checkSampCentre.setStyleSheet("QCheckBox { color: green }")
        self.checkSampCentre.setChecked(True)
        self.checkSampCentre.setObjectName("checkSampCentre")
        self.gridLayout.addWidget(self.checkSampCentre, 0, 3, 1, 1)
        self.checkSampVsys = QtGui.QCheckBox(galmod)
        self.checkSampVsys.setEnabled(False)
        self.checkSampVsys.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVsys.setObjectName("checkSampVsys")
        self.gridLayout.addWidget(self.checkSampVsys, 1, 4, 1, 1)
        self.checkSampRadii = QtGui.QCheckBox(galmod)
        self.checkSampRadii.setEnabled(False)
        self.checkSampRadii.setStyleSheet("QCheckBox { color: green }")
        self.checkSampRadii.setObjectName("checkSampRadii")
        self.gridLayout.addWidget(self.checkSampRadii, 3, 7, 1, 1)
        self.checkSampVrot = QtGui.QCheckBox(galmod)
        self.checkSampVrot.setEnabled(False)
        self.checkSampVrot.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVrot.setObjectName("checkSampVrot")
        self.gridLayout.addWidget(self.checkSampVrot, 4, 7, 1, 1)

        self.retranslateUi(galmod)
        QtCore.QMetaObject.connectSlotsByName(galmod)

    def retranslateUi(self, galmod):
        galmod.setWindowTitle(QtGui.QApplication.translate("galmod", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("galmod", "CENTRE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("galmod", "VSYS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("galmod", "RADII", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("galmod", "VROT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("galmod", "VDISP", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("galmod", "DENS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("galmod", "Z0", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("galmod", "INCL", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("galmod", "PA", None, QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate("galmod", "CDENS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_11.setText(QtGui.QApplication.translate("galmod", "10^20 atoms/cm^2", None, QtGui.QApplication.UnicodeUTF8))
        self.label_12.setText(QtGui.QApplication.translate("galmod", "NV", None, QtGui.QApplication.UnicodeUTF8))
        self.label_13.setText(QtGui.QApplication.translate("galmod", "Layer Type", None, QtGui.QApplication.UnicodeUTF8))
        self.layerBox.setItemText(0, QtGui.QApplication.translate("galmod", "Gaussian", None, QtGui.QApplication.UnicodeUTF8))
        self.layerBox.setItemText(1, QtGui.QApplication.translate("galmod", "Sech2", None, QtGui.QApplication.UnicodeUTF8))
        self.layerBox.setItemText(2, QtGui.QApplication.translate("galmod", "Exponential", None, QtGui.QApplication.UnicodeUTF8))
        self.layerBox.setItemText(3, QtGui.QApplication.translate("galmod", "Lorentzian", None, QtGui.QApplication.UnicodeUTF8))
        self.layerBox.setItemText(4, QtGui.QApplication.translate("galmod", "Box", None, QtGui.QApplication.UnicodeUTF8))
        self.label_14.setText(QtGui.QApplication.translate("galmod", "ISEED", None, QtGui.QApplication.UnicodeUTF8))
        self.saveParamsButton.setText(QtGui.QApplication.translate("galmod", "SAVE PARMAS", None, QtGui.QApplication.UnicodeUTF8))
        self.loadParamsButton.setText(QtGui.QApplication.translate("galmod", "LOAD PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.cmode0Radio.setText(QtGui.QApplication.translate("galmod", "CMODE 0", None, QtGui.QApplication.UnicodeUTF8))
        self.cmode1Radio.setText(QtGui.QApplication.translate("galmod", "CMODE 1", None, QtGui.QApplication.UnicodeUTF8))
        self.label_15.setText(QtGui.QApplication.translate("galmod", "KM/S", None, QtGui.QApplication.UnicodeUTF8))
        self.label_16.setText(QtGui.QApplication.translate("galmod", "DRVAL3", None, QtGui.QApplication.UnicodeUTF8))
        self.emptyCheck.setText(QtGui.QApplication.translate("galmod", "EMPTY", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampCentre.setText(QtGui.QApplication.translate("galmod", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVsys.setText(QtGui.QApplication.translate("galmod", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampRadii.setText(QtGui.QApplication.translate("galmod", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVrot.setText(QtGui.QApplication.translate("galmod", "SAMP", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_galmod.py
####START ./../development/gipsyClasses/Ui_transform.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'transform.ui'
#
# Created: Thu Aug  4 12:01:35 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_transform(object):
    def setupUi(self, transform):
        transform.setObjectName("transform")
        transform.resize(486, 300)
        transform.setFrameShape(QtGui.QFrame.NoFrame)
        transform.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(transform)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox = QtGui.QGroupBox(transform)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtGui.QLabel(self.groupBox)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.xposLine = QtGui.QLineEdit(self.groupBox)
        self.xposLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.xposLine.setObjectName("xposLine")
        self.horizontalLayout.addWidget(self.xposLine)
        self.label_2 = QtGui.QLabel(self.groupBox)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)
        self.yposLine = QtGui.QLineEdit(self.groupBox)
        self.yposLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.yposLine.setObjectName("yposLine")
        self.horizontalLayout.addWidget(self.yposLine)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.operationBox = QtGui.QComboBox(self.groupBox)
        self.operationBox.setObjectName("operationBox")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.horizontalLayout.addWidget(self.operationBox)
        self.verticalLayout.addWidget(self.groupBox)
        self.groupBox_2 = QtGui.QGroupBox(transform)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_3 = QtGui.QLabel(self.groupBox_2)
        self.label_3.setObjectName("label_3")
        self.gridLayout_2.addWidget(self.label_3, 0, 0, 1, 1)
        self.translxLine = QtGui.QLineEdit(self.groupBox_2)
        self.translxLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.translxLine.setObjectName("translxLine")
        self.gridLayout_2.addWidget(self.translxLine, 0, 1, 1, 1)
        self.translyLine = QtGui.QLineEdit(self.groupBox_2)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.translyLine.sizePolicy().hasHeightForWidth())
        self.translyLine.setSizePolicy(sizePolicy)
        self.translyLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.translyLine.setObjectName("translyLine")
        self.gridLayout_2.addWidget(self.translyLine, 0, 2, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem1, 0, 3, 1, 1)
        self.label_4 = QtGui.QLabel(self.groupBox_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout_2.addWidget(self.label_4, 1, 0, 1, 1)
        self.angleLine = QtGui.QLineEdit(self.groupBox_2)
        self.angleLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.angleLine.setObjectName("angleLine")
        self.gridLayout_2.addWidget(self.angleLine, 1, 1, 1, 1)
        self.label_5 = QtGui.QLabel(self.groupBox_2)
        self.label_5.setEnabled(False)
        self.label_5.setObjectName("label_5")
        self.gridLayout_2.addWidget(self.label_5, 1, 2, 1, 1)
        self.label_6 = QtGui.QLabel(self.groupBox_2)
        self.label_6.setObjectName("label_6")
        self.gridLayout_2.addWidget(self.label_6, 2, 0, 1, 1)
        self.scalexLine = QtGui.QLineEdit(self.groupBox_2)
        self.scalexLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.scalexLine.setObjectName("scalexLine")
        self.gridLayout_2.addWidget(self.scalexLine, 2, 1, 1, 1)
        self.scaleyLine = QtGui.QLineEdit(self.groupBox_2)
        self.scaleyLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.scaleyLine.setObjectName("scaleyLine")
        self.gridLayout_2.addWidget(self.scaleyLine, 2, 2, 1, 1)
        self.label_8 = QtGui.QLabel(self.groupBox_2)
        self.label_8.setObjectName("label_8")
        self.gridLayout_2.addWidget(self.label_8, 3, 0, 1, 1)
        self.label_9 = QtGui.QLabel(self.groupBox_2)
        self.label_9.setObjectName("label_9")
        self.gridLayout_2.addWidget(self.label_9, 4, 0, 1, 1)
        self.xshearLine = QtGui.QLineEdit(self.groupBox_2)
        self.xshearLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.xshearLine.setObjectName("xshearLine")
        self.gridLayout_2.addWidget(self.xshearLine, 3, 1, 1, 1)
        self.yshearLine = QtGui.QLineEdit(self.groupBox_2)
        self.yshearLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.yshearLine.setObjectName("yshearLine")
        self.gridLayout_2.addWidget(self.yshearLine, 4, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_2)

        self.retranslateUi(transform)
        QtCore.QMetaObject.connectSlotsByName(transform)

    def retranslateUi(self, transform):
        transform.setWindowTitle(QtGui.QApplication.translate("transform", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("transform", "Center", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("transform", "X POS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("transform", "Y POS", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(0, QtGui.QApplication.translate("transform", "Translation", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(1, QtGui.QApplication.translate("transform", "Rotation", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(2, QtGui.QApplication.translate("transform", "Scaling", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(3, QtGui.QApplication.translate("transform", "X Reflection", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(4, QtGui.QApplication.translate("transform", "Y Reflection", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(5, QtGui.QApplication.translate("transform", "PC Reflection", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(6, QtGui.QApplication.translate("transform", "X Shear", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(7, QtGui.QApplication.translate("transform", "Y Shear", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("transform", "Parameters", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("transform", "TRANSLXY", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("transform", "ANGLE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("transform", "Degrees", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("transform", "SCALEXY", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("transform", "XSHEAR", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("transform", "YSHEAR", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_transform.py
####START ./../development/gipsyClasses/Ui_slice.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'slice.ui'
#
# Created: Thu Jul 21 12:56:44 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_slice(object):
    def setupUi(self, slice):
        slice.setObjectName("slice")
        slice.resize(400, 445)
        slice.setFrameShape(QtGui.QFrame.StyledPanel)
        slice.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(slice)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox_2 = QtGui.QGroupBox(slice)
        self.groupBox_2.setObjectName("groupBox_2")
        self.gridLayout = QtGui.QGridLayout(self.groupBox_2)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(self.groupBox_2)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.xposLine = QtGui.QLineEdit(self.groupBox_2)
        self.xposLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.xposLine.setObjectName("xposLine")
        self.gridLayout.addWidget(self.xposLine, 0, 1, 1, 1)
        self.yposLine = QtGui.QLineEdit(self.groupBox_2)
        self.yposLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.yposLine.setObjectName("yposLine")
        self.gridLayout.addWidget(self.yposLine, 0, 2, 1, 1)
        self.label_2 = QtGui.QLabel(self.groupBox_2)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.angleLine = QtGui.QLineEdit(self.groupBox_2)
        self.angleLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.angleLine.setObjectName("angleLine")
        self.gridLayout.addWidget(self.angleLine, 1, 1, 1, 1)
        self.label_3 = QtGui.QLabel(self.groupBox_2)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 1, 2, 1, 1)
        self.label_4 = QtGui.QLabel(self.groupBox_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1)
        self.pointsLine = QtGui.QLineEdit(self.groupBox_2)
        self.pointsLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.pointsLine.setObjectName("pointsLine")
        self.gridLayout.addWidget(self.pointsLine, 2, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 3, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_2)
        self.groupBox = QtGui.QGroupBox(slice)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_5 = QtGui.QLabel(self.groupBox)
        self.label_5.setObjectName("label_5")
        self.gridLayout_2.addWidget(self.label_5, 0, 0, 1, 1)
        self.gridoutLine = QtGui.QLineEdit(self.groupBox)
        self.gridoutLine.setObjectName("gridoutLine")
        self.gridLayout_2.addWidget(self.gridoutLine, 0, 1, 1, 1)
        self.label_6 = QtGui.QLabel(self.groupBox)
        self.label_6.setObjectName("label_6")
        self.gridLayout_2.addWidget(self.label_6, 1, 0, 1, 1)
        self.upslicesLine = QtGui.QLineEdit(self.groupBox)
        self.upslicesLine.setObjectName("upslicesLine")
        self.gridLayout_2.addWidget(self.upslicesLine, 1, 1, 1, 1)
        self.label_7 = QtGui.QLabel(self.groupBox)
        self.label_7.setObjectName("label_7")
        self.gridLayout_2.addWidget(self.label_7, 1, 2, 1, 1)
        self.downslicesLine = QtGui.QLineEdit(self.groupBox)
        self.downslicesLine.setObjectName("downslicesLine")
        self.gridLayout_2.addWidget(self.downslicesLine, 1, 3, 1, 1)
        self.label_8 = QtGui.QLabel(self.groupBox)
        self.label_8.setObjectName("label_8")
        self.gridLayout_2.addWidget(self.label_8, 2, 0, 1, 1)
        self.spaceLine = QtGui.QLineEdit(self.groupBox)
        self.spaceLine.setObjectName("spaceLine")
        self.gridLayout_2.addWidget(self.spaceLine, 2, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)

        self.retranslateUi(slice)
        QtCore.QMetaObject.connectSlotsByName(slice)

    def retranslateUi(self, slice):
        slice.setWindowTitle(QtGui.QApplication.translate("slice", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("slice", "Line", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("slice", "POSITION", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("slice", "ANGLE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("slice", "DEG", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("slice", "POINTS", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("slice", "Output Options", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("slice", "GRIDOUT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("slice", "UP SLICES", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("slice", "DOWN SLICES", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("slice", "SPACE", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_slice.py
####START ./../development/gipsyClasses/Ui_transpose.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'transpose.ui'
#
# Created: Wed Jun  1 16:51:13 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_transpose(object):
    def setupUi(self, transpose):
        transpose.setObjectName("transpose")
        transpose.resize(451, 180)
        transpose.setFrameShape(QtGui.QFrame.StyledPanel)
        transpose.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(transpose)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox = QtGui.QGroupBox(transpose)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.axesList = QtGui.QListWidget(self.groupBox)
        self.axesList.setMidLineWidth(-4)
        self.axesList.setObjectName("axesList")
        self.gridLayout_2.addWidget(self.axesList, 0, 0, 1, 3)
        self.upButton = QtGui.QPushButton(self.groupBox)
        self.upButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/arrowUp.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.upButton.setIcon(icon)
        self.upButton.setIconSize(QtCore.QSize(24, 24))
        self.upButton.setObjectName("upButton")
        self.gridLayout_2.addWidget(self.upButton, 2, 2, 1, 1)
        self.downButton = QtGui.QPushButton(self.groupBox)
        self.downButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/arrowDown.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.downButton.setIcon(icon1)
        self.downButton.setIconSize(QtCore.QSize(24, 24))
        self.downButton.setObjectName("downButton")
        self.gridLayout_2.addWidget(self.downButton, 2, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem, 2, 0, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)

        self.retranslateUi(transpose)
        QtCore.QMetaObject.connectSlotsByName(transpose)

    def retranslateUi(self, transpose):
        transpose.setWindowTitle(QtGui.QApplication.translate("transpose", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("transpose", "Axes", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_transpose.py
####START ./../development/gipsyClasses/Ui_meanSum.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'meanSum.ui'
#
# Created: Thu Nov 10 10:03:54 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_meanSum(object):
    def setupUi(self, meanSum):
        meanSum.setObjectName("meanSum")
        meanSum.resize(345, 100)
        meanSum.setFrameShape(QtGui.QFrame.NoFrame)
        meanSum.setFrameShadow(QtGui.QFrame.Plain)
        meanSum.setLineWidth(0)
        self.verticalLayout = QtGui.QVBoxLayout(meanSum)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox_3 = QtGui.QGroupBox(meanSum)
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout = QtGui.QGridLayout(self.groupBox_3)
        self.gridLayout.setObjectName("gridLayout")
        self.label_3 = QtGui.QLabel(self.groupBox_3)
        self.label_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.comboOperation = QtGui.QComboBox(self.groupBox_3)
        self.comboOperation.setMinimumSize(QtCore.QSize(150, 0))
        self.comboOperation.setObjectName("comboOperation")
        self.comboOperation.addItem("")
        self.comboOperation.addItem("")
        self.gridLayout.addWidget(self.comboOperation, 0, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 2, 1, 1)
        self.label = QtGui.QLabel(self.groupBox_3)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
        self.weightLine = QtGui.QLineEdit(self.groupBox_3)
        self.weightLine.setObjectName("weightLine")
        self.gridLayout.addWidget(self.weightLine, 1, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_3)

        self.retranslateUi(meanSum)
        QtCore.QMetaObject.connectSlotsByName(meanSum)

    def retranslateUi(self, meanSum):
        meanSum.setWindowTitle(QtGui.QApplication.translate("meanSum", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("meanSum", "Operation", None, QtGui.QApplication.UnicodeUTF8))
        self.comboOperation.setItemText(0, QtGui.QApplication.translate("meanSum", "Mean", None, QtGui.QApplication.UnicodeUTF8))
        self.comboOperation.setItemText(1, QtGui.QApplication.translate("meanSum", "Sum", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("meanSum", "WEIGHT", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_meanSum.py
####START ./../development/gipsyClasses/Ui_profil.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'profil.ui'
#
# Created: Tue Dec 20 13:41:19 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_profil(object):
    def setupUi(self, profil):
        profil.setObjectName("profil")
        profil.resize(440, 201)
        profil.setFrameShape(QtGui.QFrame.NoFrame)
        profil.setFrameShadow(QtGui.QFrame.Plain)
        profil.setLineWidth(0)
        self.verticalLayout = QtGui.QVBoxLayout(profil)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame_2 = QtGui.QFrame(profil)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.gridLayout = QtGui.QGridLayout(self.frame_2)
        self.gridLayout.setObjectName("gridLayout")
        self.contSetButton = QtGui.QPushButton(self.frame_2)
        self.contSetButton.setObjectName("contSetButton")
        self.gridLayout.addWidget(self.contSetButton, 0, 0, 1, 1)
        self.contSetLabel = QtGui.QLabel(self.frame_2)
        self.contSetLabel.setText("")
        self.contSetLabel.setObjectName("contSetLabel")
        self.gridLayout.addWidget(self.contSetLabel, 0, 1, 1, 1)
        self.contHeaderButton = QtGui.QPushButton(self.frame_2)
        self.contHeaderButton.setObjectName("contHeaderButton")
        self.gridLayout.addWidget(self.contHeaderButton, 0, 2, 1, 1)
        self.contBoxButton = QtGui.QPushButton(self.frame_2)
        self.contBoxButton.setObjectName("contBoxButton")
        self.gridLayout.addWidget(self.contBoxButton, 1, 0, 1, 1)
        self.contBoxLabel = QtGui.QLabel(self.frame_2)
        self.contBoxLabel.setText("")
        self.contBoxLabel.setObjectName("contBoxLabel")
        self.gridLayout.addWidget(self.contBoxLabel, 1, 1, 1, 1)
        self.verticalLayout.addWidget(self.frame_2)
        self.frame = QtGui.QFrame(profil)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.gridLayout_2 = QtGui.QGridLayout(self.frame)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label = QtGui.QLabel(self.frame)
        self.label.setObjectName("label")
        self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
        self.wtypeBox = QtGui.QComboBox(self.frame)
        self.wtypeBox.setObjectName("wtypeBox")
        self.wtypeBox.addItem("")
        self.wtypeBox.addItem("")
        self.wtypeBox.addItem("")
        self.wtypeBox.addItem("")
        self.gridLayout_2.addWidget(self.wtypeBox, 0, 1, 1, 1)
        self.label_2 = QtGui.QLabel(self.frame)
        self.label_2.setObjectName("label_2")
        self.gridLayout_2.addWidget(self.label_2, 0, 2, 1, 1)
        self.thresholdLine = QtGui.QLineEdit(self.frame)
        self.thresholdLine.setMaximumSize(QtCore.QSize(70, 16777215))
        self.thresholdLine.setObjectName("thresholdLine")
        self.gridLayout_2.addWidget(self.thresholdLine, 0, 3, 1, 1)
        self.label_3 = QtGui.QLabel(self.frame)
        self.label_3.setObjectName("label_3")
        self.gridLayout_2.addWidget(self.label_3, 2, 0, 1, 1)
        self.filenameLine = QtGui.QLineEdit(self.frame)
        self.filenameLine.setObjectName("filenameLine")
        self.gridLayout_2.addWidget(self.filenameLine, 2, 1, 1, 2)
        self.browserFileButton = QtGui.QPushButton(self.frame)
        self.browserFileButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/fileopen.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.browserFileButton.setIcon(icon)
        self.browserFileButton.setIconSize(QtCore.QSize(20, 20))
        self.browserFileButton.setObjectName("browserFileButton")
        self.gridLayout_2.addWidget(self.browserFileButton, 2, 3, 1, 1)
        self.line_checkBox = QtGui.QCheckBox(self.frame)
        self.line_checkBox.setEnabled(False)
        self.line_checkBox.setObjectName("line_checkBox")
        self.gridLayout_2.addWidget(self.line_checkBox, 1, 0, 1, 2)
        self.verticalLayout.addWidget(self.frame)

        self.retranslateUi(profil)
        QtCore.QMetaObject.connectSlotsByName(profil)

    def retranslateUi(self, profil):
        profil.setWindowTitle(QtGui.QApplication.translate("profil", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.contSetButton.setText(QtGui.QApplication.translate("profil", "Continuum", None, QtGui.QApplication.UnicodeUTF8))
        self.contHeaderButton.setText(QtGui.QApplication.translate("profil", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.contBoxButton.setText(QtGui.QApplication.translate("profil", "BOX", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("profil", "WTYPE", None, QtGui.QApplication.UnicodeUTF8))
        self.wtypeBox.setItemText(0, QtGui.QApplication.translate("profil", "No Weighting", None, QtGui.QApplication.UnicodeUTF8))
        self.wtypeBox.setItemText(1, QtGui.QApplication.translate("profil", "Continuum weighting", None, QtGui.QApplication.UnicodeUTF8))
        self.wtypeBox.setItemText(2, QtGui.QApplication.translate("profil", "Continuum squared", None, QtGui.QApplication.UnicodeUTF8))
        self.wtypeBox.setItemText(3, QtGui.QApplication.translate("profil", "Mean", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("profil", "THRESHOLD", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("profil", "Filename", None, QtGui.QApplication.UnicodeUTF8))
        self.line_checkBox.setText(QtGui.QApplication.translate("profil", "Line/continuum ratio", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_profil.py
####START ./../development/gipsyClasses/Ui_extend.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'extend.ui'
#
# Created: Wed Nov  9 13:48:08 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_extend(object):
    def setupUi(self, extend):
        extend.setObjectName("extend")
        extend.resize(425, 431)
        extend.setFrameShape(QtGui.QFrame.NoFrame)
        extend.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(extend)
        self.gridLayout.setObjectName("gridLayout")
        self.ctypeLabel = QtGui.QLabel(extend)
        self.ctypeLabel.setObjectName("ctypeLabel")
        self.gridLayout.addWidget(self.ctypeLabel, 0, 0, 1, 1)
        self.ctypeBox = QtGui.QComboBox(extend)
        self.ctypeBox.setObjectName("ctypeBox")
        self.gridLayout.addWidget(self.ctypeBox, 0, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(172, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 2, 1, 1)
        self.naxisLabel = QtGui.QLabel(extend)
        self.naxisLabel.setObjectName("naxisLabel")
        self.gridLayout.addWidget(self.naxisLabel, 1, 0, 1, 1)
        self.naxisLine = QtGui.QLineEdit(extend)
        self.naxisLine.setObjectName("naxisLine")
        self.gridLayout.addWidget(self.naxisLine, 1, 1, 1, 1)
        self.crpixLabel = QtGui.QLabel(extend)
        self.crpixLabel.setObjectName("crpixLabel")
        self.gridLayout.addWidget(self.crpixLabel, 2, 0, 1, 1)
        self.crpixLine = QtGui.QLineEdit(extend)
        self.crpixLine.setObjectName("crpixLine")
        self.gridLayout.addWidget(self.crpixLine, 2, 1, 1, 1)
        self.cunitLabel = QtGui.QLabel(extend)
        self.cunitLabel.setObjectName("cunitLabel")
        self.gridLayout.addWidget(self.cunitLabel, 3, 0, 1, 1)
        self.cunitBox = QtGui.QComboBox(extend)
        self.cunitBox.setObjectName("cunitBox")
        self.gridLayout.addWidget(self.cunitBox, 3, 1, 1, 1)
        self.crvalLabel = QtGui.QLabel(extend)
        self.crvalLabel.setObjectName("crvalLabel")
        self.gridLayout.addWidget(self.crvalLabel, 4, 0, 1, 1)
        self.crvalLine = QtGui.QLineEdit(extend)
        self.crvalLine.setObjectName("crvalLine")
        self.gridLayout.addWidget(self.crvalLine, 4, 1, 1, 1)
        self.cdeltLabel = QtGui.QLabel(extend)
        self.cdeltLabel.setObjectName("cdeltLabel")
        self.gridLayout.addWidget(self.cdeltLabel, 5, 0, 1, 1)
        self.cdeltLine = QtGui.QLineEdit(extend)
        self.cdeltLine.setObjectName("cdeltLine")
        self.gridLayout.addWidget(self.cdeltLine, 5, 1, 1, 1)
        self.crotaLabel = QtGui.QLabel(extend)
        self.crotaLabel.setObjectName("crotaLabel")
        self.gridLayout.addWidget(self.crotaLabel, 6, 0, 1, 1)
        self.crotaLine = QtGui.QLineEdit(extend)
        self.crotaLine.setObjectName("crotaLine")
        self.gridLayout.addWidget(self.crotaLine, 6, 1, 1, 1)
        self.dunitLabel = QtGui.QLabel(extend)
        self.dunitLabel.setObjectName("dunitLabel")
        self.gridLayout.addWidget(self.dunitLabel, 7, 0, 1, 1)
        self.dunitLine = QtGui.QLineEdit(extend)
        self.dunitLine.setObjectName("dunitLine")
        self.gridLayout.addWidget(self.dunitLine, 7, 1, 1, 1)
        self.drvalLabel = QtGui.QLabel(extend)
        self.drvalLabel.setObjectName("drvalLabel")
        self.gridLayout.addWidget(self.drvalLabel, 8, 0, 1, 1)
        self.drvalLine = QtGui.QLineEdit(extend)
        self.drvalLine.setObjectName("drvalLine")
        self.gridLayout.addWidget(self.drvalLine, 8, 1, 1, 1)
        self.freqLabel = QtGui.QLabel(extend)
        self.freqLabel.setObjectName("freqLabel")
        self.gridLayout.addWidget(self.freqLabel, 9, 0, 1, 1)
        self.freqLine = QtGui.QLineEdit(extend)
        self.freqLine.setObjectName("freqLine")
        self.gridLayout.addWidget(self.freqLine, 9, 1, 1, 1)

        self.retranslateUi(extend)
        QtCore.QMetaObject.connectSlotsByName(extend)

    def retranslateUi(self, extend):
        extend.setWindowTitle(QtGui.QApplication.translate("extend", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.ctypeLabel.setText(QtGui.QApplication.translate("extend", "CTYPE", None, QtGui.QApplication.UnicodeUTF8))
        self.naxisLabel.setText(QtGui.QApplication.translate("extend", "NAXIS", None, QtGui.QApplication.UnicodeUTF8))
        self.crpixLabel.setText(QtGui.QApplication.translate("extend", "CRPIX", None, QtGui.QApplication.UnicodeUTF8))
        self.cunitLabel.setText(QtGui.QApplication.translate("extend", "CUNIT", None, QtGui.QApplication.UnicodeUTF8))
        self.crvalLabel.setText(QtGui.QApplication.translate("extend", "CRVAL", None, QtGui.QApplication.UnicodeUTF8))
        self.cdeltLabel.setText(QtGui.QApplication.translate("extend", "CDELT", None, QtGui.QApplication.UnicodeUTF8))
        self.crotaLabel.setText(QtGui.QApplication.translate("extend", "CROTA", None, QtGui.QApplication.UnicodeUTF8))
        self.dunitLabel.setText(QtGui.QApplication.translate("extend", "DUNIT", None, QtGui.QApplication.UnicodeUTF8))
        self.drvalLabel.setText(QtGui.QApplication.translate("extend", "DRVAL", None, QtGui.QApplication.UnicodeUTF8))
        self.freqLabel.setText(QtGui.QApplication.translate("extend", "FREQ0", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_extend.py
####START ./../development/gipsyClasses/Ui_viewtask.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'viewtask.ui'
#
# Created: Fri Feb 10 11:24:24 2012
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_viewtask(object):
    def setupUi(self, viewtask):
        viewtask.setObjectName("viewtask")
        viewtask.resize(439, 309)
        self.verticalLayout = QtGui.QVBoxLayout(viewtask)
        self.verticalLayout.setObjectName("verticalLayout")
        self.insetFrame = QtGui.QFrame(viewtask)
        self.insetFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.insetFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.insetFrame.setObjectName("insetFrame")
        self.gridLayout = QtGui.QGridLayout(self.insetFrame)
        self.gridLayout.setObjectName("gridLayout")
        self.insetButton = QtGui.QPushButton(self.insetFrame)
        self.insetButton.setObjectName("insetButton")
        self.gridLayout.addWidget(self.insetButton, 0, 0, 1, 1)
        self.headerButton = QtGui.QPushButton(self.insetFrame)
        self.headerButton.setObjectName("headerButton")
        self.gridLayout.addWidget(self.headerButton, 0, 2, 1, 1)
        self.boxButton = QtGui.QPushButton(self.insetFrame)
        self.boxButton.setObjectName("boxButton")
        self.gridLayout.addWidget(self.boxButton, 1, 0, 1, 1)
        self.insetLabel = QtGui.QLabel(self.insetFrame)
        self.insetLabel.setText("")
        self.insetLabel.setObjectName("insetLabel")
        self.gridLayout.addWidget(self.insetLabel, 0, 1, 1, 1)
        self.boxLabel = QtGui.QLabel(self.insetFrame)
        self.boxLabel.setText("")
        self.boxLabel.setObjectName("boxLabel")
        self.gridLayout.addWidget(self.boxLabel, 1, 1, 1, 1)
        self.verticalLayout.addWidget(self.insetFrame)
        self.frame = QtGui.QFrame(viewtask)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QVBoxLayout(self.frame)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout.addWidget(self.frame)
        self.outsetFrame = QtGui.QFrame(viewtask)
        self.outsetFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.outsetFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.outsetFrame.setObjectName("outsetFrame")
        self.gridLayout_2 = QtGui.QGridLayout(self.outsetFrame)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_7 = QtGui.QLabel(self.outsetFrame)
        self.label_7.setObjectName("label_7")
        self.gridLayout_2.addWidget(self.label_7, 1, 0, 1, 1)
        self.outsetNameLine = QtGui.QLineEdit(self.outsetFrame)
        self.outsetNameLine.setObjectName("outsetNameLine")
        self.gridLayout_2.addWidget(self.outsetNameLine, 1, 1, 1, 3)
        self.label = QtGui.QLabel(self.outsetFrame)
        self.label.setObjectName("label")
        self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
        self.replaceButton = QtGui.QPushButton(self.outsetFrame)
        self.replaceButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/replace.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.replaceButton.setIcon(icon)
        self.replaceButton.setObjectName("replaceButton")
        self.gridLayout_2.addWidget(self.replaceButton, 1, 4, 1, 1)
        self.browserButton = QtGui.QPushButton(self.outsetFrame)
        self.browserButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/fileopen.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.browserButton.setIcon(icon1)
        self.browserButton.setObjectName("browserButton")
        self.gridLayout_2.addWidget(self.browserButton, 0, 4, 1, 1)
        self.outsetPathLabel = QtGui.QLabel(self.outsetFrame)
        self.outsetPathLabel.setText("")
        self.outsetPathLabel.setObjectName("outsetPathLabel")
        self.gridLayout_2.addWidget(self.outsetPathLabel, 0, 1, 1, 3)
        self.verticalLayout.addWidget(self.outsetFrame)
        self.advise_panel = QtGui.QFrame(viewtask)
        self.advise_panel.setEnabled(True)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.advise_panel.sizePolicy().hasHeightForWidth())
        self.advise_panel.setSizePolicy(sizePolicy)
        self.advise_panel.setFrameShape(QtGui.QFrame.NoFrame)
        self.advise_panel.setFrameShadow(QtGui.QFrame.Raised)
        self.advise_panel.setObjectName("advise_panel")
        self.advise_panel_layout = QtGui.QVBoxLayout(self.advise_panel)
        self.advise_panel_layout.setObjectName("advise_panel_layout")
        self.status = QtGui.QLabel(self.advise_panel)
        self.status.setText("")
        self.status.setObjectName("status")
        self.advise_panel_layout.addWidget(self.status)
        self.errorMsg = QtGui.QLabel(self.advise_panel)
        self.errorMsg.setText("")
        self.errorMsg.setObjectName("errorMsg")
        self.advise_panel_layout.addWidget(self.errorMsg)
        self.extra_panel = QtGui.QFrame(self.advise_panel)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.extra_panel.sizePolicy().hasHeightForWidth())
        self.extra_panel.setSizePolicy(sizePolicy)
        self.extra_panel.setFrameShape(QtGui.QFrame.NoFrame)
        self.extra_panel.setFrameShadow(QtGui.QFrame.Raised)
        self.extra_panel.setObjectName("extra_panel")
        self.extra_panel_layout = QtGui.QVBoxLayout(self.extra_panel)
        self.extra_panel_layout.setObjectName("extra_panel_layout")
        self.advise_panel_layout.addWidget(self.extra_panel)
        self.verticalLayout.addWidget(self.advise_panel)
        self.buttonBox = QtGui.QDialogButtonBox(viewtask)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Apply|QtGui.QDialogButtonBox.Close|QtGui.QDialogButtonBox.Help)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi(viewtask)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), viewtask.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), viewtask.reject)
        QtCore.QMetaObject.connectSlotsByName(viewtask)

    def retranslateUi(self, viewtask):
        viewtask.setWindowTitle(QtGui.QApplication.translate("viewtask", "TASK", None, QtGui.QApplication.UnicodeUTF8))
        self.insetButton.setText(QtGui.QApplication.translate("viewtask", "INSET", None, QtGui.QApplication.UnicodeUTF8))
        self.headerButton.setText(QtGui.QApplication.translate("viewtask", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.boxButton.setText(QtGui.QApplication.translate("viewtask", "BOX", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("viewtask", "Outset Name", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("viewtask", "Outset Path:", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_viewtask.py
####START ./../development/gipsyClasses/Ui_moments.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'moments.ui'
#
# Created: Fri Jul 15 12:54:47 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_moments(object):
    def setupUi(self, moments):
        moments.setObjectName("moments")
        moments.resize(332, 156)
        moments.setFrameShape(QtGui.QFrame.NoFrame)
        moments.setFrameShadow(QtGui.QFrame.Plain)
        self.gridLayout = QtGui.QGridLayout(moments)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(moments)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.optionBox = QtGui.QComboBox(moments)
        self.optionBox.setObjectName("optionBox")
        self.optionBox.addItem("")
        self.optionBox.addItem("")
        self.optionBox.addItem("")
        self.gridLayout.addWidget(self.optionBox, 0, 1, 1, 2)
        self.label_2 = QtGui.QLabel(moments)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.minLine = QtGui.QLineEdit(moments)
        self.minLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.minLine.setObjectName("minLine")
        self.gridLayout.addWidget(self.minLine, 1, 1, 1, 1)
        self.maxLine = QtGui.QLineEdit(moments)
        self.maxLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.maxLine.setObjectName("maxLine")
        self.gridLayout.addWidget(self.maxLine, 1, 2, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 1, 3, 1, 1)

        self.retranslateUi(moments)
        QtCore.QMetaObject.connectSlotsByName(moments)

    def retranslateUi(self, moments):
        moments.setWindowTitle(QtGui.QApplication.translate("moments", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("moments", "OPTION", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(0, QtGui.QApplication.translate("moments", "Zeroth Moment", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(1, QtGui.QApplication.translate("moments", "First Moment", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(2, QtGui.QApplication.translate("moments", "Second Moment", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("moments", "RANGE", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_moments.py
####START ./../development/gipsyClasses/Ui_rotcur.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'rotcur.ui'
#
# Created: Fri Feb  8 10:45:35 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_rotcur(object):
    def setupUi(self, rotcur):
        rotcur.setObjectName("rotcur")
        rotcur.resize(626, 573)
        rotcur.setFrameShape(QtGui.QFrame.NoFrame)
        rotcur.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(rotcur)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame_2 = QtGui.QFrame(rotcur)
        self.frame_2.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.gridLayout = QtGui.QGridLayout(self.frame_2)
        self.gridLayout.setMargin(0)
        self.gridLayout.setObjectName("gridLayout")
        self.label_3 = QtGui.QLabel(self.frame_2)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.bunitLine = QtGui.QLineEdit(self.frame_2)
        self.bunitLine.setMaximumSize(QtCore.QSize(70, 16777215))
        self.bunitLine.setObjectName("bunitLine")
        self.gridLayout.addWidget(self.bunitLine, 0, 1, 1, 1)
        self.label_4 = QtGui.QLabel(self.frame_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1)
        self.centreCheck = QtGui.QCheckBox(self.frame_2)
        self.centreCheck.setObjectName("centreCheck")
        self.gridLayout.addWidget(self.centreCheck, 1, 3, 1, 1)
        self.label_5 = QtGui.QLabel(self.frame_2)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1)
        self.vsysLine = QtGui.QLineEdit(self.frame_2)
        self.vsysLine.setObjectName("vsysLine")
        self.gridLayout.addWidget(self.vsysLine, 2, 1, 1, 1)
        self.label_7 = QtGui.QLabel(self.frame_2)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 2, 2, 1, 1)
        self.vsysCheck = QtGui.QCheckBox(self.frame_2)
        self.vsysCheck.setObjectName("vsysCheck")
        self.gridLayout.addWidget(self.vsysCheck, 2, 3, 1, 1)
        self.label_8 = QtGui.QLabel(self.frame_2)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 3, 0, 1, 1)
        self.radiiLine = QtGui.QLineEdit(self.frame_2)
        self.radiiLine.setObjectName("radiiLine")
        self.gridLayout.addWidget(self.radiiLine, 3, 1, 1, 3)
        self.radiiButton = QtGui.QPushButton(self.frame_2)
        self.radiiButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.radiiButton.setIcon(icon)
        self.radiiButton.setIconSize(QtCore.QSize(20, 20))
        self.radiiButton.setObjectName("radiiButton")
        self.gridLayout.addWidget(self.radiiButton, 3, 5, 1, 1)
        self.label = QtGui.QLabel(self.frame_2)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 5, 0, 1, 1)
        self.widthsLine = QtGui.QLineEdit(self.frame_2)
        self.widthsLine.setObjectName("widthsLine")
        self.gridLayout.addWidget(self.widthsLine, 5, 1, 1, 3)
        self.widthsButton = QtGui.QPushButton(self.frame_2)
        self.widthsButton.setText("")
        self.widthsButton.setIcon(icon)
        self.widthsButton.setIconSize(QtCore.QSize(20, 20))
        self.widthsButton.setObjectName("widthsButton")
        self.gridLayout.addWidget(self.widthsButton, 5, 5, 1, 1)
        self.label_9 = QtGui.QLabel(self.frame_2)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 7, 0, 1, 1)
        self.vexpLine = QtGui.QLineEdit(self.frame_2)
        self.vexpLine.setObjectName("vexpLine")
        self.gridLayout.addWidget(self.vexpLine, 7, 1, 1, 3)
        self.vexpButton = QtGui.QPushButton(self.frame_2)
        self.vexpButton.setText("")
        self.vexpButton.setIcon(icon)
        self.vexpButton.setIconSize(QtCore.QSize(20, 20))
        self.vexpButton.setObjectName("vexpButton")
        self.gridLayout.addWidget(self.vexpButton, 7, 5, 1, 1)
        self.vexpCheck = QtGui.QCheckBox(self.frame_2)
        self.vexpCheck.setObjectName("vexpCheck")
        self.gridLayout.addWidget(self.vexpCheck, 7, 6, 1, 1)
        self.label_10 = QtGui.QLabel(self.frame_2)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 8, 0, 1, 1)
        self.paLine = QtGui.QLineEdit(self.frame_2)
        self.paLine.setObjectName("paLine")
        self.gridLayout.addWidget(self.paLine, 8, 1, 1, 3)
        self.paButton = QtGui.QPushButton(self.frame_2)
        self.paButton.setText("")
        self.paButton.setIcon(icon)
        self.paButton.setIconSize(QtCore.QSize(20, 20))
        self.paButton.setObjectName("paButton")
        self.gridLayout.addWidget(self.paButton, 8, 5, 1, 1)
        self.paCheck = QtGui.QCheckBox(self.frame_2)
        self.paCheck.setObjectName("paCheck")
        self.gridLayout.addWidget(self.paCheck, 8, 6, 1, 1)
        self.label_11 = QtGui.QLabel(self.frame_2)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 9, 0, 1, 1)
        self.inclLine = QtGui.QLineEdit(self.frame_2)
        self.inclLine.setObjectName("inclLine")
        self.gridLayout.addWidget(self.inclLine, 9, 1, 1, 3)
        self.inclButton = QtGui.QPushButton(self.frame_2)
        self.inclButton.setText("")
        self.inclButton.setIcon(icon)
        self.inclButton.setIconSize(QtCore.QSize(20, 20))
        self.inclButton.setObjectName("inclButton")
        self.gridLayout.addWidget(self.inclButton, 9, 5, 1, 1)
        self.inclCheck = QtGui.QCheckBox(self.frame_2)
        self.inclCheck.setObjectName("inclCheck")
        self.gridLayout.addWidget(self.inclCheck, 9, 6, 1, 1)
        self.label_12 = QtGui.QLabel(self.frame_2)
        self.label_12.setObjectName("label_12")
        self.gridLayout.addWidget(self.label_12, 10, 0, 1, 1)
        self.freeangleLine = QtGui.QLineEdit(self.frame_2)
        self.freeangleLine.setObjectName("freeangleLine")
        self.gridLayout.addWidget(self.freeangleLine, 10, 1, 1, 1)
        self.label_13 = QtGui.QLabel(self.frame_2)
        self.label_13.setObjectName("label_13")
        self.gridLayout.addWidget(self.label_13, 10, 2, 1, 1)
        self.label_14 = QtGui.QLabel(self.frame_2)
        self.label_14.setObjectName("label_14")
        self.gridLayout.addWidget(self.label_14, 10, 3, 1, 1)
        self.fittoleranceLine = QtGui.QLineEdit(self.frame_2)
        self.fittoleranceLine.setObjectName("fittoleranceLine")
        self.gridLayout.addWidget(self.fittoleranceLine, 10, 5, 1, 1)
        self.saveParamsButton = QtGui.QPushButton(self.frame_2)
        self.saveParamsButton.setObjectName("saveParamsButton")
        self.gridLayout.addWidget(self.saveParamsButton, 12, 0, 1, 1)
        self.loadParamsButton = QtGui.QPushButton(self.frame_2)
        self.loadParamsButton.setObjectName("loadParamsButton")
        self.gridLayout.addWidget(self.loadParamsButton, 12, 1, 1, 1)
        self.label_6 = QtGui.QLabel(self.frame_2)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 0, 2, 1, 1)
        self.label_15 = QtGui.QLabel(self.frame_2)
        self.label_15.setObjectName("label_15")
        self.gridLayout.addWidget(self.label_15, 11, 0, 1, 1)
        self.weightBox = QtGui.QComboBox(self.frame_2)
        self.weightBox.setObjectName("weightBox")
        self.weightBox.addItem("")
        self.weightBox.addItem("")
        self.weightBox.addItem("")
        self.gridLayout.addWidget(self.weightBox, 11, 1, 1, 1)
        self.sideBox = QtGui.QComboBox(self.frame_2)
        self.sideBox.setObjectName("sideBox")
        self.sideBox.addItem("")
        self.sideBox.addItem("")
        self.sideBox.addItem("")
        self.gridLayout.addWidget(self.sideBox, 0, 3, 1, 1)
        self.frame = QtGui.QFrame(self.frame_2)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setSpacing(7)
        self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.xcentreLine = QtGui.QLineEdit(self.frame)
        self.xcentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.xcentreLine.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.xcentreLine.setObjectName("xcentreLine")
        self.horizontalLayout.addWidget(self.xcentreLine)
        self.ycentreLine = QtGui.QLineEdit(self.frame)
        self.ycentreLine.setMinimumSize(QtCore.QSize(60, 0))
        self.ycentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.ycentreLine.setObjectName("ycentreLine")
        self.horizontalLayout.addWidget(self.ycentreLine)
        self.gridLayout.addWidget(self.frame, 1, 1, 1, 1)
        self.checkSampCentre = QtGui.QCheckBox(self.frame_2)
        self.checkSampCentre.setEnabled(False)
        self.checkSampCentre.setStyleSheet("QCheckBox { color: green }")
        self.checkSampCentre.setChecked(True)
        self.checkSampCentre.setObjectName("checkSampCentre")
        self.gridLayout.addWidget(self.checkSampCentre, 1, 5, 1, 1)
        self.checkSampVsys = QtGui.QCheckBox(self.frame_2)
        self.checkSampVsys.setEnabled(False)
        self.checkSampVsys.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVsys.setChecked(True)
        self.checkSampVsys.setObjectName("checkSampVsys")
        self.gridLayout.addWidget(self.checkSampVsys, 2, 5, 1, 1)
        self.checkSampRadii = QtGui.QCheckBox(self.frame_2)
        self.checkSampRadii.setEnabled(False)
        self.checkSampRadii.setStyleSheet("QCheckBox { color: green }")
        self.checkSampRadii.setObjectName("checkSampRadii")
        self.gridLayout.addWidget(self.checkSampRadii, 3, 6, 1, 1)
        self.vrotLine = QtGui.QLineEdit(self.frame_2)
        self.vrotLine.setObjectName("vrotLine")
        self.gridLayout.addWidget(self.vrotLine, 4, 1, 1, 3)
        self.label_2 = QtGui.QLabel(self.frame_2)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 4, 0, 1, 1)
        self.vrotButton = QtGui.QPushButton(self.frame_2)
        self.vrotButton.setText("")
        self.vrotButton.setIcon(icon)
        self.vrotButton.setIconSize(QtCore.QSize(20, 20))
        self.vrotButton.setObjectName("vrotButton")
        self.gridLayout.addWidget(self.vrotButton, 4, 5, 1, 1)
        self.vrotCheck = QtGui.QCheckBox(self.frame_2)
        self.vrotCheck.setObjectName("vrotCheck")
        self.gridLayout.addWidget(self.vrotCheck, 4, 6, 1, 1)
        self.checkSampVrot = QtGui.QCheckBox(self.frame_2)
        self.checkSampVrot.setEnabled(False)
        self.checkSampVrot.setToolTip("")
        self.checkSampVrot.setWhatsThis("")
        self.checkSampVrot.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVrot.setObjectName("checkSampVrot")
        self.gridLayout.addWidget(self.checkSampVrot, 4, 7, 1, 1)
        self.verticalLayout.addWidget(self.frame_2)

        self.retranslateUi(rotcur)
        QtCore.QMetaObject.connectSlotsByName(rotcur)

    def retranslateUi(self, rotcur):
        rotcur.setWindowTitle(QtGui.QApplication.translate("rotcur", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("rotcur", "BUNIT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("rotcur", "CENTRE", None, QtGui.QApplication.UnicodeUTF8))
        self.centreCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("rotcur", "VSYS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("rotcur", "KM/S", None, QtGui.QApplication.UnicodeUTF8))
        self.vsysCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("rotcur", "RADII", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("rotcur", "WIDTHS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("rotcur", "VEXP", None, QtGui.QApplication.UnicodeUTF8))
        self.vexpCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate("rotcur", "PA", None, QtGui.QApplication.UnicodeUTF8))
        self.paCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_11.setText(QtGui.QApplication.translate("rotcur", "INCL", None, QtGui.QApplication.UnicodeUTF8))
        self.inclCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_12.setText(QtGui.QApplication.translate("rotcur", "FREEANGLE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_13.setText(QtGui.QApplication.translate("rotcur", "DEG", None, QtGui.QApplication.UnicodeUTF8))
        self.label_14.setText(QtGui.QApplication.translate("rotcur", "FIT TOLERANCE", None, QtGui.QApplication.UnicodeUTF8))
        self.saveParamsButton.setText(QtGui.QApplication.translate("rotcur", "SAVE PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.loadParamsButton.setText(QtGui.QApplication.translate("rotcur", "LOAD PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("rotcur", "SIDE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_15.setText(QtGui.QApplication.translate("rotcur", "WEIGHT", None, QtGui.QApplication.UnicodeUTF8))
        self.weightBox.setItemText(0, QtGui.QApplication.translate("rotcur", "COSINE", None, QtGui.QApplication.UnicodeUTF8))
        self.weightBox.setItemText(1, QtGui.QApplication.translate("rotcur", "UNIFORM", None, QtGui.QApplication.UnicodeUTF8))
        self.weightBox.setItemText(2, QtGui.QApplication.translate("rotcur", "COS-SQUARED", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(0, QtGui.QApplication.translate("rotcur", "Both", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(1, QtGui.QApplication.translate("rotcur", "Approaching", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(2, QtGui.QApplication.translate("rotcur", "Receding", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampCentre.setText(QtGui.QApplication.translate("rotcur", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVsys.setText(QtGui.QApplication.translate("rotcur", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampRadii.setText(QtGui.QApplication.translate("rotcur", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("rotcur", "VROT", None, QtGui.QApplication.UnicodeUTF8))
        self.vrotCheck.setText(QtGui.QApplication.translate("rotcur", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVrot.setText(QtGui.QApplication.translate("rotcur", "SAMP", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_rotcur.py
####START ./../development/gipsyClasses/Ui_wfits.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'wfits.ui'
#
# Created: Mon Sep 19 13:47:25 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_wfits(object):
    def setupUi(self, wfits):
        wfits.setObjectName("wfits")
        wfits.resize(439, 120)
        wfits.setFrameShape(QtGui.QFrame.StyledPanel)
        wfits.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(wfits)
        self.gridLayout.setObjectName("gridLayout")
        self.label_3 = QtGui.QLabel(wfits)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.setPathLabel = QtGui.QLabel(wfits)
        self.setPathLabel.setText("")
        self.setPathLabel.setObjectName("setPathLabel")
        self.gridLayout.addWidget(self.setPathLabel, 1, 0, 1, 1)
        self.label = QtGui.QLabel(wfits)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
        self.fitsPathLine = QtGui.QLineEdit(wfits)
        self.fitsPathLine.setObjectName("fitsPathLine")
        self.gridLayout.addWidget(self.fitsPathLine, 4, 0, 1, 1)
        self.browseButton = QtGui.QPushButton(wfits)
        self.browseButton.setObjectName("browseButton")
        self.gridLayout.addWidget(self.browseButton, 4, 1, 1, 1)

        self.retranslateUi(wfits)
        QtCore.QMetaObject.connectSlotsByName(wfits)

    def retranslateUi(self, wfits):
        wfits.setWindowTitle(QtGui.QApplication.translate("wfits", "Save set as Fits", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("wfits", "Save set:", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("wfits", "as:", None, QtGui.QApplication.UnicodeUTF8))
        self.browseButton.setText(QtGui.QApplication.translate("wfits", "Browse", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_wfits.py
####START ./../development/gipsyClasses/Ui_setbrowser.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'setbrowser.ui'
#
# Created: Wed Nov  9 09:41:53 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_setbrowser(object):
    def setupUi(self, setbrowser):
        setbrowser.setObjectName("setbrowser")
        setbrowser.resize(556, 386)
        self.gridLayout = QtGui.QGridLayout(setbrowser)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(setbrowser)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.browseButton = QtGui.QPushButton(setbrowser)
        self.browseButton.setObjectName("browseButton")
        self.gridLayout.addWidget(self.browseButton, 0, 3, 1, 1)
        self.axisFrame = QtGui.QFrame(setbrowser)
        self.axisFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.axisFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.axisFrame.setObjectName("axisFrame")
        self.axesLayout = QtGui.QGridLayout(self.axisFrame)
        self.axesLayout.setObjectName("axesLayout")
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.axesLayout.addItem(spacerItem, 1, 0, 1, 1)
        self.gridLayout.addWidget(self.axisFrame, 3, 0, 1, 4)
        self.buttonBox = QtGui.QDialogButtonBox(setbrowser)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Help|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout.addWidget(self.buttonBox, 8, 0, 1, 4)
        self.setpathLabel = QtGui.QLabel(setbrowser)
        self.setpathLabel.setText("")
        self.setpathLabel.setObjectName("setpathLabel")
        self.gridLayout.addWidget(self.setpathLabel, 0, 1, 1, 1)
        self.label_5 = QtGui.QLabel(setbrowser)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 1, 0, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 0, 2, 1, 1)
        self.composerEnableButton = QtGui.QPushButton(setbrowser)
        self.composerEnableButton.setEnabled(False)
        self.composerEnableButton.setObjectName("composerEnableButton")
        self.gridLayout.addWidget(self.composerEnableButton, 2, 0, 1, 1)
        self.manualEditFrame = QtGui.QFrame(setbrowser)
        self.manualEditFrame.setEnabled(False)
        self.manualEditFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.manualEditFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.manualEditFrame.setObjectName("manualEditFrame")
        self.gridLayout_2 = QtGui.QGridLayout(self.manualEditFrame)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label_4 = QtGui.QLabel(self.manualEditFrame)
        self.label_4.setObjectName("label_4")
        self.gridLayout_2.addWidget(self.label_4, 0, 0, 1, 1)
        self.subsetLine = QtGui.QLineEdit(self.manualEditFrame)
        self.subsetLine.setObjectName("subsetLine")
        self.gridLayout_2.addWidget(self.subsetLine, 0, 1, 1, 1)
        self.label_6 = QtGui.QLabel(self.manualEditFrame)
        self.label_6.setObjectName("label_6")
        self.gridLayout_2.addWidget(self.label_6, 1, 0, 1, 1)
        self.boxLine = QtGui.QLineEdit(self.manualEditFrame)
        self.boxLine.setObjectName("boxLine")
        self.gridLayout_2.addWidget(self.boxLine, 1, 1, 1, 1)
        self.gridLayout.addWidget(self.manualEditFrame, 5, 0, 3, 4)
        self.editEnableButton = QtGui.QPushButton(setbrowser)
        self.editEnableButton.setEnabled(True)
        self.editEnableButton.setObjectName("editEnableButton")
        self.gridLayout.addWidget(self.editEnableButton, 4, 0, 1, 1)
        self.setnameLine = QtGui.QLineEdit(setbrowser)
        self.setnameLine.setObjectName("setnameLine")
        self.gridLayout.addWidget(self.setnameLine, 1, 1, 1, 1)
        self.headerButton = QtGui.QPushButton(setbrowser)
        self.headerButton.setObjectName("headerButton")
        self.gridLayout.addWidget(self.headerButton, 1, 3, 1, 1)

        self.retranslateUi(setbrowser)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), setbrowser.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), setbrowser.reject)
        QtCore.QMetaObject.connectSlotsByName(setbrowser)

    def retranslateUi(self, setbrowser):
        setbrowser.setWindowTitle(QtGui.QApplication.translate("setbrowser", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("setbrowser", "Set Path:", None, QtGui.QApplication.UnicodeUTF8))
        self.browseButton.setText(QtGui.QApplication.translate("setbrowser", "BROWSE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("setbrowser", "Set Name:", None, QtGui.QApplication.UnicodeUTF8))
        self.composerEnableButton.setText(QtGui.QApplication.translate("setbrowser", "Compose", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("setbrowser", "Set/subset", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("setbrowser", "BOX", None, QtGui.QApplication.UnicodeUTF8))
        self.editEnableButton.setText(QtGui.QApplication.translate("setbrowser", "Edit", None, QtGui.QApplication.UnicodeUTF8))
        self.headerButton.setText(QtGui.QApplication.translate("setbrowser", "HEADER", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_setbrowser.py
####START ./../development/gipsyClasses/Ui_clip.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'clip.ui'
#
# Created: Tue May 31 12:58:55 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_clip(object):
    def setupUi(self, clip):
        clip.setObjectName("clip")
        clip.resize(400, 300)
        clip.setFrameShape(QtGui.QFrame.StyledPanel)
        clip.setFrameShadow(QtGui.QFrame.Raised)
        self.clipLayout = QtGui.QVBoxLayout(clip)
        self.clipLayout.setObjectName("clipLayout")
        self.groupBox_3 = QtGui.QGroupBox(clip)
        self.groupBox_3.setObjectName("groupBox_3")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label_3 = QtGui.QLabel(self.groupBox_3)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout.addWidget(self.label_3)
        self.minLine = QtGui.QLineEdit(self.groupBox_3)
        self.minLine.setObjectName("minLine")
        self.horizontalLayout.addWidget(self.minLine)
        self.label_4 = QtGui.QLabel(self.groupBox_3)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout.addWidget(self.label_4)
        self.maxLine = QtGui.QLineEdit(self.groupBox_3)
        self.maxLine.setObjectName("maxLine")
        self.horizontalLayout.addWidget(self.maxLine)
        self.clipLayout.addWidget(self.groupBox_3)
        self.groupBox = QtGui.QGroupBox(clip)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.insideBlank = QtGui.QCheckBox(self.groupBox)
        self.insideBlank.setObjectName("insideBlank")
        self.horizontalLayout_2.addWidget(self.insideBlank)
        self.label_5 = QtGui.QLabel(self.groupBox)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout_2.addWidget(self.label_5)
        self.valueInside = QtGui.QLineEdit(self.groupBox)
        self.valueInside.setObjectName("valueInside")
        self.horizontalLayout_2.addWidget(self.valueInside)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.clipLayout.addWidget(self.groupBox)
        self.groupBox_2 = QtGui.QGroupBox(clip)
        self.groupBox_2.setObjectName("groupBox_2")
        self.horizontalLayout_3 = QtGui.QHBoxLayout(self.groupBox_2)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.outsideBlank = QtGui.QCheckBox(self.groupBox_2)
        self.outsideBlank.setObjectName("outsideBlank")
        self.horizontalLayout_3.addWidget(self.outsideBlank)
        self.label_6 = QtGui.QLabel(self.groupBox_2)
        self.label_6.setObjectName("label_6")
        self.horizontalLayout_3.addWidget(self.label_6)
        self.valueOutside = QtGui.QLineEdit(self.groupBox_2)
        self.valueOutside.setObjectName("valueOutside")
        self.horizontalLayout_3.addWidget(self.valueOutside)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.clipLayout.addWidget(self.groupBox_2)

        self.retranslateUi(clip)
        QtCore.QMetaObject.connectSlotsByName(clip)

    def retranslateUi(self, clip):
        clip.setWindowTitle(QtGui.QApplication.translate("clip", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_3.setTitle(QtGui.QApplication.translate("clip", "Range", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("clip", "Min", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("clip", "Max", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("clip", "Inside Box", None, QtGui.QApplication.UnicodeUTF8))
        self.insideBlank.setText(QtGui.QApplication.translate("clip", "BLANK", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("clip", "Value", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("clip", "Outside Box", None, QtGui.QApplication.UnicodeUTF8))
        self.outsideBlank.setText(QtGui.QApplication.translate("clip", "BLANK", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("clip", "Value", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_clip.py
####START ./../development/gipsyClasses/Ui_tablebrowser.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'tablebrowser.ui'
#
# Created: Tue Aug  9 10:54:25 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_tablebrowser(object):
    def setupUi(self, tablebrowser):
        tablebrowser.setObjectName("tablebrowser")
        tablebrowser.resize(438, 265)
        self.gridLayout = QtGui.QGridLayout(tablebrowser)
        self.gridLayout.setObjectName("gridLayout")
        self.buttonBox = QtGui.QDialogButtonBox(tablebrowser)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 3)
        self.tablePathLabel = QtGui.QLabel(tablebrowser)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tablePathLabel.sizePolicy().hasHeightForWidth())
        self.tablePathLabel.setSizePolicy(sizePolicy)
        self.tablePathLabel.setText("")
        self.tablePathLabel.setObjectName("tablePathLabel")
        self.gridLayout.addWidget(self.tablePathLabel, 2, 0, 1, 2)
        self.label_2 = QtGui.QLabel(tablebrowser)
        self.label_2.setMaximumSize(QtCore.QSize(75, 16777215))
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
        self.columnsBox = QtGui.QComboBox(tablebrowser)
        self.columnsBox.setObjectName("columnsBox")
        self.gridLayout.addWidget(self.columnsBox, 3, 1, 1, 1)
        self.tableBox = QtGui.QComboBox(tablebrowser)
        self.tableBox.setObjectName("tableBox")
        self.gridLayout.addWidget(self.tableBox, 1, 0, 1, 3)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 3, 2, 1, 1)
        self.label = QtGui.QLabel(tablebrowser)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)

        self.retranslateUi(tablebrowser)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), tablebrowser.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), tablebrowser.reject)
        QtCore.QMetaObject.connectSlotsByName(tablebrowser)

    def retranslateUi(self, tablebrowser):
        tablebrowser.setWindowTitle(QtGui.QApplication.translate("tablebrowser", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("tablebrowser", "Columns", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("tablebrowser", "Select a table in session:", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_tablebrowser.py
####START ./../development/gipsyClasses/Ui_snapper.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'snapper.ui'
#
# Created: Wed Jun  1 13:45:12 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_snapper(object):
    def setupUi(self, snapper):
        snapper.setObjectName("snapper")
        snapper.resize(400, 161)
        snapper.setFrameShape(QtGui.QFrame.NoFrame)
        snapper.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(snapper)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(snapper)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.repsizexLine = QtGui.QLineEdit(snapper)
        self.repsizexLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.repsizexLine.setObjectName("repsizexLine")
        self.gridLayout.addWidget(self.repsizexLine, 0, 1, 1, 1)
        self.repsizeyLine = QtGui.QLineEdit(snapper)
        self.repsizeyLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.repsizeyLine.setObjectName("repsizeyLine")
        self.gridLayout.addWidget(self.repsizeyLine, 0, 2, 1, 1)
        spacerItem = QtGui.QSpacerItem(154, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 3, 1, 1)
        self.label_2 = QtGui.QLabel(snapper)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.oldvalLine = QtGui.QLineEdit(snapper)
        self.oldvalLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.oldvalLine.setObjectName("oldvalLine")
        self.gridLayout.addWidget(self.oldvalLine, 1, 1, 1, 1)
        self.oldvalCheck = QtGui.QCheckBox(snapper)
        self.oldvalCheck.setObjectName("oldvalCheck")
        self.gridLayout.addWidget(self.oldvalCheck, 1, 2, 1, 1)
        self.label_3 = QtGui.QLabel(snapper)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.newvalLine = QtGui.QLineEdit(snapper)
        self.newvalLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.newvalLine.setObjectName("newvalLine")
        self.gridLayout.addWidget(self.newvalLine, 2, 1, 1, 1)
        self.newvalCheck = QtGui.QCheckBox(snapper)
        self.newvalCheck.setObjectName("newvalCheck")
        self.gridLayout.addWidget(self.newvalCheck, 2, 2, 1, 1)

        self.retranslateUi(snapper)
        QtCore.QMetaObject.connectSlotsByName(snapper)

    def retranslateUi(self, snapper):
        snapper.setWindowTitle(QtGui.QApplication.translate("snapper", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("snapper", "REPSIZE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("snapper", "OLDVAL", None, QtGui.QApplication.UnicodeUTF8))
        self.oldvalCheck.setText(QtGui.QApplication.translate("snapper", "BLANK", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("snapper", "NEWVAL", None, QtGui.QApplication.UnicodeUTF8))
        self.newvalCheck.setText(QtGui.QApplication.translate("snapper", "BLANK", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_snapper.py
####START ./../development/gipsyClasses/Ui_potential.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'potential.ui'
#
# Created: Tue Jul 19 13:37:21 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_potential(object):
    def setupUi(self, potential):
        potential.setObjectName("potential")
        potential.resize(400, 166)
        potential.setFrameShape(QtGui.QFrame.StyledPanel)
        potential.setFrameShadow(QtGui.QFrame.Raised)
        self.horizontalLayout = QtGui.QHBoxLayout(potential)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtGui.QLabel(potential)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.box2Line = QtGui.QLineEdit(potential)
        self.box2Line.setObjectName("box2Line")
        self.horizontalLayout.addWidget(self.box2Line)

        self.retranslateUi(potential)
        QtCore.QMetaObject.connectSlotsByName(potential)

    def retranslateUi(self, potential):
        potential.setWindowTitle(QtGui.QApplication.translate("potential", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("potential", "Box to include in calculation:", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_potential.py
####START ./../development/gipsyClasses/Ui_gipsySet.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'gipsySet.ui'
#
# Created: Thu Feb 14 17:43:36 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_setWidget(object):
    def setupUi(self, setWidget):
        setWidget.setObjectName("setWidget")
        setWidget.resize(779, 756)
        setWidget.setWidgetResizable(True)
        self.scrollAreaWidgetContents = QtGui.QWidget(setWidget)
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 777, 754))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.verticalLayout = QtGui.QVBoxLayout(self.scrollAreaWidgetContents)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox_2 = QtGui.QGroupBox(self.scrollAreaWidgetContents)
        self.groupBox_2.setObjectName("groupBox_2")
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.groupBox_2)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.PropertiesText = QtGui.QTextBrowser(self.groupBox_2)
        self.PropertiesText.setEnabled(True)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.PropertiesText.sizePolicy().hasHeightForWidth())
        self.PropertiesText.setSizePolicy(sizePolicy)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(239, 235, 231))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        self.PropertiesText.setPalette(palette)
        self.PropertiesText.setReadOnly(True)
        self.PropertiesText.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
        self.PropertiesText.setObjectName("PropertiesText")
        self.verticalLayout_3.addWidget(self.PropertiesText)
        self.frame = QtGui.QFrame(self.groupBox_2)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayout_2 = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.sampButton = QtGui.QPushButton(self.frame)
        self.sampButton.setObjectName("sampButton")
        self.horizontalLayout_2.addWidget(self.sampButton)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.historyButton = QtGui.QPushButton(self.frame)
        self.historyButton.setObjectName("historyButton")
        self.horizontalLayout_2.addWidget(self.historyButton)
        self.headerButton = QtGui.QPushButton(self.frame)
        self.headerButton.setObjectName("headerButton")
        self.horizontalLayout_2.addWidget(self.headerButton)
        self.verticalLayout_3.addWidget(self.frame)
        self.verticalLayout.addWidget(self.groupBox_2)
        self.groupBox = QtGui.QGroupBox(self.scrollAreaWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
        self.groupBox.setSizePolicy(sizePolicy)
        self.groupBox.setObjectName("groupBox")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout.addWidget(self.groupBox)
        setWidget.setWidget(self.scrollAreaWidgetContents)

        self.retranslateUi(setWidget)
        QtCore.QMetaObject.connectSlotsByName(setWidget)

    def retranslateUi(self, setWidget):
        setWidget.setWindowTitle(QtGui.QApplication.translate("setWidget", "ScrollArea", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_2.setTitle(QtGui.QApplication.translate("setWidget", "Set Properties", None, QtGui.QApplication.UnicodeUTF8))
        self.PropertiesText.setHtml(QtGui.QApplication.translate("setWidget", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.sampButton.setText(QtGui.QApplication.translate("setWidget", "Send associated fits to SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.historyButton.setText(QtGui.QApplication.translate("setWidget", "HISTORY", None, QtGui.QApplication.UnicodeUTF8))
        self.headerButton.setText(QtGui.QApplication.translate("setWidget", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("setWidget", "Set Comments", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_gipsySet.py
####START ./../development/gipsyClasses/Ui_reswri.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'reswri.ui'
#
# Created: Fri Feb  8 11:33:30 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_reswri(object):
    def setupUi(self, reswri):
        reswri.setObjectName("reswri")
        reswri.resize(586, 590)
        reswri.setFrameShape(QtGui.QFrame.NoFrame)
        reswri.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(reswri)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame = QtGui.QFrame(reswri)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.gridLayout_2 = QtGui.QGridLayout(self.frame)
        self.gridLayout_2.setMargin(9)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.HIBoxButton = QtGui.QPushButton(self.frame)
        self.HIBoxButton.setObjectName("HIBoxButton")
        self.gridLayout_2.addWidget(self.HIBoxButton, 1, 0, 1, 1)
        self.HISetButton = QtGui.QPushButton(self.frame)
        self.HISetButton.setObjectName("HISetButton")
        self.gridLayout_2.addWidget(self.HISetButton, 0, 0, 1, 1)
        self.HISetHeaderButton = QtGui.QPushButton(self.frame)
        self.HISetHeaderButton.setObjectName("HISetHeaderButton")
        self.gridLayout_2.addWidget(self.HISetHeaderButton, 0, 2, 1, 1)
        self.HISetLabel = QtGui.QLabel(self.frame)
        self.HISetLabel.setText("")
        self.HISetLabel.setObjectName("HISetLabel")
        self.gridLayout_2.addWidget(self.HISetLabel, 0, 1, 1, 1)
        self.HIBoxLabel = QtGui.QLabel(self.frame)
        self.HIBoxLabel.setText("")
        self.HIBoxLabel.setObjectName("HIBoxLabel")
        self.gridLayout_2.addWidget(self.HIBoxLabel, 1, 1, 1, 1)
        self.verticalLayout.addWidget(self.frame)
        self.frame_2 = QtGui.QFrame(reswri)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.gridLayout = QtGui.QGridLayout(self.frame_2)
        self.gridLayout.setMargin(9)
        self.gridLayout.setObjectName("gridLayout")
        self.label_3 = QtGui.QLabel(self.frame_2)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.bunitLine = QtGui.QLineEdit(self.frame_2)
        self.bunitLine.setObjectName("bunitLine")
        self.gridLayout.addWidget(self.bunitLine, 0, 1, 1, 1)
        self.label_4 = QtGui.QLabel(self.frame_2)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1)
        self.centreCheck = QtGui.QCheckBox(self.frame_2)
        self.centreCheck.setObjectName("centreCheck")
        self.gridLayout.addWidget(self.centreCheck, 1, 3, 1, 1)
        self.label_5 = QtGui.QLabel(self.frame_2)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1)
        self.vsysLine = QtGui.QLineEdit(self.frame_2)
        self.vsysLine.setObjectName("vsysLine")
        self.gridLayout.addWidget(self.vsysLine, 2, 1, 1, 1)
        self.label_7 = QtGui.QLabel(self.frame_2)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 2, 2, 1, 1)
        self.vsysCheck = QtGui.QCheckBox(self.frame_2)
        self.vsysCheck.setObjectName("vsysCheck")
        self.gridLayout.addWidget(self.vsysCheck, 2, 3, 1, 1)
        self.label_8 = QtGui.QLabel(self.frame_2)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 3, 0, 1, 1)
        self.radiiLine = QtGui.QLineEdit(self.frame_2)
        self.radiiLine.setObjectName("radiiLine")
        self.gridLayout.addWidget(self.radiiLine, 3, 1, 1, 3)
        self.radiiButton = QtGui.QPushButton(self.frame_2)
        self.radiiButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.radiiButton.setIcon(icon)
        self.radiiButton.setIconSize(QtCore.QSize(20, 20))
        self.radiiButton.setObjectName("radiiButton")
        self.gridLayout.addWidget(self.radiiButton, 3, 4, 1, 1)
        self.label = QtGui.QLabel(self.frame_2)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 5, 0, 1, 1)
        self.widthsLine = QtGui.QLineEdit(self.frame_2)
        self.widthsLine.setObjectName("widthsLine")
        self.gridLayout.addWidget(self.widthsLine, 5, 1, 1, 3)
        self.widthsButton = QtGui.QPushButton(self.frame_2)
        self.widthsButton.setText("")
        self.widthsButton.setIcon(icon)
        self.widthsButton.setIconSize(QtCore.QSize(20, 20))
        self.widthsButton.setObjectName("widthsButton")
        self.gridLayout.addWidget(self.widthsButton, 5, 4, 1, 1)
        self.label_9 = QtGui.QLabel(self.frame_2)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 7, 0, 1, 1)
        self.vexpLine = QtGui.QLineEdit(self.frame_2)
        self.vexpLine.setObjectName("vexpLine")
        self.gridLayout.addWidget(self.vexpLine, 7, 1, 1, 3)
        self.vexpButton = QtGui.QPushButton(self.frame_2)
        self.vexpButton.setText("")
        self.vexpButton.setIcon(icon)
        self.vexpButton.setIconSize(QtCore.QSize(20, 20))
        self.vexpButton.setObjectName("vexpButton")
        self.gridLayout.addWidget(self.vexpButton, 7, 4, 1, 1)
        self.vexpCheck = QtGui.QCheckBox(self.frame_2)
        self.vexpCheck.setObjectName("vexpCheck")
        self.gridLayout.addWidget(self.vexpCheck, 7, 5, 1, 1)
        self.label_10 = QtGui.QLabel(self.frame_2)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 8, 0, 1, 1)
        self.paLine = QtGui.QLineEdit(self.frame_2)
        self.paLine.setObjectName("paLine")
        self.gridLayout.addWidget(self.paLine, 8, 1, 1, 3)
        self.paButton = QtGui.QPushButton(self.frame_2)
        self.paButton.setText("")
        self.paButton.setIcon(icon)
        self.paButton.setIconSize(QtCore.QSize(20, 20))
        self.paButton.setObjectName("paButton")
        self.gridLayout.addWidget(self.paButton, 8, 4, 1, 1)
        self.paCheck = QtGui.QCheckBox(self.frame_2)
        self.paCheck.setObjectName("paCheck")
        self.gridLayout.addWidget(self.paCheck, 8, 5, 1, 1)
        self.label_11 = QtGui.QLabel(self.frame_2)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 9, 0, 1, 1)
        self.inclLine = QtGui.QLineEdit(self.frame_2)
        self.inclLine.setObjectName("inclLine")
        self.gridLayout.addWidget(self.inclLine, 9, 1, 1, 3)
        self.inclButton = QtGui.QPushButton(self.frame_2)
        self.inclButton.setText("")
        self.inclButton.setIcon(icon)
        self.inclButton.setIconSize(QtCore.QSize(20, 20))
        self.inclButton.setObjectName("inclButton")
        self.gridLayout.addWidget(self.inclButton, 9, 4, 1, 1)
        self.inclCheck = QtGui.QCheckBox(self.frame_2)
        self.inclCheck.setObjectName("inclCheck")
        self.gridLayout.addWidget(self.inclCheck, 9, 5, 1, 1)
        self.label_12 = QtGui.QLabel(self.frame_2)
        self.label_12.setObjectName("label_12")
        self.gridLayout.addWidget(self.label_12, 10, 0, 1, 1)
        self.freeangleLine = QtGui.QLineEdit(self.frame_2)
        self.freeangleLine.setObjectName("freeangleLine")
        self.gridLayout.addWidget(self.freeangleLine, 10, 1, 1, 1)
        self.label_13 = QtGui.QLabel(self.frame_2)
        self.label_13.setObjectName("label_13")
        self.gridLayout.addWidget(self.label_13, 10, 2, 1, 1)
        self.label_14 = QtGui.QLabel(self.frame_2)
        self.label_14.setObjectName("label_14")
        self.gridLayout.addWidget(self.label_14, 10, 3, 1, 1)
        self.fittoleranceLine = QtGui.QLineEdit(self.frame_2)
        self.fittoleranceLine.setObjectName("fittoleranceLine")
        self.gridLayout.addWidget(self.fittoleranceLine, 10, 4, 1, 1)
        self.label_15 = QtGui.QLabel(self.frame_2)
        self.label_15.setObjectName("label_15")
        self.gridLayout.addWidget(self.label_15, 12, 0, 1, 3)
        self.kinematicLine = QtGui.QLineEdit(self.frame_2)
        self.kinematicLine.setObjectName("kinematicLine")
        self.gridLayout.addWidget(self.kinematicLine, 12, 3, 1, 2)
        self.kinematicButton = QtGui.QPushButton(self.frame_2)
        self.kinematicButton.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/fileopen.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.kinematicButton.setIcon(icon1)
        self.kinematicButton.setIconSize(QtCore.QSize(20, 20))
        self.kinematicButton.setObjectName("kinematicButton")
        self.gridLayout.addWidget(self.kinematicButton, 12, 5, 1, 1)
        self.surfaceLabel = QtGui.QLabel(self.frame_2)
        self.surfaceLabel.setEnabled(False)
        self.surfaceLabel.setObjectName("surfaceLabel")
        self.gridLayout.addWidget(self.surfaceLabel, 13, 0, 1, 3)
        self.surfaceLine = QtGui.QLineEdit(self.frame_2)
        self.surfaceLine.setEnabled(False)
        self.surfaceLine.setObjectName("surfaceLine")
        self.gridLayout.addWidget(self.surfaceLine, 13, 3, 1, 2)
        self.surfaceButton = QtGui.QPushButton(self.frame_2)
        self.surfaceButton.setEnabled(False)
        self.surfaceButton.setText("")
        self.surfaceButton.setIcon(icon1)
        self.surfaceButton.setIconSize(QtCore.QSize(20, 20))
        self.surfaceButton.setObjectName("surfaceButton")
        self.gridLayout.addWidget(self.surfaceButton, 13, 5, 1, 1)
        self.saveParamsButton = QtGui.QPushButton(self.frame_2)
        self.saveParamsButton.setObjectName("saveParamsButton")
        self.gridLayout.addWidget(self.saveParamsButton, 14, 0, 1, 1)
        self.loadParamsButton = QtGui.QPushButton(self.frame_2)
        self.loadParamsButton.setObjectName("loadParamsButton")
        self.gridLayout.addWidget(self.loadParamsButton, 14, 1, 1, 1)
        self.sideBox = QtGui.QComboBox(self.frame_2)
        self.sideBox.setObjectName("sideBox")
        self.sideBox.addItem("")
        self.sideBox.addItem("")
        self.sideBox.addItem("")
        self.gridLayout.addWidget(self.sideBox, 0, 5, 1, 1)
        self.label_6 = QtGui.QLabel(self.frame_2)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 0, 4, 1, 1)
        self.label_16 = QtGui.QLabel(self.frame_2)
        self.label_16.setObjectName("label_16")
        self.gridLayout.addWidget(self.label_16, 11, 3, 1, 1)
        self.fitorderLine = QtGui.QLineEdit(self.frame_2)
        self.fitorderLine.setObjectName("fitorderLine")
        self.gridLayout.addWidget(self.fitorderLine, 11, 4, 1, 1)
        self.frame_3 = QtGui.QFrame(self.frame_2)
        self.frame_3.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame_3.setFrameShadow(QtGui.QFrame.Plain)
        self.frame_3.setLineWidth(0)
        self.frame_3.setObjectName("frame_3")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame_3)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.xcentreLine = QtGui.QLineEdit(self.frame_3)
        self.xcentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.xcentreLine.setObjectName("xcentreLine")
        self.horizontalLayout.addWidget(self.xcentreLine)
        self.ycentreLine = QtGui.QLineEdit(self.frame_3)
        self.ycentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.ycentreLine.setObjectName("ycentreLine")
        self.horizontalLayout.addWidget(self.ycentreLine)
        self.gridLayout.addWidget(self.frame_3, 1, 1, 1, 1)
        self.label_2 = QtGui.QLabel(self.frame_2)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 4, 0, 1, 1)
        self.vrotLine = QtGui.QLineEdit(self.frame_2)
        self.vrotLine.setObjectName("vrotLine")
        self.gridLayout.addWidget(self.vrotLine, 4, 1, 1, 3)
        self.vrotButton = QtGui.QPushButton(self.frame_2)
        self.vrotButton.setText("")
        self.vrotButton.setIcon(icon)
        self.vrotButton.setIconSize(QtCore.QSize(20, 20))
        self.vrotButton.setObjectName("vrotButton")
        self.gridLayout.addWidget(self.vrotButton, 4, 4, 1, 1)
        self.vrotCheck = QtGui.QCheckBox(self.frame_2)
        self.vrotCheck.setObjectName("vrotCheck")
        self.gridLayout.addWidget(self.vrotCheck, 4, 5, 1, 1)
        self.checkSampCentre = QtGui.QCheckBox(self.frame_2)
        self.checkSampCentre.setEnabled(False)
        self.checkSampCentre.setStyleSheet("QCheckBox { color: green }")
        self.checkSampCentre.setChecked(True)
        self.checkSampCentre.setObjectName("checkSampCentre")
        self.gridLayout.addWidget(self.checkSampCentre, 1, 4, 1, 1)
        self.checkSampVsys = QtGui.QCheckBox(self.frame_2)
        self.checkSampVsys.setEnabled(False)
        self.checkSampVsys.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVsys.setObjectName("checkSampVsys")
        self.gridLayout.addWidget(self.checkSampVsys, 2, 4, 1, 1)
        self.checkSampVrot = QtGui.QCheckBox(self.frame_2)
        self.checkSampVrot.setEnabled(False)
        self.checkSampVrot.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVrot.setObjectName("checkSampVrot")
        self.gridLayout.addWidget(self.checkSampVrot, 4, 6, 1, 1)
        self.checkSampRadii = QtGui.QCheckBox(self.frame_2)
        self.checkSampRadii.setEnabled(False)
        self.checkSampRadii.setStyleSheet("QCheckBox { color: green }")
        self.checkSampRadii.setObjectName("checkSampRadii")
        self.gridLayout.addWidget(self.checkSampRadii, 3, 5, 1, 1)
        self.verticalLayout.addWidget(self.frame_2)

        self.retranslateUi(reswri)
        QtCore.QMetaObject.connectSlotsByName(reswri)

    def retranslateUi(self, reswri):
        reswri.setWindowTitle(QtGui.QApplication.translate("reswri", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.HIBoxButton.setText(QtGui.QApplication.translate("reswri", "BOX", None, QtGui.QApplication.UnicodeUTF8))
        self.HISetButton.setText(QtGui.QApplication.translate("reswri", "HI", None, QtGui.QApplication.UnicodeUTF8))
        self.HISetHeaderButton.setText(QtGui.QApplication.translate("reswri", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("reswri", "BUNIT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("reswri", "CENTRE", None, QtGui.QApplication.UnicodeUTF8))
        self.centreCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("reswri", "VSYS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_7.setText(QtGui.QApplication.translate("reswri", "KM/S", None, QtGui.QApplication.UnicodeUTF8))
        self.vsysCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("reswri", "RADII", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("reswri", "WIDTHS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("reswri", "VEXP", None, QtGui.QApplication.UnicodeUTF8))
        self.vexpCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate("reswri", "PA", None, QtGui.QApplication.UnicodeUTF8))
        self.paCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_11.setText(QtGui.QApplication.translate("reswri", "INCL", None, QtGui.QApplication.UnicodeUTF8))
        self.inclCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.label_12.setText(QtGui.QApplication.translate("reswri", "FREEANGLE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_13.setText(QtGui.QApplication.translate("reswri", "DEG", None, QtGui.QApplication.UnicodeUTF8))
        self.label_14.setText(QtGui.QApplication.translate("reswri", "FIT TOLERANCE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_15.setText(QtGui.QApplication.translate("reswri", "Kinematic harmonic coefficients", None, QtGui.QApplication.UnicodeUTF8))
        self.surfaceLabel.setText(QtGui.QApplication.translate("reswri", "Surface density harmonic coefficients", None, QtGui.QApplication.UnicodeUTF8))
        self.saveParamsButton.setText(QtGui.QApplication.translate("reswri", "SAVE PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.loadParamsButton.setText(QtGui.QApplication.translate("reswri", "LOAD PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(0, QtGui.QApplication.translate("reswri", "Both", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(1, QtGui.QApplication.translate("reswri", "Approaching", None, QtGui.QApplication.UnicodeUTF8))
        self.sideBox.setItemText(2, QtGui.QApplication.translate("reswri", "Receding", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("reswri", "SIDE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_16.setText(QtGui.QApplication.translate("reswri", "FIT ORDER", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("reswri", "VROT", None, QtGui.QApplication.UnicodeUTF8))
        self.vrotCheck.setText(QtGui.QApplication.translate("reswri", "Fixed", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampCentre.setText(QtGui.QApplication.translate("reswri", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVsys.setText(QtGui.QApplication.translate("reswri", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVrot.setText(QtGui.QApplication.translate("reswri", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampRadii.setText(QtGui.QApplication.translate("reswri", "SAMP", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_reswri.py
####START ./../development/gipsyClasses/Ui_shuffle.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'shuffle.ui'
#
# Created: Fri Jul 22 10:56:21 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_shuffle(object):
    def setupUi(self, shuffle):
        shuffle.setObjectName("shuffle")
        shuffle.resize(400, 300)
        shuffle.setFrameShape(QtGui.QFrame.StyledPanel)
        shuffle.setFrameShadow(QtGui.QFrame.Raised)
        shuffle.setLineWidth(0)
        self.verticalLayout = QtGui.QVBoxLayout(shuffle)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame_2 = QtGui.QFrame(shuffle)
        self.frame_2.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame_2.setFrameShadow(QtGui.QFrame.Plain)
        self.frame_2.setObjectName("frame_2")
        self.gridLayout = QtGui.QGridLayout(self.frame_2)
        self.gridLayout.setObjectName("gridLayout")
        self.maskSetButton = QtGui.QPushButton(self.frame_2)
        self.maskSetButton.setObjectName("maskSetButton")
        self.gridLayout.addWidget(self.maskSetButton, 0, 0, 1, 1)
        self.maskSetLabel = QtGui.QLabel(self.frame_2)
        self.maskSetLabel.setText("")
        self.maskSetLabel.setObjectName("maskSetLabel")
        self.gridLayout.addWidget(self.maskSetLabel, 0, 1, 1, 1)
        self.maskHeaderButton = QtGui.QPushButton(self.frame_2)
        self.maskHeaderButton.setObjectName("maskHeaderButton")
        self.gridLayout.addWidget(self.maskHeaderButton, 0, 2, 1, 1)
        self.maskBoxButton = QtGui.QPushButton(self.frame_2)
        self.maskBoxButton.setObjectName("maskBoxButton")
        self.gridLayout.addWidget(self.maskBoxButton, 1, 0, 1, 1)
        self.maskBoxLabel = QtGui.QLabel(self.frame_2)
        self.maskBoxLabel.setText("")
        self.maskBoxLabel.setObjectName("maskBoxLabel")
        self.gridLayout.addWidget(self.maskBoxLabel, 1, 1, 1, 1)
        self.verticalLayout.addWidget(self.frame_2)
        self.frame = QtGui.QFrame(shuffle)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setObjectName("frame")
        self.gridLayout_2 = QtGui.QGridLayout(self.frame)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.label = QtGui.QLabel(self.frame)
        self.label.setObjectName("label")
        self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
        self.label_2 = QtGui.QLabel(self.frame)
        self.label_2.setObjectName("label_2")
        self.gridLayout_2.addWidget(self.label_2, 1, 0, 1, 1)
        self.nmaxLine = QtGui.QLineEdit(self.frame)
        self.nmaxLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.nmaxLine.setObjectName("nmaxLine")
        self.gridLayout_2.addWidget(self.nmaxLine, 0, 1, 1, 1)
        self.cdeltLine = QtGui.QLineEdit(self.frame)
        self.cdeltLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.cdeltLine.setObjectName("cdeltLine")
        self.gridLayout_2.addWidget(self.cdeltLine, 1, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout_2.addItem(spacerItem, 0, 2, 1, 1)
        self.verticalLayout.addWidget(self.frame)

        self.retranslateUi(shuffle)
        QtCore.QMetaObject.connectSlotsByName(shuffle)

    def retranslateUi(self, shuffle):
        shuffle.setWindowTitle(QtGui.QApplication.translate("shuffle", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.maskSetButton.setText(QtGui.QApplication.translate("shuffle", "Maskset", None, QtGui.QApplication.UnicodeUTF8))
        self.maskHeaderButton.setText(QtGui.QApplication.translate("shuffle", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.maskBoxButton.setText(QtGui.QApplication.translate("shuffle", "BOX", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("shuffle", "NMAX", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("shuffle", "CDELT", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_shuffle.py
####START ./../development/gipsyClasses/Ui_copy.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'copy.ui'
#
# Created: Thu Aug 18 14:42:01 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_copy(object):
    def setupUi(self, copy):
        copy.setObjectName("copy")
        copy.resize(322, 78)
        copy.setFrameShape(QtGui.QFrame.NoFrame)
        copy.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(copy)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox_3 = QtGui.QGroupBox(copy)
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.checkBlank = QtGui.QCheckBox(self.groupBox_3)
        self.checkBlank.setObjectName("checkBlank")
        self.horizontalLayout.addWidget(self.checkBlank)
        self.verticalLayout.addWidget(self.groupBox_3)

        self.retranslateUi(copy)
        QtCore.QMetaObject.connectSlotsByName(copy)

    def retranslateUi(self, copy):
        copy.setWindowTitle(QtGui.QApplication.translate("copy", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.checkBlank.setText(QtGui.QApplication.translate("copy", "Fill output set only with blanks", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_copy.py
####START ./../development/gipsyClasses/Ui_ellint.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ellint.ui'
#
# Created: Fri Feb  8 11:08:38 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_ellint(object):
    def setupUi(self, ellint):
        ellint.setObjectName("ellint")
        ellint.resize(647, 450)
        ellint.setFrameShape(QtGui.QFrame.StyledPanel)
        ellint.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(ellint)
        self.gridLayout.setObjectName("gridLayout")
        self.label_4 = QtGui.QLabel(ellint)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 0, 0, 1, 1)
        self.label_8 = QtGui.QLabel(ellint)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 3, 0, 1, 1)
        self.radiiLine = QtGui.QLineEdit(ellint)
        self.radiiLine.setObjectName("radiiLine")
        self.gridLayout.addWidget(self.radiiLine, 3, 1, 1, 4)
        self.label_9 = QtGui.QLabel(ellint)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 4, 0, 1, 1)
        self.widthLine = QtGui.QLineEdit(ellint)
        self.widthLine.setObjectName("widthLine")
        self.gridLayout.addWidget(self.widthLine, 4, 1, 1, 4)
        self.label_10 = QtGui.QLabel(ellint)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 5, 0, 1, 1)
        self.paLine = QtGui.QLineEdit(ellint)
        self.paLine.setObjectName("paLine")
        self.gridLayout.addWidget(self.paLine, 5, 1, 1, 4)
        self.label_11 = QtGui.QLabel(ellint)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 6, 0, 1, 1)
        self.inclLine = QtGui.QLineEdit(ellint)
        self.inclLine.setObjectName("inclLine")
        self.gridLayout.addWidget(self.inclLine, 6, 1, 1, 4)
        self.loadParamsButton = QtGui.QPushButton(ellint)
        self.loadParamsButton.setObjectName("loadParamsButton")
        self.gridLayout.addWidget(self.loadParamsButton, 10, 1, 1, 1)
        self.label_3 = QtGui.QLabel(ellint)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1)
        self.label_5 = QtGui.QLabel(ellint)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1)
        self.optionBox = QtGui.QComboBox(ellint)
        self.optionBox.setObjectName("optionBox")
        self.optionBox.addItem("")
        self.optionBox.addItem("")
        self.optionBox.addItem("")
        self.gridLayout.addWidget(self.optionBox, 2, 1, 1, 2)
        self.label_6 = QtGui.QLabel(ellint)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 2, 3, 1, 1)
        self.orderBox = QtGui.QComboBox(ellint)
        self.orderBox.setObjectName("orderBox")
        self.orderBox.addItem("")
        self.orderBox.addItem("")
        self.gridLayout.addWidget(self.orderBox, 2, 4, 1, 2)
        self.widthButton = QtGui.QPushButton(ellint)
        self.widthButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.widthButton.setIcon(icon)
        self.widthButton.setIconSize(QtCore.QSize(20, 20))
        self.widthButton.setObjectName("widthButton")
        self.gridLayout.addWidget(self.widthButton, 4, 5, 1, 1)
        self.paButton = QtGui.QPushButton(ellint)
        self.paButton.setText("")
        self.paButton.setIcon(icon)
        self.paButton.setIconSize(QtCore.QSize(20, 20))
        self.paButton.setObjectName("paButton")
        self.gridLayout.addWidget(self.paButton, 5, 5, 1, 1)
        self.inclButton = QtGui.QPushButton(ellint)
        self.inclButton.setText("")
        self.inclButton.setIcon(icon)
        self.inclButton.setIconSize(QtCore.QSize(20, 20))
        self.inclButton.setObjectName("inclButton")
        self.gridLayout.addWidget(self.inclButton, 6, 5, 1, 1)
        self.radiiButton = QtGui.QPushButton(ellint)
        self.radiiButton.setText("")
        self.radiiButton.setIcon(icon)
        self.radiiButton.setIconSize(QtCore.QSize(20, 20))
        self.radiiButton.setObjectName("radiiButton")
        self.gridLayout.addWidget(self.radiiButton, 3, 5, 1, 1)
        self.label = QtGui.QLabel(ellint)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 7, 0, 1, 1)
        self.massLabel = QtGui.QLabel(ellint)
        self.massLabel.setEnabled(False)
        self.massLabel.setObjectName("massLabel")
        self.gridLayout.addWidget(self.massLabel, 8, 0, 1, 1)
        self.massLine = QtGui.QLineEdit(ellint)
        self.massLine.setEnabled(False)
        self.massLine.setMaximumSize(QtCore.QSize(100, 16777215))
        self.massLine.setObjectName("massLine")
        self.gridLayout.addWidget(self.massLine, 8, 1, 1, 1)
        self.distanceLabel = QtGui.QLabel(ellint)
        self.distanceLabel.setEnabled(False)
        self.distanceLabel.setObjectName("distanceLabel")
        self.gridLayout.addWidget(self.distanceLabel, 9, 0, 1, 1)
        self.saveParamsButton = QtGui.QPushButton(ellint)
        self.saveParamsButton.setObjectName("saveParamsButton")
        self.gridLayout.addWidget(self.saveParamsButton, 10, 0, 1, 1)
        self.moLabel = QtGui.QLabel(ellint)
        self.moLabel.setEnabled(False)
        self.moLabel.setObjectName("moLabel")
        self.gridLayout.addWidget(self.moLabel, 8, 2, 1, 1)
        self.distanceLine = QtGui.QLineEdit(ellint)
        self.distanceLine.setEnabled(False)
        self.distanceLine.setMaximumSize(QtCore.QSize(100, 16777215))
        self.distanceLine.setObjectName("distanceLine")
        self.gridLayout.addWidget(self.distanceLine, 9, 1, 1, 1)
        self.mpcLabel = QtGui.QLabel(ellint)
        self.mpcLabel.setEnabled(False)
        self.mpcLabel.setObjectName("mpcLabel")
        self.gridLayout.addWidget(self.mpcLabel, 9, 2, 1, 1)
        self.label_15 = QtGui.QLabel(ellint)
        self.label_15.setObjectName("label_15")
        self.gridLayout.addWidget(self.label_15, 8, 3, 1, 1)
        self.xsubpixLine = QtGui.QLineEdit(ellint)
        self.xsubpixLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.xsubpixLine.setObjectName("xsubpixLine")
        self.gridLayout.addWidget(self.xsubpixLine, 8, 4, 1, 1)
        self.ysubpixLine = QtGui.QLineEdit(ellint)
        self.ysubpixLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.ysubpixLine.setObjectName("ysubpixLine")
        self.gridLayout.addWidget(self.ysubpixLine, 8, 5, 1, 1)
        self.overlapCheck = QtGui.QCheckBox(ellint)
        self.overlapCheck.setChecked(True)
        self.overlapCheck.setObjectName("overlapCheck")
        self.gridLayout.addWidget(self.overlapCheck, 9, 3, 1, 1)
        self.segmentList = QtGui.QListWidget(ellint)
        self.segmentList.setObjectName("segmentList")
        QtGui.QListWidgetItem(self.segmentList)
        item = QtGui.QListWidgetItem(self.segmentList)
        item.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsDragEnabled|QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
        self.gridLayout.addWidget(self.segmentList, 7, 1, 1, 4)
        self.rangeLabel = QtGui.QLabel(ellint)
        self.rangeLabel.setEnabled(False)
        self.rangeLabel.setText("")
        self.rangeLabel.setObjectName("rangeLabel")
        self.gridLayout.addWidget(self.rangeLabel, 1, 3, 1, 1)
        self.xrangeLine = QtGui.QLineEdit(ellint)
        self.xrangeLine.setEnabled(False)
        self.xrangeLine.setMinimumSize(QtCore.QSize(125, 0))
        self.xrangeLine.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.xrangeLine.setObjectName("xrangeLine")
        self.gridLayout.addWidget(self.xrangeLine, 1, 1, 1, 1)
        self.xcentreLine = QtGui.QLineEdit(ellint)
        self.xcentreLine.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.xcentreLine.setObjectName("xcentreLine")
        self.gridLayout.addWidget(self.xcentreLine, 0, 1, 1, 1)
        self.ycentreLine = QtGui.QLineEdit(ellint)
        self.ycentreLine.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.ycentreLine.setObjectName("ycentreLine")
        self.gridLayout.addWidget(self.ycentreLine, 0, 2, 1, 1)
        self.yrangeLine = QtGui.QLineEdit(ellint)
        self.yrangeLine.setEnabled(False)
        self.yrangeLine.setMinimumSize(QtCore.QSize(125, 0))
        self.yrangeLine.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.yrangeLine.setObjectName("yrangeLine")
        self.gridLayout.addWidget(self.yrangeLine, 1, 2, 1, 1)
        self.checkSampCentre = QtGui.QCheckBox(ellint)
        self.checkSampCentre.setEnabled(False)
        self.checkSampCentre.setStyleSheet("QCheckBox { color: green }")
        self.checkSampCentre.setChecked(True)
        self.checkSampCentre.setObjectName("checkSampCentre")
        self.gridLayout.addWidget(self.checkSampCentre, 0, 3, 1, 1)
        self.checkSampRadii = QtGui.QCheckBox(ellint)
        self.checkSampRadii.setEnabled(False)
        self.checkSampRadii.setStyleSheet("QCheckBox { color: green }")
        self.checkSampRadii.setObjectName("checkSampRadii")
        self.gridLayout.addWidget(self.checkSampRadii, 3, 6, 1, 1)

        self.retranslateUi(ellint)
        QtCore.QMetaObject.connectSlotsByName(ellint)

    def retranslateUi(self, ellint):
        ellint.setWindowTitle(QtGui.QApplication.translate("ellint", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("ellint", "CENTRE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("ellint", "RADII", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("ellint", "WIDTH", None, QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate("ellint", "PA", None, QtGui.QApplication.UnicodeUTF8))
        self.label_11.setText(QtGui.QApplication.translate("ellint", "INCL", None, QtGui.QApplication.UnicodeUTF8))
        self.loadParamsButton.setText(QtGui.QApplication.translate("ellint", "LOAD PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("ellint", "RANGE", None, QtGui.QApplication.UnicodeUTF8))
        self.label_5.setText(QtGui.QApplication.translate("ellint", "OPTION", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(0, QtGui.QApplication.translate("ellint", "Stats", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(1, QtGui.QApplication.translate("ellint", "Surface brightness", None, QtGui.QApplication.UnicodeUTF8))
        self.optionBox.setItemText(2, QtGui.QApplication.translate("ellint", "Mass surface density", None, QtGui.QApplication.UnicodeUTF8))
        self.label_6.setText(QtGui.QApplication.translate("ellint", "ORDER", None, QtGui.QApplication.UnicodeUTF8))
        self.orderBox.setItemText(0, QtGui.QApplication.translate("ellint", "Segments in rings", None, QtGui.QApplication.UnicodeUTF8))
        self.orderBox.setItemText(1, QtGui.QApplication.translate("ellint", "Rings in segments", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("ellint", "SEGMENTS", None, QtGui.QApplication.UnicodeUTF8))
        self.massLabel.setText(QtGui.QApplication.translate("ellint", "MASS", None, QtGui.QApplication.UnicodeUTF8))
        self.distanceLabel.setText(QtGui.QApplication.translate("ellint", "DISTANCE", None, QtGui.QApplication.UnicodeUTF8))
        self.saveParamsButton.setText(QtGui.QApplication.translate("ellint", "SAVE PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.moLabel.setText(QtGui.QApplication.translate("ellint", "Mo", None, QtGui.QApplication.UnicodeUTF8))
        self.mpcLabel.setText(QtGui.QApplication.translate("ellint", "Mpc", None, QtGui.QApplication.UnicodeUTF8))
        self.label_15.setText(QtGui.QApplication.translate("ellint", "SUBPIX", None, QtGui.QApplication.UnicodeUTF8))
        self.overlapCheck.setText(QtGui.QApplication.translate("ellint", "OVERLAP", None, QtGui.QApplication.UnicodeUTF8))
        __sortingEnabled = self.segmentList.isSortingEnabled()
        self.segmentList.setSortingEnabled(False)
        self.segmentList.item(0).setText(QtGui.QApplication.translate("ellint", "0 360", None, QtGui.QApplication.UnicodeUTF8))
        self.segmentList.setSortingEnabled(__sortingEnabled)
        self.checkSampCentre.setText(QtGui.QApplication.translate("ellint", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampRadii.setText(QtGui.QApplication.translate("ellint", "SAMP", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_ellint.py
####START ./../development/gipsyClasses/Ui_combin.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'combin.ui'
#
# Created: Wed Nov  9 13:09:58 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_combin(object):
    def setupUi(self, combin):
        combin.setObjectName("combin")
        combin.resize(500, 420)
        combin.setFrameShape(QtGui.QFrame.StyledPanel)
        combin.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(combin)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox = QtGui.QGroupBox(combin)
        self.groupBox.setObjectName("groupBox")
        self.gridLayout = QtGui.QGridLayout(self.groupBox)
        self.gridLayout.setObjectName("gridLayout")
        self.setsBox = QtGui.QComboBox(self.groupBox)
        self.setsBox.setObjectName("setsBox")
        self.gridLayout.addWidget(self.setsBox, 0, 0, 1, 2)
        self.addSetButton = QtGui.QPushButton(self.groupBox)
        self.addSetButton.setFocusPolicy(QtCore.Qt.NoFocus)
        self.addSetButton.setObjectName("addSetButton")
        self.gridLayout.addWidget(self.addSetButton, 0, 2, 1, 1)
        self.verticalLayout.addWidget(self.groupBox)
        self.combinSets = QtGui.QGroupBox(combin)
        self.combinSets.setObjectName("combinSets")
        self.combinLayout = QtGui.QVBoxLayout(self.combinSets)
        self.combinLayout.setObjectName("combinLayout")
        self.verticalLayout.addWidget(self.combinSets)
        self.frame = QtGui.QFrame(combin)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
        self.frame.setSizePolicy(sizePolicy)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.clearButton = QtGui.QPushButton(self.frame)
        self.clearButton.setEnabled(False)
        self.clearButton.setObjectName("clearButton")
        self.horizontalLayout.addWidget(self.clearButton)
        self.verticalLayout.addWidget(self.frame)
        self.groupBox_3 = QtGui.QGroupBox(combin)
        self.groupBox_3.setFlat(False)
        self.groupBox_3.setObjectName("groupBox_3")
        self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_3)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.operationBox = QtGui.QComboBox(self.groupBox_3)
        self.operationBox.setObjectName("operationBox")
        self.operationBox.addItem("")
        self.operationBox.addItem("")
        self.gridLayout_2.addWidget(self.operationBox, 1, 0, 1, 1)
        self.complementaryBox = QtGui.QComboBox(self.groupBox_3)
        self.complementaryBox.setObjectName("complementaryBox")
        self.complementaryBox.addItem("")
        self.complementaryBox.addItem("")
        self.gridLayout_2.addWidget(self.complementaryBox, 1, 1, 1, 1)
        self.label = QtGui.QLabel(self.groupBox_3)
        self.label.setObjectName("label")
        self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
        self.label_2 = QtGui.QLabel(self.groupBox_3)
        self.label_2.setObjectName("label_2")
        self.gridLayout_2.addWidget(self.label_2, 0, 1, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_3)
        self.groupBox_4 = QtGui.QGroupBox(combin)
        self.groupBox_4.setObjectName("groupBox_4")
        self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_4)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.label_3 = QtGui.QLabel(self.groupBox_4)
        self.label_3.setObjectName("label_3")
        self.gridLayout_3.addWidget(self.label_3, 0, 0, 1, 1)
        self.operationLine = QtGui.QLineEdit(self.groupBox_4)
        self.operationLine.setObjectName("operationLine")
        self.gridLayout_3.addWidget(self.operationLine, 0, 1, 1, 1)
        self.label_5 = QtGui.QLabel(self.groupBox_4)
        self.label_5.setText("")
        self.label_5.setPixmap(QtGui.QPixmap(":/help.gif"))
        self.label_5.setObjectName("label_5")
        self.gridLayout_3.addWidget(self.label_5, 0, 2, 1, 1)
        self.verticalLayout.addWidget(self.groupBox_4)

        self.retranslateUi(combin)
        QtCore.QMetaObject.connectSlotsByName(combin)

    def retranslateUi(self, combin):
        combin.setWindowTitle(QtGui.QApplication.translate("combin", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox.setTitle(QtGui.QApplication.translate("combin", "Sets in Session", None, QtGui.QApplication.UnicodeUTF8))
        self.addSetButton.setText(QtGui.QApplication.translate("combin", "Add Set to List", None, QtGui.QApplication.UnicodeUTF8))
        self.combinSets.setTitle(QtGui.QApplication.translate("combin", "Combin Sets", None, QtGui.QApplication.UnicodeUTF8))
        self.clearButton.setText(QtGui.QApplication.translate("combin", "Clear Combin Sets", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_3.setTitle(QtGui.QApplication.translate("combin", "Options", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(0, QtGui.QApplication.translate("combin", "Inside", None, QtGui.QApplication.UnicodeUTF8))
        self.operationBox.setItemText(1, QtGui.QApplication.translate("combin", "Outside", None, QtGui.QApplication.UnicodeUTF8))
        self.complementaryBox.setItemText(0, QtGui.QApplication.translate("combin", "Blanks", None, QtGui.QApplication.UnicodeUTF8))
        self.complementaryBox.setItemText(1, QtGui.QApplication.translate("combin", "Transfers", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("combin", "Operation Box", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("combin", "Operation in complementary box", None, QtGui.QApplication.UnicodeUTF8))
        self.groupBox_4.setTitle(QtGui.QApplication.translate("combin", "Result", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("combin", "Operation", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
#import resources_rc
####END ./../development/gipsyClasses/Ui_combin.py
####START ./../development/gipsyClasses/Ui_regrid.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'regrid.ui'
#
# Created: Wed Jun  1 13:15:38 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_regrid(object):
    def setupUi(self, regrid):
        regrid.setObjectName("regrid")
        regrid.resize(400, 188)
        regrid.setFrameShape(QtGui.QFrame.StyledPanel)
        regrid.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(regrid)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(regrid)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.axnameBox = QtGui.QComboBox(regrid)
        self.axnameBox.setObjectName("axnameBox")
        self.gridLayout.addWidget(self.axnameBox, 0, 1, 1, 1)
        spacerItem = QtGui.QSpacerItem(152, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 2, 1, 1)
        self.label_2 = QtGui.QLabel(regrid)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.cdeltLine = QtGui.QLineEdit(regrid)
        self.cdeltLine.setObjectName("cdeltLine")
        self.gridLayout.addWidget(self.cdeltLine, 1, 1, 1, 1)
        self.unitLabel = QtGui.QLabel(regrid)
        self.unitLabel.setEnabled(False)
        self.unitLabel.setObjectName("unitLabel")
        self.gridLayout.addWidget(self.unitLabel, 1, 2, 1, 1)
        self.label_3 = QtGui.QLabel(regrid)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.ipolBox = QtGui.QComboBox(regrid)
        self.ipolBox.setObjectName("ipolBox")
        self.ipolBox.addItem("")
        self.ipolBox.addItem("")
        self.ipolBox.addItem("")
        self.ipolBox.addItem("")
        self.gridLayout.addWidget(self.ipolBox, 2, 1, 1, 1)
        self.label_4 = QtGui.QLabel(regrid)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
        self.widthLine = QtGui.QLineEdit(regrid)
        self.widthLine.setObjectName("widthLine")
        self.gridLayout.addWidget(self.widthLine, 3, 1, 1, 1)

        self.retranslateUi(regrid)
        QtCore.QMetaObject.connectSlotsByName(regrid)

    def retranslateUi(self, regrid):
        regrid.setWindowTitle(QtGui.QApplication.translate("regrid", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("regrid", "AXNAME", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("regrid", "CDELT", None, QtGui.QApplication.UnicodeUTF8))
        self.unitLabel.setText(QtGui.QApplication.translate("regrid", "UNIT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("regrid", "IPOL", None, QtGui.QApplication.UnicodeUTF8))
        self.ipolBox.setItemText(0, QtGui.QApplication.translate("regrid", "Linear", None, QtGui.QApplication.UnicodeUTF8))
        self.ipolBox.setItemText(1, QtGui.QApplication.translate("regrid", "Sinc", None, QtGui.QApplication.UnicodeUTF8))
        self.ipolBox.setItemText(2, QtGui.QApplication.translate("regrid", "Spline", None, QtGui.QApplication.UnicodeUTF8))
        self.ipolBox.setItemText(3, QtGui.QApplication.translate("regrid", "Average", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("regrid", "WIDTH", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_regrid.py
####START ./../development/gipsyClasses/Ui_editset.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'editset.ui'
#
# Created: Wed Jun  1 12:09:17 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_editset(object):
    def setupUi(self, editset):
        editset.setObjectName("editset")
        editset.resize(400, 93)
        editset.setFrameShape(QtGui.QFrame.NoFrame)
        editset.setFrameShadow(QtGui.QFrame.Raised)
        self.verticalLayout = QtGui.QVBoxLayout(editset)
        self.verticalLayout.setObjectName("verticalLayout")
        self.groupBox_3 = QtGui.QGroupBox(editset)
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox_3)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtGui.QLabel(self.groupBox_3)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.expressionLine = QtGui.QLineEdit(self.groupBox_3)
        self.expressionLine.setObjectName("expressionLine")
        self.horizontalLayout.addWidget(self.expressionLine)
        self.label_2 = QtGui.QLabel(self.groupBox_3)
        self.label_2.setText("")
        self.label_2.setPixmap(QtGui.QPixmap(":/help.gif"))
        self.label_2.setObjectName("label_2")
        self.horizontalLayout.addWidget(self.label_2)
        self.verticalLayout.addWidget(self.groupBox_3)

        self.retranslateUi(editset)
        QtCore.QMetaObject.connectSlotsByName(editset)

    def retranslateUi(self, editset):
        editset.setWindowTitle(QtGui.QApplication.translate("editset", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("editset", "Expression", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
#import resources_rc
####END ./../development/gipsyClasses/Ui_editset.py
####START ./../development/gipsyClasses/Ui_insert.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'insert.ui'
#
# Created: Wed Jun 15 12:17:05 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_insert(object):
    def setupUi(self, insert):
        insert.setObjectName("insert")
        insert.resize(488, 149)
        insert.setFrameShape(QtGui.QFrame.StyledPanel)
        insert.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(insert)
        self.gridLayout.setContentsMargins(-1, -1, -1, 8)
        self.gridLayout.setObjectName("gridLayout")
        self.outsetButton = QtGui.QPushButton(insert)
        self.outsetButton.setObjectName("outsetButton")
        self.gridLayout.addWidget(self.outsetButton, 0, 0, 1, 1)
        self.outsetLabel = QtGui.QLabel(insert)
        self.outsetLabel.setText("")
        self.outsetLabel.setObjectName("outsetLabel")
        self.gridLayout.addWidget(self.outsetLabel, 0, 1, 1, 1)
        self.outHeaderButton = QtGui.QPushButton(insert)
        self.outHeaderButton.setObjectName("outHeaderButton")
        self.gridLayout.addWidget(self.outHeaderButton, 0, 2, 1, 1)
        self.outboxButton = QtGui.QPushButton(insert)
        self.outboxButton.setObjectName("outboxButton")
        self.gridLayout.addWidget(self.outboxButton, 1, 0, 1, 1)
        self.outboxLabel = QtGui.QLabel(insert)
        self.outboxLabel.setText("")
        self.outboxLabel.setObjectName("outboxLabel")
        self.gridLayout.addWidget(self.outboxLabel, 1, 1, 1, 1)

        self.retranslateUi(insert)
        QtCore.QMetaObject.connectSlotsByName(insert)

    def retranslateUi(self, insert):
        insert.setWindowTitle(QtGui.QApplication.translate("insert", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.outsetButton.setText(QtGui.QApplication.translate("insert", "OUTSET", None, QtGui.QApplication.UnicodeUTF8))
        self.outHeaderButton.setText(QtGui.QApplication.translate("insert", "HEADER", None, QtGui.QApplication.UnicodeUTF8))
        self.outboxButton.setText(QtGui.QApplication.translate("insert", "OUTBOX", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_insert.py
####START ./../development/gipsyClasses/Ui_rfits.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'rfits.ui'
#
# Created: Mon Feb 11 11:28:02 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_rfits(object):
    def setupUi(self, rfits):
        rfits.setObjectName("rfits")
        rfits.resize(433, 146)
        rfits.setFrameShape(QtGui.QFrame.StyledPanel)
        rfits.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(rfits)
        self.gridLayout.setObjectName("gridLayout")
        self.fitsPathLine = QtGui.QLineEdit(rfits)
        self.fitsPathLine.setObjectName("fitsPathLine")
        self.gridLayout.addWidget(self.fitsPathLine, 2, 0, 1, 1)
        self.label = QtGui.QLabel(rfits)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 1, 0, 1, 2)
        self.fitsBrowseButton = QtGui.QPushButton(rfits)
        self.fitsBrowseButton.setObjectName("fitsBrowseButton")
        self.gridLayout.addWidget(self.fitsBrowseButton, 2, 1, 1, 1)
        self.label_2 = QtGui.QLabel(rfits)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
        self.setPathLine = QtGui.QLineEdit(rfits)
        self.setPathLine.setEnabled(True)
        self.setPathLine.setObjectName("setPathLine")
        self.gridLayout.addWidget(self.setPathLine, 4, 0, 1, 1)
        self.setBrowseButton = QtGui.QPushButton(rfits)
        self.setBrowseButton.setEnabled(True)
        self.setBrowseButton.setObjectName("setBrowseButton")
        self.gridLayout.addWidget(self.setBrowseButton, 4, 1, 1, 1)
        self.labelMessage = QtGui.QLabel(rfits)
        self.labelMessage.setText("")
        self.labelMessage.setObjectName("labelMessage")
        self.gridLayout.addWidget(self.labelMessage, 0, 0, 1, 2)

        self.retranslateUi(rfits)
        QtCore.QMetaObject.connectSlotsByName(rfits)

    def retranslateUi(self, rfits):
        rfits.setWindowTitle(QtGui.QApplication.translate("rfits", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("rfits", "Fits File:", None, QtGui.QApplication.UnicodeUTF8))
        self.fitsBrowseButton.setText(QtGui.QApplication.translate("rfits", "Browse", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("rfits", "Setname:", None, QtGui.QApplication.UnicodeUTF8))
        self.setBrowseButton.setText(QtGui.QApplication.translate("rfits", "Browse", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_rfits.py
####START ./../development/gipsyClasses/Ui_pplot.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'pplot.ui'
#
# Created: Fri Mar  9 10:00:38 2012
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_pplot(object):
    def setupUi(self, pplot):
        pplot.setObjectName("pplot")
        pplot.resize(546, 120)
        pplot.setFrameShape(QtGui.QFrame.NoFrame)
        pplot.setFrameShadow(QtGui.QFrame.Plain)
        pplot.setLineWidth(0)
        pplot.setMidLineWidth(0)
        self.verticalLayout = QtGui.QVBoxLayout(pplot)
        self.verticalLayout.setSpacing(6)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.frame_2 = QtGui.QFrame(pplot)
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setLineWidth(1)
        self.frame_2.setObjectName("frame_2")
        self.gridLayout = QtGui.QGridLayout(self.frame_2)
        self.gridLayout.setObjectName("gridLayout")
        self.filenameLine = QtGui.QLineEdit(self.frame_2)
        self.filenameLine.setObjectName("filenameLine")
        self.gridLayout.addWidget(self.filenameLine, 2, 1, 1, 1)
        self.browserFileButton = QtGui.QPushButton(self.frame_2)
        self.browserFileButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/fileopen.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.browserFileButton.setIcon(icon)
        self.browserFileButton.setIconSize(QtCore.QSize(20, 20))
        self.browserFileButton.setObjectName("browserFileButton")
        self.gridLayout.addWidget(self.browserFileButton, 2, 2, 1, 1)
        self.label_2 = QtGui.QLabel(self.frame_2)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
        self.label = QtGui.QLabel(self.frame_2)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 1, 0, 1, 3)
        self.label_3 = QtGui.QLabel(self.frame_2)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
        self.profileLine = QtGui.QLineEdit(self.frame_2)
        self.profileLine.setObjectName("profileLine")
        self.gridLayout.addWidget(self.profileLine, 0, 1, 1, 1)
        self.verticalLayout.addWidget(self.frame_2)

        self.retranslateUi(pplot)
        QtCore.QMetaObject.connectSlotsByName(pplot)

    def retranslateUi(self, pplot):
        pplot.setWindowTitle(QtGui.QApplication.translate("pplot", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("pplot", "Filename", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("pplot", "File where the profile data will be written:", None, QtGui.QApplication.UnicodeUTF8))
        self.label_3.setText(QtGui.QApplication.translate("pplot", "PROFILE", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
#import resources_rc
####END ./../development/gipsyClasses/Ui_pplot.py
####START ./../development/gipsyClasses/Ui_velfi.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'velfi.ui'
#
# Created: Fri Feb  8 10:51:36 2013
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_velfi(object):
    def setupUi(self, velfi):
        velfi.setObjectName("velfi")
        velfi.resize(492, 329)
        velfi.setFrameShape(QtGui.QFrame.StyledPanel)
        velfi.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(velfi)
        self.gridLayout.setObjectName("gridLayout")
        self.label_4 = QtGui.QLabel(velfi)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 0, 0, 1, 1)
        self.label = QtGui.QLabel(velfi)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 2, 0, 1, 1)
        self.vsysLine = QtGui.QLineEdit(velfi)
        self.vsysLine.setObjectName("vsysLine")
        self.gridLayout.addWidget(self.vsysLine, 2, 1, 1, 2)
        self.vsysButton = QtGui.QPushButton(velfi)
        self.vsysButton.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/table.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.vsysButton.setIcon(icon)
        self.vsysButton.setIconSize(QtCore.QSize(20, 20))
        self.vsysButton.setObjectName("vsysButton")
        self.gridLayout.addWidget(self.vsysButton, 2, 3, 1, 1)
        self.label_2 = QtGui.QLabel(velfi)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 4, 0, 1, 1)
        self.vrotLine = QtGui.QLineEdit(velfi)
        self.vrotLine.setObjectName("vrotLine")
        self.gridLayout.addWidget(self.vrotLine, 4, 1, 1, 2)
        self.vrotButton = QtGui.QPushButton(velfi)
        self.vrotButton.setText("")
        self.vrotButton.setIcon(icon)
        self.vrotButton.setIconSize(QtCore.QSize(20, 20))
        self.vrotButton.setObjectName("vrotButton")
        self.gridLayout.addWidget(self.vrotButton, 4, 3, 1, 1)
        self.label_9 = QtGui.QLabel(velfi)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 5, 0, 1, 1)
        self.vradLine = QtGui.QLineEdit(velfi)
        self.vradLine.setObjectName("vradLine")
        self.gridLayout.addWidget(self.vradLine, 5, 1, 1, 2)
        self.vradButton = QtGui.QPushButton(velfi)
        self.vradButton.setText("")
        self.vradButton.setIcon(icon)
        self.vradButton.setIconSize(QtCore.QSize(20, 20))
        self.vradButton.setObjectName("vradButton")
        self.gridLayout.addWidget(self.vradButton, 5, 3, 1, 1)
        self.label_10 = QtGui.QLabel(velfi)
        self.label_10.setObjectName("label_10")
        self.gridLayout.addWidget(self.label_10, 6, 0, 1, 1)
        self.paLine = QtGui.QLineEdit(velfi)
        self.paLine.setObjectName("paLine")
        self.gridLayout.addWidget(self.paLine, 6, 1, 1, 2)
        self.paButton = QtGui.QPushButton(velfi)
        self.paButton.setText("")
        self.paButton.setIcon(icon)
        self.paButton.setIconSize(QtCore.QSize(20, 20))
        self.paButton.setObjectName("paButton")
        self.gridLayout.addWidget(self.paButton, 6, 3, 1, 1)
        self.label_11 = QtGui.QLabel(velfi)
        self.label_11.setObjectName("label_11")
        self.gridLayout.addWidget(self.label_11, 7, 0, 1, 1)
        self.inclLine = QtGui.QLineEdit(velfi)
        self.inclLine.setObjectName("inclLine")
        self.gridLayout.addWidget(self.inclLine, 7, 1, 1, 2)
        self.inclButton = QtGui.QPushButton(velfi)
        self.inclButton.setText("")
        self.inclButton.setIcon(icon)
        self.inclButton.setIconSize(QtCore.QSize(20, 20))
        self.inclButton.setObjectName("inclButton")
        self.gridLayout.addWidget(self.inclButton, 7, 3, 1, 1)
        self.saveParamsButton = QtGui.QPushButton(velfi)
        self.saveParamsButton.setObjectName("saveParamsButton")
        self.gridLayout.addWidget(self.saveParamsButton, 8, 0, 1, 1)
        self.loadParamsButton = QtGui.QPushButton(velfi)
        self.loadParamsButton.setObjectName("loadParamsButton")
        self.gridLayout.addWidget(self.loadParamsButton, 8, 1, 1, 1)
        self.frame = QtGui.QFrame(velfi)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.horizontalLayout = QtGui.QHBoxLayout(self.frame)
        self.horizontalLayout.setSpacing(8)
        self.horizontalLayout.setMargin(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.xcentreLine = QtGui.QLineEdit(self.frame)
        self.xcentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.xcentreLine.setObjectName("xcentreLine")
        self.horizontalLayout.addWidget(self.xcentreLine)
        self.ycentreLine = QtGui.QLineEdit(self.frame)
        self.ycentreLine.setMaximumSize(QtCore.QSize(60, 16777215))
        self.ycentreLine.setObjectName("ycentreLine")
        self.horizontalLayout.addWidget(self.ycentreLine)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.gridLayout.addWidget(self.frame, 0, 1, 1, 1)
        self.checkSampVsys = QtGui.QCheckBox(velfi)
        self.checkSampVsys.setEnabled(False)
        self.checkSampVsys.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVsys.setChecked(True)
        self.checkSampVsys.setObjectName("checkSampVsys")
        self.gridLayout.addWidget(self.checkSampVsys, 2, 4, 1, 1)
        self.checkSampVrot = QtGui.QCheckBox(velfi)
        self.checkSampVrot.setEnabled(False)
        self.checkSampVrot.setStyleSheet("QCheckBox { color: green }")
        self.checkSampVrot.setObjectName("checkSampVrot")
        self.gridLayout.addWidget(self.checkSampVrot, 4, 4, 1, 1)
        self.radiiLine = QtGui.QLineEdit(velfi)
        self.radiiLine.setObjectName("radiiLine")
        self.gridLayout.addWidget(self.radiiLine, 3, 1, 1, 2)
        self.label_8 = QtGui.QLabel(velfi)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 3, 0, 1, 1)
        self.radiiButton = QtGui.QPushButton(velfi)
        self.radiiButton.setText("")
        self.radiiButton.setIcon(icon)
        self.radiiButton.setIconSize(QtCore.QSize(20, 20))
        self.radiiButton.setObjectName("radiiButton")
        self.gridLayout.addWidget(self.radiiButton, 3, 3, 1, 1)
        self.checkSampRadii = QtGui.QCheckBox(velfi)
        self.checkSampRadii.setEnabled(False)
        self.checkSampRadii.setStyleSheet("QCheckBox { color: green }")
        self.checkSampRadii.setObjectName("checkSampRadii")
        self.gridLayout.addWidget(self.checkSampRadii, 3, 4, 1, 1)
        self.checkSampCentre = QtGui.QCheckBox(velfi)
        self.checkSampCentre.setEnabled(False)
        self.checkSampCentre.setStyleSheet("QCheckBox { color: green }")
        self.checkSampCentre.setChecked(True)
        self.checkSampCentre.setObjectName("checkSampCentre")
        self.gridLayout.addWidget(self.checkSampCentre, 0, 2, 1, 1)

        self.retranslateUi(velfi)
        QtCore.QMetaObject.connectSlotsByName(velfi)

    def retranslateUi(self, velfi):
        velfi.setWindowTitle(QtGui.QApplication.translate("velfi", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label_4.setText(QtGui.QApplication.translate("velfi", "CENTRE", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("velfi", "VSYS", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("velfi", "VROT", None, QtGui.QApplication.UnicodeUTF8))
        self.label_9.setText(QtGui.QApplication.translate("velfi", "VRAD", None, QtGui.QApplication.UnicodeUTF8))
        self.label_10.setText(QtGui.QApplication.translate("velfi", "PA", None, QtGui.QApplication.UnicodeUTF8))
        self.label_11.setText(QtGui.QApplication.translate("velfi", "INCL", None, QtGui.QApplication.UnicodeUTF8))
        self.saveParamsButton.setText(QtGui.QApplication.translate("velfi", "SAVE PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.loadParamsButton.setText(QtGui.QApplication.translate("velfi", "LOAD PARAMS", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVsys.setText(QtGui.QApplication.translate("velfi", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampVrot.setText(QtGui.QApplication.translate("velfi", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.label_8.setText(QtGui.QApplication.translate("velfi", "RADII", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampRadii.setText(QtGui.QApplication.translate("velfi", "SAMP", None, QtGui.QApplication.UnicodeUTF8))
        self.checkSampCentre.setText(QtGui.QApplication.translate("velfi", "SAMP", None, QtGui.QApplication.UnicodeUTF8))

#import resources_rc
####END ./../development/gipsyClasses/Ui_velfi.py
####START ./../development/gipsyClasses/Ui_minbox.py
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'minbox.ui'
#
# Created: Thu Nov 10 11:51:06 2011
#      by: PyQt4 UI code generator 4.7.2
#
# WARNING! All changes made in this file will be lost!

#from PyQt4 import QtCore, QtGui

class Ui_minbox(object):
    def setupUi(self, minbox):
        minbox.setObjectName("minbox")
        minbox.resize(416, 239)
        minbox.setFrameShape(QtGui.QFrame.StyledPanel)
        minbox.setFrameShadow(QtGui.QFrame.Raised)
        self.gridLayout = QtGui.QGridLayout(minbox)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtGui.QLabel(minbox)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.marginLine = QtGui.QLineEdit(minbox)
        self.marginLine.setMaximumSize(QtCore.QSize(75, 16777215))
        self.marginLine.setObjectName("marginLine")
        self.gridLayout.addWidget(self.marginLine, 0, 1, 1, 1)
        self.resultGroup = QtGui.QGroupBox(minbox)
        self.resultGroup.setEnabled(False)
        self.resultGroup.setObjectName("resultGroup")
        self.resultLayout = QtGui.QGridLayout(self.resultGroup)
        self.resultLayout.setObjectName("resultLayout")
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.resultLayout.addItem(spacerItem, 0, 0, 1, 1)
        self.gridLayout.addWidget(self.resultGroup, 3, 0, 1, 1)
        self.label_2 = QtGui.QLabel(minbox)
        font = QtGui.QFont()
        font.setFamily("Century Schoolbook L")
        font.setPointSize(9)
        font.setWeight(50)
        font.setItalic(False)
        font.setBold(False)
        self.label_2.setFont(font)
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 4, 0, 1, 2)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 0, 2, 1, 1)
        self.frame = QtGui.QFrame(minbox)
        self.frame.setFrameShape(QtGui.QFrame.NoFrame)
        self.frame.setFrameShadow(QtGui.QFrame.Plain)
        self.frame.setObjectName("frame")
        self.verticalLayout = QtGui.QVBoxLayout(self.frame)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setMargin(0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.squareCheck = QtGui.QCheckBox(self.frame)
        self.squareCheck.setObjectName("squareCheck")
        self.verticalLayout.addWidget(self.squareCheck)
        self.gridLayout.addWidget(self.frame, 1, 0, 1, 3)

        self.retranslateUi(minbox)
        QtCore.QMetaObject.connectSlotsByName(minbox)

    def retranslateUi(self, minbox):
        minbox.setWindowTitle(QtGui.QApplication.translate("minbox", "Frame", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("minbox", "Margin", None, QtGui.QApplication.UnicodeUTF8))
        self.resultGroup.setTitle(QtGui.QApplication.translate("minbox", "Results", None, QtGui.QApplication.UnicodeUTF8))
        self.label_2.setText(QtGui.QApplication.translate("minbox", "The outset is not mandatory", None, QtGui.QApplication.UnicodeUTF8))
        self.squareCheck.setText(QtGui.QApplication.translate("minbox", "Adjust box sizes to form a squaress", None, QtGui.QApplication.UnicodeUTF8))

####END ./../development/gipsyClasses/Ui_minbox.py
####START ./../development/workflow/__init__.py
####END ./../development/workflow/__init__.py
####START ./../development/workflow/workflow.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#from Ui_workflow import *
#from launch.syntax import *
#from dialog.myeditarea import MyEditArea


class workflow(QWidget,Ui_workflow):
    def __init__(self):
        """
        This class keeps the logs from the execution of gipsy task. This logs are python sentences which, in case to be executed, they  will reproduce the gipsy task action
        ATTRIBUTES:
        - self.log: it contains the plain text with the logs and other python sentences which build a python script that can be executed in HERMES command line.
        - self.workflowArea: The area which shows the logs.
        """
        super(workflow, self).__init__()
        self.setupUi(self)

        
        #The log variable stores the python command except import and gipsy command
        self.log=""

        #workflowArea variable is the textArea where show the logs
        self.workflowArea=MyEditArea()
        highlight = PythonHighlighter(self.workflowArea.document())
        self.verticalLayout.addWidget(self.workflowArea)
        self.connect(self.workflowArea, SIGNAL("editingFinished"),self.updateWorkflow)
        self.connect(self.saveButton,SIGNAL("clicked()"), self.save)

        
    def getWorkflowText(self):
        return self.log
    
    def setWorkflowText(self, log):
        self.log=log
        #text="#!/usr/bin/env/python\nimport gipsy\nfrom gipsy import *\ngipsy.init()\n\n"+log+"\n\ngipsy.finis()"
        self.workflowArea.setPlainText(self.log)
    
    def appendWorkflowText(self, log):
        self.log=self.log+log+"\n"
        #text="#!/usr/bin/env/python\nimport gipsy\nfrom gipsy import *\ngipsy.init()\n\n"+self.log+"\n\ngipsy.finis()"
        self.workflowArea.setPlainText(self.log)
        
    
    def updateWorkflow(self):
        self.log=self.workflowArea.toPlainText()
        self.emit(SIGNAL("updateWorkflow"))
    def clearWorkflow(self):
        self.log=""
        self.workflowArea.setPlainText("")
    
    def save(self):
        newFile = unicode(QFileDialog.getSaveFileName(self,"Save workflow", "workflow.py",".py", "Choose a file"))
        if newFile=="":
            return False
        
        try:
            fh=open(newFile, "wb")
        except IOError as e:
            fh.close()
            raise e
            return
        pre="#!/usr/bin/env python\nimport gipsy\nfrom gipsy import *\ngipsy.init()\n\n"
        post="\n\ngipsy.finis()"
        text=pre+unicode(self.workflowArea.toPlainText())+post
        try:
            fh.write(text)
        except UnicodeEncodeError as e:
            fh.close()
            raise e
            return
        

####END ./../development/workflow/workflow.py
####START ./../development/launch/view_pyfile.py
#from Ui_launch import *
#import os
#from syntax import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *



class view_pyfile(QScrollArea,Ui_launch):
    def __init__(self):
        """
        This class manage the creation, edition and execution of python scripts. This class inherits from Ui_launch, as well as view_cola class, which implements the graphical part.
        The python script can be created from a blank document or from a template. A template is a python script provided by GUIpsy with an example of some specific analysis.
        When the launch button is pressed the signal "launchTask" is emited, being the main class of GUIpsy responsible of launching the corresponding command 
        to HERMES through the  gipsyDinamicalTask class
        
        ATTRIBUTES:
        - self.plainTextEdit is the edit area where the python script can be written. The text in this area is highlighted with the python format using the PythonHighlighter class from the syntax module
        - self.launchButton is the button to launch the script to HERMES in order to be run inside of GIPSY environment.
        - self.filename keeps the filepath of the script.
        - self.template keeps the filepath of the template
        - self.dirty is true when the script contains some unsaved changes.
        """
        super(view_pyfile, self).__init__()
        self.setupUi(self)
        
        highlight = PythonHighlighter(self.plainTextEdit.document())
    
        self.filename=None
        self.dirty = False
        self.new=False
        self.template=None
        self.launchButton.setEnabled(False)
        self.connect(self.launchButton,SIGNAL("clicked()"), self.launch)
        
    def loadPyfile(self,  templatePath, fName):
        
        if(templatePath != None):
            qfile=QFile(templatePath)
            if not qfile.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text):
                return
            text=QString(qfile.readAll())
            self.plainTextEdit.setPlainText(text)
            self.template=fName
            self.dirty=True
        else:
            self.filename=fName
            if(os.path.isfile(fName)):
                try:
                    fh=open(fName, "rb")
                except IOError as e:
                    raise e
                    return 
                rows=fh.readlines()
                fh.close()           
                self.plainTextEdit.setPlainText(''.join(rows))
                self.launchButton.setEnabled(True)
            else: # it is a new py file
                self.template=None
                self.new=True
                self.plainTextEdit.setPlainText("")
                self.dirty=True
        self.connect(self.plainTextEdit, SIGNAL("textChanged()"), self.fileChanged)
    
    
    def isTemplate(self):
        if(self.template != None):
            return True
        else:
            return False
    
    def isNew(self):
        return self.new

    def isDirty(self):
        return self.dirty
        
    def save(self, filename=None):
        if filename!=None:
            self.filename=filename
        if self.filename!=None:
            try:
                fh=open(self.filename, "wb")
            except IOError as e:
                fh.close()
                raise e
                return
            try:
                fh.write(unicode(self.plainTextEdit.toPlainText()))
            except UnicodeEncodeError as e:
                fh.close()
                raise e
                return
                
            fh.close()
            self.dirty=False
            self.launchButton.setEnabled(True)
            self.template=None
           
    
    def fileChanged(self):
        self.launchButton.setEnabled(False)
        self.dirty=True

    def launch(self):
        if self.filename!=None:
            print  self.filename
            self.emit(SIGNAL("launchTask"), self.filename)
####END ./../development/launch/view_pyfile.py
####START ./../development/launch/view_cola.py
#from Ui_launch import *
#import os
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *



class view_cola(QScrollArea,Ui_launch):
    def __init__(self):
        """
        This class manage the creation, edition and execution of cola scripts. This class inherits from Ui_launch, as well as view_pyfile class, which implements the graphical part.
        The cola script can be created from a blank document or from a template. A template is a cola script provided by GUIpsy with an example of some specific analysis.
        When the launch button is pressed the signal "launchTask" is emited, being the main class of GUIpsy responsible of launching the corresponding command 
        to HERMES through the  gipsyDinamicalTask class
        
        ATTRIBUTES:
        - self.plainTextEdit is the edit area where the cola script can be written. 
        - self.launchButton is the button to launch the script to HERMES in order to be run inside of GIPSY environment.
        - self.filename keeps the filepath of the script.
        - self.template keeps the filepath of the template
        - self.dirty is true when the script contains some unsaved changes.
        """
        super(view_cola, self).__init__()
        self.setupUi(self)
        
        self.filename=None
        self.dirty = False
        self.template=None
        self.new=False
        self.launchButton.setEnabled(False)
        
        self.connect(self.launchButton,SIGNAL("clicked()"), self.launch)
        
        
    
    def loadCola(self, templatePath, filename):
       
        if(templatePath != None):
            qfile=QFile(templatePath)
            if not qfile.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text):
                return
            text=QString(qfile.readAll())
            self.plainTextEdit.setPlainText(text)
            self.dirty=True
        else:
            fName=filename
            self.filename=fName

            if(os.path.isfile(fName)):
                
                try:
                    fh=open(fName, "rb")
                except IOError as e:
                    raise e
                    return 
                rows=fh.readlines()
                fh.close()           
                self.plainTextEdit.setPlainText(''.join(rows))
                self.launchButton.setEnabled(True)
            else: # it is a new cola file
                self.template=None
                self.plainTextEdit.setPlainText("")
                self.dirty=True
                self.new=True
        self.connect(self.plainTextEdit, SIGNAL("textChanged()"), self.colaChanged)
    
    def isTemplate(self):
        if(self.template != None):
            return True
        else:
            return False
    
    def isNew(self):
        return self.new
        
    def isDirty(self):
        return self.dirty
        
    def save(self, filename=None):
        if filename!=None:
            self.filename=filename
            
        if self.filename!=None:
            try:
                fh=open(self.filename, "wb")
            except IOError as e:
                fh.close()
                raise e
                return
            try:
                fh.write(unicode(self.plainTextEdit.toPlainText()))
            except UnicodeEncodeError as e:
                fh.close()
                raise e
                return
                
            fh.close()
            self.dirty=False
            self.launchButton.setEnabled(True)
            self.template=None
    
    def colaChanged(self):
        self.launchButton.setEnabled(False)
        self.dirty=True

    def launch(self):
        if self.filename!=None:
            (colaname, ext)=os.path.splitext(self.filename)
            task="COLA NAME=%s"%colaname
            self.emit(SIGNAL("launchTask"),task)
####END ./../development/launch/view_cola.py
####START ./../development/launch/__init__.py
####END ./../development/launch/__init__.py
####START ./../development/launch/syntax.py
#import sys

#from PyQt4.QtCore import QRegExp
#from PyQt4.QtGui import QColor, QTextCharFormat, QFont, QSyntaxHighlighter

def format(color, style=''):
    """Return a QTextCharFormat with the given attributes.
    """
    _color = QColor()
    _color.setNamedColor(color)

    _format = QTextCharFormat()
    _format.setForeground(_color)
    if 'bold' in style:
        _format.setFontWeight(QFont.Bold)
    if 'italic' in style:
        _format.setFontItalic(True)

    return _format


# Syntax styles that can be shared by all languages
STYLES = {
    'keyword': format('blue'),
    'operator': format('red'),
    'brace': format('darkGray'),
    'defclass': format('black', 'bold'),
    'string': format('magenta'),
    'string2': format('darkMagenta'),
    'comment': format('darkGreen', 'italic'),
    'self': format('black', 'italic'),
    'numbers': format('brown'),
}


class PythonHighlighter (QSyntaxHighlighter):
    """Syntax highlighter for the Python language.
    """
    # Python keywords
    keywords = [
        'and', 'assert', 'break', 'class', 'continue', 'def',
        'del', 'elif', 'else', 'except', 'exec', 'finally',
        'for', 'from', 'global', 'if', 'import', 'in',
        'is', 'lambda', 'not', 'or', 'pass', 'print',
        'raise', 'return', 'try', 'while', 'yield',
        'None', 'True', 'False',
    ]

    # Python operators
    operators = [
        '=',
        # Comparison
        '==', '!=', '<', '<=', '>', '>=',
        # Arithmetic
        '\+', '-', '\*', '/', '//', '\%', '\*\*',
        # In-place
        '\+=', '-=', '\*=', '/=', '\%=',
        # Bitwise
        '\^', '\|', '\&', '\~', '>>', '<<',
    ]

    # Python braces
    braces = [
        '\{', '\}', '\(', '\)', '\[', '\]',
    ]
    def __init__(self, document):
        QSyntaxHighlighter.__init__(self, document)

        # Multi-line strings (expression, flag, style)
        # FIXME: The triple-quotes in these two lines will mess up the
        # syntax highlighting from this point onward
        self.tri_single = (QRegExp("'''"), 1, STYLES['string2'])
        self.tri_double = (QRegExp('"""'), 2, STYLES['string2'])

        rules = []

        # Keyword, operator, and brace rules
        rules += [(r'\b%s\b' % w, 0, STYLES['keyword'])
            for w in PythonHighlighter.keywords]
        rules += [(r'%s' % o, 0, STYLES['operator'])
            for o in PythonHighlighter.operators]
        rules += [(r'%s' % b, 0, STYLES['brace'])
            for b in PythonHighlighter.braces]

        # All other rules
        rules += [
            # 'self'
            (r'\bself\b', 0, STYLES['self']),

            # Double-quoted string, possibly containing escape sequences
            (r'"[^"\\]*(\\.[^"\\]*)*"', 0, STYLES['string']),
            # Single-quoted string, possibly containing escape sequences
            (r"'[^'\\]*(\\.[^'\\]*)*'", 0, STYLES['string']),

            # 'def' followed by an identifier
            (r'\bdef\b\s*(\w+)', 1, STYLES['defclass']),
            # 'class' followed by an identifier
            (r'\bclass\b\s*(\w+)', 1, STYLES['defclass']),

            # From '#' until a newline
            (r'#[^\n]*', 0, STYLES['comment']),

            # Numeric literals
            (r'\b[+-]?[0-9]+[lL]?\b', 0, STYLES['numbers']),
            (r'\b[+-]?0[xX][0-9A-Fa-f]+[lL]?\b', 0, STYLES['numbers']),
            (r'\b[+-]?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\b', 0, STYLES['numbers']),
        ]

        # Build a QRegExp for each pattern
        self.rules = [(QRegExp(pat), index, fmt)
            for (pat, index, fmt) in rules]


    def highlightBlock(self, text):
        """Apply syntax highlighting to the given block of text.
        """
        # Do other syntax formatting
        for expression, nth, format in self.rules:
            index = expression.indexIn(text, 0)

            while index >= 0:
                # We actually want the index of the nth match
                index = expression.pos(nth)
                length = expression.cap(nth).length()
                self.setFormat(index, length, format)
                index = expression.indexIn(text, index + length)

        self.setCurrentBlockState(0)

        # Do multi-line strings
        in_multiline = self.match_multiline(text, *self.tri_single)
        if not in_multiline:
            in_multiline = self.match_multiline(text, *self.tri_double)


    def match_multiline(self, text, delimiter, in_state, style):
        """Do highlighting of multi-line strings. ``delimiter`` should be a
        ``QRegExp`` for triple-single-quotes or triple-double-quotes, and
        ``in_state`` should be a unique integer to represent the corresponding
        state changes when inside those strings. Returns True if we're still
        inside a multi-line string when this function is finished.
        """
        # If inside triple-single quotes, start at 0
        if self.previousBlockState() == in_state:
            start = 0
            add = 0
        # Otherwise, look for the delimiter on this line
        else:
            start = delimiter.indexIn(text)
            # Move past this match
            add = delimiter.matchedLength()

        # As long as there's a delimiter match on this line...
        while start >= 0:
            # Look for the ending delimiter
            end = delimiter.indexIn(text, start + add)
            # Ending delimiter on this line?
            if end >= add:
                length = end - start + add + delimiter.matchedLength()
                self.setCurrentBlockState(0)
            # No; multi-line string
            else:
                self.setCurrentBlockState(in_state)
                length = text.length() - start + add
            # Apply formatting
            self.setFormat(start, length, style)
            # Look for the next match
            start = delimiter.indexIn(text, start + length)

        # Return True if still inside a multi-line string, False otherwise
        if self.currentBlockState() == in_state:
            return True
        else:
            return False
####END ./../development/launch/syntax.py
####START ./../development/help/view_help.py
#import os
#import glob
#from Ui_help import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


class view_help(QWidget,Ui_help):
    def __init__(self):
        super(view_help, self).__init__()
        self.setupUi(self)
        """
        This class implements the right panel of the principal window of GUIpsy. It inherits from Ui_help class which implements the graphical part.
        ATTRIBUTES:
        - self.listWidget: It is inherited from Ui_help class. It is the container widget for the list of gipsy tasks names
        - self.lineEdit: It is the field on the top of the panel, where the user can type the name of the task to be searched in the list.
        - self.helpArea: It is an object of the class helpContainer. In this object are stored the information about each gipsy task, in order to show it when it is required.
        """


#DATA elements:
        self.helpArea=helpContainer()

#BUILDING THE  HELP AREA
        self.helpArea.load()
        self.populateList()

        self.connect(self.listWidget,
                SIGNAL("itemSelectionChanged()"),
                self.itemSelected)
        self.connect(self.lineEdit, SIGNAL("textChanged(QString)"),
                     self.text_changed)
        self.connect(self.listWidget,
                SIGNAL("itemDoubleClicked(QListWidgetItem *)"),
                self.openHelpFile)

    def openHelpFile(self,  item):
        identity_item=item.data(Qt.UserRole).toLongLong()[0]
        t=self.helpArea.getItemHelp(identity_item)
        #self.emit(SIGNAL("openHelpFile(String)"), t.filedc1)
        self.emit(SIGNAL("openHelpFile"), t.filedc1)
    def text_changed(self):
        pattern = unicode(self.lineEdit.text()).upper()
        items=self.listWidget.findItems(pattern,Qt.MatchStartsWith)
        if(len(items)>0):
            self.listWidget.setItemSelected(items[0],True)
            self.listWidget.scrollToItem(items[0])
        else:
            item=self.listWidget.selectedItems()
            for i in item:
                i.setSelected(False)
                self.textBrowser.setText("")



    def itemSelected(self):
        #retrieving the item selected
        item= self.listWidget.selectedItems()
        if(len(item)>0):
            identity_item=item[0].data(Qt.UserRole).toLongLong()[0]
            t=self.helpArea.getItemHelp(identity_item)
            self.textBrowser.setText(t.smartHelp)

    def populateList(self, selectedItemHelp=None):
        selected = None
        self.listWidget.clear()
        for itemHelp in self.helpArea.inOrder():
            item = QListWidgetItem(itemHelp.name)
            item.setData(Qt.UserRole, QVariant(long(id(itemHelp))))
            self.listWidget.addItem(item)
            if selectedItemHelp is not None and selectedItemHelp == id(itemHelp):
                selected = item
        if selected is not None:
            selected.setSelected(True)
            self.listWidget.setCurrentItem(selected)



class itemHelp(object):
    def __init__(self,name, smartHelp, filedc1):
        self.name=name
        self.smartHelp=smartHelp
        self.filedc1=filedc1
        
    def __cmp__(self, other):
        return QString.localeAwareCompare(self.name,other.name)


class helpContainer(object):
    def __init__(self):
        """
        This is an auxiliary class used to store the information about each gipsy task. 
        Its unique attribute is a dictionary of the "itemHelp" objects. An itemHelp Object is an object which contains three attributes: 
        - the name of the task, 
        - a brief summary of the purpose of the task (smartHelp) and 
        - the path of the file with the whole documentation of the task. 
        The dictionary is populated with the method load. 
        This method iterate for each file with extension ".dc1", in the folder whose path it is indicated by the environmental variable "gip_tsk". 
        In this loop it gets the name of the task, the path file with the documentation of the task, and from this file extracts 
        the "Purpose" section to build the brief summary of the task (smartHelp). With this three elements it builds an itemHelp object and stores it into the dictionary.
        """
        
        self.itemsHelp = {}

    def getItemHelp(self, identity):
        return self.itemsHelp.get(identity)

    def __len__(self):
        return len(self.itemsHelp)


    def __iter__(self):
        for item in self.itemsHelp.values():
            yield item
            

    def inOrder(self):
        
        return sorted(self.itemsHelp.values())

    def load(self):
        p=os.environ.get("gip_tsk")
        for file in glob.glob( p+"/*.dc1"):
            #name=unicode(filename.split(".")[0])
            basename=os.path.basename(file)
            name=basename.split(".")[0]
            if name!="":
                f=open(file, "r")
                wholeHelp=f.read()
                f.close()
                tmp=wholeHelp.split("Purpose:")[1]
                smartHelp=tmp.split("\n")[0]
                smartHelp=smartHelp.strip()
                
                filedc1=p+"/"+name+".dc1"
                t=itemHelp(name,smartHelp,filedc1 )
                self.itemsHelp[id(t)] = t
           


  
####END ./../development/help/view_help.py
####START ./../development/help/view_helpFile.py
#import os
#import glob
#from Ui_helpFile import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


class view_helpFile(QWidget,Ui_helpFile):
    def __init__(self):
        """
        This class implements the panel showed in a tab in the principal window of GUIpsy, 
        containing the documentation about a gipsy task. This class inherits from the Ui_helpFile which 
        implements the graphical part of this panel.This panel has a button titled "Launch". By pressing this button 
        the task is launched to HERMES and a dynamical dialogue is opened to gather the keywords required by HERMES to execute this task.

        ATTRIBUTES:
        - self.textBrowser: it is inherited from Ui_helpfile. It is the QTextBrowser widget where the information about the task is displayed.
        - self.launchButton: it is inherited from Ui_helpfile.
        - self.filename: It contains a string with the path to the .dc1 file with the documentation about the task.
        - self.taskname: It contains a string with the name of the task.
        """
        super(view_helpFile, self).__init__()
        self.setupUi(self)
        #INTERESTING INHERITED ATRIBUTES
        #self.textBrowser: QTextBrowser where the file will be displayed
        #self.launchButton: QPushButton for launching the task to gipsy
        self.textBrowser.setOpenExternalLinks(True)
        self.connect(self.launchButton,SIGNAL("clicked()"), self.emitLaunchTask)
        
        self.filename=None
        self.taskname=None
       
    
    def loadHelpFile(self, filename):
        
        self.filename=filename
        self.taskname=os.path.basename(filename).split(".")[0]
       
        #reading the html file asociated to the task/recipe
        f=QFile(filename)
        if (f.open(QIODevice.ReadOnly)):
            text=f.read(f.size())
            #self.textBrowser.insertHtml("<A name=\"section1\"></a><pre>"+text+"</pre><a href=\"http://www.iaa.es\">www.iaa.es</a><A href=\"#section1\">Introduction</A>")
            self.textBrowser.insertHtml("<pre>"+text+"</pre>")
        #self.textBrowser.setText(text)
        else:
            text="Unable to read help file"
            self.textBrowser.setText(text)
        f.close()
        #self.textBrowser.setSource(QUrl.fromLocalFile(filename))
        cursor=self.textBrowser.textCursor()
        cursor.setPosition(0)
        self.textBrowser.setTextCursor(cursor)
            
    def emitLaunchTask(self):
        self.emit(SIGNAL("launchTask"),self.taskname)
####END ./../development/help/view_helpFile.py
####START ./../development/help/__init__.py
####END ./../development/help/__init__.py
####START ./../development/text/view_text.py
#from Ui_text import *
#import os
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *



class view_text(QScrollArea,Ui_text):
    def __init__(self):
        super(view_text, self).__init__()
        self.setupUi(self)
        
        #INTERESTING INHERITED ATRIBUTES
        #plainTextEdit: Area to show/edit the cola file
        self.filename=None
        self.dirty = False
        self.new=True
        
        
        
    
    def loadTextFile(self, fName):
        if(os.path.isfile(fName)):
            self.new=False
            self.filename=fName
            try:
                fh=open(fName, "rb")
            except IOError as e:
                raise e
                return 
            rows=fh.readlines()
            fh.close()           
            self.plainTextEdit.setPlainText(''.join(rows))
        else:
            self.new=True
            self.plainTextEdit.setPlainText("")
        self.connect(self.plainTextEdit, SIGNAL("textChanged()"), self.textChanged)
    
 
    
    def isNew(self):
      return self.new
      
    def isDirty(self):
        return self.dirty
        
    def save(self, filename=None):
        if filename!=None:
            self.filename=filename
        if self.filename!=None:
            try:
                fh=open(self.filename, "wb")
            except IOError as e:
                fh.close()
                raise e
                return
            try:
                fh.write(unicode(self.plainTextEdit.toPlainText()))
            except UnicodeEncodeError as e:
                fh.close()
                raise e
                return
                
            fh.close()
            self.dirty=False
            self.template=None
    
    def textChanged(self):
        
        self.dirty=True
    
####END ./../development/text/view_text.py
####START ./../development/text/__init__.py
####END ./../development/text/__init__.py
####START ./../development/dialog/historyDlg.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from Ui_historyDlg import *

class historyDlg(QDialog,Ui_historyDlg):
    def __init__(self, text, parent=None):
        super(historyDlg, self).__init__()
        self.setupUi(self)
        self.historyArea.setPlainText(text)
       
####END ./../development/dialog/historyDlg.py
####START ./../development/dialog/plotTableWindow.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#import matplotlib
#from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
#from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
#from matplotlib.figure import Figure

#import numpy
#import Ui_plotTableDlg
#from Ui_plotTableWindow import *
#from Ui_editPlotDlg import *
#import resources_rc


COLOR={'Blue':'b', 'Green':'g', 'Red':'r', 'Cyan':'c', 'Magenta':'m', 'yellow':'y', 'black':'k', 'white':'w'}
STYLE={'Solid Line':'-', 'Dashed Line':'--', 'Dash-Dot Line':'-.',  'Dotted Line':':'}

#class editPlotDlg(QDialog,Ui_editPlotDlg):
#    def __init__(self, p, parent=None):
#        super(editPlotDlg, self).__init__(parent)
#        self.setupUi(self)
#        if(p.color!=None):
#            i=self.colorList.findText(p.color)
#            if(i!=-1):
#                self.colorList.setCurrentIndex(i)
#        if(p.style!=None):
#            i=self.styleList.findText(p.style)
#            if(i!=-1):
#                self.styleList.setCurrentIndex(i)
#        if(p.label!=None):
#            self.plotLabel.setText(p.label)
        
        
        
       

class plot:
    def __init__(self, label, XAxis, YAxis, tablename, xcol, ycol, XError=None, YError=None, color=None, style=None):
        self.label=label
        self.xAxis=XAxis
        self.yAxis=YAxis
        self.color=color
        self.style=style
        self.xError=XError
        self.yError=YError
        self.tablename=tablename
        self.xcol=xcol
        self.ycol=ycol
        self.currentX=self.xAxis
        self.currentY=self.yAxis

class plotTableWindow(QMainWindow,Ui_plotTableWindow):
    def __init__(self, view_tables, currentTable, parent=None):
        super(plotTableWindow, self).__init__(parent)
        self.setupUi(self)
        self.plots={}
        self.view_tables=view_tables
        self.picked=False
        
        #Adding a empty plot figure
        self.dpi = 100
        self.fig = Figure((6.0, 4.0), dpi=self.dpi)
        self.canvas = FigureCanvas(self.fig)
        self.canvas.setParent(self.plot_frame)
        self.axes = self.fig.add_subplot(111)
        self.mpl_toolbar = NavigationToolbar(self.canvas, self.plot_frame)
        self.plot_frame_Layout.addWidget(self.canvas)
        self.plot_frame_Layout.addWidget(self.mpl_toolbar)
       
        self.canvas.mpl_connect('pick_event', self.onpick)
        self.canvas.mpl_connect('button_press_event', self.onbuttonpress)
        #Generating  table list comboBox

        for key, val in view_tables.iteritems():
          self.tableList.addItem(key, QVariant(key))
    
        i=self.tableList.findText(QString(currentTable))
        if(i!=-1):
            self.tableList.setCurrentIndex(i)
        
        #Generating  X/Y Axis list comboBox
       
        columnTitles=self.view_tables[currentTable].getColumnTitles()
        numericColumns=self.view_tables[currentTable].getNumericColumns()
        for index, title in enumerate(columnTitles):
            if numericColumns[index]:
                self.XAxis.addItem(title, QVariant(index))
                self.YAxis.addItem(title, QVariant(index))
                self.XError.addItem(title, QVariant(index))
                self.YError.addItem(title, QVariant(index))

                
        
        #Connecting add button
        self.connect(self.addButton,SIGNAL("clicked()"), self.addPlot)
        #self.connect(self.editPlotButton,SIGNAL("clicked()"), self.editPlot)
        self.connect(self.delPlotButton,SIGNAL("clicked()"), self.delPlot)
        self.connect(self.plotButton,SIGNAL("clicked()"), self.plot)
        self.connect(self.showLegendBox, SIGNAL("stateChanged(int)"), self.enableLegend)
        self.connect(self.xerrorCheck, SIGNAL("stateChanged(int)"), self.enableXErrorBars)
        self.connect(self.yerrorCheck, SIGNAL("stateChanged(int)"), self.enableYErrorBars)
        #Connecting tableList
        self.connect(self.tableList, SIGNAL("currentIndexChanged(QString)"),self.updateColumnsList)
        
        #Connecting legend function
        self.connect(self.positionCombo,  SIGNAL("currentIndexChanged(int)"), self.enablePosition)
        #Connection "save to table" button
        self.connect(self.saveButton, SIGNAL("clicked()"), self.updateTables)
        
        self.positionCombo.setCurrentIndex(1) #Best
        self.textSizeSpin.setValue(12)
        self.ncolSpin.setValue(1)

    def onbuttonpress(self, event):
        
        if not self.picked:
            self.saveButton.setEnabled(True)
            # the click locations
            x = event.xdata
            y = event.ydata
            print "click location",  x, y
            table=unicode(self.tableList.itemData(self.tableList.currentIndex()).toString())
            self.view_tables[table].setTableHeaders("HolaHola ")
            if(len(self.plotList.selectedItems())==1):
                plot_selected=self.plotList.selectedItems()[0]
            
                if(plot_selected!=None):
                    plabel=plot_selected.text()
                    lines=self.axes.get_lines()
                    for l in lines:
                        label=l.get_label()
                        print plabel, label
                        if str(plabel)==str(label):
                            xdata = l.get_xdata()
                            ydata = l.get_ydata()
                            xs=numpy.concatenate((xdata,[x]))
                            
                            ys=numpy.concatenate((ydata,[y]))
                            l.set_xdata(xs)
                            l.set_ydata(ys)
                            self.fig.canvas.draw()
                            self.plots[str(plabel)].currentX=xs.tolist()
                            self.plots[str(plabel)].currentY=ys.tolist()
        else:
            self.picked=False
            
    def onpick(self, event):
        self.picked=True
        self.saveButton.setEnabled(True)
        thisline = event.artist
        xdata = thisline.get_xdata()
        ydata = thisline.get_ydata()
        label = thisline.get_label()
        
        x = event.mouseevent.xdata
        y = event.mouseevent.ydata
        dx = numpy.array(x-xdata[event.ind],dtype=float)
        dy = numpy.array(y-ydata[event.ind],dtype=float)

        distances = numpy.hypot(dx,dy)
        indmin = distances.argmin()
        ind = event.ind[indmin]

        print 'on pick line:', xdata[ind], ydata[ind]
        x=numpy.delete(xdata, ind)
        y=numpy.delete(ydata, ind)
        thisline.set_xdata(x)
        thisline.set_ydata(y)
        self.plots[str(label)].currentX=x.tolist()
        self.plots[str(label)].currentY=y.tolist()
        self.canvas.draw()
        
    def enablePosition(self, position):
        if position == 0:
            self.xposSpin.setEnabled(True)
            self.yposSpin.setEnabled(True)

        else:
            self.xposSpin.setEnabled(False)
            self.yposSpin.setEnabled(False)
        
    def addPlot(self):
       
        if(self.plotLabel.text()!=""):
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255,255,255))
            self.plotLabel.setPalette(p)
            plabel=unicode(self.plotLabel.text())
            self.plotLabel.setText("")
            self.plotList.addItem(plabel)
            xcol=self.XAxis.itemData(self.XAxis.currentIndex()).toInt()[0]
            ycol=self.YAxis.itemData(self.YAxis.currentIndex()).toInt()[0]
            
            
            xcol=int(xcol)
            ycol=int(ycol)
            table=unicode(self.tableList.itemData(self.tableList.currentIndex()).toString())
          
            xaxis=self.view_tables[table].getColumn(xcol)
            yaxis=self.view_tables[table].getColumn(ycol)
            
            xerror=None
            yerror=None
            if self.xerrorCheck.checkState()==Qt.Checked:
                xerrcol=self.XError.itemData(self.XError.currentIndex()).toInt()[0]
                xerrcol=int(xerrcol)
                xerror=self.view_tables[table].getColumn(xerrcol)
            if self.yerrorCheck.checkState()==Qt.Checked:
                yerrcol=self.YError.itemData(self.YError.currentIndex()).toInt()[0]
                yerrcol=int(yerrcol)
                yerror=self.view_tables[table].getColumn(yerrcol)
                
            newplot=plot(plabel, xaxis, yaxis, table, xcol, ycol, xerror, yerror)
            self.plots[plabel]=newplot
            
            
        else:
            
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255,0,0))
            self.plotLabel.setPalette(p)
            


        
    def editPlot(self):
        if(len(self.plotList.selectedItems())==1):
            plot_selected=self.plotList.selectedItems()[0]
           
            if(plot_selected!=None):
                plabel=unicode(plot_selected.text())
            
            Dlg=editPlotDlg(self.plots[plabel], self)
            if Dlg.exec_(): 
                self.plots[plabel].label=Dlg.plotLabel.text()
                self.plots[plabel].color=Dlg.colorList.currentText()
                self.plots[plabel].style=Dlg.styleList.currentText()
                return
            
    def delPlot(self):
        if(len(self.plotList.selectedItems())==1):
            plot_selected=self.plotList.selectedItems()[0]
            
            if(plot_selected!=None):
                plabel=plot_selected.text()
                del self.plots[unicode(plabel)]
                item=self.plotList.findItems(plabel, Qt.MatchExactly)
               
                if(len(item)==1):
                    r=self.plotList.row(item[0])
                    i=self.plotList.takeItem(r)
                    del i
            self.plot()
        
        

    def plot(self):
    
#        title=unicode(self.title.text())
#        xlabel=unicode(self.XLabel.text())
#        ylabel=unicode(self.YLabel.text())
        
        
        self.axes.clear()
#        self.axes.set_title(title)
#        self.axes.set_xlabel(xlabel)
#        self.axes.set_ylabel(ylabel)
        
        

      
        for key, value in self.plots.iteritems():
            x=value.xAxis
            y=value.yAxis
            l=unicode(value.label)
            style=value.style
            color=value.color
            xerror=value.xError
            yerror=value.yError
            #After replot, the original data are recovered
            self.plots[l].currentX=x
            self.plots[l].currentY=y
            if xerror!=None or yerror!=None:
                line=self.axes.errorbar(x, y,  xerr=xerror, yerr=yerror, fmt=None, label=l, color='b', ecolor='r')
            #else:
                
            line=self.axes.plot(x, y,marker='o', linestyle='none',  label=l, picker=5)[0]
            
            if(style!=None):
                line.set_linestyle(STYLE[unicode(style)])
            if(color!=None):
                line.set_color(COLOR[unicode(color)])
        
        #Build the legend
        if self.legendFrame.isEnabled():
            pos=None
            if self.xposSpin.isEnabled():
                xpos=self.xposSpin.value()
                ypos=self.yposSpin.value()
                pos=(xpos,  ypos)
            else:
                pos=unicode(self.positionCombo.currentText())
            
            title=self.titleLine.text()
            ncol=self.ncolSpin.value()
            textsize=self.textSizeSpin.value()
            if self.fancyBox.checkState() == Qt.Unchecked:
                fancy=False
            else:
                fancy=True
            
            if self.shadowBox.checkState() == Qt.Unchecked:
                shadow=False
            else:
                shadow=True
            
            self.axes.legend(loc=pos, title=title,  ncol=ncol,fancybox=fancy , shadow=shadow,  prop={'size':textsize} )
        self.canvas.draw()

    def updateColumnsList(self,item):
        if item:
            currentTable=unicode(item)
            columnTitles=self.view_tables[currentTable].getColumnTitles()
            numericColumns=self.view_tables[currentTable].getNumericColumns()
            self.XAxis.clear()
            self.YAxis.clear()
            self.XError.clear()
            self.YError.clear()
            for index, title in enumerate(columnTitles):
                if numericColumns[index]:
                    self.XAxis.addItem(title, QVariant(index))
                    self.YAxis.addItem(title, QVariant(index))
                    self.XError.addItem(title, QVariant(index))
                    self.YError.addItem(title, QVariant(index))


    def enableLegend(self, state):
        if state==Qt.Checked:
            self.legendFrame.setEnabled(True)
        else:
            self.legendFrame.setEnabled(False)
            
    def enableXErrorBars(self, state):
        if state==Qt.Checked:
            self.XError.setEnabled(True)
        else:
            self.XError.setEnabled(False)
    
    def enableYErrorBars(self, state):
        if state==Qt.Checked:
            self.YError.setEnabled(True)
        else:
            self.YError.setEnabled(False)
            
    def updateTables(self):
        
        for key, value in self.plots.iteritems():
            tablename=value.tablename
            self.view_tables[tablename].updateColumn(value.xcol, value.currentX)
            self.view_tables[tablename].updateColumn(value.ycol, value.currentY)
            
####END ./../development/dialog/plotTableWindow.py
####START ./../development/dialog/gipsyHeadersDlg.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#import functools

#from Ui_gipsyHeadersDlg import *

class gipsyHeadersDlg(QDialog,Ui_gipsyHeaderDlg):
    def __init__(self, items, parent=None):
        super(gipsyHeadersDlg, self).__init__(parent)
        self.setupUi(self)
        self.headerLines={}
        self.deleteButtons={}
        self.editButtons={}
        
        self.buttonBox.button(QDialogButtonBox.Close).setAutoDefault(False)
        self.buttonBox.button(QDialogButtonBox.Close).setDefault(False)
        self.newHeaderButton1.setAutoDefault(False)
        self.newHeaderButton1.setDefault(False)
        
        #The list of items is going to be a dictionary
        self.items={}
        for key,  value in items:
            self.items[key]=value
        
    
    def load(self):
        delete_icon=QIcon()
        delete_icon.addPixmap(QPixmap(":/delete_icon.png"), QIcon.Normal, QIcon.Off)
        edit_icon=QIcon()
        edit_icon.addPixmap(QPixmap(":/edit_icon.png"), QIcon.Normal, QIcon.Off)
        # Remove previous headerItem to update 
        while self.headerLayout.count()>0:
            item=self.headerLayout.takeAt(0)
            if item != None:
                w=item.widget()
                if w:
                    w.deleteLater()
        row=0
        #for key, value in self.items.iteritems():
        keys=self.items.keys()
        keys.sort()
        for key in keys:
            value=self.items[key]
            self.headerLines[key]=QLineEdit(QString(unicode(value)))
            self.headerLines[key].setEnabled(False)
            #self.headerLines[key].setFixedWidth(125)
            #self.headerLines[key].setMaxLength(72)
            curried = functools.partial(self.headerKeyChanged, key)
            self.connect(self.headerLines[key],  SIGNAL("returnPressed()"), curried)
            
            b=QPushButton(QString(""))
            b.setIcon(delete_icon)
            b.setAutoDefault(False)
            b.setDefault(False)
            self.deleteButtons[key]=b
            curried=functools.partial(self.headerKeyDeleted, key)
            self.connect(self.deleteButtons[key],  SIGNAL("clicked()"), curried) 
            
            c=QPushButton(QString(""))
            c.setIcon(edit_icon)
            c.setAutoDefault(False)
            c.setDefault(False)
            self.editButtons[key]=c
            curried=functools.partial(self.enableEditKey, key)
            self.connect(self.editButtons[key],  SIGNAL("clicked()"), curried) 
            
            self.headerLayout.addWidget(QLabel(QString(key)), row, 0)
            self.headerLayout.addWidget(self.headerLines[key], row, 1)
            self.headerLayout.addWidget(self.deleteButtons[key], row, 2)
            self.headerLayout.addWidget(self.editButtons[key], row, 3)
            #self.headerLayout.addItem(QSpacerItem(761, 20,QSizePolicy.Expanding, QSizePolicy.Minimum), row, 3)
            row += 1
        
        self.connect(self.newHeaderButton1,  SIGNAL("clicked()"), self.headerKeyAdded)
        #self.headerLayout.addItem(QSpacerItem(761, 20, QSizePolicy.Expanding, QSizePolicy.Minimum), row, 3)
        
        
      
    def headerKeyAdded(self):
        try:
            key=str(unicode(self.newHeaderName1.text()))
            value=str(unicode(self.newHeaderData1.text()))
        except UnicodeEncodeError:
            QMessageBox.warning(self, "ASCII encode error", QString("Unable encode "+unicode(key)+" "+unicode(value)))
            return
        if key!="" and value!="":
            self.items[key]=value
            self.load()
            self.newHeaderName1.setText("")
            self.newHeaderData1.setText("")
            self.emit(SIGNAL("headerKeyAdded"), key, value)
        
    def headerKeyDeleted(self, key):
        reply=QMessageBox.question(self,  
                                                        "Delete Key",  
                                                        "Are you sure you want delete the KEY %s?"%unicode(key),  
                                                        QMessageBox.Yes|QMessageBox.No)
           
           
        if reply==QMessageBox.No:
            return 
        key=unicode(key)
        del self.items[key]
        self.load()
        self.emit(SIGNAL("headerKeyDeleted"), key)
    
    def headerKeyChanged(self, key):
        key=unicode(key)
        try:
            newVal=str(unicode(self.headerLines[key].text()))
        except UnicodeEncodeError:
            QMessageBox.warning(self, "ASCII encode error", QString("Unable encode "+unicode(unicode(self.headerLines[key].text()))))
            return
            
        #self.items[key]=newVal
        self.headerLines[key].setEnabled(False)
        self.emit(SIGNAL("headerKeyChanged"), key, newVal)

    def enableEditKey(self, key):
        reply=QMessageBox.question(self,  
                                                        "Change Key",  
                                                        "Are you sure you want change the KEY %s?"%unicode(key),  
                                                        QMessageBox.Yes|QMessageBox.No)
           
           
        if reply==QMessageBox.No:
            return 
        key=unicode(key)
        self.headerLines[key].setEnabled(True)
####END ./../development/dialog/gipsyHeadersDlg.py
####START ./../development/dialog/myeditarea.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#The SIGNAL editingFinished doesn't exist in QTextEdit class
#A new class has to be built, this class has to inherit from QTextEdit and reimplements the FocusOut event
class MyEditArea(QTextEdit):
    def __init__(self, *args):
        QTextEdit.__init__(self, *args)
  
    def event(self, event):
        if (event.type()==QEvent.FocusOut) :
            self.emit(SIGNAL("editingFinished"))
            return  QTextEdit.event(self, event)

        return QTextEdit.event(self, event)
####END ./../development/dialog/myeditarea.py
####START ./../development/dialog/__init__.py
####END ./../development/dialog/__init__.py
####START ./../development/dialog/fitsHeaderDlg.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#import functools

#from Ui_fitsHeaderDlg import *

class fitsHeaderDlg(QDialog,Ui_fitsHeaderDlg):
    def __init__(self, text, parent=None):
        super(fitsHeaderDlg, self).__init__(parent)
        self.setupUi(self)
        self.headerArea.setText(text)
####END ./../development/dialog/fitsHeaderDlg.py
####START ./../development/dialog/tableHeadersDlg.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from Ui_tableHeadersDlg import *

class tableHeadersDlg(QDialog,Ui_tableHeadersDlg):
    def __init__(self, text, parent=None):
        super(tableHeadersDlg, self).__init__(parent)
        self.setupUi(self)
        self.plainTextEdit.setPlainText(text)
       
####END ./../development/dialog/tableHeadersDlg.py
####START ./../development/volib/__init__.py
""" package volib
	Created 2006-07-10 by Shui Hung Kwok, shkwok at computer.org

	This file is empty, which makes the directory a package.
"""

####END ./../development/volib/__init__.py
####START ./../development/volib/VOTable.py
"""	Class to handle VOTable
	Created: 2005-05-31 by Shui Hung Kwok, shkwok at computer.org

	See http://www.ivoa.net/Documents/latest/VOT.html .
"""

#import sys
#from types import *
#from xml.sax.saxutils import escape
#import xml.sax
#import xml.sax.handler 

class VONode (object):
	"""	Class representing an XML node of a VOTable
	""" 
	def __init__ (self, tagname=('','')):
		self._tagname = tagname
		self._nodeList = []
		self._attributes = {}

	def addNode (self, node):
		"""	Nodes of a VOTable XML can be String types (leaves)
			or instances of VONode (branches)
		"""
		self._nodeList.append (node)
		if not isinstance (node, (StringType, UnicodeType)):
			name = node.getNamePart ()
			try:
				val = self.__dict__[name]
				if isinstance (val, ListType):
					val.append (node)
				else:
					self.__dict__[name] = [val, node]
			except:
				self.__dict__[name] = node
		else:
			self.content = node

	def addAttribute (self, attr):
		name,value = attr
		self._attributes[name] = value
		# Puts this in the local dict, so the attribute becomes accessible
		# like a member variable.
		self.__dict__[name] = value

	def addAttributes (self, attrs):
		self._attributes.update (attrs)
		for k,v in attrs.items ():
			self.__dict__[k[1]] = v

	def __getItem__ (self, idx):
		# This allows using [] to access nodes.
		return self._nodeList[idx].getContent ()

	def getAttribute (self, name):
		""" Returns attribute by name or '' if not found """
		return self._attributes.get (name)

	def getAttributes (self):
		""" Returns all attributes a dict.
		"""
		res = {}
		for (ns,n),at in self._attributes.items():
			res[n] = at
		return res

	def getNodeList (self):
		""" Returns a list of nodes that are of type VONode
		"""
		res = []
		for node in self._nodeList:
			try:
				l = node._nodeList
				res.append (node)
			except Exception, e:
				pass
		return res		

	def getContent (self):
		""" Returns all strings of the node.
		"""
		res = []
		for node in self._nodeList:
			try:
				l = node.lower ()
				res.append (node)
			except Exception, e:
				pass
		return ''.join (res)
	
	def getNamePart (self):
		"""	Gets the name part of the tag.
			Tags can be fully qualified with name space, so
			method returns the name only.
		"""
		try:
			ns, n = self._tagname
			return n
		except:
			return n
			
	def getNodesByName (self, look4):
		""" Returns a list of nodes whose tagname = look4
		"""
		res = []
		for node in self._nodeList:
			try:
				if look4 != node.getNamePart ():
					continue
				l = node._nodeList
				res.append (node)
			except Exception, e:
				pass
		return res		

	def __str__ (self):
		"""	Returns a string representation of this node.
		"""
		try:
			return self.content
		except:
			return self.buildName (self._tagname)

	def getNode (self, path):
		"""	Returns a node for a given path.
			Path is of the form /tag1/tag2/tag3.
			Path can include array index, like /tag1/tag2[3]/tag4.
		"""
		node = self
		children = []
		pathArray = path.split ("/")

		rootName = self.getNamePart ()
		if rootName != pathArray[1]:
			return None

		pathArray = pathArray[2:]
		for elem in pathArray:
			tmp = elem.replace ('[', ']')
			list = tmp.split (']')
			name = list[0]
			if len (list) > 1:
				idx = int (list[1])
			else:
				idx = 0
			children = node.getNodesByName (name)
			nr = len (children)
			if idx >= nr:
				return None
			node = children [idx]
		return node	

	def getNodesByPath (self, path):
		"""	Returns children of a VONode for a given path.
			Path is of the form /tag1/tag2/tag3.
			Path can include array index, like /tag1/tag2[3]/tag4.
		"""
		node = self
		children = []
		pathArray = path.split ("/")

		rootName = self.getNamePart ()
		if rootName != pathArray[1]:
			return None

		pathArray = pathArray[2:]
		for elem in pathArray:
			tmp = elem.replace ('[', ']')
			list = tmp.split (']')
			name = list[0]
			if len (list) > 1:
				idx = int (list[1])
			else:
				idx = 0
			children = node.getNodesByName (name)
			nr = len (children)
			if idx >= nr:
				return None
			node = children [idx]
		return children	

	def buildName (self, tname):
		""" Returns a name with namespace as prefix
			or just name if no namespace
			Note that the prefix is the real namespace
			and not the abbreviation used in the original XML
		"""
		ns,n = tname
		"""
			For now, just returns the tag name without the qualifier.
		if ns:
			return "%s:%s" % (ns, n)
		else: 
			return n
		"""
		return n

	def printAllNodes (self, func=sys.stdout.write, prefix=''):
		"""	Recursive method to visit all nodes of the tree
			and calls the provided function to output the content.
		"""
		# 1. Outputs the opening tag braket.
		func ("%s<%s" % (prefix, self.buildName (self._tagname)))
		for ns,v in self._attributes.items ():
			func (" %s=\"%s\"" % (self.buildName ((ns)), v))
		if len (self._nodeList) > 0:
			func (">")
		
		# 2. Outputs the children nodes
		last = 0
		for n in self._nodeList:
			if isinstance (n, (StringType, UnicodeType)):
				if last == 2:
					func ("\n%s" % prefix)
				func ("%s" % n)
				last = 1
			else:
				if last <= 1:
					func ("\n")
				n.printAllNodes (func, prefix + '   ')
				last = 2
		# 3. Outputs closing tag braket.
		# Outputs indentation if last item was a node
		if last == 0:
			func ("/>\n")
		elif last == 1:
			func ("</%s>\n" % self.buildName (self._tagname))
		else:
			func ("%s</%s>\n" % (prefix, self.buildName (self._tagname)))
		
class VOXMLHandler (xml.sax.handler.ContentHandler):
	""" This class implements the handler needed for the SAX parser.
		Contains callback methods for start and end elements, etc..
	"""
	def __init__ (self, vonode=VONode):
		# Create a parser
		xml.sax.handler.ContentHandler.__init__ (self)
		self.parser = xml.sax.make_parser()

		# Uses namespaces
		self.parser.setFeature (xml.sax.handler.feature_namespaces, 1)
		self.parser.setContentHandler (self)

		# vonode is the class of node to be created.
		self.vonode = vonode
		self.rootNode = vonode ()
		self.currNode = self.rootNode
		self.stack = []
		self.stopFlag = False

	def startElementNS (self, (urn, name), qname, attrs):
		""" On a new node, adds the current node to the stack
			and creates a new vonode and adds attributes to that node.
		"""
		#print "start ", name
		self.stack.append (self.currNode)

		self.currNode = self.vonode ((urn, name))
		self.currNode.addAttributes (attrs)

	def characters (self, chunk):
		""" Encountered a chunk of characters, strips spaces 
#			from front and end and appends it to the current node.
		"""
		buf = chunk.strip ()
		if len (buf) == 0: return
		self.currNode.addNode (buf)

	def endElementNS (self, (urn, name), qname):
		"""	Closing tag braket encountered.
			Retrieves the parent node from stack 
			and adds this current node to it.
		"""
		#print "end ", name
		newNode = self.currNode
		self.currNode = self.stack.pop ()
		self.currNode.addNode (newNode)
		if self.stopFlag:
			raise VOTableStopException, 'Stopped'

	def parse (self, source):
		""" Main entry point.
			Source can be URL or file name.
		"""
		self.parser.parse (source)
		return self.rootNode 

	def stop (self):
		"""	Gives the parser a chance stop.
		"""
		self.stopFlag = True

class VOTableStopException (Exception):
	pass

class VOXML (object):
	"""	A simple XML parser.
	"""
	def __init__ (self, source=None, vonode=VONode):
		""" Instantiate a VOXML
			source can be URL, file name or a string representing the VOXML.
			vonode is a class representing VONode, must be derived from or
			compatible with VONode.
		"""
		self.vonode = vonode 
		self.root = None
		self.source = source
		self.parser = None

	def stop (self):
		"""	Tries to stop the parser.
		"""
		try:
			if self.parser != None:
				self.parser.stop ()
		except:
			pass

#	def parse (self, source=None):
#		""" Invokes XML parser and stores VOXML
#			in self.root as VONode.
#			This method must be explicitly called.
#			It also can be called with a different source.
#		"""
#		try:
#			self.parser = VOXMLHandler (self.vonode)
#			if source == None:
#				source = self.source
#			self.root = self.parser.parse (source)
#		except VOTableStopException, msg:
#			raise
	def parse (self, source=None):

            """ Invokes XML parser and stores VOXML
            in self.root as VONode.
            This method must be explicitly called.
            It also can be called with a different source.
            """
            try:
                self.parser = VOXMLHandler (self.vonode)
                if source == None:
                    source = self.source
                self.root = self.parser.parse (source)
            except VOTableStopException, msg:
                return False
                raise
            else:
                return True

	def printAllNodes (self, func=sys.stdout.write):	
		"""	Output entire content as XML.
			func is the output method, defined as:
				func (outString)
		"""
		node = self.root._nodeList[0] 
		node.printAllNodes (func)

	def getNode (self, path):
		""" Returns a VONode of the given path.
		"""
		return self.root._nodeList[0].getNode (path)

	def getContent (self, path):
		""" Returns the content of a node.
			Only strings are returned.
		"""
		node = self.getNode (path)
		return node.getContent ()

class VOTable (VOXML):
	""" This class represents the VOTable.
		To read VOTable:
			votable = VOTable()
			votable.parse (source)
			where source can be URL or a string containing XML
	"""

	def __init__ (self, source=None, vonode=VONode):
		""" Contruct an instance of VOTable
		"""
		VOXML.__init__ (self, source, vonode)

	def getColumnIdx (self, val):
		""" Returns the column index for the given name
			Will return any attribute value matching val.
		"""
		try:
			fields = self.getFields ()
			for coln, f in enumerate (fields):
				if val in f._attributes.values ():
					return coln
		except:
			pass
		return -1
		
	def getFields (self):
		""" Returns a list of VONode representing all the fields
		"""
		#table = self.root.VOTABLE.RESOURCE.TABLE
		#return table.getNodesByName ('FIELD')
		return self.root.VOTABLE.RESOURCE.TABLE.FIELD
	
	def getParams (self):
		"""	Returns a list of VONode representing all PARAMS
		"""
		return self.root.VOTABLE.RESOURCE.RESOURCE.PARAM

	def getFieldsAttrs (self):
		"""	Returns a list of maps that contains attributes.
			Returned list looks like this: [{},{},...]
		"""
		res = []
		fields = self.getFields ()
		for elem in fields:
			try:
				res.append (elem.getAttributes())
			except:
				pass
		return res
	
	def getDataRows (self):
		"""	Returns a list of VONodes representing rows of the table.
			Use getData () to extract data from each row.
			for x in getDataRows ():
				data = getData (x)
				#data = [values ...]
		"""
		tableData = self.root.VOTABLE.RESOURCE.TABLE.DATA.TABLEDATA
		return tableData._nodeList

	def getData (self, row):
		""" row is a VONode <TR> parent of a list of <TD>.
			Returns a list of values.
		"""
		res = []
		list = row._nodeList
		for elm in list:
			try:
				res.append (elm.getContent ())
			except:
				res.append ('')
		return res	
	
	def append (self, vot):
		""" Appends votable vot to the end of this VOTable. 
			No tests to see if fields are the same. 
			vot must have the same fields. 
		"""
		try:
			node1 = self.root.VOTABLE.RESOURCE.TABLE.DATA.TABLEDATA
		except:
			node1 = None
		try:
			node2 = vot.root.VOTABLE.RESOURCE.TABLE.DATA.TABLEDATA
		except:
			node2 = None

		if node1:
			if node2:
				node1._nodeList.extend (node2._nodeList)
		else:
			if node2:
				self.root.VOTABLE.RESOURCE.TABLE.DATA.TABLEDATA = node2
		
	def output2CSV (self, write=sys.stdout.write):
		""" Outputs the content in CSV format
			with fields names as column heads.
		"""
		fields = self.getFieldsAttrs ()
		if not fields: return
		headers = []
		for colnr,fd in enumerate (fields):
			hdr = "col%d" % colnr
			for i in ['name', 'ID', 'id']:
				try:
					hdr = fd[i]
					break
				except:
					pass
			headers.append (hdr)
	
		headers.append ("\n")
		write (','.join (headers))
	
		rows = self.getDataRows ()
		getData = self.getData # get a shortcut for the method
		for row in rows:
			write (','.join (getData (row)))

	def readCSV (self, fname, ns=''):
		class VONode1 (VONode):
			def buildName (self, name):
				ns,tagname = name
				if ns:
					return "%s:%s" % name
				else:
					return tagname
		fh = file (fname, 'r');
		
		colNames = fh.readline ().strip().split (',')
		table = VONode1 ((ns, "TABLE"))
		table.addAttribute ((('',"name"), "mytable"))
			
		tableData = VONode1 ((ns, "TABLEDATA"))
		lastLine = ''
		for line in fh:
			row = VONode1 ((ns, "TR"))
			if len (line) > 0:
				lastLine = line
			for fld in line.strip ().split (','):
				cell = VONode1 ((ns, "TD"))
				cell.addNode (fld)
				row.addNode (cell)
			tableData.addNode (row)
		
		for col,td in zip (colNames, lastLine.strip ().split (',')):
			fld = VONode1 ((ns, "FIELD"))
			fld.addAttribute ((('', "name"), escape (col)))
			fld.addAttribute ((('', "ID"), escape (col)))
			try:
				nr = float (td)
				fld.addAttribute ((('', "datatype"), "double"))
			except:
				fld.addAttribute ((('', "datatype"), "char"))
				fld.addAttribute ((('', "arraysize"), '*'))
			table.addNode (fld)
			
		fh.close ()
		data = VONode1 ((ns, "DATA"))
		data.addNode (tableData)
		table.addNode (data)
		resrc = VONode1 ((ns, "RESOURCE"))
		resrc.addNode (table)
		resrc.addAttribute ((('', "xmlns:"+ns), "http://vizier.u-strasbg.fr/xml/VOTable-1.1.xsd"))

		vot = VONode1 (('',"VOTABLE"))
		vot.addNode (resrc)

		root = VONode1 ()
		root.addNode (vot)
		self.root = root
#
#if __name__ == "__main__":
#	votable = VOTable()
#	votable.readCSV (sys.argv[1])
#	votable.printAllNodes ()
#

	"""
	votable.parse (sys.argv[1])
	#votable.printAllNodes ()
	#print [x.getAttribute ('ID') for x in votable.getFields () ]
	#print votable.root.VOTABLE.RESOURCE.TABLE.DATA.TABLEDATA.TR[1].TD[1]
	votable.printAllNodes ()
	for f in votable.getFields ():
		print f._attributes
	"""	
####END ./../development/volib/VOTable.py
####START ./../development/images/view_image.py
#import sys
#import os
#import shutil

#from Ui_images import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from PIL import Image
#from PIL.ImageQt import ImageQt


#from new_exceptions import *

class view_image(QScrollArea,Ui_images):
    def __init__(self):
        super(view_image, self).__init__()
        self.setupUi(self)

    #INTERESTING INHERITED ATRIBUTES
    #graphicsView: a panel to display the image
        self.filename=""
    
    def loadImage(self,  filename):
        self.filename=filename
#        image = QImage(filename)
#        if image.isNull():
#            raise imageException("Failed to read %s" % filename)
#        else:
        imageq = ImageQt(filename) #convert PIL image to a PIL.ImageQt object
        qimage = QImage(imageq) #cast PIL.ImageQt object to QImage object 
        pm = QPixmap(qimage)

        self.scene = QGraphicsScene()
        #self.scene.addPixmap(QPixmap.fromImage(image))
        self.scene.addPixmap(pm)
        self.graphicsView.setScene(self.scene)
    
    def save(self, newFile):
        
        try:
            shutil.copyfile(self.filename,  newFile)
        except IOError as e:
            raise e
            return
        
        
    def delete(self):
        try:
            os.remove(self.filename)
        except OSError as e:
            raise e
            
####END ./../development/images/view_image.py
####START ./../development/images/__init__.py
####END ./../development/images/__init__.py
####START ./../development/table/__init__.py
####END ./../development/table/__init__.py
####START ./../development/table/view_table.py
#import numpy 
#import numpy.ma as ma
#import os

#from gipsy import *

#import operator
#import decimal
#from Ui_table import *
#from Ui_tablePreview import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#import astropy
#from astropy.io.votable import parse_single_table
#from astropy.table import Table as astroTable
#from astropy.io.votable.tree import VOTableFile

#from new_exceptions import *


class tablePreview(QDialog, Ui_tablePreview):
    def __init__(self, lines, parent=None):
        super(tablePreview, self).__init__()
        self.setupUi(self)
    
        i=1
        html=""
        l=len(lines)
        space=len(unicode(l))
        for line in lines:
            s="&nbsp;"
            for j in range(space-len(unicode(i))):
                s=s+"&nbsp;"
            try:
                html=html+'<i><font color="#98AFC7">'+unicode(i)+s+"</font></i>"+unicode(line)+"<br />"
            except UnicodeDecodeError:
                raise tableException("Unable to read the table. Not ASCII Table")
                return
            i+=1
        
        self.textEdit.setHtml(html)
        self.connect(self.numberLines, SIGNAL("textChanged(QString)"), self.checkValue)
    
    def checkValue(self):
        pWhite=QPalette()
        pWhite.setColor(QPalette.Base, QColor(255, 255,255))
        if self.numberLines.text()=="":
            
            self.numberLines.setPalette(pWhite)
        try:
            n_lines=int(self.numberLines.text())
        except ValueError:
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255, 0,0))
            self.numberLines.setPalette(p)
        else:
            self.numberLines.setPalette(pWhite)

    
class view_table(QScrollArea,Ui_table):
    """ This class provides the view to show the data table and the statistic table, as well as the functionalities to modify the data table, 
    plot it or show its header. It is a subclass of Ui_table which contains the graphical part, so view_table class contains the operational part. 
    This class follows the model-view architecture provied by PyQt. In this architecture the Model is the application object, the View 
    is its screen presentation, and the Controller defines the way the user interface reacts to user input. This allows to separate graphic 
    representation from the date representation. This class manages two tables: the data table and the statistics table. Both are 
    implemented with two object: one for the model and other for the view

 Attributes:

    - HBAData: The horizontal scroll bar of the data table. It is needed to allow the horizontal scroll bars of the both tables 
    (data table and statistical table) move at same time
    
    - HBAStat: The horizontal scroll bar of the statistical table. It is needed to allow the horizontal scroll bars of the both tables 
     (data table and statistical table) move at same time
     
    - filename: Path of the file which contain the table. In case of a settable is the name of the set plus the name of the table.
    
    - loadedType: The type of the table. It could be "TABLE" to represent a ASCII table, "VOTABLE" for a VOTable or
    "SETTABLE" for a settable. When a non settable is loaded, it is the load method which discovers the kind of table (ascii or votable).
    
    - modelData: An object of the class DataTableModel to implement the model of the data table.
    
    - tableData: it is an attributed inherited from the Ui_table class. Implement the view of the data table.
    
    - modelStat: An object of the class DataTableModel to implement the model of the statistics table.
    
    - tableStat: it is an attributed inherited from the Ui_table class. Implement the view of the statistics table.
    
    - parent: Parent of the class.
    
    """
    def __init__(self, parent, filename=""):
        super(view_table, self).__init__()
        self.setupUi(self)
        self.filename=filename
        self.parent=parent
        self.loadedType=None
        self.delColumnButton.setEnabled(False)
        self.delRowButton.setEnabled(False)

        self.modelData=DataTableModel(filename)
        self.modelStat=StatTableModel()
        
        self.tableData.setSelectionMode(QTableView.ExtendedSelection)
        
        headerData=self.tableData.horizontalHeader()
        headerStat=self.tableStat.horizontalHeader()
        self.connect(headerData, SIGNAL("sectionClicked(int)"), self.seleccion)
        self.HBData=self.tableData.horizontalScrollBar()
        self.HBData.setTracking(True)
     
        self.connect(self.HBData, SIGNAL("valueChanged(int)"), self.twinScrollData)
        
        self.HBStat=self.tableStat.horizontalScrollBar()
        self.HBStat.setTracking(True)
        self.connect(self.HBStat, SIGNAL("valueChanged(int)"), self.twinScrollStat)
        
        self.connect(self.modelData, SIGNAL("dataChanged(QModelIndex,QModelIndex)"), self.calculateStat)

        #Connecting button
        self.connect(self.addRowButton,SIGNAL("clicked()"), self.addRow)
        self.connect(self.delRowButton,SIGNAL("clicked()"), self.delRow)
        self.connect(self.addColumnButton,SIGNAL("clicked()"), self.addColumn)
        self.connect(self.delColumnButton,SIGNAL("clicked()"), self.delColumn)
        self.connect(self.headersButton,  SIGNAL("clicked()"), self.emitShowTableHeaders)
        self.connect(self.plotButton,  SIGNAL("clicked()"), self.emitPlotTable)
        self.connect(self.sampButton,  SIGNAL("clicked()"), self.emitTableToSAMP)
    

    def addRow(self):
        row = self.modelData.rowCount()
        self.modelData.insertRows(row)
        index = self.modelData.index(row, 0)
        self.tableData.setFocus()
        self.tableData.setCurrentIndex(index)
        self.tableData.edit(index)
        
    
    def delRow(self):

        if QMessageBox.question(self, "Remove", 
                QString("Are you sure you want to delete the row/s?"), QMessageBox.Yes|QMessageBox.No) == QMessageBox.No:
            return
        indexes=self.tableData.selectedIndexes()
        deleted=[]
        for index in indexes:
            row=index.row()
            if row not in deleted:
                deleted.append(row)
        self.modelData.removeRows(min(deleted), len(deleted))     
        
    def delColumn(self):

        if QMessageBox.question(self, "Remove", 
                QString("Are you sure you want to delete the column/s?"), QMessageBox.Yes|QMessageBox.No) == QMessageBox.No:
            return
        indexes=self.tableData.selectedIndexes()
        deleted=[]
        for index in indexes:
            column=index.column()
            if column not in deleted:
                deleted.append(column)
        self.modelData.removeColumns(min(deleted), len(deleted))     
        
    def addColumn(self):
        index=self.tableData.currentIndex()
        self.modelData.insertColumn(index.column())
        #self.modelStat.insertColumn(index.column())
        self.tableData.setFocus()
        self.tableData.setCurrentIndex(index)
        self.tableData.edit(index)
        self.tableData.resizeColumnsToContents()
          #Same size columns in both tables:
        for i in range(0, self.modelData.columnCount()):
            if self.tableData.columnWidth(i) > self.tableStat.columnWidth(i):
                self.tableStat.setColumnWidth(i,  self.tableData.columnWidth(i))
            else:
                self.tableData.setColumnWidth(i,  self.tableStat.columnWidth(i))
             
    def calculateStat(self):
        self.modelStat.emit(SIGNAL("layoutAboutToBeChanged()"))
        self.modelStat.recalculate(self.modelData.arrayColumns, self.modelData.columnTitles)
        self.modelStat.emit(SIGNAL("layoutChanged()"))
        
    def seleccion(self, column):
       
        self.tableData.selectColumn(column)
        self.tableData.resizeColumnsToContents()
        #Same size columns in both tables:
        for i in range(0, self.modelData.columnCount()):
            if self.tableData.columnWidth(i) > self.tableStat.columnWidth(i):
                self.tableStat.setColumnWidth(i,  self.tableData.columnWidth(i))
            else:
                self.tableData.setColumnWidth(i,  self.tableStat.columnWidth(i))

    
    def twinScrollData(self, value):
        self.tableStat.horizontalScrollBar().setValue(value)
        
    def twinScrollStat(self, value):
        self.tableData.horizontalScrollBar().setValue(value)
    
    def updateSelection(self, selected,  deselected):
        
      
        self.delColumnButton.setEnabled(False)
        self.delRowButton.setEnabled(False)
        selected_rows=self.tableData.selectionModel().selectedRows()
        if len(selected_rows)>0 and self.loadedType!="VOTABLE":
            self.delRowButton.setEnabled(True)
        selected_columns=self.tableData.selectionModel().selectedColumns()
        if len(selected_columns)>0 and self.loadedType!="VOTABLE":
            self.delColumnButton.setEnabled(True)

    def loadTable(self, line_headers=None):
         #error_msj=None
         try:
            #error_msj=self.modelData.load()
            self.loadedType=self.modelData.load(line_headers)
         except IOError as e:
            raise e
            return ""
         except tableException as t:
             raise t
             return ""
        
         if self.loadedType =="":
            return ""
         if self.loadedType=="VOTABLE":
            self.tableData.setEditTriggers(QAbstractItemView.NoEditTriggers)
            self.addColumnButton.setEnabled(False)
            self.addRowButton.setEnabled(False)
            self.headersButton.setEnabled(False)

         self.tableData.setModel(self.modelData)
         
         self.modelStat.setDataValues(self.modelData.dataValues,  self.modelData.arrayColumns, self.modelData.columnTitles)
         self.modelStat.load()
         self.tableStat.setModel(self.modelStat)
         self.tableData.setSortingEnabled(True)
         self.tableData.resizeColumnsToContents()
         self.tableStat.resizeColumnsToContents()
  
 
         #Same size columns in both tables:
         for i in range(0, self.modelData.columnCount()):
            if self.tableData.columnWidth(i) > self.tableStat.columnWidth(i):
                self.tableStat.setColumnWidth(i,  self.tableData.columnWidth(i))
            else:
                self.tableData.setColumnWidth(i,  self.tableStat.columnWidth(i))
             
         self.tableStat.resizeColumnsToContents()
         self.connect(self.tableData.selectionModel(), SIGNAL("selectionChanged(const QItemSelection &, const QItemSelection &)"), self.updateSelection)
        
         return self.loadedType
 
    def loadSetTable(self,cols, headers=None):
         self.loadedType="SETTABLE"
         error_msj=None
         try:
            error_msj=self.modelData.loadSetTable(cols, headers)
         except IOError as e:
            raise e
            return
         except tableException as t:
             raise t
             return
             
         self.tableData.setModel(self.modelData)
         
         self.modelStat.setDataValues(self.modelData.dataValues, self.modelData.arrayColumns, self.modelData.columnTitles)
         self.modelStat.load()
         self.tableStat.setModel(self.modelStat)
         self.tableData.setSortingEnabled(True)
         self.tableData.resizeColumnsToContents()
         self.tableStat.resizeColumnsToContents()
  
 
         #Same size columns in both tables:
         for i in range(0, self.modelData.columnCount()):
            if self.tableData.columnWidth(i) > self.tableStat.columnWidth(i):
                self.tableStat.setColumnWidth(i,  self.tableData.columnWidth(i))
            else:
                self.tableData.setColumnWidth(i,  self.tableStat.columnWidth(i))
             
         self.tableStat.resizeColumnsToContents()
         self.connect(self.tableData.selectionModel(), SIGNAL("selectionChanged(const QItemSelection &, const QItemSelection &)"), self.updateSelection)
         
         if(error_msj):
             return error_msj
         else:
             return         
         
    def save(self, filename=None):
        try:
            self.modelData.save(filename)
        except IOError as e:
            raise e
            return
    
    def saveAsVOtable(self, filename=None):
        try:
            self.modelData.saveAsVOtable(filename)
        except IOError as e:
            raise e
            return
  
    def emitShowTableHeaders(self):
        self.emit(SIGNAL("showTableHeaders()"))

    def emitPlotTable(self):
        self.emit(SIGNAL("plotTable()"))
    
    def emitTableToSAMP(self):
        self.emit(SIGNAL("tableToSamp()"))
    
    def getTableHeaders(self):
        h=''.join(self.modelData.headers)
        return h

    def setTableHeaders(self, newHeaders):
        self.modelData.headers=newHeaders
        
    def isDirty(self):
        return self.modelData.dirty
    
    def getColumn(self, col):
        if len(self.modelData.arrayColumns.tolist())>col:
            return self.modelData.arrayColumns.tolist()[col]
        else:
            return None
    def getAllColumns(self):
        return self.modelData.arrayColumns.tolist()
    
    def getColumnTitles(self):
        return  self.modelData.columnTitles
        
    def getNumericColumns(self):
        return  self.modelData.numericColumns
    
    def updateColumn(self, n_col, data):
        self.modelData.updateColumn(n_col, data)
    
   
class StatTableModel(QAbstractTableModel):
    def __init__(self):
        super(StatTableModel , self).__init__()
        self.dirty = False
        self.dataValues=[]
        self.h_headers=[]
        self.dataStat =[]
        self.columnTitles=[]
       
    def  setDataValues(self, dataValues, arrayColumns, columnTitles):
        self.dataValues=dataValues
        self.arrayColumns=arrayColumns
        self.columnTitles=columnTitles
        
    def data(self, index, role=Qt.DisplayRole): 
        lenStat=len(self.dataStat)
        if not index.isValid() or not (0 <= index.row() < lenStat) or not (0<=index.column()<len(self.dataStat[0])):
            return QVariant()
        elif role == Qt.DisplayRole:
            return unicode(self.dataStat[index.row()][index.column()])
        elif role == Qt.BackgroundColorRole:
            if(index.row()==0):
                return QVariant(QColor(201, 204, 255))
            if (index.row()==1):
                return QVariant(QColor(217, 255, 199))
                
        
    def setData(self, index, value, role=Qt.EditRole):
        if index.isValid() :
            self.dataStat[index.row()][index.column()]=value.toDouble()[0]
            self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
            return True
        return False
        
    def headerData(self, pos, orientation= Qt.Horizontal, role= Qt.DisplayRole):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            #return QVariant("Col "+unicode(pos))
            return QVariant(self.columnTitles[pos])
            
        return QVariant()
        
    def load(self):

        means=[]
        deviations=[]
        #for i, row in enumerate(m.H):
        for i,  row in enumerate(self.arrayColumns):
            r=numpy.array(row)
            masked = numpy.ma.masked_array(r,numpy.isnan(r)) 
            means.append(masked.mean())
            deviations.append(numpy.std(masked))            
            
        self.dataStat.append(means)
        self.dataStat.append(deviations)
      
        

    def rowCount(self,  index=QModelIndex()): 
        return len(self.dataStat)
 
    def columnCount(self,  index=QModelIndex()): 
        return len(self.dataStat[0]) 
    
    
    def recalculate(self, arrayColumns, columnTitles):
        #self.dataValues=dataValues
        self.arrayColumns=arrayColumns
        self.columnTitles=columnTitles
        if (len(self.dataStat)==2):
            self.dataStat.pop()
            self.dataStat.pop()
        self.load()
        self.emit(SIGNAL("dataChanged()"))

 
class DataTableModel(QAbstractTableModel): 
    def __init__(self, filename=""):
        super(DataTableModel , self).__init__()
        self.filename = filename
        self.dirty = False
        self.headers=[]
        self.dataValues = []
        self.delimiter= None
        self.columnTitles=[]
        #list of column is needed in several operations
        self.arrayColumns= []
        #List to keep the columns numerinc and no numeric
        self.numericColumns=[]
        self.votable=None #In case it was a VOtable, this will be the instance of the astropy.VOTableFile object
       
    def data(self, index, role=Qt.DisplayRole): 
        lenData=len(self.dataValues)
       
        if not index.isValid() or not (0 <= index.row() < lenData) or not (0<=index.column()<len(self.dataValues[0])):
            return QVariant()
        #elif role == Qt.DisplayRole or role==Qt.EditRole:
        elif role == Qt.DisplayRole:
            return unicode(self.dataValues[index.row()][index.column()])
        elif role==Qt.EditRole:
            self.dirty=True
            return unicode(self.dataValues[index.row()][index.column()])
            
    def loadVOTable(self):
        try:
            self.votable = astropy.io.votable.parse_single_table(self.filename)
        except:
            return False
        else:
                self.columnTitles= [a.name for a in self.votable.fields]
                rows=ma.getdata(self.votable.array)
                
                for row in rows:
                    s=[]                    
                    for data in row:
                        try:
                            #s.append(decimal.Decimal(data))
                            s.append(float(data))
                        except:
                            s.append(str(data))
                        
                    self.dataValues.append(s)
                self.calculateArrayColumns()
                
                #Assing a delimiter in case of saving as ASCII table
                self.delimiter="|"
                return True
    
    def calculateArrayColumns(self):
        if len(self.dataValues)>0:
            floatList=[]
            self.numericColumns=[]
            for row in self.dataValues:
                tmp=[]
                for data in row:
                    try:
                        tmp.append(float(data))
                    except:
                        tmp.append("NaN")
                floatList.append(tmp)
                
            m=numpy.matrix(floatList, dtype=float)
            self.arrayColumns=m.H
            listColumns=self.arrayColumns.tolist()
            for col in listColumns:
                colstr=map(lambda i: str(i), col)
                
                #If all the elements of a column are NaN, the column is not numeric
                if all(x.upper() == "NAN" for x in colstr):
                    self.numericColumns.append(False)
                else:
                    self.numericColumns.append(True)
                 
        else:
            #It there is no rows, the array column will be an empty numpy matrix
            self.arrayColumns=numpy.matrix([[]],float)
            
        return self.arrayColumns
    
    def load(self, line_headers=None):
        #First test if it is a votable:
        isVOT=False
        isVOT= self.loadVOTable ()
        
        if isVOT:
            if len(self.dataValues)==0: #No data
                raise tableException("The table is empty")
                return ""
            else:
                return "VOTABLE"
        else:
            #errors=None   
            delimiters=[";", "|",  ",", "\"", None]
            try:
                fh=open(self.filename, "rb")
            except IOError as e:
                raise e
                return ""
            rows=fh.readlines()
            fh.close()
            
            if line_headers==None:
                Dlg=tablePreview(rows, self)
                if not Dlg.exec_():
                    return ""
                try:
                    line_headers=int(Dlg.numberLines.text())
                except ValueError:
                    raise tableException("Unable to get the header lines number")
            
            
            if line_headers > len(rows):
                line_headers=len(rows)
                
            self.headers="".join(rows[:line_headers])
            lines=rows[line_headers:]
            for delimiter in delimiters:
                self.dataValues=[]
                n_col_tmp=-1
    
                for line in lines:
                    if line[0]==delimiter: 
                        line=line[1:]
                    splitted=line.split(delimiter)
                    if len(splitted)==1:
                        break #Wrong delimiter
                    else:
                        row=[]
                        for data in splitted:
                            try:
                                #row.append(decimal.Decimal(data.strip()))
                                row.append(float(data.strip()))
                            except:
                                row.append(data.strip())
                        
                        if len(row)>0:
                            if n_col_tmp==-1:
                                n_col_tmp=len(row)
                            if n_col_tmp!=len(row):
                                break #Wrong delimiter
                            else:
                                self.dataValues.append(row)
                if len(self.dataValues) >0:
                    break # We have it
                    
            if (len(self.dataValues)==0 and len(lines)>0): #Only one column table
                for line in lines:
                    tmp=[]
                    try:
                        tmp.append(decimal.Decimal(line.strip()))
                    except:
                        tmp.append(line.strip())
                    self.dataValues.append(tmp)
                        
                        
            
#            elif len(self.dataValues)==0: #No data
            if len(self.dataValues)==0: #No data
                raise tableException("The table is empty")
                return ""
            else:
                if(delimiter==None):
                    self.delimiter="\t"
                else:
                    self.delimiter=delimiter
                    
                #The title columns are just colX
                self.columnTitles=["Col %s"% str(i) for i in range(self.columnCount())] 
                
                self.calculateArrayColumns()
                
                return "TABLE"
        
    def loadSetTable(self,cols, headers=None):
        self.delimiter="|"
        if headers!=None:
            self.headers=headers
        listColumns=[]
        for key,col in cols.iteritems():
            self.columnTitles.append(str(key))
            listColumns.append(col)
        if len(listColumns)>0:
            sizes=map(lambda x:len(x), listColumns) #the tables can not be square
            
            for i in range(max(sizes)):
                tmp=[]
                for col in listColumns:
                    if len(col)>i:
                        tmp.append(col[i])
                    else:
                        tmp.append("")
                self.dataValues.append(tmp)
            
            self.calculateArrayColumns()

        
    def rowCount(self,  index=QModelIndex()): 
        return len(self.dataValues)
 
    def columnCount(self,  index=QModelIndex()): 
        if len(self.dataValues)>0:
            return len(self.dataValues[0]) 
        else:
            return 0
 
   

    def headerData(self, col, orientation= Qt.Horizontal, role= Qt.DisplayRole):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            #return QVariant("Col "+unicode(col))
            
            return QVariant(self.columnTitles[col])
        return QVariant()

    def sort(self, Ncol, order):
        """Sort table by given column number.
        """
        self.emit(SIGNAL("layoutAboutToBeChanged()"))
        self.dataValues = sorted(self.dataValues, key=operator.itemgetter(Ncol))        
        if order == Qt.DescendingOrder:
            self.dataValues.reverse()
        
        self.emit(SIGNAL("layoutChanged()"))
    
    def setData(self, index, value, role=Qt.EditRole):
        if index.isValid() :
            
            if(value.toDouble()[1]==True):
                self.dataValues[index.row()][index.column()]=value.toDouble()[0]
            else: #as string            
                self.dataValues[index.row()][index.column()]=unicode(value.toString())

            self.calculateArrayColumns()
            self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
            return True
        return False
    
    def flags(self, index):
        lenData=len(self.dataValues)
        if not index.isValid() or (index.row()>=lenData):
            return Qt.ItemIsEnabled
        return Qt.ItemFlags(QAbstractTableModel.flags(self, index)|
                            Qt.ItemIsEditable)
    
    def insertRows(self, position, rows=1, index=QModelIndex()):
        self.beginInsertRows(QModelIndex(), position,
                             position + rows - 1)
        for row in range(rows):
            l=[float("NaN")]*self.columnCount()
            self.dataValues.append(l)
        self.endInsertRows()
        self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
        self.dirty = True
        
        #list of column is needed in several operation
        self.calculateArrayColumns()    
        return True
    
    def removeRows(self, position,  count, index=QModelIndex()):
        self.beginRemoveRows(QModelIndex(), position, position+count-1)
        indices=range(position, position+count)
        self.dataValues=[i for j, i in enumerate(self.dataValues) if j not in indices]
        self.endRemoveRows()
        #list of column is needed in several operation
        self.calculateArrayColumns()
        self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
        self.dirty = True
   
        return True
        
    def insertColumn(self, position,  index=QModelIndex()):
        self.beginInsertColumns(QModelIndex(), position, position)
        for i in range(self.rowCount()):
            self.dataValues[i].insert(position, float("NaN"))
            
        #The title columns are just colX
        self.columnTitles.insert(position,"NewCol %s"%position)
       
        #list of column is needed in several operation
        self.calculateArrayColumns()
        
        
        self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
        self.dirty = True
        self.endInsertColumns()
        
        return True   
    

    def removeColumns(self,  position,  count,  index=QModelIndex()):
        self.beginRemoveColumns(QModelIndex(), position, position+count-1)

        indices=range(position, position+count)
        new=[]
        for row in self.dataValues:
            new.append( [i for j, i in enumerate(row) if j not in indices])
        self.dataValues=new
        self.columnTitles=[i for j, i in enumerate(self.columnTitles) if j not in indices]
        self.endRemoveColumns()
        
        #list of column is needed in several operation
        self.calculateArrayColumns()
        self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),index, index)
        self.dirty = True

        return True
 
    def save(self, filename):
        if filename!=None:
            self.filename=filename
            try:
                fh=open(self.filename, "wb")
            except IOError as e:
                fh.close()
                raise e
                return 
            if self.votable==None:
                fh.writelines(["%s"%item for item in self.headers])
            for row in self.dataValues:
                 print "row", row
                 s="%s"+self.delimiter
                 fh.writelines([s%str(item).replace('\n','') for item in row[:-1]])
                 fh.write(str(row[-1]).replace('\n', ''))
                 fh.write("\n")
            fh.close()

    def saveAsVOtable(self, filename):
        if filename!=None:
            dat_np = numpy.rec.fromrecords(self.dataValues,  names=self.columnTitles)  
            dat =  astropy.table.Table(dat_np)
            votable=astropy.io.votable.tree.VOTableFile()
            votable=votable.from_table(dat)
            for f in votable.iter_fields_and_params():
                if f.datatype=="double" or f.datatype=="long" or f.datatype=="float" or f.datatype=="floatComplex" or f.datatype=="doubleComplex":
                    f.precision="E12"
            votable.to_xml(filename)
            
            
    def updateColumn(self, n_col,  data):
        
        n_remaining=len(data)-len(self.dataValues)
        if n_remaining>0: # In case there are new rows
            for i in range(n_remaining):
                self.insertRows(0)
        elif n_remaining<0: # In case the new columns have less rows than the table 
            tmp=[float("NaN")]*abs(n_remaining)
            data.extend(tmp)
                
        for key,  value in enumerate(self.dataValues):
            if (len(value)>n_col):
                self.dataValues[key][n_col]=str(data[key])
               
        
        self.calculateArrayColumns()
        self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),QModelIndex(), QModelIndex())
           
   
####END ./../development/table/view_table.py
####START ./../development/browser/__init__.py
####END ./../development/browser/__init__.py
####START ./../development/browser/workspaceBrowser.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#from Ui_workspaceBrowser import *



class workspaceBrowser(QWidget,Ui_workspaceBrowser):
    """
    This class represent the area in the left part of the main window, where all the elements opened in the session are showed in a tree.
    This class inherits from the Ui_workspaceBrowser class which has been implemeted using Qt Desinger.
    Attributes:
    - self.workspaceTree: Inherited from Ui_workspaceBrowser. It is the widget that show the elements in a tree way.
    - self.ICON_<doc>: Each kind of document has its own icon represented by this attribute.
    - self.item<doc>: Each time a new document is opened (or created) a new item of the workspaceTree is created.
    """
    def __init__(self,  sessionName=None):
        super(workspaceBrowser, self).__init__()
        self.setupUi(self)
#INTERESTING ATRIBUTES INHERITED 
  #workspaceTree (QTreeWidget)
#NEW ATRIBUTES
        self.ICON_SET = QIcon()
        self.ICON_SET.addPixmap(QPixmap(":/cube.gif"), QIcon.Normal, QIcon.Off)

        self.ICON_TABLE = QIcon()
        self.ICON_TABLE.addPixmap(QPixmap(":/table.jpg"), QIcon.Normal, QIcon.Off)
        
        
        self.ICON_IMAGE = QIcon()
        self.ICON_IMAGE.addPixmap(QPixmap(":/image.gif"), QIcon.Normal, QIcon.Off)
       
        self.ICON_HELP = QIcon()
        self.ICON_HELP.addPixmap(QPixmap(":/help.gif"), QIcon.Normal, QIcon.Off)
        
        self.ICON_COLA = QIcon()
        self.ICON_COLA.addPixmap(QPixmap(":/cola.png"), QIcon.Normal, QIcon.Off)
        
        self.ICON_TEXT = QIcon()
        self.ICON_TEXT.addPixmap(QPixmap(":/text.jpg"), QIcon.Normal, QIcon.Off)
       
        self.ICON_PYFILE = QIcon()
        self.ICON_PYFILE.addPixmap(QPixmap(":/python.png"), QIcon.Normal, QIcon.Off)
        
        self.setDefaultItems()

        self.workspaceTree.setColumnCount(2)
        self.workspaceTree.setColumnHidden(1, True)
        self.workspaceTree.setHeaderLabels(["files"])
        self.workspaceTree.setContextMenuPolicy(Qt.CustomContextMenu)
        
        self.connect(self.workspaceTree, SIGNAL('customContextMenuRequested(QPoint)'), self.contextMenu)
        self.connect(self.workspaceTree,SIGNAL("itemClicked(QTreeWidgetItem *, int)"), self.itemSelected)
        self.connect(self.workspaceTree,SIGNAL("itemDoubleClicked(QTreeWidgetItem *, int)"), self.itemDoubleClicked)
        if(sessionName==None):
            self.workspaceTree.headerItem().setText(0,"Untitled Session")
        else:
            self.workspaceTree.headerItem().setText(0,sessionName)
        
      
    
    def prunSet(self, setname):
        #This function move the set children (not table children) of the item setname 
        #to the ROOT item "SET"
        #Then remove the setname item
        items=self.workspaceTree.findItems(QString(setname), Qt.MatchExactly|Qt.MatchRecursive, 1)   
        if(len(items)>0):
            itemChildSet=items[0]
            children=itemChildSet.takeChildren()
            index=self.itemSet.childCount()
            for it in children:
                if it.text(2)=="SET":
                    self.itemSet.insertChild(index, it)
                    index+=1
                else:
                    del it
            itemFatherSet=itemChildSet.parent()
            itemFatherSet.removeChild(itemChildSet)
            if (self.itemSet.childCount() < 1):
                self.itemSet.setHidden(True)
    
    def addFile(self, type,  filename ,  shortname, father=None,  info=None, exist=True):
        
        if type=="SET":
 
            if father is not None:
                items=self.workspaceTree.findItems(QString(father), Qt.MatchExactly|Qt.MatchRecursive, 1)   
                if(len(items)>0):
                    itemFather=items[0]
              
            else:
                self.itemSet.setHidden(False)
                itemFather=self.itemSet
            item=QTreeWidgetItem(itemFather)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, "SET")
            item.setIcon(0, self.ICON_SET)
            
            
            if not exist:
                item.setFlags(Qt.NoItemFlags)
            else:
                item.setToolTip(0, info)
        
        if type=="SETTABLE":
            if father is not None:#A settable always has a father set.
                items=self.workspaceTree.findItems(QString(father), Qt.MatchExactly|Qt.MatchRecursive, 1)   
                if(len(items)>0):
                    itemFather=items[0]
                    
                    item=QTreeWidgetItem(itemFather)
                    item.setText(0, shortname)
                    item.setText(1, filename)
                    item.setText(2, "SETTABLE")
                    item.setIcon(0, self.ICON_TABLE)
                    if not exist:
                        item.setFlags(Qt.NoItemFlags)


        if type=="TABLE" or type=="VOTABLE":
            
            self.itemTable.setHidden(False)
            item=QTreeWidgetItem(self.itemTable)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, type)
            item.setIcon(0, self.ICON_TABLE)
            if not exist:
                item.setFlags(Qt.NoItemFlags)

               
        if type=="IMAGE":
            self.itemImage.setHidden(False)
            item=QTreeWidgetItem(self.itemImage)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, "IMAGE")
            item.setIcon(0, self.ICON_IMAGE)
            if not exist:
                item.setFlags(Qt.NoItemFlags)

            
        if type=="HELP":
            self.itemHelp.setHidden(False)
            item=QTreeWidgetItem(self.itemHelp)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, "HELP")
            item.setIcon(0, self.ICON_HELP)
            if not exist:
                item.setFlags(Qt.NoItemFlags)

        if type=="COLA" or type=="COLATEMP":
            self.itemCola.setHidden(False)
            item=QTreeWidgetItem(self.itemCola)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, type)
            item.setIcon(0, self.ICON_COLA)
            if not exist:
                item.setFlags(Qt.NoItemFlags)
            
        if type=="TEXT":
            self.itemText.setHidden(False)
            item=QTreeWidgetItem(self.itemText)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, "TEXT")
            item.setIcon(0, self.ICON_TEXT)
            if not exist:
                item.setFlags(Qt.NoItemFlags)
            
        if type=="PYFILE" or type=="PYTEMP":
            self.itemPyfile.setHidden(False)
            item=QTreeWidgetItem(self.itemPyfile)
            item.setText(0, shortname)
            item.setText(1, filename)
            item.setText(2, type)
            item.setIcon(0, self.ICON_PYFILE)
            if not exist:
                item.setFlags(Qt.NoItemFlags)
       
            
    
    def delFile(self, type, filename):
        
        itemsToDelete=self.workspaceTree.findItems(QString(filename), Qt.MatchExactly|Qt.MatchRecursive, 1) 
        if(len(itemsToDelete)==1):
            
            if type=="SET":
                self.itemSet.removeChild(itemsToDelete[0])
                if (self.itemSet.childCount() < 1):
                    self.itemSet.setHidden(True)
            if type=="TABLE" or type=="VOTABLE":
                self.itemTable.removeChild(itemsToDelete[0])
                if (self.itemTable.childCount() < 1):
                    self.itemTable.setHidden(True)
            if type=="IMAGE":
                self.itemImage.removeChild(itemsToDelete[0])
                if (self.itemImage.childCount() < 1):
                    self.itemImage.setHidden(True)
            
            if type=="COLA" or type=="COLATEMP":
                self.itemCola.removeChild(itemsToDelete[0])
                if (self.itemCola.childCount() < 1):
                    self.itemCola.setHidden(True)
            if type=="HELP":
                self.itemHelp.removeChild(itemsToDelete[0])
                if (self.itemHelp.childCount() < 1):
                    self.itemHelp.setHidden(True)
            if type=="TEXT":
                self.itemText.removeChild(itemsToDelete[0])
                if (self.itemText.childCount() < 1):
                    self.itemText.setHidden(True)
            if type=="PYFILE" or type=="PYTEMP":
                self.itemPyfile.removeChild(itemsToDelete[0])
                if (self.itemPyfile.childCount() < 1):
                    self.itemPyfile.setHidden(True)

    
    def selectFile (self,  filename):
        
        for item in self.workspaceTree.selectedItems():
            self.workspaceTree.setItemSelected(item, False)
        
        itemsToSelect=self.workspaceTree.findItems(QString(filename), Qt.MatchExactly|Qt.MatchRecursive, 1)
        for item in itemsToSelect:
            self.workspaceTree.setItemSelected(item, True)
        
        self.workspaceTree.scrollToItem(item)  
    
    def itemSelected(self, item):
        
        if item:
            filename=item.text(1)
            self.emit(SIGNAL("itemSelected"), filename)
            return True

    def itemDoubleClicked(self, item):
        
        if item and item.text(1)!="":
            if item.flags()!=Qt.NoItemFlags:
                filename=item.text(1)
                type=item.text(2)
                shortname=item.text(0)
                self.emit(SIGNAL("itemDoubleClicked"), filename, type, shortname)
                return True
            else:
                return False

    def updateSessionTitle(self, title):
         self.workspaceTree.headerItem().setText(0,title)
        

    def updateToolTip(self, filename, info):
        
        itemsToUpdate=self.workspaceTree.findItems(QString(filename), Qt.MatchExactly|Qt.MatchRecursive, 1) 
        if(len(itemsToUpdate)==1):
            itemsToUpdate[0].setToolTip(0, info)
    
    def hasFile(self, filename):
        items=self.workspaceTree.findItems(QString(filename), Qt.MatchExactly|Qt.MatchRecursive, 1) 
        if len(items)>0:
            return True
        else:
            return False
            
    def reloadInfoSet(self, setname, info):
        items=self.workspaceTree.findItems(QString(setname), Qt.MatchExactly|Qt.MatchRecursive, 1) 
        if len(items)>0:
            items[0].setToolTip(0, info)
    def clearSetTables(self, setname):
         items=self.workspaceTree.findItems(QString(setname), Qt.MatchExactly|Qt.MatchRecursive, 1) 
         if len(items)>0:
            itemFather=items[0]
            children=itemFather.takeChildren()
            index=0
            for child in children:
                if child.text(2) !="SETTABLE":
                    itemFather.insertChild(index, child)
                    index=index+1

    def setDefaultItems(self):
        self.itemSet=QTreeWidgetItem(self.workspaceTree)
        self.itemSet.setText(0,"SETS")
        self.itemSet.setIcon(0, self.ICON_SET)
        self.itemSet.setHidden(True)

        self.itemTable= QTreeWidgetItem(self.workspaceTree)
        self.itemTable.setText(0,"TABLES")
        self.itemTable.setIcon(0, self.ICON_TABLE)
        self.itemTable.setHidden(True)
        
        self.itemImage= QTreeWidgetItem(self.workspaceTree)
        self.itemImage.setText(0,"IMAGES")
        self.itemImage.setIcon(0, self.ICON_IMAGE)
        self.itemImage.setHidden(True)
        
        self.itemHelp= QTreeWidgetItem(self.workspaceTree)
        self.itemHelp.setText(0,"HELP")
        self.itemHelp.setIcon(0, self.ICON_HELP)
        self.itemHelp.setHidden(True)
        
        self.itemCola= QTreeWidgetItem(self.workspaceTree)
        self.itemCola.setText(0,"COLA")
        self.itemCola.setIcon(0, self.ICON_COLA)
        self.itemCola.setHidden(True)
        
        self.itemText= QTreeWidgetItem(self.workspaceTree)
        self.itemText.setText(0,"TEXT")
        self.itemText.setIcon(0, self.ICON_TEXT)
        self.itemText.setHidden(True)
        
        self.itemPyfile= QTreeWidgetItem(self.workspaceTree)
        self.itemPyfile.setText(0,"PYFILE")
        self.itemPyfile.setIcon(0, self.ICON_PYFILE)
        self.itemPyfile.setHidden(True)
        
    def clearTree(self):
        self.workspaceTree.clear()
        self.setDefaultItems()
        
       
    def contextMenu(self, point):
        item=self.workspaceTree.itemAt(point)
        exist=True
        if item and item.text(1)!="":
            if item.flags()==Qt.NoItemFlags:
                exist=False
            filename=item.text(1)
            type=item.text(2)
            shortname=item.text(0)
            self.emit(SIGNAL("contextMenu"), point, filename, type, shortname, exist)
           
####END ./../development/browser/workspaceBrowser.py
####START ./../development/session/session.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#import networkx 
#import networkx.algorithms.traversal
#import pickle

#from general import *
#from new_exceptions import *


class session(object):
    def __init__(self, n_session):
        """ 
        This class represent the work session of a user. It stores the documents opened and the log gathered in the workflow area. It also represents the relationship between the opened sets.
        A set B can be the result of an operation aplied to the set A, in this case the set A will be the parent of the set B. This relationship graph is implemented by the networkx library. 
        The session is stored in a file using the pickle library. Before the user gives a pathfile to store the session, this class use the file  ./session<number>.ses.bkp, where number is got from a counter.
        When the user gives a name for the file session, the bakcup session is renamed to <filesession>.bkp.
        Whenever an action modifies the session, the backup file session  is updated with the  current  status of the session
        ATRIBUTES:
        - self.setTree: Graph which keeps the pathfiles of the sets opened during the session and the relation between them
        - self.workflow: Current text in the workflow area.
        - self.sessionfile: Path of the file where the session will be stored.
        - self.sessionfileBkp: Path of the file where the session is stored, until the user does not give a name for the session
        - self.docFiles: Dictionary of lists. It contains 7 lists, one for each type of elements (TABLE, VOTABLE,IMAGE,PYFILE,TEXT,COLA,HELP). The list contains the pathfiles or names of the document.

        """
        self.setTree= networkx.DiGraph() #Directed graph
        self.workflow= QString()
        self.sessionfile= None
        self.sessionfileBkp="./session"+str(n_session)+".ses.bkp"

        self.docFiles={ # A list of pathfiles for each type of files
         "TABLE": [], 
         "VOTABLE":[], 
         "IMAGE":[], 
         "PYFILE":[], 
         "PYTEMP":[], 
         "TEXT":[], 
         "COLA":[], 
         "COLATEMP":[], 
         "HELP":[]
         } 
         
        if networkx.__version__[0]=='0':
            self.network_version=0
        else:
           self.network_version=1
    
        self.dirty=False
        
    def setToSession(self, pathfile, father=None ):
       
        self.setDirty()
        self.setTree.add_node(pathfile)
        if father !=None:
            self.setTree.add_edge(father, pathfile)
        self.saveSession(bkp=True)
        
    
    def docToSession(self, pathfile, type):
        
        self.setDirty()
        if pathfile not in self.docFiles[type]:
            self.docFiles[type].append(pathfile)
        self.saveSession(bkp=True)
        
 
    def saveSession(self, filename=None, bkp=False):
        #The sesionfile and the sesionfileBkp  pathfiles are updated suitably
        if filename is not None: 
            self.sessionfile=filename
            os.rename(self.sessionfileBkp, self.sessionfile+".bkp") 
            self.sessionfileBkp=filename+".bkp"
        
        #The bakcup session file always is updated
        try: 
                output = open(self.sessionfileBkp, 'wb')
        except:
                pass 
        else:
                pickle.dump(self, output)
                output.close()
        
        #The session file is updated when the user selects save the session
        if  not bkp and (self.sessionfile is not None): 
            try:
                output = open(self.sessionfile, 'wb')
            except:
                return
            else:
                pickle.dump(self, output)
                output.close()
            self.dirty=False

    
    def close(self):
        try:
            os.remove(self.sessionfileBkp)
        except:
            return
            
    def loadSession(self, sessionfile):
        if sessionfile is not None:
            try:
                read = open(sessionfile, 'rb')
            except IOError as e:
                raise e
                return
            try:
                tmp=pickle.load(read)
            except KeyError as k:
                raise k
                return
            
            #To avoid problems from renaming the filename of a session
            self.sessionfile=sessionfile
            self.sessionfileBkp=self.sessionfile+".bkp"
            self.setTree=tmp.setTree
            self.docFiles=tmp.docFiles
            self.workflow=tmp.workflow

            self.saveSession()
   
    
    def isDirty(self):
        return self.dirty
    
    def setDirty(self):
        self.dirty=True
        
    def has_sessionfile(self):
        if self.sessionfile is None:
            return False
        else:
            return True
    
    def setChildren(self,  parent):
        children=[]
        for key, val in self.setTree.iteritems():
            if val==parent:
                children.append(key)
        return children

    def getWorkflowText(self):
        return self.workflow
    
    def updateWorkflowText(self, text):
        self.workflow=QString(text)
        self.setDirty()
        self.saveSession(bkp=True)
        

    def orderedListOfSet(self):
        ordered=[]
        topological=networkx.algorithms.dag.topological_sort(self.setTree)
        
        for set in topological:
            pred=self.setTree.predecessors(set)
            if len(pred)>0:
                tmp=(set, pred[0])
            else:
                tmp=(set, "")
            ordered.append(tmp)
            
        return ordered
    
    def listOfSet(self):
        return self.setTree.nodes()
        
    def successors(self, setname):
        successors_graph=networkx.algorithms.traversal.dfs_tree(self.setTree,setname)
        successors=successors_graph.nodes()
        successors.remove(setname)
        return successors
        
        
        
    def prunSet(self, setname):
        #Delete the parent relation and the children relation of setname
        #The setname is not deleted. If it is neccesary it can be done by remove method
        #delete parent relation
        tmp=self.setTree.predecessors(setname)
        if len(tmp)>0:
            if self.network_version>0:
                self.setTree.remove_edge(tmp[0], setname)
            else:
                self.setTree.delete_edge(tmp[0], setname)
        #delete children relation
        tmp=self.setTree.successors(setname)
        for item in tmp:
            if self.network_version>0:
                self.setTree.remove_edge(setname, item)
            else:
                self.setTree.delete_edge(setname, item)
        self.setDirty()
        self.saveSession(bkp=True)
    
    def remove(self, fName, type):
        if type=="SET":
            
            if (self.network_version>0):
                self.setTree.remove_node(fName)
            else:
                self.setTree.delete_node(fName)
        else:
            list=self.docFiles[type]
            if fName in list:
                index=list.index(fName)
                del list[index]
        self.setDirty()
        self.saveSession(bkp=True)

    def removeFileAndChildren(self, fName):
        successors=self.successors(fName)
        for s in successors:
            if (self.network_version>0):
                    self.setTree.remove_node(s)
            else:   
                    self.setTree.delete_node(s)
        if (self.network_version>0):
                    self.setTree.remove_node(fName)
        else:   
                    self.setTree.delete_node(fName)
        self.setDirty()
        self.saveSession(bkp=True)
        return



####END ./../development/session/session.py
####START ./../development/session/__init__.py
####END ./../development/session/__init__.py
####START ./../development/gipsyClasses/setbrowser.py
# -*- coding: utf-8 -*-
#import sys
#import functools
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


#from Ui_setbrowser import *
#from gipsyClasses.gipsySet import *
#from dialog.fitsHeaderDlg import *
#import general
#from general import *

#from new_exceptions import *



class setbrowser(QDialog, Ui_setbrowser):
    def __init__(self, parent, filename, subset,  box, gdsClass=1,  classDim=0,  special=None, defaultPath="./"): #The special is due to allow COPY insert axes
        super(setbrowser, self).__init__(parent)
        self.setPath=None
        self.axesInfo=None
        self.axesList=None
        self.gdsClass=gdsClass
        self.classDim=classDim
        self.special=special
        self.setupUi(self)
        self.subButtons={}
        self.boxButtons={}
        self.groupCheckBox={}
        self.limitLabel={}
        self.RangeListEdit={}
        self.parent=parent
        self.defaultPath=defaultPath
       
        self.connect(self.browseButton, SIGNAL("clicked()"), self.browser)
        self.connect(self.headerButton, SIGNAL("clicked()"), self.showHeaders)
       
        if self.gdsClass==-1: #TRANSPOSE
            self.axisFrame.setEnabled(False)
            self.editEnableButton.setEnabled(False)
            self.composerEnableButton.setEnabled(False)
            self.manualEditFrame.setEnabled(False)

            if filename!=None:
               self.setpathLabel.setText(os.path.dirname(filename))
            else:
                self.setpathLabel.setText(os.getcwd())
                
            self.connect(self.setnameLine, SIGNAL("returnPressed()"), self.openSetbyHand )
        else:
        
            if  filename!=None: 
                self.setPath=filename
                self.setpathLabel.setText(os.path.dirname(filename))
                self.setnameLine.setText(os.path.basename(filename))
                set=gipsySet()
                try:
                    set.loadSetRO(self.setPath)
                except gipsyException as g:
                    QMessageBox.warning(self, "Reading SET Failed", QString(g.msj+self.setPath))
                self.axesInfo=set.getInfoAxes()
                self.axesList=map(lambda x: x.split("-")[0].upper(), set.getAxes())
                #del set
                set.closeSet()
                
                self.subsetLine.setText(subset)
                self.boxLine.setText(box)
                self.clearAxesLayout()
                self.showUpdatedAxes(filename, unicode(subset),  unicode(box))
            else:
                
                self.setpathLabel.setText(os.getcwd())
                self.showDefaultAxes()
        
            self.connect(self.composerEnableButton, SIGNAL("clicked()"),  self.enableComposer)
            self.connect(self.editEnableButton, SIGNAL("clicked()"),  self.disableComposer)
            self.connect(self.setnameLine, SIGNAL("returnPressed()"), self.openSetbyHand )
        curried=functools.partial(self.done, 1)
        self.connect(self.parent, SIGNAL("finished(int)"), curried)
    
    
    def disableComposer(self):
        self.composerEnableButton.setEnabled(True)
        self.axisFrame.setEnabled(False)
        self.manualEditFrame.setEnabled(True)
        self.editEnableButton.setEnabled(False)
    
    def enableComposer(self):
        self.composerEnableButton.setEnabled(False)
        self.editEnableButton.setEnabled(True)
        self.axisFrame.setEnabled(True)
        self.manualEditFrame.setEnabled(False)
        self.updateLines()
        
    def openSetbyHand(self):
        self.buttonBox.button(QDialogButtonBox.Ok).setAutoDefault(False)
        self.buttonBox.button(QDialogButtonBox.Ok).setDefault(False)
        self.buttonBox.button(QDialogButtonBox.Cancel).setAutoDefault(False)
        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(False)
        self.buttonBox.button(QDialogButtonBox.Help).setAutoDefault(False)
        self.buttonBox.button(QDialogButtonBox.Help).setDefault(False)
       
       
        setname=unicode(self.setpathLabel.text())+"/"+unicode(self.setnameLine.text())
        filename=setname+".image"
            
        
        if not os.path.exists(filename):
            self.clearAxesLayout()
            self.axesLayout.addWidget(QLabel("The set does not exist %s"%setname), 0, 0)
        else:
            
            self.setPath=setname
            set=gipsySet()
            set.loadSetRO(self.setPath)
            self.axesInfo=set.getInfoAxes()
            self.axesList=set.getAxes()
            #del set
            set.closeSet()
            self.clearAxesLayout()
            self.showDefaultAxes()
            
    def browser(self):
        if self.setPath != None:
            dir=os.path.dirname(self.setPath)
        else:
            dir = self.defaultPath
        fName = unicode(QFileDialog.getOpenFileName(self, "File open ", dir,FORMATS["SET"]))
        if (fName==""):
            return
        self.setPath=unicode(os.path.splitext(fName)[0])
        set=gipsySet()
        set.loadSetRO(self.setPath)
        self.axesInfo=set.getInfoAxes()
        self.axesList=map(lambda x: x.split("-")[0].upper(), set.getAxes())
        #del set
        set.closeSet()
        self.setpathLabel.setText(os.path.dirname(self.setPath))
        self.setnameLine.setText(os.path.basename(self.setPath))
        self.clearAxesLayout()
        self.showDefaultAxes()
    
    def clearAxesLayout(self):
        while self.axesLayout.count()>0:
            item=self.axesLayout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        
                        w.deleteLater()
                        
    def showDefaultAxes(self):
    
        if self.setPath==None:
            return
        
        if self.gdsClass==1:
            #Building the header of the axis table in the composer
            self.axesLayout.addWidget(QLabel("Axis name"), 0, 0)
            self.axesLayout.addWidget(QLabel("Box axis"), 0, 1)
            self.axesLayout.addWidget(QLabel("Repeat axis"), 0, 2)
            l=QLabel("Range/List")
            l.setAlignment(Qt.AlignCenter)
            self.axesLayout.addWidget(l, 0, 3, 1, 2)
            self.axesLayout.addWidget(QLabel("Default"), 0, 5)
            frame = QtGui.QFrame()
            line = QtGui.QFrame(frame)
            line.setFrameShape(QtGui.QFrame.HLine)
            line.setFrameShadow(QtGui.QFrame.Sunken)
            self.axesLayout.addWidget(line, 1, 0, 1, 6)
            
            #Calculating the number of box axis
            limit=2 if self.classDim==0 else self.classDim
            
            for i, axe in enumerate(self.axesInfo):
                try:
                    (axename, range)=axe
                    (x, y)=range.split()
                except:
                    raise gipsyException("Unable read set axis limit")
                    return
                axename=axename.split("-")[0].upper()
                self.axesLayout.addWidget(QLabel(QString(axename)), i+2, 0)
                self.groupCheckBox[i]=QButtonGroup()
                box=QRadioButton(QString(""))
                repeat=QRadioButton(QString(""))                
                
                if (i <limit):
                    box.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(repeat, 1)
                    self.axesLayout.addWidget(box, i+2, 1)
                    self.axesLayout.addWidget(repeat, i+2, 2)
                    
                    lowRange=QLineEdit(x)
                    lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    highRange=QLineEdit(y)
                    highRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=(lowRange, highRange)
                    self.axesLayout.addWidget(lowRange, i+2, 3)
                    self.axesLayout.addWidget(highRange, i+2, 4)
                    Label=QLabel(QString(x+","+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    
                if (i >limit or i == limit):
                    repeat.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(repeat, 1)
                    self.axesLayout.addWidget(box, i+2, 1)
                    self.axesLayout.addWidget(repeat, i+2, 2)
                    
                    list=QLineEdit()
                    list.setMaximumSize(QtCore.QSize(150, 16777215))
                    self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=list
                    self.axesLayout.addWidget(list, i+2, 3, 1, 2)
                    Label=QLabel(QString(x+":"+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    
                curried = functools.partial(self.listToRange, i)
                self.connect(box, SIGNAL("toggled(bool)"), curried)
                curried = functools.partial(self.rangeToList, i)
                self.connect(repeat, SIGNAL("toggled(bool)"), curried)
                
            #Show message about the requirements of the data structure
            dim=len(self.axesInfo)
            if self.classDim==0:
                if dim==1:
                    msgLabel=QLabel("(*) Data is processed in structures with 0 or 1 box axis")
                else:
                    msgLabel=QLabel("(*) Data is processed in structures with 0, 1, ... or %s box axes"%dim)
            elif self.classDim==1:
                    msgLabel=QLabel("(*) Data is processed in structures with one box axis")
            else:
                msgLabel=QLabel("(*) Data is processed in structures with %s box axes"%self.classDim)
            font=QFont()
            font.setItalic(True)
            font.setPointSize(8)
            msgLabel.setFont(font)
            self.axesLayout.addWidget(msgLabel, i+3, 0, 1, 6)
        elif self.gdsClass==2: #self.gdsClass==2
            #Building the header of the axis table in the composer
            self.axesLayout.addWidget(QLabel("Axis name"), 0, 0)
            self.axesLayout.addWidget(QLabel("Operation axis"), 0, 1)
            self.axesLayout.addWidget(QLabel("Box axis"), 0, 2)
            l=QLabel("Range/List")
            l.setAlignment(Qt.AlignCenter)
            self.axesLayout.addWidget(l, 0, 3, 1, 2)
            self.axesLayout.addWidget(QLabel("Default"), 0, 5)
            frame = QtGui.QFrame()
            line = QtGui.QFrame(frame)
            line.setFrameShape(QtGui.QFrame.HLine)
            line.setFrameShadow(QtGui.QFrame.Sunken)
            self.axesLayout.addWidget(line, 1, 0, 1, 6)
            
            #Calculating the number of operation axis
            dim=len(self.axesInfo)
            if self.classDim!=0:
                limit=dim-self.classDim
            else: # if required dim is 0, select one default axis , the last one
                limit=dim-1
                
            for i, axe in enumerate(self.axesInfo):
                try:
                    (axename, range)=axe
                    (x, y)=range.split()
                except:
                    raise gipsyException("Unable read set axis limit")
                    return
                axename=axename.split("-")[0].upper()
                self.axesLayout.addWidget(QLabel(QString(axename)), i+2, 0)
                self.groupCheckBox[i]=QButtonGroup()
                operation=QRadioButton(QString(""))
                box=QRadioButton(QString(""))            
           
                if i<limit:
                    box.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(operation, 1)
                    self.axesLayout.addWidget(operation, i+2, 1)
                    self.axesLayout.addWidget(box, i+2, 2)
                    
                    lowRange=QLineEdit(x)
                    lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    highRange=QLineEdit(y)
                    highRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=(lowRange, highRange)
                    self.axesLayout.addWidget(lowRange, i+2, 3)
                    self.axesLayout.addWidget(highRange, i+2, 4)
                    Label=QLabel(QString(x+","+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    
                else: #Last classdim number of axes
                    operation.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(operation, 1)
                    self.axesLayout.addWidget(operation, i+2, 1)
                    self.axesLayout.addWidget(box, i+2, 2)
                    
                    list=QLineEdit()
                    list.setMaximumSize(QtCore.QSize(150, 16777215))
                    self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=list
                    self.axesLayout.addWidget(list, i+2, 3, 1, 2)
                    Label=QLabel(QString(x+":"+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    

                curried=functools.partial(self.rangeToList, i)
                self.connect(operation, SIGNAL("toggled(bool)"), curried)
                curried=functools.partial(self.listToRange, i)
                self.connect(box, SIGNAL("toggled(bool)"), curried)

            #Show message about the requirements of the data structure
            font=QFont()
            font.setItalic(True)
            font.setPointSize(8)
            dim=len(self.axesInfo)
            if self.classDim==0:
                if dim==1:
                    msgLabel=QLabel("(*) Data is processed along 0 or 1 operation axis")
                else:
                    msgLabel=QLabel("(*) Data is processed along 0,1,.. or %s operation axes"%dim)
            elif self.classDim==1:
                msgLabel=QLabel("(*) Data is processed along %s operation axis"%self.classDim)
            else:
                msgLabel=QLabel("(*) Data is processed along %s operation axes"%self.classDim)
            msgLabel.setFont(font)
            self.axesLayout.addWidget(msgLabel, i+3, 0,1,  6)
        self.updateLines()


    def updateLines(self):
        if self.gdsClass==-1: #TRANSPOSE
            self.subsetLine.setText(self.setPath)
            self.boxLine.setText("")
        
        else:
            
            
            perror=QPalette() #Error palette
            perror.setColor(QPalette.Base, QColor(255, 0,0))
            p=QPalette() #write palette
            p.setColor(QPalette.Base, QColor(255, 255,255))
            subsettext=self.setPath+" "
            xbox=[]
            ybox=[]
            n_checked=0
            for i, axe in enumerate(self.axesInfo):
                (axename, range)=axe
                axename=axename.split("-")[0].upper()
                limitx=int(range.split()[0])
                limity=int(range.split()[1])
                
                
                group=self.groupCheckBox[i]
                buttonList=group.button(1) # or repeat axis or operation axis
                
                if  buttonList.isChecked(): 
                    if self.gdsClass==2:
                        n_checked +=1
                    list=unicode(self.RangeListEdit[i].text()).split()
                    isok=True
                    for item in list:
                        if ":" in item:
                            for item2 in item.split(":"):
                                if item2!="":
                                    try:
                                        item2=int(item2)
                                    except:
                                        self.RangeListEdit[i].setPalette(perror)
                                        self.RangeListEdit[i].setToolTip(ERROR_SETBROWSER['syntax'])
                                        isok=False
                                    else:
                                        if item2>limity or item2<limitx:
                                            self.RangeListEdit[i].setPalette(perror)
                                            self.RangeListEdit[i].setToolTip(ERROR_SETBROWSER['overflow'])
                                            isok=False
                        else:
                            try:
                                item=int(item)
                            except:
                                self.RangeListEdit[i].setPalette(perror)
                                self.RangeListEdit[i].setToolTip(ERROR_SETBROWSER['syntax'])
                                isok=False
                            else:
                                if item>limity or item<limitx:
                                    self.RangeListEdit[i].setPalette(perror)
                                    self.RangeListEdit[i].setToolTip(ERROR_SETBROWSER['overflow'])
                                    isok=False
                                    
                    if isok:
                        subsettext=subsettext+unicode(axename)+" "+unicode(self.RangeListEdit[i].text())+" "
                        self.RangeListEdit[i].setPalette(p)
                        self.RangeListEdit[i].setToolTip("")
                    
                   
                else:
                    if self.gdsClass==1:
                        n_checked +=1
                    (lowLine, highLine)=self.RangeListEdit[i]
                    x=unicode(lowLine.text())
                    y=unicode(highLine.text())
                   
                    if x!="":
                        try:
                            x=int(x)
                        except:
                            lowLine.setPalette(perror)
                            lowLine.setToolTip(ERROR_SETBROWSER['syntax'])
                            xbox.append(range.split()[0])
                            
                        else:
                            if x < limitx or x > limity:
                                lowLine.setPalette(perror)
                                lowLine.setToolTip(ERROR_SETBROWSER['overflow'])
                                xbox.append(range.split()[0])
                            else:
                                lowLine.setPalette(p)
                                lowLine.setToolTip("")
                                xbox.append(str(x))
                    else:
                       xbox.append(range.split()[0])
                       lowLine.setPalette(p)
                       lowLine.setToolTip("")
                    if y!="":
                        try:
                            y=int(y)
                        except:
                            highLine.setPalette(perror)
                            highLine.setToolTip(ERROR_SETBROWSER['syntax'])
                            ybox.append(range.split()[1])
                            
                        else:
                            if y >limity or y< limitx:
                                highLine.setPalette(perror)
                                highLine.setToolTip(ERROR_SETBROWSER['overflow'])
                                ybox.append(range.split()[1])
                            else:
                                highLine.setPalette(p)
                                highLine.setToolTip("")
                                ybox.append(str(y))

                    else:
                        ybox.append(range.split()[1])
                        highLine.setPalette(p)
                        highLine.setToolTip("")
                   
            
            self.subsetLine.setText(subsettext)
            boxtext=""
            for x in xbox:
                boxtext=boxtext+" "+x
            for y in ybox:
                boxtext=boxtext+" "+y
            self.boxLine.setText(boxtext)
            #Checking the number of data axis
            
            if n_checked != self.classDim and self.classDim!=0:
                self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
                self.buttonBox.button(QDialogButtonBox.Ok).setToolTip("Wrong subset dimension, MUST be %s"%self.classDim)
            else:
                self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(True)
                self.buttonBox.button(QDialogButtonBox.Ok).setToolTip("")
                
        
        
        
    def showUpdatedAxes(self, filename, subset, box):
        
        subsetList=subset.split()
        subsetList=map(lambda x: x.split("-")[0].upper(), subsetList)
        boxList=box.split()
        
        self.subsetLine.setText(subset)
        self.boxLine.setText(box)
        #self.setnameLine.setText(filename)
        self.setpathLabel.setText(os.path.dirname(filename))
        self.setnameLine.setText(os.path.basename(filename))
       
        n_box=0
       
        if self.gdsClass==1: 
            #Building the header of the axis table in the composer
            self.axesLayout.addWidget(QLabel("Axis name"), 0, 0)
            self.axesLayout.addWidget(QLabel("Box axis"), 0, 1)
            self.axesLayout.addWidget(QLabel("Repeat axis"), 0, 2)
            l=QLabel("Range/List")
            l.setAlignment(Qt.AlignCenter)
            self.axesLayout.addWidget(l, 0, 3, 1, 2)
            self.axesLayout.addWidget(QLabel("Default"), 0, 5)
            frame = QtGui.QFrame()
            line = QtGui.QFrame(frame)
            line.setFrameShape(QtGui.QFrame.HLine)
            line.setFrameShadow(QtGui.QFrame.Sunken)
            self.axesLayout.addWidget(line, 1, 0, 1, 6)
            
            
            for i, axe in enumerate(self.axesInfo):
                try:
                    (axename, range)=axe
                    (x, y)=range.split()
                except:
                    raise gipsyException("Unable read set axis limit")
                    return
                axename=axename.split("-")[0].upper()
                self.axesLayout.addWidget(QLabel(QString(axename)), i+2, 0)
                self.groupCheckBox[i]=QButtonGroup()
                box=QRadioButton(QString(""))
                repeat=QRadioButton(QString(""))       
                if axename not in subsetList:
                    box.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(repeat, 1)
                    self.axesLayout.addWidget(box, i+2, 1)
                    self.axesLayout.addWidget(repeat, i+2, 2)
                    
                    n_box +=1
                    
                    lowRange=QLineEdit()
                    lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    highRange=QLineEdit()
                    highRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=(lowRange, highRange)
                    self.axesLayout.addWidget(lowRange, i+2, 3)
                    self.axesLayout.addWidget(highRange, i+2, 4)
                    Label=QLabel(QString(x+","+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    
                else:
                    repeat.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(repeat, 1)
                    self.axesLayout.addWidget(box, i+2, 1)
                    self.axesLayout.addWidget(repeat, i+2, 2)
                    
                    j=subsetList.index(axename)
                    tmp=""
                    while (len(subsetList)> j+1):
                        if subsetList[j+1].split("-")[0] not in self.axesList:
                            tmp=tmp+" "+unicode(subsetList[j+1])
                        else:
                            
                            break
                        j=j+1
                    list=QLineEdit(tmp)
                    list.setMaximumSize(QtCore.QSize(150, 16777215))
                    self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=list
                    self.axesLayout.addWidget(list, i+2, 3, 1, 2)
                    Label=QLabel(QString(x+":"+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                curried = functools.partial(self.listToRange, i)
                self.connect(box, SIGNAL("toggled(bool)"), curried)
                curried = functools.partial(self.rangeToList, i)
                self.connect(repeat, SIGNAL("toggled(bool)"), curried)
                
            #Show message about the requirements of the data structure
            dim=len(self.axesInfo)
            if self.classDim==0:
                if dim==1:
                    msgLabel=QLabel("(*) Data is processed in structures with 0 or 1 box axis")
                else:
                    msgLabel=QLabel("(*) Data is processed in structures with 0, 1, ... or %s box axes"%dim)
            elif self.classDim==1:
                    msgLabel=QLabel("(*) Data is processed in structures with one box axis")
            else:
                msgLabel=QLabel("(*) Data is processed in structures with %s box axes"%self.classDim)
            font=QFont()
            font.setItalic(True)
            font.setPointSize(8)
            msgLabel.setFont(font)
            self.axesLayout.addWidget(msgLabel, i+3, 0, 1, 6)
        else: #self.gdsClass==2
            #Building the header of the axis table in the composer
            self.axesLayout.addWidget(QLabel("Axis name"), 0, 0)
            self.axesLayout.addWidget(QLabel("Operation axis"), 0, 1)
            self.axesLayout.addWidget(QLabel("Box axis"), 0, 2)
            l=QLabel("Range/List")
            l.setAlignment(Qt.AlignCenter)
            self.axesLayout.addWidget(l, 0, 3, 1, 2)
            self.axesLayout.addWidget(QLabel("Default"), 0, 5)
            frame = QtGui.QFrame()
            line = QtGui.QFrame(frame)
            line.setFrameShape(QtGui.QFrame.HLine)
            line.setFrameShadow(QtGui.QFrame.Sunken)
            self.axesLayout.addWidget(line, 1, 0, 1, 6)
            for i, axe in enumerate(self.axesInfo):
                try:
                    (axename, range)=axe
                    (x, y)=range.split()
                except:
                    raise gipsyException("Unable read set axis limit")
                    return
                axename=axename.split("-")[0].upper()
                self.axesLayout.addWidget(QLabel(QString(axename)), i+2, 0)
                self.groupCheckBox[i]=QButtonGroup()
                operation=QRadioButton(QString(""))
                box=QRadioButton(QString("")) 
                
                if axename not in subsetList:
                    
                    box.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(operation, 1)
                    self.axesLayout.addWidget(operation, i+2, 1)
                    self.axesLayout.addWidget(box, i+2, 2)
                    

                    n_box +=1
                    
                    lowRange=QLineEdit()
                    lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    highRange=QLineEdit()
                    highRange.setMaximumSize(QtCore.QSize(50, 16777215))
                    self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=(lowRange, highRange)
                    self.axesLayout.addWidget(lowRange, i+2, 3)
                    self.axesLayout.addWidget(highRange, i+2, 4)
                    Label=QLabel(QString(x+","+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                    
                else:

                    
                    operation.setChecked(True)
                    self.groupCheckBox[i].addButton(box, 0)
                    self.groupCheckBox[i].addButton(operation, 1)
                    self.axesLayout.addWidget(operation, i+2, 1)
                    self.axesLayout.addWidget(box, i+2, 2)
                    
                    
                    
                    j=subsetList.index(axename)
                    tmp=""
                    while (len(subsetList)> j+1):
                        if subsetList[j+1] not in self.axesList:
                            tmp=tmp+" "+unicode(subsetList[j+1])
                        else:
                            
                            break
                        j=j+1
                    list=QLineEdit(tmp)
                    list.setMaximumSize(QtCore.QSize(150, 16777215))
                    self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
                    self.RangeListEdit[i]=list
                    self.axesLayout.addWidget(list, i+2, 3, 1, 2)
                    Label=QLabel(QString(x+":"+y))
                    self.limitLabel[i]=Label
                    self.axesLayout.addWidget(Label, i+2, 5)
                curried=functools.partial(self.rangeToList, i)
                self.connect(operation, SIGNAL("toggled(bool)"), curried)
                curried=functools.partial(self.listToRange, i)
                self.connect(box, SIGNAL("toggled(bool)"), curried)
            #Show message about the requirements of the data structure
            font=QFont()
            font.setItalic(True)
            font.setPointSize(8)
            dim=len(self.axesInfo)
            if self.classDim==0:
                if dim==1:
                    msgLabel=QLabel("(*) Data is processed along one operation axis")
                elif dim==2:
                    msgLabel=QLabel("(*) Data is processed along 1 or 2 operation axes")
                else:
                    msgLabel=QLabel("(*) Data is processed along 1,2,.. or %s operation axes"%dim)
            elif self.classDim==1:
                msgLabel=QLabel("(*) Data is processed along %s operation axis"%self.classDim)
            else:
                msgLabel=QLabel("(*) Data is processed along %s operation axes"%self.classDim)
            msgLabel.setFont(font)
            self.axesLayout.addWidget(msgLabel, i+3, 0,1,  6)
            

        j=0
        for k,  axe in enumerate(self.axesInfo):
            b=self.groupCheckBox[k].button(0)
            i#sChecked=b.isChecked()
            #condition= isChecked if self.gdsClass==1 else  not isChecked
            #if condition:
            if b.isChecked():
                if len(boxList)> j+n_box:
                    (lowLine,  highLine)=self.RangeListEdit[k]
                    lowLine.setText(boxList[j])
                    highLine.setText(boxList[j+n_box])
                j +=1 
                
        
    
    def rangeToList(self, key, checked):
        if checked:
            try:
                (axename, range)=self.axesInfo[key]
                (x, y)=range.split()
            except:
                raise gipsyException("Unable read set axis limit")
                return
            (lowedit, highedit)=self.RangeListEdit[key]
            lowedit.hide()
            highedit.hide()
            del lowedit
            del highedit
            list=QLineEdit()
            list.setMaximumSize(QtCore.QSize(150, 16777215))
            self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
            self.RangeListEdit[key]=list
            self.axesLayout.addWidget(list, key+2, 3, 1, 2)
            label=self.limitLabel[key]
            label.hide()
            del label
            Label=QLabel(QString(x+":"+y))
            self.limitLabel[key]=Label
            self.axesLayout.addWidget(Label, key+2, 5)
            self.updateLines()
    
    def listToRange(self, key, checked):
        if checked:
            try:
                (axename, range)=self.axesInfo[key]
                (x, y)=range.split()
            except:
                raise gipsyException("Unable read set axis limit")
                return
                
            lineedit=self.RangeListEdit[key]
            lineedit.hide()
            del lineedit
            lowRange=QLineEdit(x)
            lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
            self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
            highRange=QLineEdit(y)
            highRange.setMaximumSize(QtCore.QSize(50, 16777215))
            self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
            self.RangeListEdit[key]=(lowRange, highRange)
            self.axesLayout.addWidget(lowRange, key+2, 3)
            self.axesLayout.addWidget(highRange, key+2, 4)
            
            label=self.limitLabel[key]
            label.hide()
            del label
            
            Label=QLabel(QString(x+","+y))
            self.limitLabel[key]=Label
            self.axesLayout.addWidget(Label, key+2, 5)
            self.updateLines()
        
    def changeRangeList(self, key, id):
       
        try:
            (axename, range)=self.axesInfo[key]
            (x, y)=range.split()
        except:
            raise gipsyException("Unable read set axis limit")
            return


        #check=self.groupCheckBox[key]
        #Calculating condition
#        if self.gdsClass==1:
#            if  check.isChecked():
#                firstPart=True
#            else:
#                firstPart=False
#        else:
#            if  check.isChecked():
#                firstPart=False
#            else:
#                firstPart=True
        group=self.groupCheckBox[key]
        buttonBox=group.button(1) 
            
            
        #if firstPart:
        if  buttonBox.isDown(): #the signal buttonclicked is emitted before the button is checked
            lineedit=self.RangeListEdit[key]
            lineedit.hide()
            del lineedit
            lowRange=QLineEdit(x)
            lowRange.setMaximumSize(QtCore.QSize(50, 16777215))
            self.connect(lowRange, SIGNAL("textChanged(QString)"), self.updateLines)
            highRange=QLineEdit(y)
            highRange.setMaximumSize(QtCore.QSize(50, 16777215))
            self.connect(highRange, SIGNAL("textChanged(QString)"), self.updateLines)
            self.RangeListEdit[key]=(lowRange, highRange)
            self.axesLayout.addWidget(lowRange, key+2, 3)
            self.axesLayout.addWidget(highRange, key+2, 4)
            
            label=self.limitLabel[key]
            label.hide()
            del label
            
            Label=QLabel(QString(x+","+y))
            self.limitLabel[key]=Label
            self.axesLayout.addWidget(Label, key+2, 5)
            
        else:
            (lowedit, highedit)=self.RangeListEdit[key]
            lowedit.hide()
            highedit.hide()
            del lowedit
            del highedit
            list=QLineEdit()
            list.setMaximumSize(QtCore.QSize(150, 16777215))
            self.connect(list, SIGNAL("textChanged(QString)"), self.updateLines)
            self.RangeListEdit[key]=list
            self.axesLayout.addWidget(list, key+2, 3, 1, 2)
            label=self.limitLabel[key]
            label.hide()
            del label
            Label=QLabel(QString(x+":"+y))
            self.limitLabel[key]=Label
            self.axesLayout.addWidget(Label, key+2, 5)
                
        
        self.updateLines()
    

    def accept(self):
       
       #If the user select all axis as repeated axis, this method lates a long time and hangs the application
        
        subset=unicode(self.subsetLine.text())
        box=unicode(self.boxLine.text())
        subsetSplit=subset.split()
        if self.special ==None: #Not the case of the COPY tasks
            if len(subsetSplit)>1: #At least one axes, if not, there is no problem with the repeated axis
                path=subsetSplit[0]
                axesUser=subsetSplit[1:]
                set=gipsySet()
                try:
                    set.loadSetRO(path)
                except gipsyException as g:
                    QMessageBox.warning(self, "Processing input failed", QString(g.msj))
                else:
                    axes=set.getAxes()
                    set.closeSet()
                    if len(axes) == len(axesUser):
                        QMessageBox.warning(self,"Processing input failed","All the axis of the set are repeated axis")
                    else:
                        s=gipsySet()
                        try:
                            s.tryOpenSet(subset, box)
                        except gipsyException as g:
                            QMessageBox.warning(self, "Processing input failed", QString(g.msj))
                        else:
                            self.done(1)
            
            else:
                s=gipsySet()
                try:
                    s.tryOpenSet(subset, box)
                except gipsyException as g:
                    QMessageBox.warning(self, "Processing input failed", QString(g.msj))
                else:
                    self.done(1)
        else: #Case of the COPY task
            self.done(1)
       
        
       
    def showHeaders(self):
        setname=unicode(self.setpathLabel.text())+"/"+unicode(self.setnameLine.text())
        filename=setname+".image"
            
        
        if not os.path.exists(filename):
            QMessageBox.warning(self,"Error","The set does not exist %s"%setname)
        else:
            set=gipsySet()
            set.loadSetRO(setname)
            text=set.getPropertiesModeG()
            set.closeSet()
            self.fhd=fitsHeaderDlg(text)
            self.fhd.exec_()
####END ./../development/gipsyClasses/setbrowser.py
####START ./../development/gipsyClasses/__init__.py
####END ./../development/gipsyClasses/__init__.py
####START ./../development/gipsyClasses/view_tasks.py
#import sys
#import os
#import functools
#import time
#import re

#Import samp module
#import sampy

#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from Ui_viewtask import *
#from Ui_rfits import *
#from Ui_wfits import *
#from Ui_clip import *
#from Ui_combin import *
#from Ui_copy import *
#from Ui_editset import *
#from Ui_ellint import *
#from Ui_extend import *
#from Ui_galmod import *
#from Ui_insert import *
#from Ui_meanSum import *
#from Ui_minbox import *
#from Ui_moments import *
#from Ui_potential import *
#from Ui_pplot import *
#from Ui_profil import *
#from Ui_regrid import *
#from Ui_reswri import *
#from Ui_rotcur import *
#from Ui_shuffle import *
#from Ui_slice import *
#from Ui_snapper import *
#from Ui_transform import *
#from Ui_transpose import *
#from Ui_velfi import *
#from gipsyClasses.gipsySet import *
#from gipsyClasses.gipsyTask import *
#from setbrowser import *
#from tablebrowser import *
#from dialog.fitsHeaderDlg import *
#from general import *

#from new_exceptions import *

def saveTaskValues(taskcommand, filename=None):
    
    taskname=taskcommand.split()[0]
    taskname=taskname.lower()
    parameter=taskcommand.split()[1:]
    l=len(parameter)
    i=0
    lines=[]
    while i<l:
        p=parameter[i]
        i+=1
        while i<l:
            if not "=" in parameter[i]:
                p=p+" "+parameter[i]
                i +=1
            else:
                break
        
        lines.append(p)
    if filename==None:
        try:
            os.mkdir(TASKFILES)
        except OSError: #The dir already exists
            pass
        with open(TASKFILES+taskname+".param", "w") as f:
            for line in lines:
                f.write(line+"\n")
    else:
        (root, ext)=os.path.splitext(filename)
        if ext !=".param":
            filename=filename+".param"
        with open(filename, "w") as f:
            for line in lines:
                f.write(line+"\n")

def getTaskValues(taskname, filename=None):
    if filename==None:
        if os.path.isfile(TASKFILES+taskname+".param"):
           filename=TASKFILES+taskname+".param"
        else:
            return None

    with open(filename, "r") as f:
        lines=f.readlines()
    output={}
    for line in lines:
        #key, value=line.split("=")
        pair=line.split("=")
        if len(pair)==2:
            key, value=pair
            key=key.upper()
            value=value.strip()
            output[key]=value
        
    return output

def clearSetTables(setpath, except_table=None):
    try:
        tmp=gipsySet()
        output1=tmp.loadSet(setpath)
    except gipsyException as g:
        print "gipsy exception: %s"%g
        raise g
        return
    output2=tmp.clearTables(except_table)
    output3=tmp.closeSet()
    
    return output1+"\n"+output2+"\n"+output3
    

    
    
class QLineEditFocus(QLineEdit):
    def __init__(self, *args):
        QLineEdit.__init__(self, *args)
    
    def showEvent(self, *event):
        QLineEdit.setFocus(self)
        
class view_task(QDialog, Ui_viewtask):
    """
    This class implements the common functionalities of all the dialog classes of the gipsy tasks. This class inherits from Ui_viewtask which implements the graphical part.

    ATTRIBUTES:

    * ClassDim represents the class input of the gipsy task. It is given by the source of the gipsy task, but in GUIpsy, this data have been hardcoded in general.py
    * gdsClass also represents the kind of input of the gipsy task. Together with ClassDim, this parameter is needed to build a specific setbrowser, which support the specific needs of the gipsy task.
    * special, as well as ClassDim and gdsClass, is needed to build a specific setbrowser, but unlike ClassDim and gdsClass, it is not given by the source of the gipsy task. We need to add an special value to indicate the COPY task needs a special behaviour of the setbrowser.
    * fhd is the fits header dialog showed when the user clicks on "header button". This dialog shows the content of the header set.
    * InsetAxesInfo: a list, where each item corresponds to one axis of the set, containing a tuple with the name and the range of the axes
    * InsetAxesList: the list of the names of the set axes
    * InsetPath: the absolute path of the set (without the .image extension)
    * Keys: parameters needed by the gipsy task.
    * outsetPath: the absolute path of the set (without the .image extension)
    * qtlinks is a list of gipsy.qtlinks. These links are created when, for some reason, in execution time of the task, nhermes requires a new parameter for the running task. In this case, a new field is showed in the dialog. This field needs to be linked with the task parameters with a gipsy.qtlinks.
    * replaceFlag: This flag is set to true when the user presses the replace button. By pressing this button, the path of the OUTSET will be setted with the path of the INSET. This flag is needed to avoid asking if the user wants to overwrite the set (because obviously, he/she wants)
    * setBrowserDlg is an instance of the class setBrowser whose objective is to provide an interface to select the set and the box for the inset.
    * taskname contains the string with the name of the gipsy task
    """
    def __init__(self, parent,  filename, taskname=None, gdsClass=1,  classDim=0, special=None,  defaultPath="./"):
        super(view_task, self).__init__(parent)
        #self.setAttribute(Qt.WA_DeleteOnClose)
        self.setupUi(self)
        #self.parent=parent
        
        self.taskname=taskname
        self.qtlinks=[]
        self.keys=[]
        self.insetAxesInfo=None
        self.insetAxesList=None
        self.gdsClass=gdsClass
        self.classDim=classDim
        self.special=special
        self.replaceFlag=False
        
        self.initialSet(filename, defaultPath)
        
        
        self.insetButton.setAutoDefault(False)
        self.insetButton.setDefault(False)
        self.boxButton.setAutoDefault(False)
        self.boxButton.setDefault(False)
        self.headerButton.setAutoDefault(False)
        self.headerButton.setDefault(False)
        self.replaceButton.setAutoDefault(False)
        self.replaceButton.setDefault(False)
        self.browserButton.setAutoDefault(False)
        self.browserButton.setDefault(False)
        b=self.buttonBox.button(QDialogButtonBox.Help)
        b.setAutoDefault(False)
        b.setDefault(False)
        b=self.buttonBox.button(QDialogButtonBox.Apply)
        b.setAutoDefault(False)
        b.setDefault(False)
        b=self.buttonBox.button(QDialogButtonBox.Close)
        b.setAutoDefault(False)
        b.setDefault(False)
        
        
        if self.insetPath!=None:
            outsetPath=os.path.dirname(self.insetPath)
        else:
            outsetPath=os.path.abspath(".")
            
        self.outsetPathLabel.setText(outsetPath[-40:])
        self.outsetPathLabel.setToolTip(outsetPath)
        
        self.connect(self.browserButton, SIGNAL("clicked()"), self.browserOutset)
        self.connect(self.insetButton,  SIGNAL("clicked()"),self.browserInset )
        self.connect(self.boxButton,  SIGNAL("clicked()"),self.browserInset )
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.showHelp)
        self.connect(self.headerButton, SIGNAL("clicked()"), self.showHeaders)
        
        
                       
    def initialSet(self, filename, defaultPath):
        self.insetPath=filename
        if self.insetPath!=None:
        
            defaultPath=os.path.dirname(filename+".image")
            inset=gipsySet()
            inset.loadSetRO(self.insetPath)
            self.insetAxesInfo=inset.getInfoAxes()
            self.insetAxesList=inset.getAxes()
            #del inset
            inset.closeSet()
            
            (subsetText, boxText)=insetDefaultText(os.path.basename(self.insetPath), self.insetAxesInfo, self.gdsClass, self.classDim)
            self.insetLabel.setText(subsetText)
            self.insetLabel.setToolTip(self.insetPath)
            self.boxLabel.setText(boxText)
        
        subset=unicode(self.insetLabel.text()).strip()
        box=unicode(self.boxLabel.text()).strip()
        
        self.setbrowserDlg=setbrowser(self, self.insetPath, subset, box, self.gdsClass, self.classDim, self.special, defaultPath)
        
    def browserInset(self):

        self.setbrowserDlg.show()
        self.setbrowserDlg.raise_()
        self.setbrowserDlg.activateWindow()
        self.connect(self.setbrowserDlg, SIGNAL("accepted()"), self.getValues)
            
        
    def getValues(self):
       
        subset=unicode(self.setbrowserDlg.subsetLine.text())
        box=unicode(self.setbrowserDlg.boxLine.text())
        if subset !="": # I dont know why, but when the task window close, this method is called, and the subset/box are empty
            #Get info about inset
            self.insetPath=subset.split()[0]
            #If the user type the name of the set without the path,
            #the working directory path has to be added
            if "/" not in self.insetPath:
                self.insetPath=os.getcwd()+"/"+self.insetPath
            self.insetAxesInfo=self.setbrowserDlg.axesInfo
            self.insetAxesList=self.setbrowserDlg.axesList
            
            #Deleting the path string of the subset text
            setname=os.path.basename(self.insetPath)
            subset=setname+" "+" ".join(subset.split()[1:])
            self.insetLabel.setText(subset)
            self.insetLabel.setToolTip(self.insetPath)
            self.boxLabel.setText(box)
            
            #Clear possible errors about inset
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255, 255,255))
            p.setColor(QPalette.WindowText, QColor(64, 64,64))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
            self.status.setText("")
            self.errorMsg.setText("")
            
            self.emit(SIGNAL("insetChanged()"), self.insetPath)
            
       


    def browserOutset(self):
        dir=self.outsetPathLabel.toolTip()
        path= unicode(QFileDialog.getExistingDirectory(self,"Select the directory of the output SET", dir))
        if path!="":
            self.replaceFlag=False
            self.outsetPath=path
            self.outsetPathLabel.setText(self.outsetPath[-40:])
            self.outsetPathLabel.setToolTip(self.outsetPath)
    
    def replaceSet(self):
        if unicode(self.insetLabel.toolTip()) !="":
            self.replaceFlag=True
            path=unicode(self.insetLabel.toolTip())
            self.outsetPathLabel.setText(os.path.dirname(path)[-40:])
            self.outsetPathLabel.setToolTip(os.path.dirname(path))
            self.outsetNameLine.setText(os.path.basename(path))
            
    def addkey(self, key):
        #delete previus keys field
        
        while self.extra_panel_layout.count()>0:
            item=self.extra_panel_layout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        
                        w.deleteLater()
                        
                        
        #It is a new key/parameter 
        label = QLabel(key)
        lineedit = QLineEditFocus()
        self.qtlinks.append(gipsy.QtLink(key, lineedit, signal='returnPressed()', compare=False))
        layout = QHBoxLayout()
        layout.addWidget(label)
        layout.addWidget(lineedit)
        self.extra_panel_layout.addLayout(layout)
        
        note=QLabel("Press enter after insert value")
        font=QFont()
        font.setItalic(True)
        font.setPointSize(8)
        note.setFont(font)
        note.setAlignment(Qt.AlignRight)
        self.extra_panel_layout.addWidget(note)
        self.keys.append(key)
        
        lineedit.setFocus(Qt.OtherFocusReason)
        
    def showError(self, errorMsg):
        if "ABORT" not in errorMsg:
            #self.errorMsg.setText(errorMsg[:60])
            error_inlines=re.sub("(.{64})", "\\1\n", errorMsg, re.DOTALL)
            self.errorMsg.setText(error_inlines)
        
    def showStatus(self, status, wi=""):
        if "ABORT" not in status:
            status=status.replace("[abort]", "")
            #self.status.setText(status[:60])
            status_inlines=re.sub("(.{64})", "\\1\n", status, re.DOTALL)
            self.status.setText(status_inlines)
        if wi =="error":
            self.highlightError(status)
    
    def clearExtraLayout(self):
        self.status.setText("Done")
       
        #delete all extraLayout
        while self.extra_panel_layout.count()>0:
            item=self.extra_panel_layout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        
                        w.deleteLater()
    def checkOutset(self):
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname+".image"
        if (os.path.exists(outsetPath)) and not self.replaceFlag:
            reply=QMessageBox.question(self,  
                                                        "Set already exists",  
                                                        "Do you want overwrite the set?", 
                                                        QMessageBox.Yes|QMessageBox.No)
            if reply==QMessageBox.Yes:
                return True
            elif reply==QMessageBox.No:
                return False
        else:
            return True
            
    def showHelp(self, button):
        
        if self.taskname!=None:
            role=self.buttonBox.buttonRole(button)
            if (role==QDialogButtonBox.HelpRole):
                p=os.environ.get("gip_tsk")
                path=p+"/"+self.taskname+".dc1"
                if os.path.exists(path):
                    self.emit(SIGNAL("openHelpFile"), path)

    def showHeaders(self):
        if self.insetPath=="" or self.insetPath==None or not os.path.isfile(self.insetPath+".image"):
            return
         
        else:
            set=gipsySet()
            set.loadSetRO(self.insetPath)
            text=set.getPropertiesModeG()
            set.closeSet()
            self.fhd=fitsHeaderDlg(text)
            self.fhd.exec_()

class view_rfits(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        
        super(view_rfits, self).__init__(parent, filename, "rfits",  defaultPath=defaultPath)    
        super(view_rfits, self).setAttribute(Qt.WA_DeleteOnClose)    
        self.keys=["FITSFILE=", "OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        
        self.log=""
        self.gt=gipsyTask()
        self.tofinish=False
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.rfitsFrame = Ui_rfits()
        self.rfitsFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        
        self.setWindowTitle("OPEN FITS - RFITS")
        self.insetFrame.hide()
        self.outsetFrame.hide()

        self.rfitsFrame.fitsBrowseButton.setAutoDefault(False)
        self.rfitsFrame.fitsBrowseButton.setDefault(False)
        self.rfitsFrame.setBrowseButton.setAutoDefault(False)
        self.rfitsFrame.setBrowseButton.setDefault(False)
        if filename!=None:
            #This is because a ImageLoadFits samp messages has  been received
           
            self.rfitsFrame.labelMessage.setStyleSheet("QLabel { color: green }")
            self.rfitsFrame.labelMessage.setText ("An image fits file has been received from SAMP. \nSelect the setname and click on \"Apply\" to open it")
            self.rfitsFrame.fitsPathLine.setText(filename)
            #Build the setname
            basename=os.path.basename(filename)
            (setname, ext)=os.path.splitext(basename)
            self.rfitsFrame.setPathLine.setText(defaultPath+"/"+setname)
            
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.rfitsFrame.setBrowseButton, SIGNAL("clicked()"), self.setBrowse)
        self.connect(self.rfitsFrame.fitsBrowseButton, SIGNAL("clicked()"), self.fitsBrowse)
                
       

    def fitsBrowse(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getOpenFileName(self, "File open ", dir,FORMATS["FITS"]))
        if (fName==""):
            return
        self.rfitsFrame.fitsPathLine.setText(fName)
        (root, ext)=os.path.splitext(fName)
        self.rfitsFrame.setPathLine.setText(root)
    
    def setBrowse(self):
        p=self.rfitsFrame.setPathLine.text() if self.rfitsFrame.setPathLine.text()!="" else "."
        
        fName = unicode(QFileDialog.getSaveFileName(self, "File open ", p,FORMATS["SET"]))
        if (fName==""):
            return
        (root, ext)=os.path.splitext(fName)
        self.rfitsFrame.setPathLine.setText(root)
        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "fits path" in status:
            self.rfitsFrame.fitsPathLine.setPalette(p)
        if "set path" in status:
            self.rfitsFrame.setPathLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.rfitsFrame.fitsPathLine.setPalette(p)
        self.rfitsFrame.setPathLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def showStatus(self, status, wi=""):
        
        if "ABORT" not in status:
            self.status.setText(status[:60])
           
            if ("File" in status) and ("into" in status): #Building the set takes a lot time, so showing a message is neccesary
                self.errorMsg.setText("Building the set ...")
                while self.extra_panel_layout.count()>0:
                    item=self.extra_panel_layout.takeAt(0)
                    if item != None:
                        l=item.layout()
                        if l:
                            while l.count()>0:
                                item2=l.takeAt(0)
                                if item2 !=None:
                                    w2=item2.widget()
                                    if w2:
                                        
                                        w2.deleteLater()
                        else:
                            w=item.widget()
                            if w:
                                w.deleteLater()
                
            
        if wi =="error":
            self.highlightError(status)
        

    
    
    def finished(self, log):
       
        self.buttonBox.button(QDialogButtonBox.Apply).setEnabled(True)
        self.errorMsg.setText("")
        
        self.keys=[]
        self.tofinish=False
    
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()

        self.emit(SIGNAL("newSet"),self.setPath, self.setPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            self.fitsPath=unicode(self.rfitsFrame.fitsPathLine.text())
            self.setPath=unicode(self.rfitsFrame.setPathLine.text())
            if len(self.setPath)>79:
                self.showStatus("The length of the setname must be less than 80 characteres ")
                return
            if os.path.exists(self.setPath+".image"):
                reply=QMessageBox.question(self,  
                                                        "Overwrite file",  
                                                        "The set already exists. Do you want overwrite it?",  
                                                        QMessageBox.Yes|QMessageBox.No)
                if reply==QMessageBox.No:
                    return
                else:
                    try:
                        gs=gipsySet()
                        gs.deleteSetFromFile(self.setPath)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Delete SET Failed", QString(g.msj))
                        return
                    
            
            if self.fitsPath == "":
                self.showStatus("Give a fits path")
                return
            if self.setPath=="":
                self.showStatus("Give a set path")
                return
                
            self.taskcommand="RFITS  FITSFILE=%s; OUTSET=%s OKAY=Y"%(self.fitsPath,self.setPath)
                
            self.clearError()
            self.showStatus("Running")
            #Disable the apply button until the task finishes
            self.buttonBox.button(QDialogButtonBox.Apply).setEnabled(False)
            
            self.gt.launchTask(self.taskcommand, self)
                
                
class view_wfits(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_wfits, self).__init__(parent, filename, "wfits", defaultPath=defaultPath)    
        super(view_wfits, self).setAttribute(Qt.WA_DeleteOnClose)    
        self.keys=["INSET=",  "BOX=",  "BITPIX=",  "OKAY=","FITSFILE="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        self.setPath=filename
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.wfitsFrame = Ui_wfits()
        self.wfitsFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("SAVE SET AS A FITS - WFITS")
        self.insetFrame.hide()
        self.outsetFrame.hide()
        
        self.wfitsFrame.fitsPathLine.setText(filename+".fits")
        self.wfitsFrame.setPathLabel.setText(filename)
        
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.wfitsFrame.browseButton, SIGNAL("clicked()"), self.fitsBrowse)
                
       

    def fitsBrowse(self):
        location =unicode(self.wfitsFrame.fitsPathLine.text())
        
        fName =  unicode(QFileDialog.getSaveFileName(self, "Choose a file", location, ".fits"))
        if (fName==""):
            return
        self.wfitsFrame.fitsPathLine.setText(fName)
    
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
      
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            self.fitsPath=unicode(self.wfitsFrame.fitsPathLine.text())
            
            if self.fitsPath == "":
                self.showStatus("Give a fits file")
                return
                
            self.taskcommand="WFITS INSET=%s BOX= BITPIX= OKAY=Y FITSFILE=%s"%(self.setPath, self.fitsPath)
                
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)
            
            
class view_clip(view_task):
    def __init__(self,parent, filename,  defaultPath="./"):
        super(view_clip, self).__init__(parent,  filename, "clip", *TASKS_CLASS["CLIP"], defaultPath=defaultPath)    
        super(view_clip, self).setAttribute(Qt.WA_DeleteOnClose)    
        self.keys=["INSET=", "BOX=", "OUTSET=", "RANGE=", "CVAL=", "BVAL=", "OKAY="] #List of the keys/parameters of task, nowadays
        #self.keys=["INSET=", "BOX=", "OUTSET=",  "CVAL=", "BVAL=", "OKAY="]
        self.log=""
        self.gt=gipsyTask()
       
        #AddigipsyExceptionng the clip frame
        frame = QtGui.QFrame()
        self.clipFrame = Ui_clip()
        self.clipFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("CLIP")

        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.clipFrame.insideBlank, SIGNAL("stateChanged(int)"),  self.insideBlankChanged)
        self.connect(self.clipFrame.outsideBlank, SIGNAL("stateChanged(int)"), self.outsideBlankChanged)
        
       #Load the last values
        values=getTaskValues("clip")
        if values !=None:
            if values.has_key("RANGE"):
                minmax=values["RANGE"].split()
                if len(minmax)==2:
                    self.clipFrame.minLine.setText(minmax[0])
                    self.clipFrame.maxLine.setText(minmax[1])
                   
            if values.has_key("CVAL"):
                if values["CVAL"]=="":
                    self.clipFrame.insideBlank.setCheckState(Qt.Checked)
                else:
                    self.clipFrame.valueInside.setText(values["CVAL"])
            if values.has_key("BVAL"):
                if values["BVAL"]=="":
                    self.clipFrame.outsideBlank.setCheckState(Qt.Checked)
                else:
                    self.clipFrame.valueOutside.setText(values["BVAL"])
        else: #Show default values
            self.clipFrame.insideBlank.setCheckState(Qt.Checked)
            self.clipFrame.outsideBlank.setCheckState(Qt.Checked)

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "clipped" in status:
            self.clipFrame.valueInside.setPalette(p)
        if "outside" in status:
            self.clipFrame.valueOutside.setPalette(p)
        if "range" in status:
            self.clipFrame.maxLine.setPalette(p)
            self.clipFrame.minLine.setPalette(p)
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.clipFrame.valueInside.setPalette(p)
        self.clipFrame.valueOutside.setPalette(p)
        self.clipFrame.maxLine.setPalette(p)
        self.clipFrame.minLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        #Delete the internal tables of the outset
        try:
            output=clearSetTables(outsetPath)
            log=log+output
        except gipsyException as g:
           QMessageBox.warning(self, "Gipsy Exception", unicode(g))
        
       
        self.emit(SIGNAL("taskExecuted"), log)
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                minvalue=unicode(self.clipFrame.minLine.text())
                maxvalue=unicode(self.clipFrame.maxLine.text())
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                
                self.taskcommand='CLIP INSET=%s BOX=%s OUTSET=%s RANGE=%s %s OKAY=Y'%(inset, box, outsetPath,minvalue, maxvalue)
                #self.taskcommand='CLIP INSET=%s BOX=%s  OUTSET=%s OKAY=Y'%(inset, box,outsetPath)
                
                if self.clipFrame.insideBlank.checkState() == Qt.Checked:
                    cval=""
                else:
                    cval=unicode(self.clipFrame.valueInside.text()).strip()
                self.taskcommand=self.taskcommand+" CVAL=%s"%(cval)
                if self.clipFrame.outsideBlank.checkState() == Qt.Checked:
                    bval=""
                else:
                    bval=unicode(self.clipFrame.valueOutside.text()).strip()
                self.taskcommand=self.taskcommand+" BVAL=%s"%(bval)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)
    

    def insideBlankChanged(self, status):
        if status==Qt.Checked:
            self.clipFrame.valueInside.setEnabled(False)
        else:
            self.clipFrame.valueInside.setEnabled(True)

    def outsideBlankChanged(self, status):
        if status==Qt.Checked:
            self.clipFrame.valueOutside.setEnabled(False)
        else:
            self.clipFrame.valueOutside.setEnabled(True)
            
class view_combin(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_combin, self).__init__(parent,  filename, "combin",  *TASKS_CLASS["COMBIN"], defaultPath=defaultPath)
        
        self.parent=parent
        self.keys=["RESULT01=", "SET01=", "BOX01=", "SET02=", "BOX02=", "SET03=", "BOX03=",  "SETOUT01=", "OPTION=", "RESULT02=", "OKAY="] #List of the keys/parameters of task, nowadays

        self.log=""
        self.outsetPath=""
        self.insetLabelList=[]
        self.boxLabelList=[]
        self.insetPathList=[]
        self.setbrowserDlgList=[]
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.combinFrame = Ui_combin()
        self.combinFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("COMBIN")
        self.insetFrame.hide() 
        self.replaceButton.hide()
        
        #Get the current set opened
        self.loadSets()
        
        self.connect(self.parent,  SIGNAL("openSET"), self.loadSets)
        
        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.combinFrame.addSetButton, SIGNAL("clicked()"), self.addSet )
        self.connect(self.combinFrame.clearButton, SIGNAL("clicked()"), self.clearCombinSets)
        
        
        
       #Load the last values
        values=getTaskValues("combin")
        if values !=None:
            if values.has_key("RESULT01"):
                self.combinFrame.operationLine.setText(values["RESULT01"])
            if values.has_key("OPTION"):
                try:
                    value=int(values["OPTION"])
                except:
                    pass
                else:
                    if value==0:
                        self.combinFrame.operationBox.setCurrentIndex(self.combinFrame.operationBox.findText("Inside"))
                        self.combinFrame.complementaryBox.setCurrentIndex(self.combinFrame.complementaryBox.findText("Blanks"))
                    elif value ==1:
                        self.combinFrame.operationBox.setCurrentIndex(self.combinFrame.operationBox.findText("Inside"))
                        self.combinFrame.complementaryBox.setCurrentIndex(self.combinFrame.complementaryBox.findText("Transfers"))
                    elif value==2:
                        p=QPalette()
                        p.setColor(QPalette.Base, QColor(255, 0,0))
                        self.combinFrame.operationLine.setPalette(p)
                        self.combinFrame.operationBox.setCurrentIndex(self.combinFrame.operationBox.findText("Outside"))
                        self.combinFrame.complementaryBox.setCurrentIndex(self.combinFrame.complementaryBox.findText("Blanks"))
                    elif value==3:
                        self.combinFrame.operationBox.setCurrentIndex(self.combinFrame.operationBox.findText("Outside"))
                        self.combinFrame.complementaryBox.setCurrentIndex(self.combinFrame.complementaryBox.findText("Transfers"))
 
    def loadSets(self):
        #Get the current list of set in the session
        filenames=self.parent.session.listOfSet()
                
        self.combinFrame.setsBox.clear()
        if len(filenames)>0:
            for name in filenames:
                self.combinFrame.setsBox.addItem(name)
                
    def addSet(self):

        filename=unicode(self.combinFrame.setsBox.currentText())
        if filename.strip() =="":
            return
        shortname=os.path.basename(filename)
        shortname=shortname.split(".")[0]
        
        tmp=gipsySet()
        tmp.loadSetRO(filename)
        axesInfo=tmp.getInfoAxes()
        axesList=tmp.getAxes()
        (subsetText, boxText)=insetDefaultText(os.path.basename(filename), axesInfo, *TASKS_CLASS["COMBIN"])
        
        
        
        tmp_insetLabel=QLabel(subsetText)
        tmp_insetLabel.setToolTip(filename)
        self.insetLabelList.append(tmp_insetLabel)

        tmp_boxLabel=QLabel(boxText)
        self.boxLabelList.append(tmp_boxLabel)
        
        self.setbrowserDlgList.append(setbrowser(self, filename, subsetText, boxText, *TASKS_CLASS["COMBIN"]))

        frame=QGroupBox()
        gridLayout = QtGui.QGridLayout(frame)
        
        self.combinFrame.combinLayout.addWidget(frame)
       
        current=len(self.insetLabelList)-1
        if current==0:
            self.replaceButton.show()
        else:
            self.replaceButton.hide()
        frame.setTitle("$"+unicode(current+1))
        insetButton=QPushButton("Inset")
        curried=functools.partial(self.insetBrowser, current)
        gridLayout.addWidget(insetButton, 0, 0)
        boxButton=QPushButton("Box")
        gridLayout.addWidget(boxButton, 1, 0)
        self.connect(insetButton,  SIGNAL("clicked()"), curried)
        self.connect(boxButton,  SIGNAL("clicked()"), curried)
        
        gridLayout.addWidget( tmp_insetLabel, 0, 1)
        gridLayout.addWidget(tmp_boxLabel, 1, 1)
        headerButton=QPushButton("Header")
        gridLayout.addWidget(headerButton, 0, 2)
        
        
        if not self.combinFrame.clearButton.isEnabled():
            self.combinFrame.clearButton.setEnabled(True)
        
        
    def insetBrowser(self, index):

        self.setbrowserDlgList[index].show()
        self.setbrowserDlgList[index].raise_()
        self.setbrowserDlgList[index].activateWindow()
        curried=functools.partial(self.getValuesInset,  self.setbrowserDlgList[index], index)
        self.connect (self.setbrowserDlgList[index], SIGNAL("accepted()"), curried)
        
    def getValuesInset(self, Dlg, index):
        subset=unicode(Dlg.subsetLine.text())
        box=unicode(Dlg.boxLine.text())
        filename=unicode(Dlg.setPath)
        #Deleting the path string of the subset text
        setname=os.path.basename(subset.split()[0])
        subset=setname+" "+" ".join(subset.split()[1:])
        
        if len(self.insetLabelList) > index:
            #It seems when combin interface is closed, 
            #the setbrowser interface is accepted,
            #so this method is ejectutued, but maybe the content of 
            #this lists has been deleted previusly.
            self.insetLabelList[index].setText(subset)
            self.insetLabelList[index].setToolTip(filename)
            self.boxLabelList[index].setText(box)
            
            
    def clearCombinSets(self):
        while self.combinFrame.combinLayout.count()>0:
            item=self.combinFrame.combinLayout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        
                        w.deleteLater()
        
        del self.insetLabelList[:]
        del self.insetPathList[:]
        del self.boxLabelList[:]
       
        self.combinFrame.clearButton.setEnabled(False)

   

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "parameter" in status:
            p=QPalette()
            p.setColor(QPalette.Foreground, QColor(255, 0,0))
            self.combinFrame.combinSets.setPalette(p)
            
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255, 0,0))
            self.combinFrame.operationLine.setPalette(p)
            
        if "output" in status:
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255, 0,0))
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "expression" in status:
            p=QPalette()
            p.setColor(QPalette.Base, QColor(255, 0,0))
            self.combinFrame.operationLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        
        self.outsetPathLabel.setPalette(p)    
        self.outsetNameLine.setPalette(p)
        self.combinFrame.operationLine.setPalette(p)    
        p.setColor(QPalette.Foreground, QColor(0, 0,0))
        self.combinFrame.combinSets.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        if len(self.insetLabelList) >0:
            fatherpath=self.insetLabelList[0].toolTip()
            self.emit(SIGNAL("newSet"),unicode(fatherpath), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.checkOutset():
                #Componing SETXX y BOXX
                input=""
                
                for index, label in enumerate(self.insetLabelList):
                    setname=unicode(label.toolTip())
                    setparam = " ".join(unicode(label.text()).split()[1:])
                    setname=setname + " "+setparam
                    boxtext=unicode(self.boxLabelList[index].text())
                    
                    if index+1<10:
                        i=unicode(index+1)
                        input=input+" "+"SET0%s=%s BOX0%s=%s "%(i, setname, i, boxtext) 
                    else:
                        i=unicode(index+1)
                        input=input+" "+"SET%s=%s BOX%s=%s "%(i, setname, i, boxtext) 

                    
                self.outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+unicode(self.outsetNameLine.text())
                operation=unicode(self.combinFrame.operationLine.text())
                operationBox=self.combinFrame.operationBox.currentText()
                complementaryBox=self.combinFrame.complementaryBox.currentText()
                if operationBox == "Inside":
                    if complementaryBox =="Blanks":
                        option=0
                    else:
                        option=1
                else:
                    if complementaryBox =="Blanks":
                        option=2
                    else:
                        option=3
                        
                self.taskcommand='COMBIN %s RESULT01=%s OPTION=%s SETOUT01=%s OKAY=Y RESULT02= '%(input, operation, option,  self.outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)



class view_copy(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_copy, self).__init__(parent,filename,"copy",  *TASKS_CLASS["COPY"], defaultPath=defaultPath)
        super(view_copy, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=", "OUTSET=", "MAKEBLANK=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.copyFrame = Ui_copy()
        self.copyFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("COPY")

        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
       
        
       #Load the last values
        values=getTaskValues("copy")
        if values !=None:
            if values.has_key("MAKEBLANK"):
                value=values["MAKEBLANK"]
                if value.upper().strip() =="YES":
                    self.copyFrame.checkBlank.setCheckState(Qt.Checked)
                else:
                    self.copyFrame.checkBlank.setCheckState(Qt.Unchecked)
        

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status or "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
       
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)
        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                if self.copyFrame.checkBlank.checkState() == Qt.Checked:
                    blank="YES"
                else:
                    blank="NO"   
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='COPY INSET=%s BOX=%s OUTSET=%s MAKEBLANK=%s OKAY=Y'%(inset, box,  outsetPath, blank)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)



class view_diminish(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_diminish, self).__init__(parent,filename,"diminish", *TASKS_CLASS["DIMINISH"], defaultPath=defaultPath)
        super(view_diminish, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=", "OUTSET=", "MAKEBLANK=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        
        self.setWindowTitle("DIMINISH")
        self.replaceButton.hide()
        
        #self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
       
        
       #Load the last values?
        
        

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status or "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
       
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text()).split()[0]
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)
        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            
            setname=unicode(self.outsetNameLine.text())
            if setname == "":
                p=QPalette()
                p.setColor(QPalette.Base, QColor(255, 0,0))
                self.outsetPathLabel.setPalette(p)
                self.outsetNameLine.setPalette(p)
                return
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
            box=unicode(self.boxLabel.text())
            self.taskcommand='DIMINISH INSET=%s BOX=%s OUTSET=%s MAKEBLANK= OKAY=Y'%(inset, box,  outsetPath)
            
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)



class view_decim(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_decim, self).__init__(parent, filename,"decim",   *TASKS_CLASS["DECIM"], defaultPath=defaultPath)
        #self.inset and self.insetPath are handled by parent class, view_task
        super(view_decim, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "DECIM=", "SHIFT=", "OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        self.parent=parent
        
        #Adding the clip frame
        self.decimFrame = QtGui.QFrame()
        self.dimensionLayout = QtGui.QGridLayout(self.decimFrame)
        self.horizontalLayout.addWidget(self.decimFrame)
        
        self.setWindowTitle("DECIM")
        self.showRelatedData()

        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        
        #LOAD LAST VALUES?
        

    def clearRelatedData(self):
        
        #delete all extraLayout
        while self.dimensionLayout.count()>0:
            item=self.dimensionLayout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        
                        w.deleteLater()

    def showRelatedData(self):
        
        if hasattr(self, 'insetPath'):
           
            if self.insetPath!=None:
                
                self.clearRelatedData()
                
                subsetText=unicode(self.insetLabel.text())
                boxText=unicode(self.boxLabel.text())            
               # self.dimensions=self.inset.getAxes()
                self.decim=[]
                self.shift=[]
                for i in range(len(self.insetAxesList)):
                    axename=self.insetAxesList[i]
                    if axename not in subsetText.split():
                        self.dimensionLayout.addWidget(QLabel(unicode(axename)), i, 0)
                        self.dimensionLayout.addWidget(QLabel("DECIM"), i, 1)
                        editlineDec=QLineEdit()
                        self.decim.append(editlineDec)
                        editlineDec.setText("1")
                        self.dimensionLayout.addWidget(editlineDec, i, 2)
                        self.dimensionLayout.addWidget(QLabel("SHIFT"), i, 3)
                        editlineShi=QLineEdit()
                        self.shift.append(editlineShi)
                        self.dimensionLayout.addWidget(editlineShi, i, 4)
                        editlineShi.setText("0")


    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status or "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "decimation" in status:
            for label in self.decim:
                label.setPalette(p)
        if status is "":
            for label in self.shift:
                label.setPalette(p)
                
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        for label in self.decim:
            label.setPalette(p)
        for label in self.shift:
            label.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)
       
        if (role==QDialogButtonBox.ApplyRole):
            
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
                
            if self.checkOutset():
                decimValue=""
                for editline in self.decim:
                    value=unicode(editline.text())
                    if value.strip()=="":
                        editline.setText("1")
                        value="1"
                    decimValue=decimValue+" "+value
                
                shiftValue=""
                for editline in self.shift:
                    value=unicode(editline.text())
                    if value.strip()=="":
                        editline.setText("0")
                        value="0"
                    shiftValue=shiftValue+" "+value
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                    
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='DECIM INSET=%s BOX=%s DECIM=%s SHIFT=%s OUTSET=%s OKAY=Y'%(inset, box, decimValue.strip(), shiftValue.strip(), outsetPath)

                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)


class view_editset(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_editset, self).__init__(parent,  filename,  "editset", *TASKS_CLASS["EDITSET"], defaultPath=defaultPath)
        super(view_editset, self).setAttribute(Qt.WA_DeleteOnClose)    
        
        self.keys=["INSET=", "BOX=",  "EXPRESSION=", "ANOTHER=",  "NEWVAL", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.editsetFrame = Ui_editset()
        self.editsetFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.outsetFrame.hide()
        
        self.setWindowTitle("EDITSET")

        
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
       #Load the last values
        values=getTaskValues("editset")
        if values !=None:
            if values.has_key("EXPRESSION"):
                self.editsetFrame.expressionLine.setText(values["EXPRESSION"])
                

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
      
        if "expression" in status:
           self.editsetFrame.expressionLine.setPalette(p)
            
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.editsetFrame.expressionLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        outsetPath=unicode(self.insetLabel.toolTip())
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            expression=unicode(self.editsetFrame.expressionLine.text()).strip()
            if expression=="":
                self.showStatus("An expression is needed", wi="error")
                return
            inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
            box=unicode(self.boxLabel.text())
            self.taskcommand='EDITSET INSET=%s BOX=%s EXPRESSION=%s ANOTHER= NEWVAL= OKAY=Y'%(inset, box, expression)
            
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)


class view_extend(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_extend, self).__init__(parent,filename, "extend",    *TASKS_CLASS["EXTEND"], defaultPath=defaultPath)
        super(view_extend, self).setAttribute(Qt.WA_DeleteOnClose)
        self.n_axes=0
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.extendFrame = Ui_extend()
        self.extendFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("EXTEND")
        
        if self.insetAxesList != None:
            self.n_axes=len(self.insetAxesList)+1
        else:
            self.n_axes=0
    
        self.keys=["INSET=", "BOX=","OKAY=","CTYPE"+unicode(self.n_axes)+"=","NAXIS"+unicode(self.n_axes)+"=", "CRPIX"+unicode(self.n_axes)+"=", \
                        "CUNIT"+unicode(self.n_axes)+"=", "CRVAL"+unicode(self.n_axes)+"=", "CDELT"+unicode(self.n_axes)+"=", \
                        "CROTA"+unicode(self.n_axes)+"=", "DUNIT"+unicode(self.n_axes)+"=", "DRVAL"+unicode(self.n_axes)+"=", "FREQ0=","OUTSET="] #List of the keys/parameters of task, nowadays
 
        #Updating the labels of the parameters
        self.extendFrame.ctypeLabel.setText("CTYPE%s"%self.n_axes)
        self.extendFrame.naxisLabel.setText("NAXIS%s"%self.n_axes)
        self.extendFrame.crpixLabel.setText("CRPIX%s"%self.n_axes)
        self.extendFrame.cunitLabel.setText("CUNIT%s"%self.n_axes)
        self.extendFrame.crvalLabel.setText("CRVAL%s"%self.n_axes)
        self.extendFrame.cdeltLabel.setText("CDELT%s"%self.n_axes)
        self.extendFrame.crotaLabel.setText("CROTA%s"%self.n_axes)
        self.extendFrame.dunitLabel.setText("DUNIT%s"%self.n_axes)
        self.extendFrame.drvalLabel.setText("DRVAL%s"%self.n_axes)
        
        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.extendFrame.ctypeBox,   SIGNAL("currentIndexChanged(QString)"), self.updateCunit)
        
        for key,  val in GIPSY_COORDS.iteritems():
            self.extendFrame.ctypeBox.addItem(QString(key))
            
       #Load the last values
        values=getTaskValues("extend")
        if values !=None:
            for key, value in values.iteritems():
                if key.find("CTYPE") !=-1:
                    self.extendFrame.ctypeBox.setCurrentIndex(self.extendFrame.ctypeBox.findText(QString(value.strip())))
                if key.find("NAXIS") !=-1:
                    self.extendFrame.naxisLine.setText(value)
                if key.find("CRPIX") !=-1:
                    self.extendFrame.crpixLine.setText(value)
                if key.find("CUNIT") != -1:
                    index=self.extendFrame.cunitBox.findText(QString(value.strip()))
                    if index != -1:
                        self.extendFrame.cunitBox.setCurrentIndex(index)
                if key.find("CRVAL") != -1:
                    self.extendFrame.crvalLine.setText(value.strip())
                if key.find("CDELT") !=-1:
                    self.extendFrame.cdeltLine.setText(value.strip())
                if key.find("CROTA")!=-1:
                    self.extendFrame.crotaLine.setText(value.strip())
                if key.find("DUNIT")!=-1:
                    self.extendFrame.dunitLine.setText(value.strip())
                if key.find("DRVAL")!=-1:
                    self.extendFrame.drvalLine.setText(value.strip())
                if key.find("FREQ0")!=-1:
                    self.extendFrame.freqLine.setText(value.strip())


    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "length" in status:
            self.extendFrame.naxisLine.setPalette(p)
        if "reference" in status:
            self.extendFrame.crpixLine.setPalette(p)
        if "Physical" in status:
            self.extendFrame.cunitBox.setPalette(p)
        if "value" in status:
            self.extendFrame.crvalLine.setPalette(p)
        if "grid" in status:
            self.extendFrame.cdeltLine.setPalette(p)
        if "rotation" in status:
            self.extendFrame.crotaLine.setPalette(p)
        if "Secondary units" in status:
            self.extendFrame.dunitLine.setPalette(p)
        if "Secondary reference" in status:
            self.extendFrame.drvalLine.setPalette(p)
        if "frequency" in status:
            self.extendFrame.freqLine.setPalette(p)
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.extendFrame.naxisLine.setPalette(p)
        self.extendFrame.crpixLine.setPalette(p)
        self.extendFrame.cunitBox.setPalette(p)
        self.extendFrame.crvalLine.setPalette(p)
        self.extendFrame.cdeltLine.setPalette(p)
        self.extendFrame.crotaLine.setPalette(p)
        self.extendFrame.dunitLine.setPalette(p)
        self.extendFrame.drvalLine.setPalette(p)
        self.extendFrame.freqLine.setPalette(p)
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        if self.insetPath == None:
            return
        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                ctype=self.extendFrame.ctypeBox.currentText()
                naxis=self.extendFrame.naxisLine.text()
                crpix=self.extendFrame.crpixLine.text()
                cunit=self.extendFrame.cunitBox.currentText()
                crval=self.extendFrame.crvalLine.text()
                cdelt=self.extendFrame.cdeltLine.text()
                crota=self.extendFrame.crotaLine.text()
                dunit=self.extendFrame.dunitLine.text()
                drval=self.extendFrame.drvalLine.text()
                freq=self.extendFrame.freqLine.text()
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                if self.insetAxesList != None:
                    self.n_axes=len(self.insetAxesList)+1
                else:
                    self.n_axes=0
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='EXTEND INSET=%s BOX=%s OKAY=Y CTYPE%s=%s NAXIS%s=%s CRPIX%s=%s CUNIT%s=%s CRVAL%s=%s CDELT%s=%s CROTA%s=%s DUNIT%s=%s DRVAL%s=%s FREQ0=%s OUTSET=%s  CTYPE%s='\
                                                %(inset, box,self.n_axes, ctype,  self.n_axes, naxis,  self.n_axes,crpix, \
                                                  self.n_axes, cunit, self.n_axes,crval,  self.n_axes,cdelt,  self.n_axes,crota,  \
                                                  self.n_axes,dunit , self.n_axes, drval,  freq,  outsetPath, self.n_axes+1)

                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

    def updateCunit(self, unitName):
        #type=unicode(self.extendFrame.ctypeBox.currentText())
        type=unicode(unitName)
        
        self.extendFrame.cunitBox.clear()
        if type != "":
            units=GIPSY_COORDS[type]
            for unit in units:
                self.extendFrame.cunitBox.addItem(QString(unit))
        
        if unicode(type) =="FREQ":
            self.extendFrame.freqLine.setEnabled(True)
            self.extendFrame.dunitLine.setEnabled(True)
            self.extendFrame.drvalLine.setEnabled(True)
        else:
            self.extendFrame.freqLine.setEnabled(False)
            self.extendFrame.dunitLine.setEnabled(False)
            self.extendFrame.drvalLine.setEnabled(False)
        
        if unicode(type) =="DEC":
            self.extendFrame.crotaLine.setEnabled(True)
        else:
            self.extendFrame.crotaLine.setEnabled(False)
            
class view_meanSum(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_meanSum, self).__init__(parent, filename, "mean",   *TASKS_CLASS["MEAN"], defaultPath=defaultPath)
        super(view_meanSum, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=", "OUTSET=", "WEIGHTS=", "CUT=",  "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.meanSumFrame = Ui_meanSum()
        self.meanSumFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("MEAN / SUM")
        self.replaceButton.hide()


        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        #First the default params
        self.meanSumFrame.weightLine.setText("1.0")
       #LOAD LAST VALUES?
#        values=getTaskValues("mean")
#        if values !=None:
#            if values.has_key("WEIGHTS"):
#                self.meanSumFrame.weightLine.setText(values["WEIGHTS"])
#            else:
#                self.meanSumFrame.weightLine.setText("1.0")


    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "output" in status or "directory" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "subset" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
       
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                task=unicode(self.meanSumFrame.comboOperation.currentText()).upper()
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                self.outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                weight=unicode(self.meanSumFrame.weightLine.text())
                self.taskcommand='%s INSET=%s BOX=%s WEIGHTS=%s CUT= OUTSET=%s OKAY=Y'%(task, inset, box,weight,  self.outsetPath)

                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

class view_minbox(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_minbox, self).__init__(parent, filename,"minbox",    *TASKS_CLASS["MINBOX"], defaultPath=defaultPath)
        super(view_minbox, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=", "OUTSET=", "MINBOX=","MARGIN=", "SQUARE=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.outsetPath=""
        self.gt=gipsyTask()
        
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.minboxFrame = Ui_minbox()
        self.minboxFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("MINBOX")

        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        #First the default params
        self.minboxFrame.marginLine.setText("0")
       #Load the last values
        values=getTaskValues("minbox")
        if values !=None:
            if values.has_key("MARGIN"):
                self.minboxFrame.marginLine.setText(values["MARGIN"])
                   
            if values.has_key("SQUARE"):
                if values["SQUARE"]=="Y":
                    self.minboxFrame.squareCheck.setCheckState(Qt.Checked)
                else:
                    self.minboxFrame.squareCheck.setCheckState(Qt.Unchecked)        


    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "margin" in status:
            self.minboxFrame.marginLine.setPalette(p)
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
 
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        
        self.minboxFrame.marginLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        self.showResults()
        setname=unicode(self.outsetNameLine.text())
        if setname!="":
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        else: #Emiting this signal we make sure the set is reloaded, so we can see the new mbox table 
            self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), self.insetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                margin=unicode(self.minboxFrame.marginLine.text())
                if self.minboxFrame.squareCheck.checkState() == Qt.Checked:
                    square="Y"
                else:
                    square="N"
                
                setname=unicode(self.outsetNameLine.text())
                self.outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                if setname!="":
                    self.taskcommand='MINBOX INSET=%s BOX=%s OUTSET=%s MINBOX= MARGIN=%s SQUARE=%s OKAY=Y'%(inset, box, self.outsetPath,margin, square)
                else:
                    self.taskcommand='MINBOX INSET=%s BOX=%s OUTSET= MINBOX= MARGIN=%s SQUARE=%s OKAY=Y'%(inset, box,margin, square)

                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)
    

    def showResults(self):
        #Clear previus results
        while self.minboxFrame.resultLayout.count()>0:
            item=self.minboxFrame.resultLayout.takeAt(0)
            if item != None:
                l=item.layout()
                if l:
                    while l.count()>0:
                        item2=l.takeAt(0)
                        if item2 !=None:
                            w2=item2.widget()
                            if w2:
                                
                                w2.deleteLater()
                else:
                    w=item.widget()
                    if w:
                        w.deleteLater()
        
        #Read the data from the table
        inset=gipsySet()
        inset.loadSetRO(self.insetPath)
        tablesInfo=inset.getTablesInfo()
        
        row=None
        for info in tablesInfo:
            if info[1]=="MBOX":
                row=inset.getTableData(info[0])
        #del inset
        inset.closeSet()
        
        if row !=None:
            data=row["MINBOX"][0]
            #Show the data
            data=data.split()
            ini=0
            end=2
            while (end <= len(data)):
                labelData=QLabel(" ".join(data[ini:end]))
                self.minboxFrame.resultLayout.addWidget(labelData)
                ini+=2
                end +=2
        else:
            self.minboxFrame.resultLayout.addWidget(QLabel("All pixels in the input were blank"))
            self.minboxFrame.resultLayout.addWidget(QLabel("Could not find a box for COPY!"))
        
#        if not os.path.exists(self.outsetPath+".image"):
#            self.minboxFrame.resultLayout.addWidget(QLabel("All pixels in the input were blank"))
#            self.minboxFrame.resultLayout.addWidget(QLabel("Could not find a box for COPY!"))
            

class view_regrid(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_regrid, self).__init__(parent, filename , "regrid",  *TASKS_CLASS["REGRID"], defaultPath=defaultPath)
        super(view_regrid, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=","AXNAME=", "CDELT=", "IPOL=","WIDTH=","OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.regridFrame = Ui_regrid()
        self.regridFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("REGRID")
        self.showRelatedData()
        
        self.connect(self.regridFrame.axnameBox, SIGNAL("currentIndexChanged(QString)"), self.changeUnit ) 
        self.connect(self.regridFrame.ipolBox,  SIGNAL("currentIndexChanged(QString)"),  self.changeIpol)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
       
        #set initial parameter
        self.regridFrame.widthLine.setEnabled(False)
            
        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        
       #Load the last values
        values=getTaskValues("regrid")
        if values !=None:
            if values.has_key("CDELT"):
                self.regridFrame.cdeltLine.setText(values["CDELT"])
            if values.has_key("IPOL"):
                try:
                    index=int(values["IPOL"])-1
                except:
                    index=0
                self.regridFrame.ipolBox.setCurrentIndex(index)
            if values.has_key("WIDTH"):
                self.regridFrame.widthLine.setText(values["WIDTH"])
 
    def showRelatedData(self):
        #Getting the list axis and the unit
        if self.insetAxesList != None:
            set=gipsySet()
            set.loadSetRO(self.insetPath)
            self.clearRelatedData()
            self.decim=[]
            self.shift=[]
            self.units=[]
            for i in range(len(self.insetAxesList)):
                d=self.insetAxesList[i]
                self.regridFrame.axnameBox.addItem(d)
                key="CUNIT"+unicode(i+1)
                try:
                    unit=set.getHeaderValue(key)
                except gipsyException as g:
                    QMessageBox.warning(self, "Reading UNITS failed", QString(g.msj))
                    unit="UNIT"
                except:
                    QMessageBox.warning(self, "Error reading", QString("Error reading %s"%key))
                    unit="UNIT"
                self.units.append(unit)
            #del set
            set.closeSet()
            self.regridFrame.unitLabel.setText(QString(self.units[0]))
    def clearRelatedData(self):
        self.regridFrame.axnameBox.clear()
        self.units=[]
        

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "width" in status:
            self.regridFrame.widthLine.setPalette(p)
        if "spac." in status:
            self.regridFrame.cdeltLine.setPalette(p)
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
            
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.regridFrame.widthLine.setPalette(p)
        self.regridFrame.cdeltLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                axname=unicode(self.regridFrame.axnameBox.currentText())
                cdelt=unicode(self.regridFrame.cdeltLine.text())
                ipol=self.regridFrame.ipolBox.currentIndex()+1
                if self.regridFrame.widthLine.isEnabled():
                    width=unicode(self.regridFrame.widthLine.text())
                else:
                    width=""
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                
                self.taskcommand='REGRID INSET=%s BOX=%s AXNAME=%s CDELT=%s IPOL=%s WIDTH=%s OUTSET=%s OKAY=Y'%(inset, box, axname, cdelt, unicode(ipol), width, outsetPath)            
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)
            
    def changeUnit(self, text):
        text=unicode(text)
        if text in self.insetAxesList:
            try:
                i=int(self.insetAxesList.index(text))
            except:
                return
            if len(self.units)>i:
                self.regridFrame.unitLabel.setText(QString(self.units[i]))
    
    def changeIpol(self, ipolname):
        
        if unicode(ipolname)=="Sinc":
            self.regridFrame.widthLine.setEnabled(True)
        else:
            self.regridFrame.widthLine.setEnabled(False)

class view_snapper(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_snapper, self).__init__(parent, filename, "snapper",   *TASKS_CLASS["SNAPPER"], defaultPath=defaultPath)
        super(view_snapper, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=","REPSIZE=", "OLDVAL=", "NEWVAL=","OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.snapperFrame = Ui_snapper()
        self.snapperFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("SNAPPER")


        curried = functools.partial(self.checkChanged,self.snapperFrame.newvalCheck, self.snapperFrame.newvalLine)
        self.connect(self.snapperFrame.newvalCheck,SIGNAL("stateChanged(int)"),  curried)
        curried = functools.partial(self.checkChanged,self.snapperFrame.oldvalCheck, self.snapperFrame.oldvalLine)
        self.connect(self.snapperFrame.oldvalCheck,SIGNAL("stateChanged(int)"),  curried)
        
        self.connect(self.replaceButton,  SIGNAL("clicked()"),  self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        
       #Load the last values
        values=getTaskValues("snapper")
        if values !=None:
            if values.has_key("REPSIZE"):
                repsize=values["REPSIZE"].split()
                if len(repsize)==2:
                    self.snapperFrame.repsizexLine.setText(repsize[0])
                    self.snapperFrame.repsizeyLine.setText(repsize[1])
            if values.has_key("OLDVAL"):
                if values["OLDVAL"] !="":
                    self.snapperFrame.oldvalLine.setText(values["OLDVAL"])
                    self.snapperFrame.oldvalCheck.setCheckState(Qt.Unchecked)
                else:
                    self.snapperFrame.oldvalCheck.setCheckState(Qt.Checked)
            if values.has_key("NEWVAL"):
                if values["NEWVAL"]!="":
                    self.snapperFrame.newvalCheck.setCheckState(Qt.Unchecked)
                    self.snapperFrame.newvalLine.setText(values["NEWVAL"])
                else:
                     self.snapperFrame.newvalCheck.setCheckState(Qt.Checked)

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "box" in status:
            self.snapperFrame.repsizexLine.setPalette(p)
            self.snapperFrame.repsizeyLine.setPalette(p)
        if "map" in status:
            self.snapperFrame.oldvalLine.setPalette(p)
        if "new" in status:
            self.snapperFrame.newvalLine.setPalette(p)
        if "subsets)" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.snapperFrame.repsizexLine.setPalette(p)
        self.snapperFrame.repsizeyLine.setPalette(p)
        self.snapperFrame.oldvalLine.setPalette(p)
        self.snapperFrame.newvalLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                repsize=unicode(self.snapperFrame.repsizexLine.text())+" "+unicode(self.snapperFrame.repsizeyLine.text())
                if self.snapperFrame.oldvalCheck.isChecked():
                    oldval=""
                else:
                    oldval=unicode(self.snapperFrame.oldvalLine.text())
                if self.snapperFrame.newvalCheck.isChecked():
                    newval=""
                else:
                    newval=unicode(self.snapperFrame.newvalLine.text())
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='SNAPPER INSET=%s BOX=%s OLDVAL=%s NEWVAL=%s REPSIZE=%s OUTSET=%s OKAY=Y'\
                                                %(inset, box, oldval, newval,  repsize,  outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)
            
    def checkChanged(self, checkbox, line):
        if checkbox.isChecked():
            line.setEnabled(False)
        else:
            line.setEnabled(True)


class view_transform(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_transform, self).__init__(parent,filename,  "transform", *TASKS_CLASS["TRANSFORM"], defaultPath=defaultPath)
        super(view_transform, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=","POS=", "OKAY=","OPERATION=", "TRANSLXY=","ANGLE=","SCALEXY=", "XSHEAR=", "YSHEAR=","OUTSET="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.transformFrame = Ui_transform()
        self.transformFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("TRANSFORM")

        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.transformFrame.operationBox, SIGNAL("currentIndexChanged(int)"), self.enableParameters)
        
        #Set initial parameter
        self.transformFrame.operationBox.setCurrentIndex(1)
        #self.transformFrame.operationBox.setCurrentIndex(0)
        #Load the last values
        values=getTaskValues("transform")
        if values !=None:

            if values.has_key("POS"):
                if len(values["POS"].split()) ==2:
                    x, y=values["POS"].split()
                    self.transformFrame.xposLine.setText(x)
                    self.transformFrame.yposLine.setText(y)
            if values.has_key("OPERATION"):
                op=values["OPERATION"]
                try:
                    op=int(op)-1
                except:
                    self.transformFrame.operationBox.setCurrentIndex(0)
                    pass
                else:
                    self.transformFrame.operationBox.setCurrentIndex(op)
            if values.has_key("TRANSLXY"):
                if len(values["TRANSLXY"].split()) ==2:
                    x, y=values["TRANSLXY"].split()
                    self.transformFrame.translxLine.setText(x)
                    self.transformFrame.translyLine.setText(y)
            if values.has_key("ANGLE"):
                self.transformFrame.angleLine.setText(values["ANGLE"])
            if values.has_key("SCALEXY"):
                if len(values["SCALEXY"].split()) ==2:
                    x, y=values["SCALEXY"].split()
                    self.transformFrame.scalexLine.setText(x)
                    self.transformFrame.scaleyLine.setText(y)
            if values.has_key("XSHEAR"):
                self.transformFrame.xshearLine.setText(values["XSHEAR"])
            if values.has_key("YSHEAR"):
                self.transformFrame.yshearLine.setText(values["YSHEAR"])

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
            
        if "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "centre" in status:
            self.transformFrame.xposLine.setPalette(p)
            self.transformFrame.yposLine.setPalette(p)
        if "translation" in status:
            self.transformFrame.translxLine.setPalette(p)
            self.transformFrame.translyLine.setPalette(p)
        if "scaling" in status:
            self.transformFrame.scalexLine.setPalette(p)
            self.transformFrame.scaleyLine.setPalette(p)
            
        if  "rotation" in status:
            self.transformFrame.angleLine.setPalette(p)
        if "shear" in status:
            if "X:" in status:
                self.transformFrame.xshearLine.setPalette(p)
            else:
                self.transformFrame.yshearLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.transformFrame.xposLine.setPalette(p)
        self.transformFrame.yposLine.setPalette(p)
        self.transformFrame.translxLine.setPalette(p)
        self.transformFrame.translyLine.setPalette(p)
        self.transformFrame.angleLine.setPalette(p)
        self.transformFrame.xshearLine.setPalette(p)
        self.transformFrame.yshearLine.setPalette(p)
        self.transformFrame.scalexLine.setPalette(p)
        self.transformFrame.scaleyLine.setPalette(p)
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                
                xpos=unicode(self.transformFrame.xposLine.text())
                ypos=unicode(self.transformFrame.yposLine.text())
                operation=unicode(self.transformFrame.operationBox.currentIndex()+1)
                translx=unicode(self.transformFrame.translxLine.text())
                transly=unicode(self.transformFrame.translyLine.text())
                angle=unicode(self.transformFrame.angleLine.text())
                scalex=unicode(self.transformFrame.scalexLine.text())
                scaley=unicode(self.transformFrame.scaleyLine.text())
                xshear=unicode(self.transformFrame.xshearLine.text())
                yshear=unicode(self.transformFrame.yshearLine.text())
                
                
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='TRANSFORM INSET=%s BOX=%s POS=%s %s OKAY=Y OPERATION=%s TRANSLXY=%s %s ANGLE=%s SCALEXY=%s %s XSHEAR=%s YSHEAR=%s OUTSET=%s '\
                                                %(inset, box, xpos, ypos,  operation,  translx,  transly,  angle,  scalex,  scaley, \
                                                  xshear,  yshear,  outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)
            
    def enableParameters(self, index):
        i=index+1
        
        if i==1: #Translation
            self.transformFrame.translxLine.setEnabled(True)
            self.transformFrame.translyLine.setEnabled(True)
            
            self.transformFrame.angleLine.setEnabled(False)
            self.transformFrame.scalexLine.setEnabled(False)
            self.transformFrame.scaleyLine.setEnabled(False)
            self.transformFrame.xshearLine.setEnabled(False)
            self.transformFrame.yshearLine.setEnabled(False)
        elif i==2: #Rotation
            self.transformFrame.translxLine.setEnabled(False)
            self.transformFrame.translyLine.setEnabled(False)
            
            self.transformFrame.angleLine.setEnabled(True)
            
            self.transformFrame.scalexLine.setEnabled(False)
            self.transformFrame.scaleyLine.setEnabled(False)
            self.transformFrame.xshearLine.setEnabled(False)
            self.transformFrame.yshearLine.setEnabled(False)
        elif i==3: #Scaling
            self.transformFrame.translxLine.setEnabled(False)
            self.transformFrame.translyLine.setEnabled(False)
            self.transformFrame.angleLine.setEnabled(False)
            
            self.transformFrame.scalexLine.setEnabled(True)
            self.transformFrame.scaleyLine.setEnabled(True)
            
            self.transformFrame.xshearLine.setEnabled(False)
            self.transformFrame.yshearLine.setEnabled(False)
        elif i==4 or i==5 or i==6: #Reflection 
            self.transformFrame.translxLine.setEnabled(False)
            self.transformFrame.translyLine.setEnabled(False)
            self.transformFrame.angleLine.setEnabled(False)
            self.transformFrame.scalexLine.setEnabled(False)
            self.transformFrame.scaleyLine.setEnabled(False)
            self.transformFrame.xshearLine.setEnabled(False)
            self.transformFrame.yshearLine.setEnabled(False)
        elif i==7: # X Shear
            self.transformFrame.translxLine.setEnabled(False)
            self.transformFrame.translyLine.setEnabled(False)
            self.transformFrame.angleLine.setEnabled(False)
            self.transformFrame.scalexLine.setEnabled(False)
            self.transformFrame.scaleyLine.setEnabled(False)
            
            self.transformFrame.xshearLine.setEnabled(True)
            
            self.transformFrame.yshearLine.setEnabled(False)
        elif i==8: #Translation
            self.transformFrame.translxLine.setEnabled(False)
            self.transformFrame.translyLine.setEnabled(False)
            
            self.transformFrame.angleLine.setEnabled(False)
            self.transformFrame.scalexLine.setEnabled(False)
            self.transformFrame.scaleyLine.setEnabled(False)
            self.transformFrame.xshearLine.setEnabled(False)
            
            self.transformFrame.yshearLine.setEnabled(True)

class view_transpose(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_transpose, self).__init__(parent, filename, "transpose",  *TASKS_CLASS["TRANSPOSE"], defaultPath=defaultPath)
        super(view_transpose, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=","AXPERM=","OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.transposeFrame = Ui_transpose()
        self.transposeFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        self.replaceButton.hide()
        self.setWindowTitle("TRANSPOSE")
        self.showRelatedData()

        
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.transposeFrame.upButton, SIGNAL("clicked()"), self.reorderUp)
        self.connect(self.transposeFrame.downButton,  SIGNAL("clicked()"), self.reorderDown)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
       
       #LOAD LAST VALUES?
        

    def showRelatedData(self):
        self.clearRelatedData()
        #Getting the list axis 
        
        if self.insetAxesList !=None:
            l=len(self.insetAxesList)
            for i in range(l):
                self.transposeFrame.axesList.addItem(self.insetAxesList[i])
                
    def clearRelatedData(self):
        self.transposeFrame.axesList.clear()
        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                axperm=""
                for i in range(self.transposeFrame.axesList.count()):
                    dim=self.transposeFrame.axesList.item(i).text()
                    axperm=axperm+ " "+ dim.split("-")[0]
                    
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                    
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='TRANSPOSE INSET=%s BOX=%s AXPERM=%s OUTSET=%s OKAY=Y '\
                                                %(inset, box,axperm ,  outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

    def reorderUp(self):
        index=self.transposeFrame.axesList.currentRow()
        if (index >0):
            prevIndex=index-1
            dimension=self.transposeFrame.axesList.takeItem(index)
            prevDim=self.transposeFrame.axesList.takeItem(prevIndex)
            self.transposeFrame.axesList.insertItem(prevIndex, dimension)
            self.transposeFrame.axesList.insertItem(index,  prevDim)
            self.transposeFrame.axesList.setCurrentRow(prevIndex)

    def reorderDown(self):
        index=self.transposeFrame.axesList.currentRow()
        l=self.transposeFrame.axesList.count()
        if (index <l):
            nextIndex=index+1
            nextDim=self.transposeFrame.axesList.takeItem(nextIndex)
            dimension=self.transposeFrame.axesList.takeItem(index)
            self.transposeFrame.axesList.insertItem(index,  nextDim)
            self.transposeFrame.axesList.insertItem(nextIndex, dimension)
            self.transposeFrame.axesList.setCurrentRow(nextIndex)

class view_velsmo(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_velsmo, self).__init__(parent, filename, "velsmo", *TASKS_CLASS["VELSMO"], defaultPath=defaultPath)
        super(view_velsmo, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "BOX=", "OUTSET=", "WEIGHTS=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        
        self.setWindowTitle("VELSMO")
       
        self.connect(self.replaceButton,  SIGNAL("clicked()"), self.replaceSet)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
               

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "directory" in status or "output" in status:
            self.outsetPathLabel.setPalette(p)
            self.outsetNameLine.setPalette(p)
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)

    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                self.taskcommand='VELSMO INSET=%s BOX=%s OUTSET=%s WEIGHTS= OKAY=Y'%(inset, box, outsetPath)

                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)


class view_insert(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_insert, self).__init__(parent, filename, "insert",   *TASKS_CLASS["INSERT"], defaultPath=defaultPath)
        #self.inset and self.insetPath are handled by parent class, view_task
        super(view_insert, self).setAttribute(Qt.WA_DeleteOnClose)
        self.keys=["INSET=", "OUTSET=","INBOX=","OUTBOX=","REPEAT=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
       
        self.outsetPath=None
        self.gt=gipsyTask()
        self.outsetBrowserDlg=setbrowser(self, self.outsetPath, "", "", *TASKS_CLASS["INSERT"])
        
        #Adding the insert frame
        frame = QtGui.QFrame()
        self.insertFrame = Ui_insert()
        self.insertFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
        self.outsetFrame.hide()
        
        self.setWindowTitle("INSERT")
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.insertFrame.outsetButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect(self.insertFrame.outboxButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        
        #LOAD LAST VALUES?
        

    def outsetBrowser(self):
        
        self.outsetBrowserDlg.show()
        self.outsetBrowserDlg.raise_()
        self.outsetBrowserDlg.activateWindow()
        self.connect(self.outsetBrowserDlg, SIGNAL("accepted()"), self.getValuesOutset)

    def getValuesOutset(self):
            
        subset=unicode(self.outsetBrowserDlg.subsetLine.text())
        box=unicode(self.outsetBrowserDlg.boxLine.text())
        if subset !="": # I dont know why, but when the task window close, this method is called, and the subset/box are empty
            #Get info about inset
            self.outsetPath=subset.split()[0]
            #If the user type the name of the set without the path,
            #the working directory path has to be added
            if "/" not in self.outsetPath:
                self.outsetPath=os.getcwd()+"/"+self.outsetPath
            
            #Deleting the path string of the subset text
            setname=os.path.basename(self.outsetPath)
            subset=setname+" "+" ".join(subset.split()[1:])
            self.insertFrame.outsetLabel.setText(subset)
            self.insertFrame.outsetLabel.setToolTip(self.outsetPath)
            self.insertFrame.outboxLabel.setText(box)

        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
                
        if "subset(s))" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        outsetPath=unicode(self.insertFrame.outsetLabel.toolTip())
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)
       
        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None or self.outsetPath == "":
                self.showStatus("Give set (,subsets)")
                return
   
            inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
            box=unicode(self.boxLabel.text())
            outset=unicode(self.insertFrame.outsetLabel.toolTip())+" "+" ".join(unicode(self.insertFrame.outsetLabel.text()).split()[1:])
            outbox=unicode(self.insertFrame.outboxLabel.text())
            
            self.taskcommand='INSERT INSET=%s OUTSET=%s INBOX=%s OUTBOX=%s REPEAT= OKAY=Y'%(inset, outset, box, outbox)

            
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)



class view_reswri(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_reswri, self).__init__(parent,  filename,"reswri",  *TASKS_CLASS["RESWRI"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "BOX=", "OUTSET=","INSET2=","BUNIT=",  "RADII=",  "WIDTHS=",  "VSYS=",  "VROT=",  \
                         "VEXP=",  "PA=",  "INCL=",  "CENTRE=",  "FREEANGLE=",  "SIDE=",  "WEIGHT=",  "FIXED=",  "TOLERANCE=", \
                         "FILECOEFF=",  "FILEHICOEFF=", "FILENAME=",  "FITORDER=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.parent=parent                 
        
        self.log=""
        self.hiSetPath=None
        self.gt=gipsyTask()
        
        #Get the opened tables
        self.loadTables()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.reswriFrame = Ui_reswri()
        self.reswriFrame.setupUi(frame)
        self.label.setText("Residual Set path")
        self.label_7.setText("Residual Set name")

        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("RESWRI")
        self.replaceButton.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.radiiLine)
        self.connect(self.reswriFrame.radiiButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.widthsLine)
        self.connect(self.reswriFrame.widthsButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.vrotLine)
        self.connect(self.reswriFrame.vrotButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.vexpLine)
        self.connect(self.reswriFrame.vexpButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.paLine)
        self.connect(self.reswriFrame.paButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.reswriFrame.inclLine)
        self.connect(self.reswriFrame.inclButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.fileBrowser, self.reswriFrame.kinematicLine)
        self.connect(self.reswriFrame.kinematicButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.fileBrowser, self.reswriFrame.surfaceLine)
        self.connect(self.reswriFrame.surfaceButton,  SIGNAL("clicked()"), curried)
        
        self.connect(self.reswriFrame.saveParamsButton, SIGNAL("clicked()"), self.saveParams)
        self.connect(self.reswriFrame.loadParamsButton, SIGNAL("clicked()"), self.loadParams)
        
        self.connect(self.parent, SIGNAL("openTable"), self.loadTables)

        self.outsetBrowserDlg=setbrowser(self.parent, self.hiSetPath, "", "", *TASKS_CLASS["RESWRI"])
        self.connect(self.reswriFrame.HISetButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect(self.reswriFrame.HIBoxButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect (self.parent, SIGNAL("sampcoord"), self.receive_coord)

         
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)


    def receive_coord (self, ra, dec):
        if self.reswriFrame.checkSampCentre.isChecked():
            self.reswriFrame.xcentreLine.setText(ra)
            self.reswriFrame.xcentreLine.setCursorPosition(0)
            self.reswriFrame.ycentreLine.setText(dec)
            self.reswriFrame.ycentreLine.setCursorPosition(0)
        
        if self.insetPath!=None and self.insetPath!="":
            tmpset=gipsySet()
            tmpset.loadSetRO(self.insetPath)
            value=tmpset.getImageValue(ra, dec)
            dist=tmpset.getDistanceToCenter(ra, dec)
            tmpset.closeSet()
            if value==None:
                value=""
            else:
                value=unicode(value)
            if dist==None:
                dist=""
            else:
                try:
                    dist=unicode(int(dist))
                except:
                    dist=unicode("NON-INT")
            
            if self.reswriFrame.checkSampVsys.isChecked():
                self.reswriFrame.vsysLine.setText(value)
            if self.reswriFrame.checkSampVrot.isChecked():
                cursor=self.reswriFrame.vrotLine.cursorPosition()
                text=self.reswriFrame.vrotLine.text()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+value+" "+text[cursor:]
                else:
                    textNew=text+" "+value
                self.reswriFrame.vrotLine.setText(textNew)
            if self.reswriFrame.checkSampRadii.isChecked():
                text=self.reswriFrame.radiiLine.text()
                cursor=self.reswriFrame.radiiLine.cursorPosition()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+dist+" "+text[cursor:]
                else:
                    textNew=text+" "+dist
                self.reswriFrame.radiiLine.setText(textNew)
            
            
    def loadTables(self):
        self.view_tables={}
        for doc in self.parent.allDocuments:
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE"):
                self.view_tables[doc.getDocname()]=self.parent.allWidgets[doc.getDocname()]
                
    def showTableBrowser(self, line):
        Dlg=tablebrowser(self.view_tables)
        if Dlg.exec_():
            data=Dlg.column
            if data !=None:
                if len(data)>0:
                    text=" ".join(data)
                    line.setText(text)
            
            
    def fileBrowser(self, line):
        file=line.text()
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,"Choose a file", file,"*"))
        if (fName==""):
            return
        line.setText(fName)
    
    
    def outsetBrowser(self):
        
        self.outsetBrowserDlg.show()
        self.outsetBrowserDlg.raise_()
        self.outsetBrowserDlg.activateWindow()
       
        self.connect(self.outsetBrowserDlg, SIGNAL("accepted()"), self.getValuesHISet)
    
    def getValuesHISet(self):
            
        subset=unicode(self.outsetBrowserDlg.subsetLine.text())
        box=unicode(self.outsetBrowserDlg.boxLine.text())
        if subset !="": # I dont know why, but when the task window close, this method is called, and the subset/box are empty
            #Get info about inset
            self.hiSetPath=subset.split()[0]
            #If the user type the name of the set without the path,
            #the working directory path has to be added
            if "/" not in self.hiSetPath:
                self.hiSetPath=os.getcwd()+"/"+self.hiSetPath
            
            #Deleting the path string of the subset text
            setname=os.path.basename(self.hiSetPath)
            subset=setname+" "+" ".join(subset.split()[1:])
            self.reswriFrame.HISetLabel.setText(subset)
            self.reswriFrame.HISetLabel.setToolTip(self.hiSetPath)
            self.reswriFrame.HIBoxLabel.setText(box)
            self.reswriFrame.surfaceLine.setEnabled(True)

    def saveParams(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,
                            "Choose File", "reswriParams.param","*.param"))
        if (fName==""):
            return
        taskcommand=self.buildCommand()
        saveTaskValues(taskcommand, fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,"*.param"))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        #First the dafult values
        self.reswriFrame.kinematicLine.setText("coefficients.txt")
        self.reswriFrame.surfaceLine.setText("hicoef.txt") 
        self.reswriFrame.bunitLine.setText("KM/S")
        self.reswriFrame.vexpLine.setText("0.0")
        self.reswriFrame.freeangleLine.setText("0.0")
        self.reswriFrame.fittoleranceLine.setText("0.001") 
        
        values=getTaskValues("reswri", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("BUNIT"):
                self.reswriFrame.bunitLine.setText(values["BUNIT"])
            
            if values.has_key("RADII"):
                self.reswriFrame.radiiLine.setText(values["RADII"])
            if values.has_key("WIDTHS"):
                self.reswriFrame.widthsLine.setText(values["WIDTHS"])
            if values.has_key("VSYS"):
                self.reswriFrame.vsysLine.setText(values["VSYS"])
            if values.has_key("VROT"):
                self.reswriFrame.vrotLine.setText(values["VROT"])
            if values.has_key("VEXP"):
                self.reswriFrame.vexpLine.setText(values["VEXP"])
            if values.has_key("PA"):
                self.reswriFrame.paLine.setText(values["PA"])
            if values.has_key("INCL"):
                self.reswriFrame.inclLine.setText(values["INCL"])
            if values.has_key("CENTRE"):
                if len(values["CENTRE"].split())==2:
                    x, y=values["CENTRE"].split()
                    self.reswriFrame.xcentreLine.setText(x)
                    self.reswriFrame.ycentreLine.setText(y)
            if values.has_key("FREEANGLE"):
                self.reswriFrame.freeangleLine.setText(values["FREEANGLE"])
            if values.has_key("SIDE"):
                side=values["SIDE"] if values["SIDE"]!="" else "Both"
                self.reswriFrame.sideBox.setCurrentIndex(self.reswriFrame.sideBox.findText(side))
                
            if values.has_key("FIXED"):
                fixedList=values["FIXED"].split()
                if "centre" in fixedList:
                    self.reswriFrame.centreCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.centreCheck.setCheckState(Qt.Unchecked)
                if "vsys" in fixedList:
                    self.reswriFrame.vsysCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.vsysCheck.setCheckState(Qt.Unchecked)
                if "vrot" in fixedList:
                    self.reswriFrame.vrotCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.vrotCheck.setCheckState(Qt.Unchecked)
                if "vexp" in fixedList:
                    self.reswriFrame.vexpCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.vexpCheck.setCheckState(Qt.Unchecked)
                if "pa" in fixedList:
                    self.reswriFrame.paCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.paCheck.setCheckState(Qt.Unchecked)
                if "incl" in fixedList:
                    self.reswriFrame.inclCheck.setCheckState(Qt.Checked)
                else:
                    self.reswriFrame.inclCheck.setCheckState(Qt.Unchecked)
                    
            if values.has_key("TOLERANCE"):
                self.reswriFrame.fittoleranceLine.setText(values["TOLERANCE"])      
            if values.has_key("FILECOEFF"):
                self.reswriFrame.kinematicLine.setText(values["FILECOEFF"]) 
            else:
                self.reswriFrame.kinematicLine.setText("coefficients.txt") 
            if values.has_key("FILEHICOEF"):
                self.reswriFrame.surfaceLine.setText("hicoefficients.txt")               
   
    def clearParams(self):
       
        self.reswriFrame.bunitLine.setText("")
        self.reswriFrame.radiiLine.setText("")
        self.reswriFrame.widthsLine.setText("")
        self.reswriFrame.vsysLine.setText("")
        self.reswriFrame.vrotLine.setText("")
        self.reswriFrame.vexpLine.setText("")
        self.reswriFrame.paLine.setText("")
        self.reswriFrame.inclLine.setText("")
        self.reswriFrame.xcentreLine.setText("")
        self.reswriFrame.ycentreLine.setText("")
        self.reswriFrame.freeangleLine.setText("")
        self.reswriFrame.sideBox.setCurrentIndex(0)
        self.reswriFrame.centreCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.vsysCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.vrotCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.vexpCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.paCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.inclCheck.setCheckState(Qt.Unchecked)
        self.reswriFrame.fittoleranceLine.setText("")                    
        self.reswriFrame.kinematicLine.setText("")                
        self.reswriFrame.surfaceLine.setText("")  
                
                
    def showRelatedData(self):
        if self.insetPath!=None:
            #This function is executed when the user select a inset, so the samp should be enabled
            self.reswriFrame.checkSampCentre.setEnabled(True)
            self.reswriFrame.checkSampRadii.setEnabled(True)
            self.reswriFrame.checkSampVrot.setEnabled(True)
            self.reswriFrame.checkSampVsys.setEnabled(True)
            
            set=gipsySet()
            set.loadSetRO(self.insetPath)
            try:
                value=set.getHeaderValue("BUNIT")
            except gipsyException as g:
                self.reswriFrame.bunitLine.setText(g.msj)
                self.reswriFrame.bunitLine.setReadOnly(False)
            else:
                self.reswriFrame.bunitLine.setText(unicode(value))
                self.reswriFrame.bunitLine.setReadOnly(True)
            
            #del set
            set.closeSet()
            

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "radii" in status:
            self.reswriFrame.radiiLine.setPalette(p)
        if "Widths" in status:
            self.reswriFrame.widthsLine.setPalette(p)
        if "Rotation" in status:
            self.reswriFrame.vrotLine.setPalette(p)
        if "Expansion" in status:
            self.reswriFrame.vexpLine.setPalette(p)
        if "Position Angles" in status:
            self.reswriFrame.paLine.setPalette(p)
        if "Tolerance" in status:
            self.reswriFrame.fittoleranceLine.setPalette(p)
        if "order" in status:
            self.reswriFrame.fitorderLine.setPalette(p)
        if "Inclination" in status:
            self.reswriFrame.inclLine.setPalette(p)
        if "Free angle" in status:
            self.reswriFrame.freeangleLine.setPalette(p)
        if "Central position" in status:
            self.reswriFrame.xcentreLine.setPalette(p)
            self.reswriFrame.ycentreLine.setPalette(p)
        if "Systemic" in status:
            self.reswriFrame.vsysLine.setPalette(p)
        if "Filename kinematic" in status:
            self.reswriFrame.kinematicLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.reswriFrame.radiiLine.setPalette(p)
       
        self.reswriFrame.widthsLine.setPalette(p)
        self.reswriFrame.vrotLine.setPalette(p)
        self.reswriFrame.vexpLine.setPalette(p)
        self.reswriFrame.paLine.setPalette(p)
        self.reswriFrame.fittoleranceLine.setPalette(p)
        self.reswriFrame.inclLine.setPalette(p)
        self.reswriFrame.freeangleLine.setPalette(p)
        self.reswriFrame.xcentreLine.setPalette(p)
        self.reswriFrame.ycentreLine.setPalette(p)
        self.reswriFrame.vsysLine.setPalette(p)
        self.reswriFrame.kinematicLine.setPalette(p)
        self.reswriFrame.fitorderLine.setPalette(p)
     
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        #self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
        if self.filecoeff !="":
            self.emit(SIGNAL("newTable"),self.filecoeff, 0)
        if self.filehicoeff !="" and self.reswriFrame.surfaceLine.isEnabled():
            self.emit(SIGNAL("newTable"),self.filehicoeff, 0)
            
    def buildCommand(self):
        setname=unicode(self.outsetNameLine.text())
        if setname == "":
            outsetPath=""
        else:
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        bunit=unicode(self.reswriFrame.bunitLine.text())
        
        side=unicode(self.reswriFrame.sideBox.currentText())
        if side=="Both":
            side=""
        centre=unicode(self.reswriFrame.xcentreLine.text())+" "+unicode(self.reswriFrame.ycentreLine.text())
        vsys=unicode(self.reswriFrame.vsysLine.text()).strip()
        radii=unicode(self.reswriFrame.radiiLine.text())
        widths=unicode(self.reswriFrame.widthsLine.text())
        vrot=unicode(self.reswriFrame.vrotLine.text()).strip()
        
        vexp=unicode(self.reswriFrame.vexpLine.text()).strip()
        
        pa=unicode(self.reswriFrame.paLine.text()).strip()
        
        incl=unicode(self.reswriFrame.inclLine.text()).strip()
        
        freeangle=unicode(self.reswriFrame.freeangleLine.text())
        fittolerance=unicode(self.reswriFrame.fittoleranceLine.text())
        fitorder=unicode(self.reswriFrame.fitorderLine.text())
        fixed=" "
        if self.reswriFrame.centreCheck.isChecked():
            fixed=fixed+"xpos ypos "
        if self.reswriFrame.vsysCheck.isChecked():
            fixed=fixed+"vsys "
        if self.reswriFrame.vrotCheck.isChecked():
            fixed=fixed+"vrot "
        if self.reswriFrame.vexpCheck.isChecked():
            fixed=fixed+"vexp "
        if self.reswriFrame.paCheck.isChecked():
            fixed=fixed+"pa "
        if self.reswriFrame.inclCheck.isChecked():
            fixed=fixed+"incl "
        
        
        filecoeff=unicode(self.reswriFrame.kinematicLine.text())
        if filecoeff !="" and "/" not in filecoeff:
            filecoeff=os.getcwd()+"/"+filecoeff
        
        filehicoeff=unicode(self.reswriFrame.surfaceLine.text())
        
        if filehicoeff != "" and "/" not in filehicoeff:
            filehicoeff=os.getcwd()+"/"+filehicoeff
        inset2= unicode(self.reswriFrame.HISetLabel.toolTip())+" "+" ".join(unicode(self.reswriFrame.HISetLabel.text()).split()[1:])
        
        self.filecoeff=filecoeff
        self.filehicoeff=filehicoeff
        taskcommand='RESWRI INSET=%s BOX=%s INSET2=%s OUTSET=%s WEIGHT= BUNIT=%s RADII=%s WIDTHS=%s VSYS=%s VROT=%s VEXP=%s PA=%s INCL=%s CENTRE=%s FREEANGLE=%s SIDE=%s FIXED=%s TOLERANCE=%s FILECOEFF=%s FILEHICOEF=%s FILENAME= FITORDER=%s OKAY=Y'\
                                    %(inset, box, inset2, outsetPath, bunit, radii,widths, vsys, vrot, vexp, pa, incl, centre,  freeangle, side, fixed, fittolerance, filecoeff,  filehicoeff, fitorder )
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                self.taskcommand=self.buildCommand()
                
                self.clearError()
                self.showStatus("Running")
                saveTaskValues(self.taskcommand)
                self.gt.launchTask(self.taskcommand, self)


class view_rotcur(view_task):
    
    
        
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_rotcur, self).__init__(parent,  filename,  "rotcur", *TASKS_CLASS["ROTCUR"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "BOX=", "BUNIT=",  "RADII=",  "WIDTHS=",  "VSYS=",  "VROT=",  \
                         "VEXP=",  "PA=",  "INCL=",  "CENTRE=",  "FREEANGLE=",  "SIDE=",  "WEIGHT=", \
                         "FIXED=",  "TOLERANCE=", "FILENAME=","OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        self.parent=parent
    
        #Get the opened tables
        self.loadTables()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.rotcurFrame = Ui_rotcur()
        self.rotcurFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("ROTCUR")
        self.outsetFrame.hide()

        self.showRelatedData()
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
       
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.radiiLine)
        self.connect(self.rotcurFrame.radiiButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.widthsLine)
        self.connect(self.rotcurFrame.widthsButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.vrotLine)
        self.connect(self.rotcurFrame.vrotButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.vexpLine)
        self.connect(self.rotcurFrame.vexpButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.paLine)
        self.connect(self.rotcurFrame.paButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.rotcurFrame.inclLine)
        self.connect(self.rotcurFrame.inclButton,  SIGNAL("clicked()"), curried)
        
        
        self.connect(self.rotcurFrame.saveParamsButton, SIGNAL("clicked()"), self.saveParams)
        self.connect(self.rotcurFrame.loadParamsButton, SIGNAL("clicked()"), self.loadParams)
        
        self.connect(self.parent, SIGNAL("openTable"), self.loadTables)
        self.connect (self.parent, SIGNAL("sampcoord"), self.receive_coord)
        
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)
        
    
    def receive_coord (self, ra, dec):
        if self.rotcurFrame.checkSampCentre.isChecked():
            self.rotcurFrame.xcentreLine.setText(ra)
            self.rotcurFrame.xcentreLine.setCursorPosition(0)
            self.rotcurFrame.ycentreLine.setText(dec)
            self.rotcurFrame.ycentreLine.setCursorPosition(0)
        
        if self.insetPath!=None and self.insetPath!="":
            tmpset=gipsySet()
            tmpset.loadSetRO(self.insetPath)
            value=tmpset.getImageValue(ra, dec)
            dist=tmpset.getDistanceToCenter(ra, dec)
            tmpset.closeSet()
            if value==None:
                value=""
            else:
                value=unicode(value)
            if dist==None:
                dist=""
            else:
                try:
                    dist=unicode(int(dist))
                except:
                    dist=unicode("NON-INT")
            
            if self.rotcurFrame.checkSampVsys.isChecked():
                self.rotcurFrame.vsysLine.setText(value)
            if self.rotcurFrame.checkSampVrot.isChecked():
                cursor=self.rotcurFrame.vrotLine.cursorPosition()
                text=self.rotcurFrame.vrotLine.text()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+value+" "+text[cursor:]
                else:
                    textNew=text+" "+value
                self.rotcurFrame.vrotLine.setText(textNew)
            if self.rotcurFrame.checkSampRadii.isChecked():
                text=self.rotcurFrame.radiiLine.text()
                cursor=self.rotcurFrame.radiiLine.cursorPosition()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+dist+" "+text[cursor:]
                else:
                    textNew=text+" "+dist
                self.rotcurFrame.radiiLine.setText(textNew)
                
                
            
            
        
    def updateCentre(self,  txt):
        self.rotcurFrame.xcentreLine.setText(txt)
    def loadTables(self):
        self.view_tables={}
        for doc in self.parent.allDocuments:
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE"):
                self.view_tables[doc.getDocname()]=self.parent.allWidgets[doc.getDocname()]
                
    def showTableBrowser(self, line):
        Dlg=tablebrowser(self.view_tables)
        if Dlg.exec_():
            data=Dlg.column
            if data !=None:
                if len(data)>0:
                    text=" ".join(data)
                    line.setText(text)
                    
    def saveParams(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,
                            "Choose File", "./rotcurParams.param",FORMATS["PARAM"]))
        if (fName==""):
            return
        taskcommand=self.buildCommand()
        saveTaskValues(taskcommand, fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        #Defaults params
        self.rotcurFrame.bunitLine.setText("KM/S")
        self.rotcurFrame.vexpLine.setText("0.0")
        self.rotcurFrame.freeangleLine.setText("0.0")
        self.rotcurFrame.fittoleranceLine.setText("0.001")     
        
        values=getTaskValues("rotcur", filename)
        
        if values !=None:
            self.clearParams()
            if values.has_key("BUNIT"):
                self.rotcurFrame.bunitLine.setText(values["BUNIT"])
                
            if values.has_key("RADII"):
                self.rotcurFrame.radiiLine.setText(values["RADII"])
            if values.has_key("WIDTHS"):
                self.rotcurFrame.widthsLine.setText(values["WIDTHS"])
            if values.has_key("VSYS"):
                self.rotcurFrame.vsysLine.setText(values["VSYS"])
            if values.has_key("VROT"):
                self.rotcurFrame.vrotLine.setText(values["VROT"])
            if values.has_key("VEXP"):
                self.rotcurFrame.vexpLine.setText(values["VEXP"])
            if values.has_key("PA"):
                self.rotcurFrame.paLine.setText(values["PA"])
            if values.has_key("INCL"):
                self.rotcurFrame.inclLine.setText(values["INCL"])
            if values.has_key("CENTRE"):
                if len(values["CENTRE"].split())==2:
                    x, y=values["CENTRE"].split()
                    self.rotcurFrame.xcentreLine.setText(x)
                    self.rotcurFrame.ycentreLine.setText(y)
            if values.has_key("FREEANGLE"):
                self.rotcurFrame.freeangleLine.setText(values["FREEANGLE"])
           
            if values.has_key("SIDE"):
                side=values["SIDE"] if values["SIDE"]!="" else "Both"
                self.rotcurFrame.sideBox.setCurrentIndex(self.rotcurFrame.sideBox.findText(side))
                
            if values.has_key("FIXED"):
                fixedList=values["FIXED"].split()
                if "xpos" in fixedList or "ypos" in fixedList:
                    self.rotcurFrame.centreCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.centreCheck.setCheckState(Qt.Unchecked)
                if "vsys" in fixedList:
                    self.rotcurFrame.vsysCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.vsysCheck.setCheckState(Qt.Unchecked)
                if "vrot" in fixedList:
                    self.rotcurFrame.vrotCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.vrotCheck.setCheckState(Qt.Unchecked)
                if "vexp" in fixedList:
                    self.rotcurFrame.vexpCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.vexpCheck.setCheckState(Qt.Unchecked)
                if "pa" in fixedList:
                    self.rotcurFrame.paCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.paCheck.setCheckState(Qt.Unchecked)
                if "incl" in fixedList:
                    self.rotcurFrame.inclCheck.setCheckState(Qt.Checked)
                else:
                    self.rotcurFrame.inclCheck.setCheckState(Qt.Unchecked)
                    
            if values.has_key("TOLERANCE"):
                self.rotcurFrame.fittoleranceLine.setText(values["TOLERANCE"])     
            
            if values.has_key("WEIGHT"):
                weight=values["WEIGHT"]
                self.rotcurFrame.weightBox.setCurrentIndex(self.rotcurFrame.weightBox.findText(weight))
                
    
    def clearParams(self):
        
        self.rotcurFrame.bunitLine.setText("")
        self.rotcurFrame.radiiLine.setText("")
        self.rotcurFrame.widthsLine.setText("")
        self.rotcurFrame.vsysLine.setText("")
        self.rotcurFrame.vrotLine.setText("")
        self.rotcurFrame.vexpLine.setText("")
        self.rotcurFrame.paLine.setText("")
        self.rotcurFrame.inclLine.setText("")
        self.rotcurFrame.xcentreLine.setText("")
        self.rotcurFrame.ycentreLine.setText("")
        self.rotcurFrame.freeangleLine.setText("")
        self.rotcurFrame.sideBox.setCurrentIndex(0)
        self.rotcurFrame.centreCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.vsysCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.vrotCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.vexpCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.paCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.inclCheck.setCheckState(Qt.Unchecked)
        self.rotcurFrame.fittoleranceLine.setText("")     
        self.rotcurFrame.weightBox.setCurrentIndex(0)
                
                
    def showRelatedData(self):
        
        
        if self.insetPath!=None:
            #This function is executed when the user select a inset, so the samp should be enabled
            self.rotcurFrame.checkSampCentre.setEnabled(True)
            self.rotcurFrame.checkSampRadii.setEnabled(True)
            self.rotcurFrame.checkSampVrot.setEnabled(True)
            self.rotcurFrame.checkSampVsys.setEnabled(True)
            
            set=gipsySet()
            set.loadSetRO(self.insetPath)
            try:
                value=set.getHeaderValue("BUNIT")
            except gipsyException as g:
                self.rotcurFrame.bunitLine.setText(g.msj)
                self.rotcurFrame.bunitLine.setReadOnly(False)
            else:
                self.rotcurFrame.bunitLine.setText(unicode(value))
                self.rotcurFrame.bunitLine.setReadOnly(True)
            
            #Extract the next name of ROTCUR Tab
            tablesInfo=set.getTablesInfo()
            tmp=[]
            for table in tablesInfo:
                if "ROTCUR" in table[1]:
                    tuple=table[1].split("ROTCUR")
                    if len(tuple)==2:
                        try:
                            tmp.append(int(tuple[1]))
                        except:
                           pass
            if len(tmp)>0:
                tmp.sort()
                ntable=tmp.pop()+1
            else:
                ntable=0
            if len(str(ntable))==1:
                sufix="0"+str(ntable)
            else:
                sufix=str(ntable)
            self.tabname="ROTCUR"+sufix
            #del set
            set.closeSet()
            

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "radii" in status:
            self.rotcurFrame.radiiLine.setPalette(p)
        if "Widths" in status:
            self.rotcurFrame.widthsLine.setPalette(p)
        if "Rotation" in status:
            self.rotcurFrame.vrotLine.setPalette(p)
        if "Expansion" in status:
            self.rotcurFrame.vexpLine.setPalette(p)
        if "Position Angles" in status:
            self.rotcurFrame.paLine.setPalette(p)
        if "Tolerance" in status:
            self.rotcurFrame.fittoleranceLine.setPalette(p)
        if "Inclination" in status:
            self.rotcurFrame.inclLine.setPalette(p)
        if "Free angle" in status:
            self.rotcurFrame.freeangleLine.setPalette(p)
        if "Central position" in status:
            self.rotcurFrame.xcentreLine.setPalette(p)
            self.rotcurFrame.ycentreLine.setPalette(p)
        if "Systemic" in status:
            self.rotcurFrame.vsysLine.setPalette(p)
            
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.rotcurFrame.radiiLine.setPalette(p)
        self.rotcurFrame.widthsLine.setPalette(p)
        self.rotcurFrame.vrotLine.setPalette(p)
        self.rotcurFrame.vexpLine.setPalette(p)
        self.rotcurFrame.paLine.setPalette(p)
        self.rotcurFrame.inclLine.setPalette(p)
        self.rotcurFrame.freeangleLine.setPalette(p)
        self.rotcurFrame.fittoleranceLine.setPalette(p)
        self.rotcurFrame.xcentreLine.setPalette(p)
        self.rotcurFrame.ycentreLine.setPalette(p)
        self.rotcurFrame.vsysLine.setPalette(p)
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setpath=unicode(self.insetLabel.toolTip())
        self.emit(SIGNAL("newSet"),setpath, setpath, self.tabname)
        
        
    def buildCommand(self):
       
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        bunit=unicode(self.rotcurFrame.bunitLine.text())
        
        side=unicode(self.rotcurFrame.sideBox.currentText())
        if side=="Both":
            side=""
        centre=unicode(self.rotcurFrame.xcentreLine.text())+" "+unicode(self.rotcurFrame.ycentreLine.text())
        vsys=unicode(self.rotcurFrame.vsysLine.text()).strip()
       
        radii=unicode(self.rotcurFrame.radiiLine.text())
        widths=unicode(self.rotcurFrame.widthsLine.text())
        vrot=unicode(self.rotcurFrame.vrotLine.text()).strip()
       
        vexp=unicode(self.rotcurFrame.vexpLine.text()).strip()
      
        pa=unicode(self.rotcurFrame.paLine.text()).strip()
       
        incl=unicode(self.rotcurFrame.inclLine.text()).strip()
        
        freeangle=unicode(self.rotcurFrame.freeangleLine.text())
        fittolerance=unicode(self.rotcurFrame.fittoleranceLine.text())
        fixed=" "
        if self.rotcurFrame.centreCheck.isChecked():
            fixed=fixed+"xpos ypos "
        if self.rotcurFrame.vsysCheck.isChecked():
            fixed=fixed+"vsys "
        if self.rotcurFrame.vrotCheck.isChecked():
            fixed=fixed+"vrot "
        if self.rotcurFrame.vexpCheck.isChecked():
            fixed=fixed+"vexp "
        if self.rotcurFrame.paCheck.isChecked():
            fixed=fixed+"pa "
        if self.rotcurFrame.inclCheck.isChecked():
            fixed=fixed+"incl "
        weight=unicode(self.rotcurFrame.weightBox.currentText())
            
       
       
        
        taskcommand='ROTCUR INSET=%s BOX=%s WEIGHT=%s BUNIT=%s RADII=%s WIDTHS=%s VSYS=%s VROT=%s VEXP=%s PA=%s INCL=%s CENTRE=%s FREEANGLE=%s SIDE=%s FIXED=%s TOLERANCE=%s FILENAME= TABNAME=%s OKAY=Y'\
                                    %(inset, box, weight, bunit, radii,widths, vsys, vrot, vexp, pa, incl, centre,  freeangle, side, fixed, fittolerance ,  self.tabname)
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            self.taskcommand=self.buildCommand()
            
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)



class view_velfi(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_velfi, self).__init__(parent, filename, "velfi",  *TASKS_CLASS["VELFI"], defaultPath=defaultPath)
        
        self.keys=["INSET=",  "OUTSET=",  "RADII=",  "VSYS=",  "VROT=",  "VRAD=", \
                           "PA=",  "INCL=",  "POS=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.parent=parent                 
        
        self.log=""
        self.hiSetPath=None
        self.gt=gipsyTask()
        
        #Get the opened tables
        self.loadTables()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.velfiFrame = Ui_velfi()
        self.velfiFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("VELFI")
        self.replaceButton.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.radiiLine)
        self.connect(self.velfiFrame.radiiButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.vsysLine)
        self.connect(self.velfiFrame.vsysButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.vrotLine)
        self.connect(self.velfiFrame.vrotButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.vradLine)
        self.connect(self.velfiFrame.vradButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.paLine)
        self.connect(self.velfiFrame.paButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.velfiFrame.inclLine)
        self.connect(self.velfiFrame.inclButton,  SIGNAL("clicked()"), curried)
        
        self.connect(self.velfiFrame.saveParamsButton, SIGNAL("clicked()"), self.saveParams)
        self.connect(self.velfiFrame.loadParamsButton, SIGNAL("clicked()"), self.loadParams)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        
        self.connect(self.parent, SIGNAL("openTable"), self.loadTables)
        self.connect (self.parent, SIGNAL("sampcoord"), self.receive_coord)
        
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)

        
    def receive_coord (self, ra, dec):
        
        if self.velfiFrame.checkSampCentre.isChecked():
            self.velfiFrame.xcentreLine.setText(ra)
            self.velfiFrame.xcentreLine.setCursorPosition(0)
            self.velfiFrame.ycentreLine.setText(dec)
            self.velfiFrame.ycentreLine.setCursorPosition(0)
        
        if self.insetPath!=None and self.insetPath!="":
            tmpset=gipsySet()
            tmpset.loadSetRO(self.insetPath)
            value=tmpset.getImageValue(ra, dec)
            dist=tmpset.getDistanceToCenter(ra, dec)
            tmpset.closeSet()
            if value==None:
                value=""
            else:
                value=unicode(value)
            if dist==None:
                dist=""
            else:
                try:
                    dist=unicode(int(dist))
                except:
                    dist=unicode("NON-INT")
            
            if self.velfiFrame.checkSampVsys.isChecked():
                self.velfiFrame.vsysLine.setText(value)
            if self.velfiFrame.checkSampVrot.isChecked():
                cursor=self.velfiFrame.vrotLine.cursorPosition()
                text=self.velfiFrame.vrotLine.text()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+value+" "+text[cursor:]
                else:
                    textNew=text+" "+value
                self.velfiFrame.vrotLine.setText(textNew)
            if self.velfiFrame.checkSampRadii.isChecked():
                text=self.velfiFrame.radiiLine.text()
                cursor=self.velfiFrame.radiiLine.cursorPosition()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+dist+" "+text[cursor:]
                else:
                    textNew=text+" "+dist
                self.velfiFrame.radiiLine.setText(textNew)
                
            
    def showRelatedData(self):
        if self.insetPath!=None:
            #This function is executed when the user select a inset, so the samp should be enabled
            self.velfiFrame.checkSampCentre.setEnabled(True)
            self.velfiFrame.checkSampRadii.setEnabled(True)
            self.velfiFrame.checkSampVrot.setEnabled(True)
            self.velfiFrame.checkSampVsys.setEnabled(True)
            
            
    def loadTables(self):
        self.view_tables={}
        for doc in self.parent.allDocuments:
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE"):
                self.view_tables[doc.getDocname()]=self.parent.allWidgets[doc.getDocname()]
                
    def showTableBrowser(self, line):
        Dlg=tablebrowser(self.view_tables)
        if Dlg.exec_():
            data=Dlg.column
            if data !=None:
                if len(data)>0:
                    text=" ".join(data)
                    line.setText(text)
            
            
    def fileBrowser(self, line):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getOpenFileName(self,
                            "Choose File", dir,"*"))
        if (fName==""):
            return
        line.setText(fName)
    

    def saveParams(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,
                            "Choose File", "velfiParams.param","*.param"))
        if (fName==""):
            return
        taskcommand=self.buildCommand()
        saveTaskValues(taskcommand, fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,"*.param"))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        values=getTaskValues("velfi", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("RADII"):
                self.velfiFrame.radiiLine.setText(values["RADII"])
            if values.has_key("VSYS"):
                self.velfiFrame.vsysLine.setText(values["VSYS"])
            if values.has_key("VROT"):
                self.velfiFrame.vrotLine.setText(values["VROT"])
            if values.has_key("VRAD"):
                self.velfiFrame.vradLine.setText(values["VRAD"])
            if values.has_key("PA"):
                self.velfiFrame.paLine.setText(values["PA"])
            if values.has_key("INCL"):
                self.velfiFrame.inclLine.setText(values["INCL"])
            if values.has_key("POS"):
                if len(values["POS"].split())==2:
                    x, y=values["POS"].split()
                    self.velfiFrame.xcentreLine.setText(x)
                    self.velfiFrame.ycentreLine.setText(y)
               
    def clearParams(self):
        self.velfiFrame.radiiLine.setText("")
        self.velfiFrame.vsysLine.setText("")
        self.velfiFrame.vrotLine.setText("")
        self.velfiFrame.vradLine.setText("")
        self.velfiFrame.paLine.setText("")
        self.velfiFrame.inclLine.setText("")
        self.velfiFrame.xcentreLine.setText("")
        self.velfiFrame.ycentreLine.setText("")
        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "radii" in status:
            self.velfiFrame.radiiLine.setPalette(p)
        if "Rotation" in status:
            self.velfiFrame.vrotLine.setPalette(p)
        if "Position Angles" in status:
            self.velfiFrame.paLine.setPalette(p)
        if "Central position" in status:
            self.velfiFrame.xcentreLine.setPalette(p)
            self.velfiFrame.ycentreLine.setPalette(p)
        if "Systemic" in status:
            self.velfiFrame.vsysLine.setPalette(p)
    
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.velfiFrame.radiiLine.setPalette(p)
        self.velfiFrame.vrotLine.setPalette(p)
        self.velfiFrame.paLine.setPalette(p)
        self.velfiFrame.xcentreLine.setPalette(p)
        self.velfiFrame.ycentreLine.setPalette(p)
        self.velfiFrame.vsysLine.setPalette(p)
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath, "SLICE")
    
    def buildCommand(self):
        setname=unicode(self.outsetNameLine.text())
        if setname == "":
            outsetPath=""
        else:
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        centre=unicode(self.velfiFrame.xcentreLine.text())+" "+unicode(self.velfiFrame.ycentreLine.text())
        vsys=unicode(self.velfiFrame.vsysLine.text()).strip()
        radii=unicode(self.velfiFrame.radiiLine.text())
        vrot=unicode(self.velfiFrame.vrotLine.text()).strip()
        vrad=unicode(self.velfiFrame.vradLine.text()).strip()
        pa=unicode(self.velfiFrame.paLine.text()).strip()
        incl=unicode(self.velfiFrame.inclLine.text()).strip()
        
        taskcommand='VELFI INSET=%s OUTSET=%s RADII=%s VSYS=%s VROT=%s VRAD=%s PA=%s INCL=%s POS=%s OKAY=Y'\
                                    %(inset,  outsetPath, radii, vsys, vrot, vrad, pa, incl, centre)
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                self.taskcommand=self.buildCommand()
                
                self.clearError()
                self.showStatus("Running")
                saveTaskValues(self.taskcommand)
                self.gt.launchTask(self.taskcommand, self)

class view_moments(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_moments, self).__init__(parent,  filename, "moments", *TASKS_CLASS["MOMENTS"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "BOX=", "OUTSET=", "RANGE=", "OPTION=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.outsetPath=""
        self.gt=gipsyTask()
       
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.momentsFrame = Ui_moments()
        self.momentsFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("MOMENTS")
        self.replaceButton.hide()
       
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        
       #Load the last values
        values=getTaskValues("moments")
        if values !=None:
            if values.has_key("RANGE"):
                minmax=values["RANGE"].split()
                if len(minmax)==2:
                    self.momentsFrame.minLine.setText(minmax[0])
                    self.momentsFrame.maxLine.setText(minmax[1])
                   
            if values.has_key("OPTION"):
                option=values["OPTION"]
                try:
                    index=int(values["OPTION"])
                except:
                    index=0
                self.momentsFrame.optionBox.setCurrentIndex(index)
        

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "range" in status:
            self.momentsFrame.maxLine.setPalette(p)
            self.momentsFrame.minLine.setPalette(p)
        
        
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        
       
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        
        #In order to get a 2D image, it is neccesary to diminish the 3d dim.
        dt1=gipsyDirectTask()
        outset=self.outsetPath.replace("toDim", "")
        task="DIMINISH INSET=%s P 0 BOX= OUTSET=%s"%(self.outsetPath, outset)
        
        dt1.sendTask(task)
        #Wait until the outset will be created. This should be done using the KeyCallback and
        #with a flag in the finished method, but after serveral attempts this did not work
        startTime = time.time()
        timeout=10 
        good=False
        while True:
            time.sleep(0.3)
            if os.path.exists(outset+".image") and os.path.exists(outset+".descr"):
                good=True
                break
            elif time.time() - startTime > timeout:
                break
        
        if good:
            good2=False
            dt2=gipsyDirectTask()   
            task="DELETE INSET=%s; OK=Y"%(self.outsetPath)
            dt2.sendTask(task)
            startTime = time.time()
            while True:
                time.sleep(0.3)
                if not os.path.exists(self.outsetPath):
                    good2=True
                    break
                elif time.time() - startTime > timeout:
                    break
            
            if good2:
                self.outsetPath=outset
                self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), self.outsetPath)
            else:
                self.showStatus("Unable to delete the temporary set %s"%self.outsetPath)
        else:
            self.showStatus("Unable to diminish the the set %s.Please, diminish it manually"%outset)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                option=self.momentsFrame.optionBox.currentIndex()
                
                minvalue=unicode(self.momentsFrame.minLine.text())
                maxvalue=unicode(self.momentsFrame.maxLine.text())
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                #The suffix "todim" is added, because the result of this task has to be a set with 2 dim, so
                #the set will be the resutl to diminish the 3rd dim to the set result of the task moment
                self.outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname+"toDim"
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                
                
                self.taskcommand='MOMENTS INSET=%s BOX=%s OUTSET=%s RANGE=%s %s OPTION=%s WINDOW= WINMODE= OKAY=Y'%(inset, box, self.outsetPath,minvalue, maxvalue, option)
                

                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

class view_ellint(view_task):
    def __init__(self, parent, filename, defaultPath="./"):
        super(view_ellint, self).__init__(parent,  filename,"ellint",   *TASKS_CLASS["ELLINT"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "OPTION=", "MASS=", "DISTANCE=",  "RADII=",  "WIDTH=",   \
                           "PA=",  "SEGMENTS=","INCL=",  "POS=", "RANGE=", "SUBPIX=", "MEDIAN=", "OVERLAY=", \
                           "ELLIPSE=", "FORMAT=", "GRDEVICE=", "PLOTOPT=", "OVERLAP=",  "GDSTABLE=", "TABNAME=","OKAY="] #List of the keys/parameters of task, nowadays
        self.parent=parent                 
        
        self.log=""
        self.hiSetPath=None
        self.gt=gipsyTask()
        #This task needs to execute the task MNMX, so we need to keep the log of MNMX
        self.output=""
        self.tabname="ELLINT"
        #Get the opened tables
        self.loadTables()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.ellintFrame = Ui_ellint()
        self.ellintFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("ELLINT")
        self.outsetFrame.hide()

        self.showRelatedData()
        
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        curried=functools.partial(self.showTableBrowser, self.ellintFrame.radiiLine)
        self.connect(self.ellintFrame.radiiButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.ellintFrame.widthLine)
        self.connect(self.ellintFrame.widthButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.ellintFrame.paLine)
        self.connect(self.ellintFrame.paButton,  SIGNAL("clicked()"), curried)
        
        curried=functools.partial(self.showTableBrowser, self.ellintFrame.inclLine)
        self.connect(self.ellintFrame.inclButton,  SIGNAL("clicked()"), curried)
        
        self.connect(self.ellintFrame.optionBox,  SIGNAL("currentIndexChanged(int)"), self.enableParameters)
        self.connect(self.ellintFrame.segmentList, SIGNAL("itemDoubleClicked(QListWidgetItem *)"), self.addSegment)
        
        self.connect(self.ellintFrame.saveParamsButton, SIGNAL("clicked()"), self.saveParams)
        self.connect(self.ellintFrame.loadParamsButton, SIGNAL("clicked()"), self.loadParams)
        
        self.connect(self.parent, SIGNAL("openTable"), self.loadTables)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        self.connect (self.parent, SIGNAL("sampcoord"), self.receive_coord)
         
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)

    def receive_coord (self, ra, dec):
        if self.ellintFrame.checkSampCentre.isChecked():
            self.ellintFrame.xcentreLine.setText(ra)
            self.ellintFrame.xcentreLine.setCursorPosition(0)
            self.ellintFrame.ycentreLine.setText(dec)
            self.ellintFrame.ycentreLine.setCursorPosition(0)
        
        if self.insetPath!=None and self.insetPath!="":
            tmpset=gipsySet()
            tmpset.loadSetRO(self.insetPath)
            dist=tmpset.getDistanceToCenter(ra, dec)
            tmpset.closeSet()
            if dist==None:
                dist=""
            else:
                try:
                    dist=unicode(int(dist))
                except:
                    dist=unicode("NON-INT")
            
            if self.ellintFrame.checkSampRadii.isChecked():
                text=self.ellintFrame.radiiLine.text()
                cursor=self.ellintFrame.radiiLine.cursorPosition()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+dist+" "+text[cursor:]
                else:
                    textNew=text+" "+dist
                self.ellintFrame.radiiLine.setText(textNew)
       
            
            
    def showRelatedData(self):
        
        if hasattr(self, 'insetPath'):

            if self.insetPath!=None:
                #This function is executed when the user select a inset, so the samp should be enabled
                self.ellintFrame.checkSampCentre.setEnabled(True)
                self.ellintFrame.checkSampRadii.setEnabled(True)
                
                self.clearRelatedData()
                self.output=calculateMNMX(self.insetPath)
                set=gipsySet()
                try:
                    set.loadSetRO(self.insetPath)
                except gipsyException as g:
                    QMessageBox.warning(self, "Reading SET Failed", QString(g.msj+self.insetPath))
                    self.tabname="ELLINT"
                else:
                    #Extract the next number of ELLINT Tab
                    tablesInfo=set.getTablesInfo()
                    tmp=[]
                    for table in tablesInfo:
                        if "ELLINT" in table[1]:
                            tuple=table[1].split("ELLINT")
                            if len(tuple)==2:
                                try:
                                    tmp.append(int(tuple[1]))
                                except:
                                   pass
                    if len(tmp)>0:
                        tmp.sort()
                        ntable=tmp.pop()+1
                    else:
                        ntable=0
                    self.tabname="ELLINT"+str(ntable)
                try:
                    datamin=set.getHeaderValue("DATAMIN")
                    datamax=set.getHeaderValue("DATAMAX")
                    bunit=set.getHeaderValue("BUNIT")
                except gipsyException as g:
                    QMessageBox.warning(self, "Reading SET HEADER Failed", QString(g.msj+self.insetPath))
                    set.closeSet()
                    self.ellintFrame.xrangeLine.setEnabled(True)
                    self.ellintFrame.yrangeLine.setEnabled(True)
                else:
                    set.closeSet()
                    self.ellintFrame.xrangeLine.setText(datamin)
                    self.ellintFrame.xrangeLine.update()
                    self.ellintFrame.yrangeLine.setText(datamax)
                    self.ellintFrame.yrangeLine.update()
                    self.ellintFrame.rangeLabel.setText(bunit)
                    
    def clearRelatedData(self):
        self.ellintFrame.xrangeLine.setText("")
        self.ellintFrame.xrangeLine.setText("")
        self.ellintFrame.rangeLabel.setText("")
        self.ellintFrame.xrangeLine.setEnabled(False)
        self.ellintFrame.yrangeLine.setEnabled(False)
                
    def loadTables(self):
        self.view_tables={}
        for doc in self.parent.allDocuments:
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE"):
                self.view_tables[doc.getDocname()]=self.parent.allWidgets[doc.getDocname()]
                
    def showTableBrowser(self, line):
        Dlg=tablebrowser(self.view_tables)
        if Dlg.exec_():
            data=Dlg.column
            if data !=None:
                if len(data)>0:
                    text=" ".join(data)
                    line.setText(text)
            

    def saveParams(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,
                            "Choose File", "./ellintParams.param",FORMATS["PARAM"]))
        if (fName==""):
            return
        taskcommand=self.buildCommand()
        saveTaskValues(taskcommand, fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        #First default values
        self.ellintFrame.xcentreLine.setText("0")
        self.ellintFrame.ycentreLine.setText("0")
        self.ellintFrame.xsubpixLine.setText("2")
        self.ellintFrame.ysubpixLine.setText("2")
                    
        values=getTaskValues("ellint", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("RADII"):
                self.ellintFrame.radiiLine.setText(values["RADII"])
            if values.has_key("WIDTH"):
                self.ellintFrame.widthLine.setText(values["WIDTH"])
            if values.has_key("DRVAL3"):
                self.ellintFrame.drvalLine.setText(values["DRVAL3"])
                
            if values.has_key("PA"):
                self.ellintFrame.paLine.setText(values["PA"])
            if values.has_key("INCL"):
                self.ellintFrame.inclLine.setText(values["INCL"])
            if values.has_key("POS"):
                if len(values["POS"].split())==2:
                    x, y=values["POS"].split()
                    self.ellintFrame.xcentreLine.setText(x)
                    self.ellintFrame.ycentreLine.setText(y)
            if values.has_key("SEGMENTS"):
                segments=values["SEGMENTS"].split(",")
                self.ellintFrame.segmentList.clear()
                j=0
                for s in segments:
                    if j!=0:
                        newItem=QListWidgetItem(QString(s.strip()))
                        newItem.setFlags(newItem.flags() | Qt.ItemIsEditable)
                        self.ellintFrame.segmentList.addItem(newItem)
                    else:
                        self.ellintFrame.segmentList.insertItem(j, QString(s.strip()))
                    j +=1
            
            if values.has_key("OPTION"):
                try:
                    option=int(values["OPTION"])-1
                except:
                    option=0
                
                self.ellintFrame.optionBox.setCurrentIndex(option)
            
            if values.has_key("ORDER"):
                try:
                    order=int(values["ORDER"])-1
                except:
                    option=0
                self.ellintFrame.orderBox.setCurrentIndex(order)
                
            if values.has_key("SUBPIX"):
                if len(values["SUBPIX"].split())==2:
                    x, y=values["SUBPIX"].split()
                    self.ellintFrame.xsubpixLine.setText(x)
                    self.ellintFrame.ysubpixLine.setText(y)
                    
            if values.has_key("OVERLAP"):
                if values["OVERLAP"]=="Y":
                    self.ellintFrame.overlapCheck.setCheckState(Qt.Checked)
                else:
                    self.ellintFrame.overlapCheck.setCheckState(Qt.Unchecked)
            if values.has_key("MASS"):
                self.ellintFrame.massLine.setText(values["MASS"])
            if values.has_key("DISTANCE"):
                self.ellintFrame.distanceLine.setText(values["DISTANCE"])

    def clearParams(self):
       
        self.ellintFrame.radiiLine.setText("")
        self.ellintFrame.widthLine.setText("")
        
        self.ellintFrame.paLine.setText("")
        self.ellintFrame.inclLine.setText("")
        self.ellintFrame.xcentreLine.setText("")
        self.ellintFrame.ycentreLine.setText("")
        self.ellintFrame.segmentList.clear()
        self.ellintFrame.segmentList.insertItem(0, "0 360")
        self.ellintFrame.optionBox.setCurrentIndex(0)
        self.ellintFrame.orderBox.setCurrentIndex(0)
        self.ellintFrame.xsubpixLine.setText("")
        self.ellintFrame.ysubpixLine.setText("")
        self.ellintFrame.overlapCheck.setCheckState(Qt.Checked)
        self.ellintFrame.massLine.setText("")
        self.ellintFrame.distanceLine.setText("")



    def enableParameters(self, index):
        if index==2:
            self.ellintFrame.massLabel.setEnabled(True)
            self.ellintFrame.distanceLabel.setEnabled(True)
            self.ellintFrame.massLine.setEnabled(True)
            self.ellintFrame.distanceLine.setEnabled(True)
            self.ellintFrame.moLabel.setEnabled(True)
            self.ellintFrame.mpcLabel.setEnabled(True)
        else:
            self.ellintFrame.massLabel.setEnabled(False)
            self.ellintFrame.distanceLabel.setEnabled(False)
            self.ellintFrame.massLine.setEnabled(False)
            self.ellintFrame.distanceLine.setEnabled(False)
            self.ellintFrame.moLabel.setEnabled(False)
            self.ellintFrame.mpcLabel.setEnabled(False)
    
    def addSegment(self, item):
        newItem=QListWidgetItem(QString(""))
        newItem.setFlags(newItem.flags() | Qt.ItemIsEditable)
        self.ellintFrame.segmentList.addItem(newItem)
        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "radii" in status:
            self.ellintFrame.radiiLine.setPalette(p)
        if "Rotation" in status:
            self.ellintFrame.vrotLine.setPalette(p)
        if "Position Angles" in status:
            self.ellintFrame.paLine.setPalette(p)
        if "Central position" in status:
            self.ellintFrame.xcentreLine.setPalette(p)
            self.ellintFrame.ycentreLine.setPalette(p)
        if "Systemic" in status:
            self.ellintFrame.vsysLine.setPalette(p)
    
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        #Signal to refresh the set
        setpath=unicode(self.insetLabel.toolTip())
        self.emit(SIGNAL("newSet"),setpath, setpath, self.tabname)
    
    def buildCommand(self):
      
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        centre=unicode(self.ellintFrame.xcentreLine.text())+" "+unicode(self.ellintFrame.ycentreLine.text())
        rang=unicode(self.ellintFrame.xrangeLine.text())+" "+unicode(self.ellintFrame.yrangeLine.text())
        subpix=unicode(self.ellintFrame.xsubpixLine.text())+" "+unicode(self.ellintFrame.ysubpixLine.text())
        option=self.ellintFrame.optionBox.currentIndex()+1
        if option==3:
            mass=unicode(self.ellintFrame.massLine.text())
            distance=unicode(self.ellintFrame.distanceLine.text())
        else:
            mass=""
            distance=""
        order=self.ellintFrame.orderBox.currentIndex()+1
        radii=unicode(self.ellintFrame.radiiLine.text())
        width=unicode(self.ellintFrame.widthLine.text()).strip()
        pa=unicode(self.ellintFrame.paLine.text()).strip()
        incl=unicode(self.ellintFrame.inclLine.text()).strip()
        
        n_segments=self.ellintFrame.segmentList.count()
        segments="0 360"
        for j in range(1, n_segments):
            item=self.ellintFrame.segmentList.item(j)
            if item.text() !="":
                segments=segments+", "+unicode(item.text())
        if self.ellintFrame.overlapCheck.checkState() == Qt.Checked:
            overlap="Y"
        else:
            overlap="N"
        
        
        taskcommand='ELLINT INSET=%s FILENAME= POS=%s RANGE=%s RADII=%s WIDTH=%s PA=%s INCL=%s  SEGMENTS=%s OPTION=%s ORDER=%s SUBPIX=%s OVERLAP=%s MEDIAN=Y OVERLAY= ELLIPSE= FORMAT= GRDEVICE=NULL PLOTOPT= MASS=%s DISTANCE=%s GDSTABLE=Y OKAY=Y TABNAME=%s'\
                                        %(inset,  centre,  rang,  radii, width, pa, incl,  segments, option, order,  subpix, overlap,  mass,  distance, self.tabname)
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            self.taskcommand=self.buildCommand()
            
            self.clearError()
            self.showStatus("Running")
            #saveTaskValues(self.taskcommand)
            self.gt.launchTask(self.taskcommand, self)


class view_galmod(view_task):
   
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_galmod, self).__init__(parent, filename,"galmod",    *TASKS_CLASS["GALMOD"], defaultPath=defaultPath)
        self.parent=parent
        
        self.keys=["INSET=", "BOX=", "OUTSET=","POS=", "VSYS=", "RADII=", "EMPTY=", "VROT=", "VDISP=", \
                          "DENS=", "Z0=", "NRESTR=", "INCL=", "PA=", "LTYPE=", "CMODE=", "CDENS=", "NV=", "ISEED=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
        

        #self.parent.sampClient.bindReceiveNotification("coord.pointAt.sky",self.test_receive_notification)
        #Get the opened tables
        self.loadTables()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.galmodFrame = Ui_galmod()
        self.galmodFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("GALMOD")
        self.replaceButton.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.radiiLine)
        self.connect(self.galmodFrame.radiiButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.vrotLine)
        self.connect(self.galmodFrame.vrotButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.vdispLine)
        self.connect(self.galmodFrame.vdispButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.densLine)
        self.connect(self.galmodFrame.densButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.zoLine)
        self.connect(self.galmodFrame.zoButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.paLine)
        self.connect(self.galmodFrame.paButton,  SIGNAL("clicked()"), curried)
        curried=functools.partial(self.showTableBrowser, self.galmodFrame.inclLine)
        self.connect(self.galmodFrame.inclButton,  SIGNAL("clicked()"), curried)
        
        
        self.connect(self.galmodFrame.saveParamsButton, SIGNAL("clicked()"), self.saveParams)
        self.connect(self.galmodFrame.loadParamsButton, SIGNAL("clicked()"), self.loadParams)
        self.connect(self, SIGNAL("insetChanged()"), self.showRelatedData)
        
        self.connect(self.parent, SIGNAL("openTable"), self.loadTables)
        self.connect (self.parent, SIGNAL("sampcoord"), self.receive_coord)
        
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)

    def receive_coord (self, ra, dec):
        if self.galmodFrame.checkSampCentre.isChecked():
            self.galmodFrame.xcentreLine.setText(ra)
            self.galmodFrame.xcentreLine.setCursorPosition(0)
            self.galmodFrame.ycentreLine.setText(dec)
            self.galmodFrame.ycentreLine.setCursorPosition(0)
        
        if self.insetPath!=None and self.insetPath!="":
            tmpset=gipsySet()
            tmpset.loadSetRO(self.insetPath)
            value=tmpset.getImageValue(ra, dec)
            dist=tmpset.getDistanceToCenter(ra, dec)
            tmpset.closeSet()
            if value==None:
                value=""
            else:
                value=unicode(value)
            if dist==None:
                dist=""
            else:
                try:
                    dist=unicode(int(dist))
                except:
                    dist=unicode("NON-INT")
            
            if self.galmodFrame.checkSampVsys.isChecked():
                self.galmodFrame.vsysLine.setText(value)
            if self.galmodFrame.checkSampVrot.isChecked():
                cursor=self.galmodFrame.vrotLine.cursorPosition()
                text=self.galmodFrame.vrotLine.text()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+value+" "+text[cursor:]
                else:
                    textNew=text+" "+value
                self.galmodFrame.vrotLine.setText(textNew)
            if self.galmodFrame.checkSampRadii.isChecked():
                text=self.galmodFrame.radiiLine.text()
                cursor=self.galmodFrame.radiiLine.cursorPosition()
                if cursor<len(str(text)):
                    textNew=text[:cursor]+" "+dist+" "+text[cursor:]
                else:
                    textNew=text+" "+dist
                self.galmodFrame.radiiLine.setText(textNew)
        
    def loadTables(self):
        self.view_tables={}
        for doc in self.parent.allDocuments:
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE"):
                self.view_tables[doc.getDocname()]=self.parent.allWidgets[doc.getDocname()]
                
    def showTableBrowser(self, line):
        Dlg=tablebrowser(self.view_tables)
        if Dlg.exec_():
            data=Dlg.column
            if data !=None:
                if len(data)>0:
                    text=" ".join(data)
                    line.setText(text)
                    
    def saveParams(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,
                            "Choose File", "./galmodParams.param",FORMATS["PARAM"]))
        if (fName==""):
            return
        taskcommand=self.buildCommand()
        saveTaskValues(taskcommand, fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        #Defaults
        self.galmodFrame.vsysLine.setText("0.0")
        
        values=getTaskValues("galmod", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("VSYS"):
                self.galmodFrame.vsysLine.setText(values["VSYS"])
            if values.has_key("RADII"):
                self.galmodFrame.radiiLine.setText(values["RADII"])
            if values.has_key("VROT"):
                self.galmodFrame.vrotLine.setText(values["VROT"])
            if values.has_key("VDISP"):
                self.galmodFrame.vdispLine.setText(values["VDISP"])
            if values.has_key("DENS"):
                self.galmodFrame.densLine.setText(values["DENS"])
            if values.has_key("Z0"):
                self.galmodFrame.zoLine.setText(values["Z0"])
            if values.has_key("PA"):
                self.galmodFrame.paLine.setText(values["PA"])
            if values.has_key("INCL"):
                self.galmodFrame.inclLine.setText(values["INCL"])
            if values.has_key("POS"):
                if len(values["POS"].split())==2:
                    x, y=values["POS"].split()
                    self.galmodFrame.xcentreLine.setText(x)
                    self.galmodFrame.ycentreLine.setText(y)
            if values.has_key("EMPTY"):
                if values["EMPTY"]=="Y":
                    self.galmodFrame.emptyCheck.setCheckState(Qt.Checked)
                else:
                    self.galmodFrame.emptyCheck.setCheckState(Qt.Unchecked)
            if values.has_key("CDENS"):
                self.galmodFrame.cdensLine.setText(values["CDENS"])
            if values.has_key("NV"):
                self.galmodFrame.nvLine.setText(values["NV"])
            if values.has_key("CMODE"):
                if values["CMODE"]=="0":
                    self.galmodFrame.cmode0Radio.setChecked(True)
                if values["CMODE"]=="1":
                    self.galmodFrame.cmode1Radio.setChecked(True)
            
            if values.has_key("LTYPE"):
                try:
                    ltype=int(values["LTYPE"])-1
                except:
                    ltype=0
                self.galmodFrame.layerBox.setCurrentIndex(ltype)
            if values.has_key("ISEED"):
                self.galmodFrame.iseedLine.setText(values["ISEED"])

    def clearParams(self):
        
        self.galmodFrame.vsysLine.setText("")
        self.galmodFrame.drvalLine.setText("")
        self.galmodFrame.radiiLine.setText("")
        self.galmodFrame.vrotLine.setText("")
        self.galmodFrame.vdispLine.setText("")
        self.galmodFrame.densLine.setText("")
        self.galmodFrame.zoLine.setText("")
        self.galmodFrame.paLine.setText("")
        self.galmodFrame.inclLine.setText("")
        self.galmodFrame.xcentreLine.setText("")
        self.galmodFrame.ycentreLine.setText("")
        self.galmodFrame.emptyCheck.setCheckState(Qt.Checked)
        self.galmodFrame.cdensLine.setText("")
        self.galmodFrame.nvLine.setText("")
        self.galmodFrame.cmode0Radio.setChecked(True)
        self.galmodFrame.layerBox.setCurrentIndex(0)
        self.galmodFrame.iseedLine.setText("")


    def showRelatedData(self):
        if self.insetPath!=None:
            #This function is executed when the user select a inset, so the samp should be enabled
            self.galmodFrame.checkSampCentre.setEnabled(True)
            self.galmodFrame.checkSampRadii.setEnabled(True)
            self.galmodFrame.checkSampVrot.setEnabled(True)
            self.galmodFrame.checkSampVsys.setEnabled(True)
            
            
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "radii" in status:
            self.galmodFrame.radiiLine.setPalette(p)
        if "Position Angles" in status:
            self.galmodFrame.paLine.setPalette(p)
        if "Inclination" in status:
            self.galmodFrame.inclLine.setPalette(p)
        if "Central position" in status:
            self.galmodFrame.xcentreLine.setPalette(p)
            self.galmodFrame.ycentreLine.setPalette(p)
            
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)
        self.galmodFrame.radiiLine.setPalette(p)
        self.galmodFrame.vrotLine.setPalette(p)
        self.galmodFrame.paLine.setPalette(p)
        self.galmodFrame.inclLine.setPalette(p)
        self.galmodFrame.xcentreLine.setPalette(p)
        self.galmodFrame.ycentreLine.setPalette(p)
        self.galmodFrame.vsysLine.setPalette(p)
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
    
    def buildCommand(self):
        setname=unicode(self.outsetNameLine.text())
        if setname == "":
            outsetPath=""
        else:
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
       
        centre=unicode(self.galmodFrame.xcentreLine.text())+" "+unicode(self.galmodFrame.ycentreLine.text())
        vsys=unicode(self.galmodFrame.vsysLine.text()).strip()
        
        if self.galmodFrame.emptyCheck.checkState() == Qt.Checked:
            empty="Y"
        else:
            empty="N"
        radii=unicode(self.galmodFrame.radiiLine.text())
        vrot=unicode(self.galmodFrame.vrotLine.text()).strip()
        drval=unicode(self.galmodFrame.drvalLine.text()).strip()
        vdisp=unicode(self.galmodFrame.vdispLine.text()).strip()
        
        dens=unicode(self.galmodFrame.densLine.text()).strip()
        z0=unicode(self.galmodFrame.zoLine.text()).strip()
        pa=unicode(self.galmodFrame.paLine.text()).strip()
        
        incl=unicode(self.galmodFrame.inclLine.text()).strip()
        
        cdens=unicode(self.galmodFrame.cdensLine.text()).strip()
        nv=unicode(self.galmodFrame.nvLine.text()).strip()
        if self.galmodFrame.cmode0Radio.isChecked():
            cmode=0
        elif self.galmodFrame.cmode1Radio.isChecked():
            cmode=1
        
        ltype=self.galmodFrame.layerBox.currentIndex()+1
        iseed=unicode(self.galmodFrame.iseedLine.text()).strip()
       
       
        
        taskcommand='GALMOD INSET=%s BOX=%s OUTSET=%s POS=%s VSYS=%s RADII=%s EMPTY=%s VROT=%s VDISP=%s DENS=%s Z0=%s NRESTR= INCL=%s PA=%s LTYPE=%s CMODE=%s CDENS=%s NV=%s ISEED=%s DRVAL3=%s OKAY=Y'\
                                    %(inset, box, outsetPath, centre, vsys, radii, empty, vrot, vdisp, dens, z0, incl, pa,  ltype, cmode, cdens, nv, iseed, drval)
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                self.taskcommand=self.buildCommand()
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

class view_potential(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_potential, self).__init__(parent, filename,  "potential", *TASKS_CLASS["POTENTIAL"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "BOX1=", "BOX2=","OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
       
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.potentialFrame = Ui_potential()
        self.potentialFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("POTENTIAL")
        self.replaceButton.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
       #Load the last values
        values=getTaskValues("potential")
        if values !=None:
                   
            if values.has_key("BOX2"):
                self.potentialFrame.box2Line.setText(values["BOX2"])
        

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "BOX" in status:
            self.potentialFrame.box2Line.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.potentialFrame.box2Line.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                box2=unicode(self.potentialFrame.box2Line.text())
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                
                self.taskcommand='POTENTIAL INSET=%s BOX1=%s BOX2=%s OKAY=Y OUTSET=%s'%(inset, box, box2, outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)

class view_pplot(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_pplot, self).__init__(parent,  filename, "pplot", *TASKS_CLASS["PPLOT"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "PROFINT=", "PROFILE=", "FILENAME=","GRDEVICE=", "CHARHEIGHT=", "XRANGE=", \
                          "YRANGE=", "XSIZE=", "YSIZE=", "LOCATION=", "GPLOT=", "ERASE=", "OVERWRITE="] #List of the keys/parameters of task, nowadays

        self.log=""
        self.tofinish=False
        self.gt=gipsyTask()
        self.lineedits=[]
        #self.qtLinks=[]
       
        #Adding the pplot frame
        frame = QtGui.QFrame()
        self.pplotFrame = Ui_pplot()
        self.pplotFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("PPLOT")
        self.outsetFrame.hide()
        self.pplotFrame.browserFileButton.setAutoDefault(False)
        self.pplotFrame.browserFileButton.setDefault(False)

        self.connect(self.pplotFrame.browserFileButton, SIGNAL("clicked()"), self.browserFile)
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        
    def browserFile(self):
        
        fName = unicode(QFileDialog.getSaveFileName(self,"Choose File", "./pplot.dat",FORMATS["TABLE"]))
        self.pplotFrame.filenameLine.setText(fName)

    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "filename" in status:
            self.pplotFrame.filenameLine.setPalette(p)
        if "subsets" in status:
            p.setColor(QPalette.WindowText, QColor(255, 0,0))
            self.insetLabel.setPalette(p)
            self.boxLabel.setPalette(p)
        if "Profile" in status:
            self.pplotFrame.profileLine.setPalette(p)
            
       
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
  
        self.pplotFrame.filenameLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
        
            
            
    def finished(self, log):
        
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        filename=unicode(self.pplotFrame.filenameLine.text())
        self.emit(SIGNAL("newTable"),filename, 0)
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            filename=unicode(self.pplotFrame.filenameLine.text())
            if filename=="":
                self.showStatus("Insert a filename")
                return
            if os.path.exists(filename):
                reply=QMessageBox.question(self,  
                                                        "Overwrite file",  
                                                        "The file already exists. Do you want overwrite it?",  
                                                        QMessageBox.Yes|QMessageBox.No)
                if reply==QMessageBox.No:
                    return
            profile=unicode(self.pplotFrame.profileLine.text())
            if profile=="":
                self.showStatus("Insert a profile")
                return
                
            inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
            box=unicode(self.boxLabel.text())

            self.taskcommand='PPLOT INSET=%s FILENAME=%s PROFILE=%s; GRDEVICE=Null PROFINT= CHARHEIGHT= XRANGE= YRANGE= XSIZE= YSIZE= LOCATION= ERASE=Y GPLOT=N OVERWRITE=Y'%(inset,  filename, profile)
            
            self.clearError()
            self.showStatus("Running")
            self.gt.launchTask(self.taskcommand, self)



class view_profil(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_profil, self).__init__(parent,  filename,"profil",   *TASKS_CLASS["PROFIL"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "BOX=", "SETX=","BOXX=","OUTSET=", "WLTYPE=", "LC=","MASK=","THRESHOLD=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.parent=parent                 
        
        self.log=""
        self.contSetPath=None
        self.gt=gipsyTask()
        self.outsetBrowserDlg=setbrowser(self.parent, self.contSetPath, "", "", *TASKS_CLASS["PROFIL"])
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.profilFrame = Ui_profil()
        self.profilFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("PROFIL")
        self.outsetFrame.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        self.connect(self.profilFrame.contSetButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect(self.profilFrame.contBoxButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect(self.profilFrame.browserFileButton, SIGNAL("clicked()"),  self.browserFile )
        self.connect(self.profilFrame.wtypeBox, SIGNAL("currentIndexChanged(int)"), self.enableLine)
       
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)
        

    def enableLine(self, option):
        if option==0: #The first option is the "No weighting"
            self.profilFrame.line_checkBox.setEnabled(False)
        else:
            self.profilFrame.line_checkBox.setEnabled(True)
        
    def browserFile(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,"Choose File", "./profile.dat","*"))
        self.profilFrame.filenameLine.setText(fName)


    def outsetBrowser(self):
        self.outsetBrowserDlg.show()
        self.outsetBrowserDlg.raise_()
        self.outsetBrowserDlg.activateWindow()
        self.connect(self.outsetBrowserDlg, SIGNAL("accepted()"), self.getValuesContSet)
    
    def getValuesContSet(self):
        subset=unicode(self.outsetBrowserDlg.subsetLine.text())
        box=unicode(self.outsetBrowserDlg.boxLine.text())
        if subset !="": # I dont know why, but when the task window close, this method is called, and the subset/box are empty
            #Get info about inset
            self.contSetPath=subset.split()[0]
            #If the user type the name of the set without the path,
            #the working directory path has to be added
            if "/" not in self.contSetPath:
                self.contSetPath=os.getcwd()+"/"+self.contSetPath
            
            #Deleting the path string of the subset text
            setname=os.path.basename(self.contSetPath)
            subset=setname+" "+" ".join(subset.split()[1:])
            self.profilFrame.contSetLabel.setText(subset)
            self.profilFrame.contSetLabel.setToolTip(self.contSetPath)
            self.profilFrame.contBoxLabel.setText(box)
                

    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        values=getTaskValues("profil", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("WTYPE"):
                try:
                    wtype=int(values["WTYPE"])-1
                except:
                    wtype=0
                self.profilFrame.wtypeBox.setCurrentIndex(wtype)
 
            if values.has_key("THRESHOLD"):
                self.profilFrame.thresholdLine.setText(values["THRESHOLD"])
                

    def clearParams(self):
        
        self.profilFrame.wtypeBox.setCurrentIndex(0)
        self.profilFrame.thresholdLine.setText("")
 
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "LINE" in status:
            self.profilFrame.thresholdLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.insetLabel.setPalette(p)
        self.boxLabel.setPalette(p)

        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
        tmp=gipsySet()
        tmp.loadSetRO("profiltmpset")
        i=tmp.imageArray()
        k = i.shape[0]          # Length of first element = last axis
        # Loop over all subsets
        filename=unicode(self.profilFrame.filenameLine.text())
        with open(filename, "w") as f:
            index=0
            for j in range(0,k):
                m = i[j]             # Extract a subset along the last axis. Note that
                                        # i[j] is an abbreviation of the array slice i[j,:,:]
                #me = m.mean()        # Get the mean of this subset
                try:
                    value=float(m)
                except:
                    value='error'
                f.write("%s %s\n"%(index, value))
                index+=1
        tmp.deleteSet()
        self.emit(SIGNAL("newTable"), filename, 0)
        
    
    def buildCommand(self):

            
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        
        setx= unicode(self.profilFrame.contSetLabel.toolTip())+" "+" ".join(unicode(self.profilFrame.contSetLabel.text()).split()[1:])
        boxx=unicode(self.profilFrame.contBoxLabel.text())
        
            
        wtype=self.profilFrame.wtypeBox.currentIndex()+1
        threshold=unicode(self.profilFrame.thresholdLine.text())
        line="N"
        if self.profilFrame.line_checkBox.isEnabled():
            if self.profilFrame.line_checkBox.isChecked():
                line="Y"
        taskcommand='PROFIL INSET=%s BOX=%s SETX=%s BOXX=%s OUTSET=profiltmpset WTYPE=%s LC=%s MASK=N THRESHOLD=%s OKAY=Y'\
                                    %(inset, box, setx, boxx, wtype, line, threshold )
                        
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.profilFrame.contSetLabel.text()=="":
                self.showStatus("Give continuum set ")
                return
            
            self.taskcommand=self.buildCommand()
            
            self.clearError()
            self.showStatus("Running")
            saveTaskValues(self.taskcommand)
            self.gt.launchTask(self.taskcommand, self)


class view_slice(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_slice, self).__init__(parent,  filename,"slice",  *TASKS_CLASS["PPLOT"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "POSITION=", "ANGLE=", "GRIDOUT=", "POINTS=", "SLICES=", "SPACE=", "OUTSET="\
                         "PLOT=", "GRDEVICE=", "PGMOSAIC=", "PGPAPER=", "PGBOX=",  "OKAY="] #List of the keys/parameters of task, nowadays
        self.log=""
        self.gt=gipsyTask()
       
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.sliceFrame = Ui_slice()
        self.sliceFrame.setupUi(frame)
        self.horizontalLayout.addWidget(frame)
        
        self.setWindowTitle("SLICE")
        self.replaceButton.hide()
        
        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
       #LOAD LAST VALUES
        self.loadParams(defaultFile=True)
    
    def browserFile(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,"Choose File", dir,"*"))
        self.sliceFrame.filenameLine.setText(fName)
        
    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        values=getTaskValues("slice", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("POSITION"):
                if len(values["POSITION"].split(","))==2:
                    x, y=values["POSITION"].split(",")
                    self.sliceFrame.xposLine.setText(x)
                    self.sliceFrame.yposLine.setText(y)
            if values.has_key("ANGLE"):
                self.sliceFrame.angleLine.setText(values["ANGLE"])
            if values.has_key("POINTS"):
                self.sliceFrame.pointsLine.setText(values["POINTS"])
            if values.has_key("GRIDOUT"):
                self.sliceFrame.gridoutLine.setText(values["GRIDOUT"])
            if values.has_key("SLICES"):
                slices=values["SLICES"].split(",")
                if len(slices)==2:
                    self.sliceFrame.upslicesLine.setText(slices[0])
                    self.sliceFrame.downslicesLine.setText(slices[1])
            if values.has_key("SPACE"):
                self.sliceFrame.spaceLine.setText(values["SPACE"])
                
    def clearParams(self):
        self.sliceFrame.xposLine.setText("")
        self.sliceFrame.yposLine.setText("")
        self.sliceFrame.angleLine.setText("")
        self.sliceFrame.pointsLine.setText("")
        self.sliceFrame.gridoutLine.setText("")
        self.sliceFrame.upslicesLine.setText("")
        self.sliceFrame.downslicesLine.setText("")
        self.sliceFrame.spaceLine.setText("")
                
                
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
        if "angle" in status:
            self.sliceFrame.angleLine.setPalette(p)
        if "pixels" in status:
            self.sliceFrame.pointsLine.setPalette(p)
        if "grid" in status:
            self.sliceFrame.gridoutLine.setPalette(p)
        if "position" in status:
            self.sliceFrame.xposLine.setPalette(p)
            self.sliceFrame.yposLine.setpalette(p)
        if "Above" in status:
            self.sliceFrame.upslicesLine.setPalette(p)
            self.sliceFrame.downslicesLine.setPalette(p)
        if "spacing" in status:
            self.sliceFrame.spaceLine.setPalette(p)
            
          
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
        
        self.sliceFrame.angleLine.setPalette(p)
        self.sliceFrame.pointsLine.setPalette(p)
        self.sliceFrame.gridoutLine.setPalette(p)
        self.sliceFrame.upslicesLine.setPalette(p)
        self.sliceFrame.downslicesLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearError()
        self.clearExtraLayout()
        setname=unicode(self.outsetNameLine.text())
        outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
        self.emit(SIGNAL("newSet"),unicode(self.insetLabel.toolTip()), outsetPath, "SLICE")
       
        
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                position=unicode(self.sliceFrame.xposLine.text()).strip()+", "+unicode(self.sliceFrame.yposLine.text()).strip()
                angle=unicode(self.sliceFrame.angleLine.text()).strip()
                points=unicode(self.sliceFrame.pointsLine.text()).strip()
                gridout=unicode(self.sliceFrame.gridoutLine.text()).strip()
                slices=unicode(self.sliceFrame.upslicesLine.text()).strip()+", "+unicode(self.sliceFrame.downslicesLine.text()).strip()
                space=unicode(self.sliceFrame.spaceLine.text()).strip()
                
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
                
                
                inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
                box=unicode(self.boxLabel.text())
                
                self.taskcommand='SLICE INSET=%s POSITION=%s ANGLE=%s GRIDOUT=%s POINTS=%s SLICES=%s SPACE=%s OUTSET=%s PLOT=N GRDEVICE=NULL PGMOSAIC= PGBOX= O OKAY=Y'\
                                                %(inset, position,  angle,  gridout,  points, slices, space, outsetPath)
                
                self.clearError()
                self.showStatus("Running")
                self.gt.launchTask(self.taskcommand, self)


class view_shuffle(view_task):
    def __init__(self,parent, filename, defaultPath="./"):
        super(view_shuffle, self).__init__(parent,filename, "shuffle",   *TASKS_CLASS["SHUFFLE"], defaultPath=defaultPath)
        
        self.keys=["INSET=", "CSET=", "NMAX=", "CDELT=", "OUTSET=", "OKAY="] #List of the keys/parameters of task, nowadays
        self.parent=parent                 
        
        self.log=""
        self.maskSetPath=None
        self.gt=gipsyTask()
        
        #Adding the clip frame
        frame = QtGui.QFrame()
        self.shuffleFrame = Ui_shuffle()
        self.shuffleFrame.setupUi(frame)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.addWidget(frame)
                
        self.setWindowTitle("SHUFFLE")
        self.replaceButton.hide()

        self.connect(self.buttonBox, SIGNAL("clicked(QAbstractButton *)"), self.runtask)
        
        self.outsetBrowserDlg=setbrowser(self.parent, self.maskSetPath, "", "", *TASKS_CLASS["SHUFFLE"])
        self.connect(self.shuffleFrame.maskSetButton,  SIGNAL("clicked()"),  self.outsetBrowser)
        self.connect(self.shuffleFrame.maskBoxButton,  SIGNAL("clicked()"),  self.outsetBrowser)
       
        #LOAD LAST VALUES
        self.loadParams(defaultFile=True)
        

    def browserFile(self):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getSaveFileName(self,"Choose File", dir,"*"))
        self.shuffleFrame.filenameLine.setText(fName)

    def fileBrowser(self, line):
        dir = os.path.dirname(".")
        fName = unicode(QFileDialog.getOpenFileName(self,
                            "Choose File", dir,"*"))
        if (fName==""):
            return
        line.setText(fName)
    
    
    def outsetBrowser(self):
        self.outsetBrowserDlg.show()
        self.outsetBrowserDlg.raise_()
        self.outsetBrowserDlg.activateWindow()
        self.connect(self.outsetBrowserDlg, SIGNAL("accepted()"), self.getValuesMaskSet)
    
    def getValuesMaskSet(self):
        subset=unicode(self.outsetBrowserDlg.subsetLine.text())
        box=unicode(self.outsetBrowserDlg.boxLine.text())
        if subset !="": # I dont know why, but when the task window close, this method is called, and the subset/box are empty
            #Get info about inset
            self.maskSetPath=subset.split()[0]
            #If the user type the name of the set without the path,
            #the working directory path has to be added
            if "/" not in self.maskSetPath:
                self.maskSetPath=os.getcwd()+"/"+self.maskSetPath
            
            #Deleting the path string of the subset text
            setname=os.path.basename(self.maskSetPath)
            subset=setname+" "+" ".join(subset.split()[1:])
            self.shuffleFrame.maskSetLabel.setText(subset)
            self.shuffleFrame.maskSetLabel.setToolTip(self.maskSetPath)
            self.shuffleFrame.maskBoxLabel.setText(box)
                

    def loadParams(self, defaultFile=False):
        if not defaultFile:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self,
                                "Choose File", dir,FORMATS["PARAM"]))
            if (fName==""):
                return
            filename=fName
        else:
            filename=None
        
        values=getTaskValues("profil", filename)
        if values !=None:
            self.clearParams()
            if values.has_key("NMAX"):
                self.shuffleFrame.nmaxLine.setText(values["NMAX"])
            if values.has_key("CDELT"):
                self.shuffleFrame.nmaxLine.setText(values["CDELT"])
                

    def clearParams(self):
        self.shuffleFrame.nmaxLine.setText("")
        self.shuffleFrame.nmaxLine.setText("")
        
        
    def highlightError(self, status):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 0,0))
            
        if "Number" in status:
            self.shuffleFrame.nmaxLine.setPalette(p)
        if "separation" in status:
            self.shuffleFrame.cdeltLine.setPalette(p)
    
    def clearError(self):
        p=QPalette()
        p.setColor(QPalette.Base, QColor(255, 255,255))
        p.setColor(QPalette.WindowText, QColor(64, 64,64))
        
        self.outsetPathLabel.setPalette(p)
        self.outsetNameLine.setPalette(p)
                
        self.shuffleFrame.nmaxLine.setPalette(p)
        self.shuffleFrame.cdeltLine.setPalette(p)
        
        self.status.setText("")
        self.errorMsg.setText("")
    
    def finished(self, log):
        self.emit(SIGNAL("taskExecuted"), log)
        saveTaskValues(self.taskcommand)
        self.clearExtraLayout()
    
    def buildCommand(self):
        setname=unicode(self.outsetNameLine.text())
        if setname == "":
            outsetPath=""
        else:
            outsetPath=unicode(self.outsetPathLabel.toolTip())+"/"+setname
            
        inset=unicode(self.insetLabel.toolTip())+" "+" ".join(unicode(self.insetLabel.text()).split()[1:])
        box=unicode(self.boxLabel.text())
        
        cset= unicode(self.shuffleFrame.maskSetLabel.toolTip())+" "+" ".join(unicode(self.shuffleFrame.maskSetLabel.text()).split()[1:])
        nmax=unicode(self.shuffleFrame.nmaxLine.text()).strip()
        cdelt=unicode(self.shuffleFrame.cdeltLine.text()).strip()
        taskcommand='SHUFFLE INSET=%s CSET=%s NMAX=%s CDELT=%s OUTSET=%s OKAY=Y'\
                                    %(inset, cset, nmax, cdelt, outsetPath)
        return taskcommand
            
    def runtask(self,button):

        role=self.buttonBox.buttonRole(button)

        if (role==QDialogButtonBox.ApplyRole):
            if self.insetPath == None:
                self.showStatus("Give set (,subsets)")
                return
            if self.checkOutset():
                setname=unicode(self.outsetNameLine.text())
                if setname == "":
                    p=QPalette()
                    p.setColor(QPalette.Base, QColor(255, 0,0))
                    self.outsetPathLabel.setPalette(p)
                    self.outsetNameLine.setPalette(p)
                    return
                    
                self.taskcommand=self.buildCommand()
                
                self.clearError()
                self.showStatus("Running")
                saveTaskValues(self.taskcommand)
                self.gt.launchTask(self.taskcommand, self)
####END ./../development/gipsyClasses/view_tasks.py
####START ./../development/gipsyClasses/xreverse.py
# copyright 2004 Michael D. Stenner <mstenner@ece.arizona.edu>
# license: LGPL

class xreverse:
    def __init__(self, file_object, buf_size=1024*8):
        self.fo = fo = file_object
        fo.seek(0, 2)        # go to the end of the file
        self.pos = fo.tell() # where we are 
        self.buffer = ''     # data buffer
        self.lbuf = []       # buffer for parsed lines
        self.done = 0        # we've read the last line
        self.jump = -1 * buf_size
        
        while 1:
            try:            fo.seek(self.jump, 1)
            except IOError: fo.seek(0)
            new_position = fo.tell()
            new = fo.read(self.pos - new_position)
            fo.seek(new_position)
            self.pos = new_position

            self.buffer = new + self.buffer
            if '\n' in new: break
            if self.pos == 0: return self.buffer

        nl = self.buffer.split('\n')
        nlb = [ i + '\n' for i in nl[1:-1] ]
        if not self.buffer[-1] == '\n': nlb.append(nl[-1])
        self.buffer = nl[0]
        self.lbuf = nlb

    def __iter__(self): return self

    def next(self):
        try:
            return self.lbuf.pop()
        except IndexError:
            fo = self.fo
            while 1:
                #get the next chunk of data
                try:            fo.seek(self.jump, 1)
                except IOError: fo.seek(0)
                new_position = fo.tell()
                new = fo.read(self.pos - new_position)
                fo.seek(new_position)
                self.pos = new_position

                nl = (new + self.buffer).split('\n')
                self.buffer = nl.pop(0)
                self.lbuf = [ i + '\n' for i in nl ]

                if self.lbuf: return self.lbuf.pop()
                elif self.pos == 0:
                    if self.done:
                        raise StopIteration
                    else:
                        self.done = 1
                        return self.buffer + '\n'
####END ./../development/gipsyClasses/xreverse.py
####START ./../development/gipsyClasses/tablebrowser.py
# -*- coding: utf-8 -*-
#import sys
#import functools
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


#from Ui_tablebrowser import *
#from table.view_table import *
#from general import *

#from new_exceptions import *



class tablebrowser(QDialog, Ui_tablebrowser):
    def __init__(self, view_tables):
        super(tablebrowser, self).__init__()
        self.setupUi(self)
        
        self.tablePath=None
        self.view_tables=view_tables
        self.table=None
        self.column=None
            
#        self.connect(self.openButton,  SIGNAL("clicked()"), self.browser)
        self.connect(self.tableBox, SIGNAL("currentIndexChanged(QString)"),self.updateColumnsList)
       
        
        #Generating  table list comboBox
        index=0
        for key, val in view_tables.iteritems():
            text=unicode(key)[-50:]
            self.tableBox.addItem(text, QVariant(key))
            self.tableBox.setItemData(index,unicode(key), Qt.ToolTipRole)
            index +=1
          
        self.connect(self.columnsBox, SIGNAL("currentIndexChanged(QString)"), self.updateColumnSelected)
        #self.connect(self.columnsBox, SIGNAL("currentIndexChanged()"), self.updateColumnSelected)
        self.updateColumnsList(0)
    
#    def browser(self):
#        dir = os.path.dirname(".")
#        fName = unicode(QFileDialog.getOpenFileName(self, "File open ", dir,TABLEFORMAT))
#        if (fName==""):
#            return
#        self.tablePath=unicode(fName)
#        self.table=view_table(fName)
#        try:
#            self.table.loadTable()
#        except:
#            return
#        self.tablePathLabel.setText(self.tablePath)
#        for index,  title in enumerate(self.table.getColumnTitles()):
#            self.columnsBox.addItem(title, QVariant(index))

    def updateColumnsList(self,index):
        item=self.tableBox.itemData(self.tableBox.currentIndex(), Qt.ToolTipRole)
        text=self.tableBox.itemData(self.tableBox.currentIndex(), Qt.DisplayRole)
        text=unicode(text.toString())
        item=unicode(item.toString())
        self.tablePathLabel.setText(text)
        self.tablePathLabel.setToolTip(item)
        if item:
            currentTable=item
            self.table=self.view_tables[currentTable]
            columnTitles=self.view_tables[currentTable].getColumnTitles()
            numericColumns=self.view_tables[currentTable].getNumericColumns()
            self.columnsBox.clear()
            for index, title in enumerate(columnTitles):
                if numericColumns[index]:
                    self.columnsBox.addItem(title, QVariant(index))
    
    def updateColumnSelected(self, item):
         col=self.columnsBox.itemData(self.columnsBox.currentIndex()).toInt()[0]
         colList=self.table.getColumn(col)
         if colList !=None:
            self.column= map ( lambda x: unicode(x), colList)
         
####END ./../development/gipsyClasses/tablebrowser.py
####START ./../development/gipsyClasses/view_gipsySet.py
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
#import functools

#from Ui_gipsySet import *
#from dialog.myeditarea import MyEditArea
#from gipsySet import *
#from dialog.historyDlg import *
#from dialog.gipsyHeadersDlg import *
 

    

class view_gipsySet(QScrollArea,Ui_setWidget):
    
    """ This class is a subclass of Ui_gipsySet. The Ui_gipsySet class contains the graphical part
    and view_gipsySet class contains the operational part. 
    This class provides the view to show the information set and the methods for interacting with
    the set.
    
    Parameters
    -----------------
    setname: String
        The pathname of the set
    fitsname: String, Optional
        The pathname of the fits file containing the set. 
    
    Attributes
    ---------------
    gSet: gipsySet
        It is an instance of gipsySet class. This class implement the interaction 
        with gipsy software.
    setname: String
        Pathname of the set
    fitsname: String
        Pathname of the set
        
    commentsArea: MyEditArea(QTextEdit)
        Inherited from UI_gipsySet class
    PropertiesText: QTextEdit
         Inherited from UI_gipsySet class
    historyButton: QPushButton
         Inherited from UI_gipsySet class
    headerButton: QPushButton
         Inherited from UI_gipsySet class
    
    """
    #def __init__(self, setname,  fitsname=None):
    def __init__(self, setname):
        super(view_gipsySet, self).__init__()
        self.setupUi(self)
        self.gSet=gipsySet()
        self.setname=setname
        #self.fitsname=fitsname
        
    def load(self):
        """Load a gipsy set. It could be loaded from a fits file or directly from a set file.
        Reads the properties and comments of the set and then it displays them in the 
        corresponding fields of the view
        
        Returns
        ------------
        output: String
            Return the log obtained from load the set
        
        Raises
        ---------
        gipsyException
            Raise a gipsyException when gets some error accesing to the set
        """
        
        try:
            #log=self.gSet.loadSet(self.setname,self.fitsname)
            log=self.gSet.loadSet(self.setname)
        except gipsyException as g:
            raise g
            return
        
       
        
        #Adding the comment Area
        self.commentsArea=MyEditArea()
        self.commentsArea.setReadOnly(False)
        self.commentsArea.setMaximumHeight(50)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
        self.commentsArea.setSizePolicy(sizePolicy)
        self.horizontalLayout.addWidget(self.commentsArea)
        self.connect(self.commentsArea, SIGNAL("editingFinished"),self.emitCommentsChanged)
        self.connect(self.historyButton,  SIGNAL("clicked()"), self.emitShowHistory)
        self.connect(self.headerButton,  SIGNAL("clicked()"), self.showHeaders)
        self.connect(self.sampButton, SIGNAL("clicked()"), self.emitSendToSamp )
        
        try:
            #self.PropertiesText.setText(unicode(self.gSet.getProperties()))
            text=unicode(self.gSet.getProperties())
        except gipsyException as g:
            raise g
            return
        self.PropertiesText.insertHtml("<pre>"+text+"</pre>")
        cursor=self.PropertiesText.textCursor()
        cursor.setPosition(0)
        self.PropertiesText.setTextCursor(cursor)
            
        try:
           self.commentsArea.setText(unicode(self.gSet.getComments()))
        except gipsyException as g:
            raise g
            return
        
        return log
   
    def delete(self):
        log=""
        try:
            log=self.gSet.deleteSet()
        except gipsyException as g:
            raise g
            return log
        
        return log
    def deleteTable(self, tabname, subset):
        output=self.gSet.deleteTable(tabname, subset)
        return output
        
    def closeSet(self):
        log=self.gSet.closeSet()
        return log
        
    def emitCommentsChanged(self):
        """Update the comments when the editing finish in the comments text area.
        Emit the corresponding signal with the log as parameter in order to update workflow text"""
        comments=self.commentsArea.toPlainText()
        log=self.gSet.updateComments(comments)
        self.emit(SIGNAL("commentsChanged"), log)
  

    
    def emitShowHistory(self):
        """Show in a dialog the history text of the set
        Raises
        --------
        gipsyException
        Raise a gipsyException when gets some error accesing to the set
         """
        try:
            history=self.gSet.getHistory()
        except gipsyException as g:
            QMessageBox.warning(self, "Show history failed", QString(g.msj))
            return
        
        if(history=="") : 
            history="There is not any HISTORY item "

        Dlg=historyDlg(history)
        Dlg.exec_()
        
    def emitSendToSamp(self):
        self.emit(SIGNAL("settosamp"), self.setname)
    def showHeaders(self):
        """Show in a dialg a form with the header items. This form allow edit/delete and add header items.
        When the dialog is closed, it updates the header items properly
        Raises
        ---------
        gipsyException
        Raise a gipsyException when gets some error accesing to the set
        """
        try:
            items=self.gSet.getHeaderItems()
        except gipsyException as g:
            QMessageBox.warning(self, "Read Header Set Failed", QString(g.msj))
            return
        self.ghd=gipsyHeadersDlg(items)
        self.ghd.load()
        self.connect(self.ghd, SIGNAL("headerKeyDeleted"),self.deleteHeaderKey)
        self.connect(self.ghd, SIGNAL("headerKeyChanged"),self.changeHeaderKey)
        self.connect(self.ghd, SIGNAL("headerKeyAdded"), self.addHeaderKey)
        self.ghd.exec_()
 
            

    def deleteHeaderKey(self, key):
        try:
            log=self.gSet.deleteHeaderKey(key)
        except gipsyException as g:
            QMessageBox.warning(self, "Delete Header Item Failed ", QString(g.msj))
            return
        self.emit(SIGNAL("headersChanged"), log)
        
    def changeHeaderKey(self, key, newval):
        key=str(key)
        newval=str(newval)
    
        try:
            log=self.gSet.updateHeaderKey(key,newval)
        except gipsyException as g:
            QMessageBox.warning(self, "Update Header Item Failed ", QString(g.msj))
            if hasattr(self, 'ghd'):
                self.ghd.done(0)
                try:
                    items=self.gSet.getHeaderItems()
                except gipsyException as g:
                    QMessageBox.warning(self, "Read Header Set Failed", QString(g.msj))
                    return
                self.ghd=gipsyHeadersDlg(items)
                self.ghd.load()
                self.connect(self.ghd, SIGNAL("headerKeyDeleted"),self.deleteHeaderKey)
                self.connect(self.ghd, SIGNAL("headerKeyChanged"),self.changeHeaderKey)
                self.connect(self.ghd, SIGNAL("headerKeyAdded"), self.addHeaderKey)
                self.ghd.exec_()
            return
        self.emit(SIGNAL("headersChanged"), log)
    
    def addHeaderKey(self, key, value):
        
        try:
            log=self.gSet.newHeaderKey(str(key), str(value))
        except gipsyException as g:
            QMessageBox.warning(self, "Add New Header Item Failed", QString(g.msj))
            return
        except UnicodeEncodeError:
            QMessageBox.warning(self, "ASCII encode error", QString("Unable encode "+unicode(key)+" "+unicode(value)))
            return
        self.emit(SIGNAL("headersChanged"), log)

        
    def getInfo(self):
        """Return some information about the set: the size in KB, the dimension and the axes
        
        Returns
        -----------
        output: String
            The size in KB, the dimension and the axes of the set
        """
        #Get the size of the file
        try:
            size=os.path.getsize(self.setname+".image")
        except OSError:
            return
        
        output=unicode(size/1024)+" KBytes\n"
        output=output+self.gSet.getInfo()
        return output
    def getTablesInfo(self):
        return self.gSet.getTablesInfo()

    def getTableData(self,numTable):
        return self.gSet.getTableData(numTable)


    def reload(self):
       
        log=""
        log=log+self.gSet.closeSet()
        del self.gSet
        self.gSet=gipsySet()
        try:
            log=log+self.gSet.loadSet(self.setname)
        except gipsyException as g:
            raise g
            return
        
        
        try:
            text=unicode(self.gSet.getProperties())
        except gipsyException as g:
            raise g
            return
        self.PropertiesText.setHtml("")
        self.PropertiesText.insertHtml("<pre>"+text+"</pre>")
        cursor=self.PropertiesText.textCursor()
        cursor.setPosition(0)
        self.PropertiesText.setTextCursor(cursor)
            
        try:
           self.commentsArea.setText(unicode(self.gSet.getComments()))
        except gipsyException as g:
            raise g
            return
        
        return log
####END ./../development/gipsyClasses/view_gipsySet.py
####START ./../development/gipsyClasses/gipsySet.py
#import gipsy
#from gipsy import *

#import sys
#import math
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from xreverse import *

#from new_exceptions import *
#from general import *

GIPSYLOG="./GIPSY.LOG"
HEADER_TMP="./header.tmp"



def calculateMNMX(setname):
    command="MNMX INSET=%s;"%(setname)
    id=newId()
    #notifykey = 'TASKCOMX'+unicode(id)+'='
    try:
        xeq(command) 
    except XeqError:
        raise gipsyException("%s \n Gets an error "%(command))
        return
    else:
        #output="gipsy.xeq(\""+command+"\",\""+notifykey+"\")\n"
        output="gipsy.xeq(\""+command+"\")"
        
    return output
    
class gipsySet(object):
    """ This class implements the interface between gipsy software and the application.
    Attributes
    ---------------
    fitsname: String
        The pathname of the fits file, if the set is builded from a fits file
    setname: String
        The pathname of the set without the extension .image or .descr
    filename: String
        The pathname of the set with the extension .image
    varname: String
        The pathname of the set used in the log sentence. It is composed by setname and a counter in order
        to avoid repetitions of setname in the workflow text.
    history: String
        History text of the set
    properties: String
        Properties text of the set
    __S: gipsySet
        An instance of Set class of gipsy package
    
    """

    
        

    def __init__(self):
       
        self.fitsname= ""
        self.setname= ""
        self.filename= ""
        self.varname=""
        self.properties=""
        self.history=""
        self.comments=""
        self.__S= None
        self.tables=None
        self.cnt=counter()

#    def loadSet(self,setname,fitsname=None):
    def loadSet(self,setname):
        """Read the set. If the set is in a fits file, build the corresponding set.
    
        Returns
        ------------
        output: String
           Python sentences with the executed task
        
        Raises
        ---------
        gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
        """
       
        output=""   
        self.setname=unicode(setname)
        self.filename=self.setname
  
        output=output+calculateMNMX(setname)
        try:
            self.__S=Set(self.setname, create=False, write=True, gethdu=None, getalt=None)
        except GdsError as g:
                 raise gipsyException("Couldn't create a set instance:\n %s"%(unicode(g)))
                 return
        #Getting the tables
        #self.tables = self.__S.tablis()
        maxtables = 200
        attempts = 0
        while attempts >= 0:
            try:   
                tablist = self.__S.tablis(nitems=maxtables)
                attempts = -1
            except:
                maxtables += maxtables/2
                attempts += 1
        self.tables=tablist
        #Choosing a good variable name for the workflow log
        c=self.cnt()
        self.varname=os.path.basename(self.setname)+unicode(c)

        
        output = output+"%s = gipsy.Set(\"%s\", create=False, write=True, gethdu=None, getalt=None)"%(self.varname,  self.setname)+"\n"
        
        
        return output
 
    
    def loadSetRO(self, setPath):
        self.setname=unicode(setPath)
        self.filename=setPath
       
        try:
            self.__S=Set(self.setname, create=False, write=False, gethdu=None, getalt=None)
        except GdsError as g:
            raise gipsyException("Couldn't create a set instance:\n %s"%(unicode(g)))
            return
       

        #Getting the tables
        #self.tables = self.__S.tablis()
        maxtables = 200
        attempts = 0
        while attempts >= 0:
            try:   
                tablist = self.__S.tablis(nitems=maxtables)
                attempts = -1
            except:
                maxtables += maxtables/2
                attempts += 1
        self.tables=tablist
        
    def deleteSet(self):
        """Delete the set.
        Returns
        ------------
        output: String
           Python sentences with the executed task
        
        Raises
        ---------
        gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
        
        """
        
        try:
            self.__S.delete()
        except GdsError as g:
            raise gipsyException("Couldn't delete the set:\n %s"%(unicode(g)))
            return
        else:
            output="%s.delete()\n"%(self.varname)
            return output
            
    
    def deleteSetFromFile(self, setPath):
        self.setname=unicode(setPath)
        self.filename=setPath
       
        try:
            self.__S=Set(self.setname, create=False, write=False, gethdu=None, getalt=None)
        except GdsError as g:
            raise gipsyException("Couldn't create a set instance:\n %s"%(unicode(g)))
            return
        
        try:
            self.__S.delete()
        except GdsError as g:
            raise gipsyException("Couldn't delete the set:\n %s"%(unicode(g)))
            return
            
            
    def getProperties(self):
        """Get the properties text of the set reading and parsing the gipsy log file, just after run HEADER task
        
        Raises
        ---------
        gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
        
        """
        if(self.properties!=""):
            return self.properties
        elif( self.setname!=None):
            try:
                xeq("HEADER INSET=%s MODE=AF FILENAME=%s"%(self.setname,HEADER_TMP))
            except XeqError as x:
                raise gipsyException("%s: HEADER error %s"%(self.setname, unicode(x)))
                return
            try:
                f=open(HEADER_TMP,"r")
            except:
                raise gipsyException("Unable to read header temporary file created by HEADER task")
                return
        tmp=f.read()
        parts=tmp.split("********************************************************************************")
        if len(parts)>2:
            self.properties=parts[1]+"\n********************************************************************************\n"+parts[0]
        else:
            self.properties=tmp
        f.close()
        os.remove(HEADER_TMP)
        
        return self.properties

            
    def getPropertiesModeG(self):
        """Get the properties text of the set reading and parsing the gipsy log file, just after run HEADER task
        
        Raises
        ---------
        gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
        
        """
        if(self.properties!=""):
            return self.properties
        elif( self.setname!=None):
            try:
                xeq("HEADER INSET=%s MODE=G FILENAME=%s"%(self.setname,HEADER_TMP))
            except XeqError as x:
                raise gipsyException("%s: HEADER error %s"%(self.setname, unicode(x)))
                return
            try:
                f=open(HEADER_TMP,"r")
            except:
                raise gipsyException("Unable to read header temporary file created by HEADER task")
                return
        tmp=f.read()
        parts=tmp.split("********************************************************************************")
        if len(parts)>2:
            self.properties=parts[1]+"\n********************************************************************************\n"+parts[0]
        else:
            self.properties=tmp
        f.close()
        os.remove(HEADER_TMP)
        
        return self.properties            
            
    def getHistory(self):
         """Get the history text of the set reading and parsing the gipsy log file, just after run HEADER task
        
         Raises
         ---------
         gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
        
         """
         if(self.history!=""):
            return self.history
         elif(self.setname!=None):
            try:
                xeq("HEADER INSET=%s"%(self.setname))
            except XeqError:
                raise gipsyException("%s: HEADER error"%(self.setname))
                return
            f = open(GIPSYLOG,"r")
            rev = [ line for line in xreverse(f) ]
            history="" 
            for line in rev:
                if line.startswith('='):
                    self.history=history
                    return history
                elif line.startswith("HISTORY"):
                    #skip 'history='
                    #begin=line.find('=') +1
                    #history=line[begin:].lstrip()+history
                    history=line+history
            f.close()

    def getComments(self):
         """Get the properties text of the set reading and parsing the gipsy log file, just after run HEADER task
        
         Raises
         ---------
         gipsyException
            When it gets a XeqError exception raises a gipsyException with a
            properly message
         
         """
        
         if(self.comments!=""):
            return self.comments
         elif(self.setname!=None):
            try:
                xeq("HEADER INSET=%s"%(self.setname))
            except XeqError:
                raise gipsyException("%s: HEADER error"%(self.setname))
                return
            f = open(GIPSYLOG,"r")
            rev = [ line for line in xreverse(f) ]
            comments="" 
            for line in rev:
                if line.startswith('='):
                    self.comments=comments
                    return comments
                elif line.startswith("COMMENT"):
                    #skip 'comment='
                    begin=line.find('=') +1
                    comments=line[begin:].lstrip()+comments

    def updateComments(self, comments):
        """Update the comments of the set.
        
        Parameters
        -----------------
        comments : String
            All the comments inserted by the user
        
        Returns
        ------------
        output: String
           Python sentences with the executed task
        
        """
        
        output=""
        #update comments only if new comments are different from old
        if(self.comments!=comments):
            self.comments=comments
            self.__S[0,'COMMENT']=None
            output="%s[0,\'COMMENT\']=None\n"%(self.varname)
            
            listComments=comments.split("\n")
            for comment in listComments:
                if(comment!=""):
                    self.__S.wcomment(unicode(comment[:72]))
                    output=output+"%s.wcomment(\"%s\")\n"%(self.varname, comment[:72])
            
            self.__S.update()
            output=output+"%s.update()\n"%(self.varname)
        return output
        
    def getHeaderItems(self):
        """Returns the list of header items of the set
        
        Returns
        ------------
        __S.items: list
        
        """
        return self.__S.items(0)

    def getFilename(self):
        """Returns the pathname of the set with the extension .image
        
        Returns
        -----------
        filename: String
        """
        return self.filename
    def getSetname(self):
        """Returns the pathname of the set without the extension .image
        
        Returns
        -----------
        setname: String
        """
        return self.setname
    
    def getImageValue(self, ra, dec):
        """In case the set is a image (2D) returns the value corresponding to the given coordinate
        In other case it returns None
        
        Returns
        -----------
        value: Double
        """
        lower=self.__S.slo
        sum_x=abs(lower[0])
        sum_y=abs(lower[1])
        
        shape=self.__S.image.shape
        if len(shape)==2:
            g = self.__S.togrid([ra, dec])
            x=g[0]+sum_x
            y=g[1]+sum_y
            
            #It seems the indexes in image arrary are INVERTED
            if x>=0 and y>=0 and shape[0]>y and shape[1]>x:
                value=self.__S.image[y][x]
                return value
            else:
                return None
        
        return None
    
    def getDistanceToCenter(self, ra, dec):
        """In case the set is a image (2D) returns the distance of the point to the center
        
        Returns
        -----------
        value: Double
        """
        
        shape=self.__S.image.shape
        if len(shape)==2:
            g = self.__S.togrid([ra, dec])
            x=g[0]
            y=g[1]
            value=math.sqrt((x**2)+(y**2))
            return value
        
        return None

    def updateHeaderKey(self, key, val):
        """Update a header item
        
        Parameters
        ----------------
        key: String
            Name of the header item
        val: String
            New value for the header item
            
        Returns
        ------------
        output: String
           Python sentences with the executed task
  
        """
        output="val=\"%s\"\n"%val
        if(self.__S[0, key]!=val):
            #Find the type of the value
            
            try:
                val_cast=int(val)
            except:
                val_cast=val.replace("D", "E")
                try:
                    val_cast=float(val_cast)
                except:
                    try:
                        val_cast=str(val)
                    except UnicodeEncodeError as u:
                        raise u
                    else:
                        output=output+"val=str(val)\n"
                else:
                    output=output+"val=float(val.replace(\"D\",\"E\"))\n"
            else:
                output=output+"val=int(val)\n"
            try:
                self.__S[ 0, key]=val_cast
            except GdsError as g:
                raise gipsyException("Error updating %s header, value=%s key:\n%s"%(key, val, unicode(g)))
            else:
                self.__S.update()
                output=output+"%s[0,\'%s\']=val"%(self.varname, key)+"\n"+"%s.update()"%(self.varname)
        return output
        
    def deleteHeaderKey(self, key):
        """Delete a header item
        
        Parameters
        ----------------
        key: String
            Name of the header item
            
        Returns
        ------------
        output: String
           Python sentences with the executed task
        
        Raises
         ---------
         gipsyException
            When it gets a GDsError exception raises a gipsyException with a
            properly message
  
        """
        try:
            del self.__S[ 0, key]
        except GdsError:
            raise gipsyException("Error deleting %s header key"%key)
            return
        self.__S.update()
        output="del %s[0,\'%s\']"%(self.varname, key)+"\n"+"%s.update"%(self.varname)
        return output
    
    def newHeaderKey(self, key, val):
        """Add a new header item
        
        Parameters
        ----------------
        key: String
            Name of the new header item
        val: String
            Value for the new header item
            
        Returns
        ------------
        output: String
           Python sentences with the executed task
        """
        try:
            key=str(key)
            val=str(val)
        except UnicodeEncodeError as u:
            raise u
        else:
            self.__S[ 0, key]=val
            self.__S.update()
            output="%s[0,\'%s\']=%s"%(self.varname, key, val)+"\n"+"%s.update"%(self.varname)
            return output

    def getInfo(self):
        """Returns information about dimensions and axes of the set.
        
        Returns
        -----------
        output : String
     
        """
        dim = self.__S.naxis
        output="Dimension: %s\n"%(dim)
        # Get coordinate words of first data point in set and of the last one
        lo, hi = self.__S.range(0)

        # Print the axis name and the range in grids for all the axes in the set
        for i in range(dim):
            output=output+"%s: from %d to %d\n" % (self.__S.axname(i), self.__S.grid(i, lo), self.__S.grid(i, hi))

        return output
    
    def getInfoAxes(self):
        
        dim = self.__S.naxis
        output=range(dim)
        # Get coordinate words of first data point in set and of the last one
        lo, hi = self.__S.range(0)
        # Print the axis name and the range in grids for all the axes in the set
        for i in range(dim):
            output[i]=(self.__S.axname(i),"%s %s"%(self.__S.grid(i, lo), self.__S.grid(i, hi)))
           
        return output
        
    def getAxes(self):
        output=[]
        dim = self.__S.naxis
        # Print the axis name and the range in grids for all the axes in the set
        for i in range(dim):
            output.append(self.__S.axname(i))
           
        return output
    
    def getThirdDimension(self):
        if self.__S.naxis >=3:
            return self.__S.axname(2)
        else:
            return self.__S.axname(self.__S.naxis-1)

    def getTablesInfo(self):
        tablesInfo=range(len(self.tables))
        i=0
        for tabl in self.tables:

            tablename = tabl[0]
            subset = tabl[1]
            cols = self.__S.tabinq(tablename, subset=subset)      # Get the columns for this table at this subset level
            n_cols=len(cols)
            tablesInfo[i]=(i,tablename,subset,n_cols)
            i += 1
        return tablesInfo

    def getTableData(self,numTable):
        table = self.tables[numTable]
        tablename, subset = table
        cols = self.__S.tabinq(tablename, subset=subset)
        rows={}
        for col in cols:
            rows[col]=self.__S[subset, tablename, col, :]
        return rows
        
    def deleteTable(self, tablename, subset):
        output=""

        try:
            tsubset=int(subset)
        except:
            raise gipsyException("Unable to delete the table %s %s . The subset is not an integer"%(tablename, subset))
        else:
            try:
                self.__S.deltab(tablename, tsubset)
            except:
                raise gipsyException("Unable to delete the table %s %s "%(tablename, subset))
            else:
                output="%s.deltab(%s, %s)"%(self.varname, tablename, tsubset)
        return output
        
    def clearTables(self, except_table):
        
        log="maxtables = 200\n\
attempts = 0\n\
while attempts >= 0:\n\
    try:\n\
        tablist = %s.tablis(nitems=maxtables)\n\
        attempts = -1\n\
    except:\n\
        maxtables += maxtables/2\n\
        attempts += 1\n"%self.varname
        if except_table==None:
            for tablename, subset in self.tables:
                self.__S.deltab(tablename, subset)
            log+="for tablename, subset in tablist:\n    %s.deltab(tablename, subset)\n"%self.varname
        else:
            for tablename, subset in self.tables:
                if tablename!=except_table:
                    self.__S.deltab(tablename, subset)
            log+="for tablename, subset in tablist:\n    if tablename!=%s\n        %s.deltab(tablename, subset)\n"%(except_table, self.varname)
        
        return log
    def getHeaderValue(self, key):
        try:
            value= unicode(self.__S[0, key])
        except KeyError:
            raise gipsyException("Unable to access to %s header item"%unicode(key))
            return
        return value
 
    def closeSet(self):
        self.__S.close()
        log = "%s.close()"%(self.varname)+"\n"
        return log
    
    def tryOpenSet(self, inputset, box):
        try:
            s = Set(inputset, create=False, write=False, gethdu=None, getalt=None)
        except:
            raise gipsyException("Cannot process this set: %s"%inputset)
        else:
            try:
                s.setbox(box)
            except:
                raise gipsyException("The box is not correct: %s"%box)
                s.close()
            else:
                s.close()
    
    def imageArray(self):
        return self.__S.image
####END ./../development/gipsyClasses/gipsySet.py
####START ./../development/gipsyClasses/gipsyTask.py
#import gipsy
#from gipsy import *

#import sys
#import time
#import re
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *

#from gipsyClasses.gipsySet import *
#from new_exceptions import *
#from general import *


class dynamicalForm(QDialog):
    def __init__(self, taskname,parent=None):
        super(dynamicalForm,self).__init__(parent)
       
        self.setModal(True)
        
        self.keys = []
        self.log=""
        #taskname=taskname.upper()
        cmd='Running '+taskname
        cmd_inlines=re.sub("(.{64})", "\\1\n", cmd, re.DOTALL)
        cmdlab = QLabel(cmd_inlines)
        #self.lineedit = QLineEdit()
        layout = QHBoxLayout() 
        layout.addWidget(cmdlab)
        #layout.addWidget(self.lineedit)
        self.statusLabel = QLabel('Ready')
        self.errorLabel = QLabel()
        self.errorLabel.setStyleSheet('QLabel {color: red}')
        self.layout = QVBoxLayout()
        self.layout.addLayout(layout)
        self.layout.addWidget(self.statusLabel)
        self.layout.addWidget(self.errorLabel)
        self.setLayout(self.layout)
        self.setWindowTitle('Task launcher')
        
        
   
    def addkey(self, key):
        statusLabel = QLabel(key)
        lineedit = QLineEdit()
        lineedit.setFocus()
        gipsy.QtLink(key, lineedit, 'returnPressed()', compare=False)
        layout = QHBoxLayout()
        layout.addWidget(statusLabel)
        layout.addWidget(lineedit)
        lineedit.setFocus(Qt.TabFocusReason)
        self.layout.addLayout(layout)
        
        self.keys.append(key)

    def addCloseButton(self):
        button = QPushButton("Close this form")
        layout = QHBoxLayout()
        layout.addWidget(button)
        self.layout.addLayout(layout)
        self.connect(button, SIGNAL("clicked()"), self.closeForm)
        
    def showError(self, error):
        error_inlines=re.sub("(.{64})", "\\1\n", error, re.DOTALL)
        self.errorLabel.setText(error_inlines)
    
    def showStatus(self, status):
        status_inlines=re.sub("(.{64})", "\\1\n", status, re.DOTALL)
        self.statusLabel.setText(status_inlines)
        
    def closeForm(self):
        
        self.done(0)
        
class gipsyDynamicalTask(QObject):
    """
    This class implements the interaction between GUIpsy and HERMES in a more dynamical way. The differences between the custom interface (see gipsyTask class) 
    and this dynamical interface, is that the former try to gather all the parameters needed to run a task in HERMES and if an error value is inserted, the task is aborted 
    and the user is warning about the error and asked to solve it. 
    The dynamical interface imitates the interactivity of HERMES: it gets all the messages and requests of HERMES and show them in a dynamical form. 
    In this way, for example, if the user inserts a wrong value, the task is not aborted, the dynamical form will show the message of HERMES and the user can correct t
    he value in order to continue with inserting values of parameters.

    ATTRIBUTES:

    - flagFinished, This flag is on when the task has finished. If the user close the dynamical form, and this flag is off, the task running on HERMES will be aborted.
    - form: It is an instance of the dynamicalForm class, which implements a QDialog. This instance is the dynamical dialog form to gather the parameters and show the messages from HERMES.
    - log: It contain the messages of log indicating the actions performed.
    - taskname: It is the whole command which is launched/is going to be launched to HERMES. It could be a string containing a gipsy task, or the path of a python or cola script. 
    """
  #This class is used to launch COLA files and PYTHON files
    
    def __init__(self, parent):
        super(QObject, self).__init__(parent)
        self.flagFinished=False
        return
        

    def finished(self,cb):
        self.flagFinished=True
        self.form.addCloseButton()
        self.emit(SIGNAL("taskExecuted"), self.log)
        cb.deschedule()                                          # deregister
  


    def writekey(self,cb):
        gipsy.wkey(cb.key+gipsy.usertext(cb.key, default=2, defval=''), cb.task)
        self.form.errorLabel.setText('')
        

    def show_status(self,cb):
        self.form.statusLabel.setText(gipsy.usertext(cb.key))
       

    def taskrequest(self,cb):
        taskkey = gipsy.usertext(cb.key)
        if taskkey not in self.form.keys:
            self.form.addkey(taskkey)
            self.form.keys.append(taskkey)
            gipsy.KeyCallback(self.writekey, taskkey, task=cb.task)
            taskmsg = gipsy.usertext('M_'+cb.notifykey, default=2)
        self.form.errorLabel.setText(gipsy.usertext('R_'+cb.notifykey, default=2, defval=''))
        

    def launchTask(self,task):
        self.form = dynamicalForm(task)
        self.connect(self.form, SIGNAL("finished(int)"), self.abort)
        self.form.show()
        
        self.taskname = task
        
        if not self.taskname:                                          # empty input:
            return                                                 # ignore
        notifykey = 'TASKCOM='
        
        self.log="xeq(\"%s\",\"%s\")\n"%(self.taskname, notifykey)
        
        try:
            gipsy.xeq(self.taskname, notifykey)                         # start task
            gipsy.KeyCallback(self.finished, notifykey, task=self.taskname)  # register callback
            gipsy.KeyCallback(self.taskrequest, 'K_'+notifykey,task=self.taskname, notifykey=notifykey)
            gipsy.KeyCallback(self.show_status, 'S_'+notifykey)
            self.form.lineedit.setDisabled(True)
        except:
            self.form.statusLabel.setText('Cannot run %s' % self.taskname)        # failed to start 
    
    def abort(self):
        
        if not self.flagFinished:
            task_upper=self.taskname.split()[0].upper()
            try:            
                gipsy.aborttask( task_upper)
            except:
                return
            self.log=self.log+"\ngipsy.aborttask(\"%s\")\n"%task_upper
        

            
class gipsyDirectTask(object):
    """
  This class is used to open those GIPSY task which have their own graphical interface. The method sendTask, gathers the information about
  the set needed for the task, in case there was a default set, and launches the corresponding task to HERMES, which will open the corresponding task interface.
  
    ATTRIBUTES
    - InsetAxesInfo is a list, where, in case it exists a default set,  each item will correspond to one axis of the set, containing a tuple with the name and the range of the axes
    - InsetAxesList: is a list which, in case it exists a default set, will contain the names of the set axes
    - newTaskId is the identifier of the task.
    """
    
    def __init__(self):
        self.newTaskId=counter()
        return
        
    
    def sendTask(self, task,  setname=None):
        if setname!=None:
            inset=gipsySet()
            inset.loadSetRO(setname)
            self.insetAxesInfo=inset.getInfoAxes()
            self.insetAxesList=inset.getAxes()
            inset.closeSet()
        
            (subsetText, boxText)=insetDefaultText(setname, self.insetAxesInfo,*TASKS_CLASS[task.upper()])
            command=task+" INSET=%s BOX=%s"%(subsetText, boxText)
        else:
            command=task
        key="SVKEY="
        output="xeq(%s,%s)"%(command, key)
        try:
            xeq(command, key)
        except XeqError as e:
            raise gipsyException(unicode(e))
            return
        return output

class gipsyTask(QObject):
    """
    This class implements the relation between Hermes and the static task views/forms which build a task command 
    with the values for all the parameters of the task (the views implemented in view_task.py). This class has methods for

    - launching task commands to HERMES,
    - receiving the status/error messages from HERMES and communicating these messages to the corresponding view/form, 
    - aborting a task running in HERMES. If the user close the view of the task, before the task finishes, gipsyTask will execute 
    the gipsy.abort method to abort the task.
    - receiving request parameter messages from HERMES. This is a special case. It could happen the source of a task changed, 
    and requested as obligatory one of the parameters. If the form/view, does not gather the value of this parameter, HERMES will request it. 
    The gipsyTask class will communicate this request to the form, and the form, dynamically will build a new field (QtextField) to gather 
    the value from the user and give it back to HERMES through gipsyTask class. The RFITS view uses this functionality a lot. When a fits file a
    re being converted to a gipsy SET with the RFITS, it is common RFITS request the value for some header parameters "on-the-fly", so in this case, 
    the RFITS form builds dynamically the text field to gather the value.
    Indeed, the communication gipsyTask-Form/View is stronger, since the gipsyTask class receive the form itself as a parameter, and stores it in
    one of its attributes, so on, the gipsyClass can use the form methods through this attribute.
    The communication between gipsyTask and HERMES through the xeq and KeyCallback methods needs a "notifykey" parameter. This notifykey
    has to be unique. In GUIpsy, an user could launch several tasks at the same time (through several views), so it is necessary to assure the notifikey    
    is unique. A list of 4 string is used to assure this. There are 4 strings because the default number of simultaneously tasks is 4 for the terminal hermes, 
    thermes, and 8 and for the non-interactive hermes, nhermes. This number can be changed in the Hermes defaults file, see http://www.astro.rug.nl/~gipsy/hermes/hermesdef.html. 
    If the user try to run too many tasks, xeq() will raise an XeqError exception "Cannot execute".

    ATTRIBUTES:

    - flagFinished. It is a flag to avoid send an abort signal to a task which is already finished.
    - form. This attribute is set with the form/view which is using the gipsyTask class. Through this attribute, methods of the form can be used. 
    The methods of the form used are related to show messages from HERMES in the form, or to create a new field dynamically to gather the value of a new parameter
    - log. It is used to store the logs which have to be in the workflow log of GUIpsy.
    - task. It stores the task name (just the name) of the task command which is going to be launched to HERMES
    
    """
    
    def __init__(self):
       
        #self.newTaskId=counter()
        self.flagFinished=False
        self.log=""
        return
        

    def finished(self,cb):
        self.flagFinished=True
        for othercb in cb.others:
            othercb.deschedule()
        cb.deschedule()                                          # deregister
        
#        if gipsy.usertext(cb.key) =="1":
        if gipsy.userint(cb.key)==1: # successful execution
            ID_POLL.append(cb.notifykey)
            self.form.finished(self.log)
            #In which other cases  would I have to append the notifykey to the poll?
        if gipsy.userint(cb.key)==0:
            self.form.showError("Command executed")
        if gipsy.userint(cb.key)==-1:
            self.form.showError("Hermes refused to execute command because of syntax error.")
        if gipsy.userint(cb.key)==-2:
            self.form.showError("Task exited before calling INIT")
        if gipsy.userint(cb.key)==-3:
            self.form.showError("Fatal execution error (i.e. CALL ERROR with a level at or above current error level)")
        if gipsy.userint(cb.key)==-4:
            self.form.showError("Task crashed")
        if gipsy.userint(cb.key)==-5: #User abort
            #This is the case when the gipsy.abort is executed
            ID_POLL.append(cb.notifykey)
            
   
    def writekey(self, cb):
        gipsy.wkey(cb.key+gipsy.usertext(cb.key, default=2, defval=''), cb.task)
        
   
    def taskrequest(self, cb):
        taskkey = gipsy.usertext(cb.key)
        
        if taskkey not in self.form.keys:
            self.form.addkey(taskkey)
            gipsy.KeyCallback(self.writekey, taskkey, task=cb.task)
            self.form.showError(gipsy.usertext('R_'+cb.notifykey, default=1, defval=''))
        else:
                
            self.form.showError(gipsy.usertext('R_'+cb.notifykey, default=1, defval=''))
            self.form.showStatus(gipsy.usertext('S_'+cb.notifykey, default=1, defval=''), wi="error")
            gipsy.aborttask( self.task)
           
            
        
    def show_status(self, cb):
        msg=gipsy.usertext('S_'+cb.notifykey, default=1, defval='') 
        
        if not "ABORT" in msg:
            self.form.showStatus(msg, wi="error")
         
    def launchTask(self,taskcommand, form):
        self.form=form
        self.connect(self.form, SIGNAL("finished(int)"), self.abort)
        self.task=taskcommand.split()[0].upper()

        if not taskcommand:                                          # empty input:
            return                                                 # ignore
            
        
        #Initially ID_POLL=['TASKCOM0=', 'TASKCOM1=','TASKCOM2=']
        if len(ID_POLL)==0:
            self.form.showStatus('Cannot run %s. Maximum 3 GUIpsy tasks simultaneously'%self.task)
            return
        else:
            notifykey=ID_POLL.pop()
        self.log="gipsy.xeq(\"%s\",\"%s\")\n"%(taskcommand, notifykey)
        dcb=[]
        
        try:
            gipsy.xeq(taskcommand, notifykey)                         # start task
            gipsy.KeyCallback(self.finished, notifykey, task=taskcommand, notifykey=notifykey, others=dcb)  # register callback
            dcb.append(gipsy.KeyCallback(self.taskrequest, 'K_'+notifykey,task=self.task, notifykey=notifykey))
            dcb.append(gipsy.KeyCallback(self.show_status, 'S_'+notifykey ,  notifykey=notifykey))
            
        except XeqError as e:
            self.form.showStatus('Cannot run %s. Probably Hermes has not a free task slot' % self.task)  # failed to start
            
    
    
    def abort(self):
       
        if not self.flagFinished:
            #It is NOT possible return the log, since the form is already closed when this task is executed.
            self.log=self.log+"\ngipsy.aborttask(\"%s\")\n"%self.task
            try: 
                #The method gipsy.aborttask, also trigger the method finished,due to that the notifikeys are appended to the ID_POLL
                gipsy.aborttask(self.task)
            except:
                return
            









####END ./../development/gipsyClasses/gipsyTask.py
####START ./../development/guipsy.pyw
#!/usr/bin/env python
#import gipsy
#from gipsy import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *


#Common imports 
#import sys
#import functools
#import os
#import pickle


#Import modules needed
#from browser.workspaceBrowser import *
#from gipsyClasses.view_gipsySet import *
#from gipsyClasses.gipsySet import *
#from gipsyClasses.gipsyTask import *
#from gipsyClasses.view_tasks import *
#from session.session import *
#from workflow.workflow import *
#from dialog.historyDlg import *
#from dialog.tableHeadersDlg import *
#from dialog.plotTableWindow import *
#from table.view_table import *
#from images.view_image import *
#from help.view_help import *
#from help.view_helpFile import *
#from launch.view_cola import *
#from launch.view_pyfile import *
#from text.view_text import *
#from new_exceptions import *
#import resources_rc

#Import general things
#import general
#from general import *




class document(object):
    """
    This class represents the different kind of document that GUIpsy can open: set, table, cola, text, python script, image.
    The class document has two attributes:
    docname: It is the whole path of the document
    type: it is the type of the document. The possible types are:
    - SET: Document is a set
    - COLA: Document is a cola file
    - COLTEMP: Document is a cola template
    - TEXT: Document is a text file 
    - PYFILE: Document is a python script 
    - PYTEMP: Document is a python template
    - IMAGE: Document is a image file(jpg, gif and other image format) 
    - HELP: Document is a gipsy task help page
    - TABLE: Document is a ascii table
    - SETTABLE: Document is a table embedded in a gipsy SET
    - VOTABLE: Document is a table with VO format 
    - SESSION: Document is a session
    """
    def __init__(self, docname, type):
        self.docname = docname
        self.type = type
    
    def getDocname(self):
        return self.docname
    
    def getType(self):
        return self.type
        
    def setDocname(self, newDoc):
        self.docname=newDoc
        
   

class MainWindow(QMainWindow):
    """
    This class is the main window of the application.  This inherits from QMainWindow class, so it has its own layout.
    It is composed by this widget:
    - self.browser: It is the widget of the left part. 
    - self.workspaceBrowser: It is the tab which is showed in the self.browser widget. It inherits from workspaceBrowser class and it contains the session tree file structure.
    - self.info: It is the widget of the right part.
    - self.info_task: it is the tab which is showed in the self.info widget.It inherits from view_help class and it contains the list of gipsy task, and show some info about this task.
    - self.documents: It is the central tabbed widget, which show all the documents opened in the application
    
    This class also contains these next attributes:
    - self.allDocuments: A list of object of the class Document. It keeps a list of all the documents opened.
    - self.allWidgets: A dictionary which store the widget of the different document opened. Each kind of document has its own widget to be showed, e.g. the widget for the tables contains a view to show the tabular data. The keys of ths dictionary is the whole path of the document showed in this widget.
    - self.recentDocuments: A list of the documents paths recently opened
    - self.recentTypes: A list of the types stored in self.recentDocuments
    - self.session: The current session opened. If no session was opened, a default session will be stored in this attribute.
    """
    
    
    

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

#CREATE APPLICATION DIRECTORY
        try:
            os.mkdir(GUIPSYDIR)
        except OSError: #The dir already exists
            pass
        

#COUNTER
        self.cnt=counter()
        
#OPERATIONAL ATRIBUTES
        #list of all opened documents
        self.allDocuments=[]

        #list of all inside set tables
        #self.allSetTables=[]
        
        #List of all widget in opened
        self.allWidgets={}
        
        #list of recent opened files (max=10)
        self.recentDocuments=[]

        #Variable to keep the session information
        c=self.cnt()
        self.session=session(c)
       
        self.LASTPATH=os.getcwd()
        
        
#UI ATRIBUTES
  #browser area
        browserDockWidget = QDockWidget( self)
        browserDockWidget.setObjectName("browserDockWidget")
        browserDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea)
        self.browser = QTabWidget()
        browserDockWidget.setWidget(self.browser)
        self.addDockWidget(Qt.LeftDockWidgetArea, browserDockWidget)
  #info area
        infoDockWidget = QDockWidget( self)
        infoDockWidget.setObjectName("infoDockWidget")
        infoDockWidget.setAllowedAreas(Qt.RightDockWidgetArea)
        self.info=QTabWidget()
        infoDockWidget.setWidget(self.info)
        self.addDockWidget(Qt.RightDockWidgetArea, infoDockWidget)
   # info area for task help
        self.infoTask=view_help()
        self.info.addTab(self.infoTask, "Tasks")
   # documents area and workflow area
        self.documents = QTabWidget()
        self.documents.setTabsClosable(True)
   
        self.workflow = workflow()
        self.workArea=QSplitter(Qt.Vertical)
        self.workArea.addWidget(self.documents)
        self.workArea.addWidget(self.workflow)
        self.setCentralWidget(self.workArea)

    
  #Adding workspaceBrowser
        self.workspaceBrowser=workspaceBrowser()
        self.browser.addTab(self.workspaceBrowser,"Workspace Browser")
        
    #SAMP CONNECTION
        self.hub = sampy.SAMPHubServer()
        self.hub.start(False)
    # Create a client
        try:
            self.sampClient = sampy.SAMPIntegratedClient(metadata = {"samp.name":"GUIpsy client", "samp.description.text":"GUIpsy, advanced GUI for Gipsy - a highly interactive software for the reduction of astronomical data", "cli1.version":"0.01"})
        except sampy.SAMPHubError,  e:
            QMessageBox.warning(self, "SAMP connection Failed", unicode(e))
        else:
            # Connect them
            self.sampClient.connect()
            #If it is received a notification with the messages coord.pointAt, a SIGNAL will be emitted to transmit the coordinates.
            self.sampClient.bindReceiveNotification("coord.pointAt.sky",self.emit_sampcoord)
            #If it is recieved a LoadFits, a function to load the fits will be executed
            self.sampClient.bindReceiveNotification("image.load.fits", self.emit_imageloadfits)
            self.sampClient.bindReceiveNotification("table.load.votable", self.emit_loadvotable) 
            
    
   #Creating icons
        self.iconDict={}
        self.icon_set=QIcon()
        self.icon_set.addPixmap(QPixmap(":/cube.gif"), QIcon.Normal, QIcon.Off)
        self.iconDict["SET"]=self.icon_set
        self.icon_table=QIcon()
        self.icon_table.addPixmap(QPixmap(":/table.jpg"), QIcon.Normal, QIcon.Off)
        self.iconDict["TABLE"]=self.icon_table
        self.iconDict["SETTABLE"]=self.icon_table
        self.iconDict["VOTABLE"]=self.icon_table
        self.icon_image=QIcon()
        self.icon_image.addPixmap(QPixmap(":/image.gif"), QIcon.Normal, QIcon.Off)
        self.iconDict["IMAGE"]=self.icon_image
        self.icon_help=QIcon()
        self.icon_help.addPixmap(QPixmap(":/help.gif"), QIcon.Normal, QIcon.Off)
        self.iconDict["HELP"]=self.icon_help
        self.icon_cola=QIcon()
        self.icon_cola.addPixmap(QPixmap(":/cola.png"), QIcon.Normal, QIcon.Off)
        self.iconDict["COLA"]=self.icon_cola
        self.iconDict["COLATEMP"]=self.icon_cola
        self.icon_text=QIcon()
        self.icon_text.addPixmap(QPixmap(":/text.jpg"), QIcon.Normal, QIcon.Off)
        self.iconDict["TEXT"]=self.icon_text
        self.icon_pyfile=QIcon()
        self.icon_pyfile.addPixmap(QPixmap(":/python.png"), QIcon.Normal, QIcon.Off)
        self.iconDict["PYFILE"]=self.icon_pyfile
        self.iconDict["PYTEMP"]=self.icon_pyfile
        self.icon_task=QIcon()
        self.icon_task.addPixmap(QPixmap(":/icon_gui.gif"), QIcon.Normal, QIcon.Off)
        self.iconDict["task"]=self.icon_task
        self.icon_taskgid=QIcon()
        self.icon_taskgid.addPixmap(QPixmap(":/loading.gif"), QIcon.Normal, QIcon.Off)
        self.iconDict["taskgid"]=self.icon_taskgid
    
    #Adding status area
        self.sizeLabel = QLabel()
        self.sizeLabel.setFrameStyle(QFrame.StyledPanel|QFrame.Sunken)
        status = self.statusBar()
        status.setSizeGripEnabled(False)
        status.addPermanentWidget(self.sizeLabel)
        status.showMessage("Ready", 5000)

#FILE MENU
        
        newColaActions=[]
        newColaGroup=QActionGroup(self)
        emptyCola_action = QAction("Empty cola file", self)
        emptyCola_action.setToolTip(menuTips['empty_cola_file'])
        emptyCola_action.setStatusTip(menuTips['empty_cola_file'])
        curried = functools.partial(self.fileNewCola, templateName=None)
        self.connect(emptyCola_action, SIGNAL("triggered()"), curried)
        newColaActions.append(emptyCola_action)
        colTemplateDir=QDir(DIRCOLATEMPLATE)
        colTemplateList = colTemplateDir.entryInfoList()
        for colTemplate in colTemplateList:
            template_action = QAction(colTemplate.fileName(), self)
            curried = functools.partial(self.fileOpenTemplate, type="COLATEMP", templateName=colTemplate.fileName(), templatePath=colTemplate.filePath())
            self.connect(template_action, SIGNAL("triggered()"), curried)
            newColaActions.append(template_action)
            
        newColaActions.append(None)
            
        newPyfileActions=[]
        newPyfileGroup=QActionGroup(self)
        emptyPyfile_action = QAction("Empty python file", self)
        emptyPyfile_action.setToolTip(menuTips['empty_python_file'])
        emptyCola_action.setStatusTip(menuTips['empty_python_file'])
        curried = functools.partial(self.fileNewPyfile, templateName=None)
        self.connect(emptyPyfile_action, SIGNAL("triggered()"), curried)
        newPyfileActions.append(emptyPyfile_action)
        
        pyTemplateDir=QDir(DIRPYTHONTEMPLATE)
        pyTemplateList = pyTemplateDir.entryInfoList()
        for pyTemplate in pyTemplateList:
            template_action = QAction(pyTemplate.fileName(), self)
            curried = functools.partial(self.fileOpenTemplate, type="PYTEMP", templateName=pyTemplate.fileName(), templatePath=pyTemplate.filePath())
            self.connect(template_action, SIGNAL("triggered()"), curried)
            newPyfileActions.append(template_action)
            
            
        newPyfileActions.append(None)
       
    
        fileMenu = self.menuBar().addMenu("&File")
        
        #newGroup=QActionGroup(self)
    
        newTextAction = self.createAction("New &Text File", self.fileNewText,tip=menuTips['new_text_file'])
        newSessionAction = self.createAction("New Session", self.fileNewSession,tip=menuTips['new_session'])
        #newGroup.addAction(newTextAction)
        #newGroup.addAction(newSessionAction)
        

        openGroup = QActionGroup(self)
        curried = functools.partial(self.fileOpenDocument,"SET")
        openSetAction = self.createAction("&Set", curried, tip=menuTips['open_set'])
        curried = functools.partial(self.fileOpenDocument,"TABLE")
        openTableAction = self.createAction("&Table", curried,tip=menuTips['open_table'])
        curried = functools.partial(self.fileOpenDocument,"IMAGE")
        openImageAction = self.createAction("&Image File", curried,tip=menuTips['open_image'])
        curried = functools.partial(self.fileOpenDocument,"COLA")
        openColaAction = self.createAction("&Cola file", curried,tip=menuTips['open_cola'])
        curried = functools.partial(self.fileOpenDocument,"TEXT")
        openTextAction = self.createAction("&Text file", curried,tip=menuTips['open_text'])
        curried = functools.partial(self.fileOpenDocument,"PYFILE")
        openPyfileAction = self.createAction("&Python file", curried,tip=menuTips['open_pyfile'])
        
        openSessionAction = self.createAction("&Session file", self.fileOpenSession,tip=menuTips['open_session'])
        
        curried = functools.partial(self.interfaceTask,view_rfits)
        openFitsAction=self.createAction("&Fits file",curried, tip=menuTips['open_fits'])
        
        #openFitsAction = self.createAction("&Fits file", self.fileOpenFits,tip=menuTips['open_fits'])
        
        self.openActions=(openSetAction,  openFitsAction,  openTableAction, openImageAction, openColaAction, openTextAction, openPyfileAction, openSessionAction)



       
        fileSaveSessionAction = self.createAction("Save Session", self.saveSession,
            tip=menuTips['save_session'])
        fileSaveAction = self.createAction("&Save", self.save,
                QKeySequence.Save, tip=menuTips['save'])
        fileSaveAsAction = self.createAction("Save &As...",
                self.saveAs, tip=menuTips['save_as'])
        fileSaveAsVOTAction = self.createAction("Save as VOtable...",
                self.saveAsVotable, tip=menuTips['save_as_vot'])
        fileSaveAsASCIITAction = self.createAction("Save as ASCII table...",
                self.saveAsASCIItable, tip=menuTips['save_as_ascii'])
                
        curried = functools.partial(self.interfaceTask,view_wfits)
        fileSaveSetAsAction = self.createAction("Save as fits",
                curried, tip=menuTips['save_as_fits'])                
        fileCloseAction = self.createAction("&Close Doc", self.closeTab, 
                tip=menuTips['close'])
        fileCloseSessionAction = self.createAction("Close Session", self.closeSession, 
                tip=menuTips['close_session'])
        fileCloseAllAction = self.createAction("Close All", self.closeAll, 
                tip=menuTips['close_all'])

      
        fileQuitAction = self.createAction("&Quit", self.close,
                "Ctrl+Q", tip=menuTips['quit'])
        self.fileMenuActions = ( fileCloseAction, fileCloseSessionAction, fileCloseAllAction, None,
                fileSaveSessionAction, fileSaveAction, fileSaveAsAction, fileSaveAsVOTAction, fileSaveAsASCIITAction,  fileSaveSetAsAction, None, fileQuitAction)

        newMenu = fileMenu.addMenu("&New")
        colaMenu = newMenu.addMenu("&Cola")
        pyfileMenu=newMenu.addMenu("&Python")
        
        openMenu= fileMenu.addMenu("&Open")
        self.openRecentMenu=fileMenu.addMenu("Open &Recent")
        self.openRecentMenu.setEnabled(True)
       

        newMenu.addAction(newTextAction)
        newMenu.addAction(newSessionAction)
        
        self.addActions(colaMenu,  newColaActions)
        self.addActions(pyfileMenu, newPyfileActions)
        self.addActions(openMenu, self.openActions)
        
        self.addActions(fileMenu,(
                fileCloseAction, fileCloseSessionAction, fileCloseAllAction, None,
                fileSaveSessionAction, fileSaveAction, fileSaveAsAction, fileSaveAsVOTAction, fileSaveAsASCIITAction, fileSaveSetAsAction, None,  fileQuitAction))
                 

        self.fileMenuActions[0].setEnabled(False)
        self.fileMenuActions[2].setEnabled(False)
        self.fileMenuActions[5].setEnabled(False)
        self.fileMenuActions[6].setEnabled(False)
        self.fileMenuActions[7].setEnabled(False)
        self.fileMenuActions[8].setEnabled(False)
        self.fileMenuActions[9].setEnabled(False)
        
        

#SET EDITION MENU
        # The menu item of the task without dialog, will open the corresponding help file 
        #Needed to know the file help of the tasks
        p=os.environ.get("gip_tsk")
        
        editMenu = self.menuBar().addMenu("&Set Edition")
        
        curried = functools.partial(self.interfaceTask,view_combin)
        Combin=self.createAction("Combin",curried, tip=menuTips['Combin'], icon=self.icon_task)

        
        curried = functools.partial(self.interfaceTask,view_clip, "clip")
        Clip=self.createAction("Clip",curried, tip=menuTips['Clip'], icon=self.icon_task)
        
        curried = functools.partial(self.interfaceTask,view_copy)
        Copy=self.createAction("Copy",curried,  tip=menuTips['Copy'], icon=self.icon_task)

#        viewDlg=view_decim(self)
#        curried = functools.partial(self.interfaceTask,viewDlg)
        curried = functools.partial(self.interfaceTask,view_decim, "decim")
        Decim=self.createAction("Decim",curried,  tip=menuTips['Decim'], icon=self.icon_task)
        
        curried = functools.partial(self.interfaceTask,view_diminish, "diminish")
        Diminish=self.createAction("Diminish",curried,  tip=menuTips['Diminish'], icon=self.icon_task)
  
        curried = functools.partial(self.interfaceTask,view_editset, "editset")
        EditSet=self.createAction("EditSet",curried,  tip=menuTips['EditSet'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_extend, "extend")
        Extend=self.createAction("Extend",curried,  tip=menuTips['Extend'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_insert, "insert")
        Insert=self.createAction("Insert",curried,  tip=menuTips['Insert'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_meanSum, "mean")
        Mean=self.createAction("Mean",curried,  icon=self.icon_task, tip=menuTips['Mean'])        
        
        curried = functools.partial(self.interfaceTask,view_minbox, "minbox")
        MinBox=self.createAction("MinBox",curried,  icon=self.icon_task,  tip=menuTips['MinBox'])

        curried = functools.partial(self.interfaceTask,view_regrid)
        Regrid=self.createAction("Regrid",curried, icon=self.icon_task, tip=menuTips['Regrid'])

        curried = functools.partial(self.interfaceTask,view_snapper, "snapper")
        Snapper=self.createAction("Snapper",curried, icon=self.icon_task,  tip=menuTips['Snapper'])

        curried = functools.partial(self.interfaceTask,view_transform, "transform")
        Transform=self.createAction("Transform",curried,  tip=menuTips['Transform'],  icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_transpose, "transpose")
        Transpose=self.createAction("Transpose",curried,  tip=menuTips['Transpose'],icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_velsmo, "velsmo")
        Velsmo=self.createAction("Velsmo",curried,  tip=menuTips['Velsmo'],  icon=self.icon_task)

        Pyblot=self.createTaskAction("PyBlot", "pyblot", shortcut=None, icon=self.icon_taskgid, tip=menuTips['PyBlot'])

        curried = functools.partial(self.fileOpenDocument,"HELP", p+"/condit"+".dc1")
        conDit=self.createAction("ConDit",slot=curried,  tip=menuTips['ConDit'],  icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/conrem"+".dc1")
        conRem=self.createAction("ConRem",slot=curried,  tip=menuTips['ConRem'],  icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/findgauss"+".dc1")
        findGauss=self.createAction("findGauss",slot=curried,  tip=menuTips['FindGauss'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/mfilter"+".dc1")
        MFilter=self.createAction("MFilter",slot=curried,  tip=menuTips['MFilter'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/patch"+".dc1")
        Patch=self.createAction("Patch",slot=curried,  tip=menuTips['Patch'], icon=self.icon_help)
        self.addActions (editMenu, (  Clip, Combin, Copy,  Decim, Diminish,  EditSet,  Extend,  Insert,  
                                    Mean,  MinBox,  Regrid,  Snapper, Transform, Transpose, Velsmo, None, Pyblot, 
                                    None, conDit, conRem,  findGauss,  MFilter, Patch))
        
#DISPLAY MENU
        displayMenu = self.menuBar().addMenu("&Display")

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/maps"+".dc1")
        Maps=self.createAction("Maps", enable=False, slot=curried, tip=menuTips['Maps'], icon=self.icon_help)

        SkyCalq=self.createTaskAction("SkyCalq", "skycalq", shortcut=None, icon=self.icon_taskgid, tip=menuTips['SkyCalq'])

        Sliceview=self.createTaskAction("Sliceview", "sliceview", shortcut=None, icon=self.icon_taskgid, tip=menuTips['Sliceview'])
        
        Inspector=self.createTaskAction("Inspector", "inspector", shortcut=None, icon=self.icon_taskgid, tip=menuTips['Inspector'])

#        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/inspector"+".dc1")
#        Inspector=self.createAction("Inspector", curried, tip=menuTips['Inspector'], icon=self.icon_help)
        Render=self.createTaskAction("Render", "render", shortcut=None, icon=self.icon_taskgid, tip=menuTips['Render'])
#        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/render"+".dc1")
#        Render=self.createAction("Render", curried, tip=menuTips['Render'], icon=self.icon_help)
        VTKVolume=self.createTaskAction("VTKVolume", "vtkvolume", shortcut=None, icon=self.icon_taskgid, tip=menuTips['VTKVolume'])
#        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/vtkvolume"+".dc1")
#        VTKVolume=self.createAction("VTKVolume", curried, tip=menuTips['VTKVolume'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/allskyplot"+".dc1")
        AllSkyPlot=self.createAction("AllSkyPlot", slot=curried, tip=menuTips['AllSkyPlot'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/cplot"+".dc1")
        CPlot=self.createAction("CPlot", slot=curried, tip=menuTips['CPlot'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/reproj"+".dc1")
        Reproj=self.createAction("Reproj", slot=curried, tip=menuTips['Reproj'], icon=self.icon_help)
  
        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/fitsreproj"+".dc1")
        ReprojFits=self.createAction("Fitsreproj", slot=curried, tip=menuTips['ReprojFits'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/wcsflux"+".dc1")
        WCSFlux=self.createAction("WCSFlux", slot=curried, tip=menuTips['WCSFlux'], icon=self.icon_help)
       
        self.addActions(displayMenu, (Maps, SkyCalq, None, 
                                                        Sliceview, Inspector, Render, VTKVolume, None, 
                                                        AllSkyPlot, CPlot, Reproj, ReprojFits, WCSFlux))
        
#ANALYSIS MENU
        taskMenu = self.menuBar().addMenu("&Analysis")
        
        curried = functools.partial(self.interfaceTask,view_ellint, "ellint")
        EllInt=self.createAction("EllInt", curried, tip=menuTips['EllInt'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_galmod, "galmod")
        GalMod=self.createAction("GalMod", curried, tip=menuTips['GalMod'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_moments, "moments")
        Moments=self.createAction("Moments", curried, tip=menuTips['Moments'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_potential, "potential")
        Potential=self.createAction("Potential", curried, tip=menuTips['Potential'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_pplot, "pplot")
        PPlot=self.createAction("PPlot", curried, tip=menuTips['PPlot'], icon=self.icon_task)
        
        curried = functools.partial(self.interfaceTask,view_profil, "profil")
        Profil=self.createAction("Profil", curried, tip=menuTips['Profil'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_reswri, "reswri")
        ResWri=self.createAction("ResWri", curried, tip=menuTips['ResWri'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_rotcur, "rotcur")
        RotCur=self.createAction("RotCur", curried, tip=menuTips['RotCur'], icon=self.icon_task)
    
        curried = functools.partial(self.interfaceTask,view_shuffle, "shuffle")
        Shuffle=self.createAction("Shuffle", curried, tip=menuTips['Shuffle'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_slice, "slice")
        Slice=self.createAction("Slice", curried, tip=menuTips['Slice'], icon=self.icon_task)

        curried = functools.partial(self.interfaceTask,view_velfi, "velfi")
        VelFi=self.createAction("VelFi", curried, tip=menuTips['VelFi'], icon=self.icon_task)

        Inspector=self.createTaskAction("Inspector", "inspector", shortcut=None, icon=self.icon_taskgid, tip=menuTips['Inspector'])

        RotMas=self.createTaskAction("RotMas", "rotmas", shortcut=None, icon=self.icon_taskgid, tip=menuTips['RotMas'])

        XGauFit=self.createTaskAction("XGauFit", "xgaufit", shortcut=None, icon=self.icon_taskgid,tip=menuTips['XGauFit'])

        XGauProf=self.createTaskAction("XGauProf", "xgauprof", shortcut=None, icon=self.icon_taskgid, tip=menuTips['XGauProf'])

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/gausscube"+".dc1")
        GaussCube=self.createAction("GaussCube",slot=curried, tip=menuTips['GaussCube'], icon=self.icon_help)

        curried = functools.partial(self.fileOpenDocument,"HELP",p+"/rotmod"+".dc1")
        RotMod=self.createAction("RotMod",slot=curried, tip=menuTips['RotMod'], icon=self.icon_help)

        self.addActions(taskMenu,(EllInt, GalMod, Moments, Potential, PPlot, Profil, ResWri, RotCur, 
                                                Shuffle, Slice, VelFi, None,Inspector, RotMas, XGauFit, XGauProf, None, 
                                               GaussCube,  RotMod ))
        
        self.taskMenuActions={ "clip":Clip, "combin":Combin, "copy":Copy,  "decim":Decim, "diminish":Diminish,  "editset":EditSet,  "extend":Extend,  "insert":Insert,  
                                    "mean":Mean,  "minbox":MinBox,  "regrid":Regrid,  "snapper":Snapper, "transform":Transform, "transpose":Transpose, "velsmo":Velsmo, 
                                    "pyblot":Pyblot, "condit":conDit, "conrem":conRem,  "findgauss":findGauss,  "mfilter":MFilter, "patch":Patch, "maps":Maps, "skycalq":SkyCalq,  
                                    "sliceview":Sliceview, "inspector":Inspector, "render":Render, "vtkvolume":VTKVolume, "allskyplot":AllSkyPlot, "cplot":CPlot, 
                                    "reproj":Reproj, "reprojfits":ReprojFits, "WCSFlux":WCSFlux,  "ellint":EllInt, "galmod":GalMod, "moments":Moments, 
                                    "potential":Potential, "pplot":PPlot, "profil":Profil, "reswri":ResWri, "rotcur":RotCur, "shuffle":Shuffle, "slice":Slice, "velfi":VelFi, 
                                    "inspector":Inspector, "rotmas":RotMas, "xgaufit":XGauFit, "xgauprof":XGauProf, "gausscube":GaussCube,  "rotmod":RotMod}

#VO MENU
        voMenu = self.menuBar().addMenu("&Virtual Observatory")
        topcatAction=self.createAction("TOPCAT", self.voTemplate, enable=False, tip=menuTips['TOPCAT'])
        aladinAction=self.createAction("ALADIN", self.voTemplate,enable=False, tip=menuTips['ALADIN'])
        vospecAction=self.createAction("VOSPEC", self.voTemplate, enable=False, tip=menuTips['VOSPEC'])
        vosearchAction=self.createAction("VO search", self.voTemplate, enable=False, tip=menuTips['VOSearch'])
        senttoAction=self.createAction("Sent to ...", self.voTemplate, enable=False, tip=menuTips['Send_to'])
        self.addActions(voMenu,(topcatAction,aladinAction,None, 
                                vospecAction,vosearchAction,None,
                                senttoAction))
 
    
#HELP MENU
        helpMenu = self.menuBar().addMenu("&Help")
        

#CONNECTING SLOTS
        self.connect(self.documents, SIGNAL("currentChanged(int)"), self.documentsChanged)
        self.connect(self.workspaceBrowser, SIGNAL("itemSelected"), self.documentsSelected)
        self.connect(self.workspaceBrowser, SIGNAL("itemDoubleClicked"), self.documentsDoubleClicked)
        self.connect(self.workspaceBrowser, SIGNAL("contextMenu"), self.showContextMenu)
        self.connect(self.documents, SIGNAL("tabCloseRequested(int)"), self.closeTab)
        self.connect(self.infoTask, SIGNAL("openHelpFile"), lambda file: self.fileOpenDocument("HELP", file))
        self.connect(self.workflow,SIGNAL("updateWorkflow"), lambda: self.session.updateWorkflowText(self.workflow.getWorkflowText()))
        self.connect(self, SIGNAL("imageloadfits"),  self.openFitsFromSamp)
        self.connect(self, SIGNAL("loadvotable"), self.openVotableFromSamp)
        

#SETTINGS + WINDOW APPERANCE
        settings = QSettings()
        size = settings.value("MainWindow/Size",
                              QVariant(QSize(600, 500))).toSize()
        self.resize(size)
        position = settings.value("MainWindow/Position",
                                  QVariant(QPoint(0, 0))).toPoint()
        self.move(position)
        self.restoreState(settings.value("MainWindow/State").toByteArray());
        self.workArea.restoreState(settings.value("splitterSizes").toByteArray())
        self.setWindowTitle("GUIpsy")
        self.recentDocuments=settings.value("recentDocuments").toStringList()
        self.recentTypes=settings.value("recentTypes").toStringList()
        self.updateOpenRecentMenu()
    
            

#ACTION FUNCTIONS
    def createAction(self, text, slot=None, shortcut=None, icon=None,
                     tip=None, checkable=False, enable=True,signal="triggered()"):
        action = QAction(text, self)
        if icon is not None:
            action.setIcon(icon)
        if shortcut is not None:
            action.setShortcut(shortcut)
        if tip is not None:
            action.setToolTip(tip)
            action.setStatusTip(tip)
        if slot is not None:
            self.connect(action, SIGNAL(signal), slot)
        if checkable:
            action.setCheckable(True)
        if not enable:
            action.setEnabled(False)
        return action
    
    def createTaskAction(self, text, taskname, shortcut=None, icon=None, tip=None):
        action = QAction(text, self)
        if icon is not None:
            action.setIcon(icon)
        if shortcut is not None:
            action.setShortcut(shortcut)
        if tip is not None:
            action.setToolTip(tip)
            action.setStatusTip(tip)
        curried = functools.partial(self.sendTask, taskname=taskname)
        self.connect(action, SIGNAL("triggered()"), curried)
        return action

    def addActions(self, target, actions):
        for action in actions:
            if action is None:
                target.addSeparator()
            else:
                target.addAction(action)

#CLOSE EVENT
    def closeEvent(self, event):
        
        self.closeAll()
        
        if(self.okToContinue()):
            self.session.close()
            settings = QSettings()
            settings.setValue("MainWindow/Size", QVariant(self.size()))
            settings.setValue("MainWindow/Position",QVariant(self.pos()))
            settings.setValue("MainWindow/State", self.saveState())
            settings.setValue("splitterSizes", self.workArea.saveState())
            settings.setValue("recentDocuments", self.recentDocuments)
            settings.setValue("recentTypes", self.recentTypes)
        else:
            event.ignore()
        
        #Closing the HUB and the client.
        try:
            self.sampClient.disconnect()
        except sampy.SAMPClientError, e:
            pass
        self.hub.stop()
        

#SLOTS
    def documentsChanged(self, index):
        #fileCloseAction, fileCloseSessionAction, fileCloseAllAction, None, fileSaveSessionAction, fileSaveAction, fileSaveAsAction, fileSaveAsVOTAction,  fileSaveAsASCIITAction, fileSaveSetAsAction, None,  fileQuitAction
        
        self.fileMenuActions[5].setEnabled(False) #Option save
        self.fileMenuActions[6].setEnabled(False) #Option save as
        self.fileMenuActions[7].setEnabled(False) #Option save as votable
        self.fileMenuActions[8].setEnabled(False) #Option save as ascii table
        self.fileMenuActions[9].setEnabled(False) #Option save as fits
        self.fileMenuActions[0].setEnabled(False) #Option close
        self.fileMenuActions[2].setEnabled(False) #Option close all
       
        if(index>-1):
            self.workspaceBrowser.selectFile(self.allDocuments[index].getDocname())
            type=self.allDocuments[index].getType()
            self.fileMenuActions[5].setEnabled(True) #Option save
            self.fileMenuActions[6].setEnabled(True) #Option save as
            self.fileMenuActions[0].setEnabled(True) #Option close
            self.fileMenuActions[2].setEnabled(True) #Option close all
            
            if (type== "SET") :
                self.fileMenuActions[5].setEnabled(False) 
                self.fileMenuActions[6].setEnabled(False) 
                self.fileMenuActions[9].setEnabled(True) #Option save as fits
                
            elif (type=="COLA" or type=="PYFILE"):
                if (self.allWidgets[self.allDocuments[index].getDocname()].isTemplate() or self.allWidgets[self.allDocuments[index].getDocname()].isNew()):
                    self.fileMenuActions[5].setEnabled(False)
                   
            elif(type=="TEXT" ):
                if(self.allWidgets[self.allDocuments[index].getDocname()].isNew()):
                    self.fileMenuActions[5].setEnabled(False)
                    
            elif(type=="IMAGE"):
                self.fileMenuActions[5].setEnabled(False)
            elif (type=="HELP"):
                self.fileMenuActions[5].setEnabled(False)
                self.fileMenuActions[6].setEnabled(False)
            elif (type=="SETTABLE"):
                self.fileMenuActions[5].setEnabled(False) #Option save
                self.fileMenuActions[6].setEnabled(False) #Option save as
                self.fileMenuActions[7].setEnabled(True) #Option save as votable
            elif(type=="TABLE"):
                self.fileMenuActions[7].setEnabled(True) #Option save as votable
               
            elif (type=="VOTABLE"):
                self.fileMenuActions[5].setEnabled(False)
                self.fileMenuActions[6].setEnabled(False)
                self.fileMenuActions[8].setEnabled(True) #Option save as ascii table
            elif (type=="SESSION"):
                self.fileMenuActions[6].setEnabled(False)
            elif (type=="PYTEMP") or (type=="COLATEMP"):
                self.fileMenuActions[5].setEnabled(False) #Option save
                    
    def documentsSelected(self,  filename):
        for index,  doc in enumerate(self.allDocuments):
            if doc.getDocname() == filename:
                self.documents.setCurrentWidget(self.documents.widget(index))
                return
 
    def documentsDoubleClicked(self,  fName, type, shortname):
        methods={
         "SET":self.openSet, 
         "TABLE": self.openTable, 
         "VOTABLE":self.openTable, 
         "SETTABLE":self.openSetTable, 
         "IMAGE":self.openImage, 
         "PYFILE":self.openPyfile, 
         "TEXT":self.openText, 
         "COLA":self.openCola, 
         "HELP":self.openHelp
                 }
       
        if type=="COLATEMP" or type=="PYTEMP":
            self.fileOpenTemplate(unicode(type),  shortname,  fName)
        else:
            fName=unicode(fName)
            type=unicode(type)
            shortname=unicode(shortname)
            #If it is already open, it will be focused
            indexOpen=self.isDocumentOpen(fName)
            if indexOpen>=0:
                self.documents.setCurrentWidget(self.allWidgets[fName])
            else:
                try:
                    output=methods[type](fName)
                except IOError as e:
                    QMessageBox.warning(self, "Open File Failed", unicode(e))
                    return
                except imageException as e:
                    QMessageBox.warning(self, "Open Image Failed", QString(e.msj))
                    return
                except gipsyException as g:
                    QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                    return
                except tableException as t:
                    QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
                    return
                if type=="TABLE": #In this case the method opentable return the type TABLE or VOTABLE
                    if output=="": #The user has cancelled the operation
                        return
                    type=output
                    
                shortname=os.path.basename(fName)
                #Maybe is a SETTABLE
                shortname=shortname.split('*')
                if len(shortname)==4:
                    shortname=shortname[2]
                else:
                    shortname=shortname[0]
                    
                self.showDocument(fName, shortname, type )
                
                if type=="SET":
                    #Adding the log to the wokflow
                    self.workflow.appendWorkflowText(output)
                    #Adding the set without parents to the session
                    self.session.setToSession(fName)
                    
                elif type !="SETTABLE":
                    #Adding the file to the session
                    self.session.docToSession(fName, type)
                    #Adding the file to recent opened
                    self.addRecentDocuments(fName, type)

      

#FILE NEW
    def fileNewText(self):

        c=self.cnt()
        fName="Untitled"+unicode(c)
        self.openText(fName)
        #Adding the file to the session and to the workspaceBrowser
        shortname=os.path.basename(fName)
        #Adding the item to the workspacearea
        self.workspaceBrowser.addFile("TEXT", fName ,  shortname)
       #Adding the doc to the tab
        self.showDocument(fName, shortname, "TEXT" )
        
    def fileNewPyfile(self, templateName=None):
        if(templateName != None):
            fName=templateName
            #Check if the script is opened yet
            for index, doc in enumerate(self.allDocuments):
                if doc.getDocname() == fName:
                    self.workspaceBrowser.selectFile(fName)
                    self.documents.setCurrentWidget(self.documents.widget(index))
                    return
        else:
            c=self.cnt()
            fName="Untitled"+unicode(c)+".py"
            while ( os.path.isfile(fName) and c < 100):
                c=self.cnt()
                fName="Untitled"+unicode(c)+".py"
        self.openPyfile(fName,templateName)
        #Adding the file to the session and to the workspaceBrowser
        shortname=os.path.basename(fName)
        #Adding the item to the workspacearea
        self.workspaceBrowser.addFile("PYFILE", fName ,  shortname)
       #Adding the doc to the tab
        self.showDocument(fName, shortname, "PYFILE" )
        
    def fileNewCola(self,  templateName=None):
        
        if(templateName != None):
            fName=templateName
            #Check if the template is opened yet
            for index, doc in enumerate(self.allDocuments):
                if doc.getDocname() == fName:
                    self.workspaceBrowser.selectFile(fName)
                    self.documents.setCurrentWidget(self.documents.widget(index))
                    return
        else:

            c=self.cnt()
            fName="Untitled"+unicode(c)+".col"
            while ( os.path.isfile(fName) and c < 100):
                c=self.cnt()
                fName="Untitled"+unicode(c)+".col"
 
        self.openCola(fName,templateName )
        #Adding the file to the session and to the workspaceBrowser
        shortname=os.path.basename(fName)
        #Adding the item to the workspacearea
        self.workspaceBrowser.addFile("COLA", fName ,  shortname)
       #Adding the doc to the tab
        self.showDocument(fName, shortname, "COLA" )

    def fileNewSession(self):
        self.closeAll()
        
        if(self.okToContinue()):
              self.session.close()
              c=self.cnt()
              self.session=session(c)
             
              self.workspaceBrowser.updateSessionTitle("Untitled Session")
              self.workspaceBrowser.clearTree()
              self.workflow.clearWorkflow()
              

    
            
    def fileOpenSession(self, filename=None):
        
        if filename!=None:
            fName=filename
        else:
            dir = os.path.dirname(".")
            fName = unicode(QFileDialog.getOpenFileName(self, "Session open ", dir,FORMATS["SESSION"]))
            if (fName==""):
                return
                
        fName=unicode(fName)
        #Check if there is a unsaved session
        if (self.closeSession()):
           
            try:
                self.session.loadSession(fName)
            except IOError as e:
                QMessageBox.warning(self, "Open SESSION Failed", QString(unicode(e)))
                return
            except KeyError as k:
                 QMessageBox.warning(self, "Open SESSION Failed", "Format unrecognised\n"+QString(unicode(k)))
                 return
            except sessionException as k:
                 QMessageBox.warning(self, "Open SESSION Failed",QString(unicode(k)))
                 return
            #Show log in workflow
            self.workflow.setWorkflowText(self.session.getWorkflowText())
            #Put session name as title on workspacearea
            self.workspaceBrowser.updateSessionTitle(os.path.basename(fName))
            #Adding the file to recent opened
            self.addRecentDocuments(fName, "SESSION")
            
            #Topological sorted list of set
            list=self.session.orderedListOfSet()
            for child,  father in list:
                
                if father =="":
                    try:
                        log=self.setToWorkspace(child)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                        
                else:
                    try:
                        log=self.setToWorkspace(child, parent_name=father)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                        
            
            for type,  list in self.session.docFiles.iteritems():
                for fName in list:
                    shortname=os.path.basename(fName)
                    if os.path.exists(fName):
                        self.workspaceBrowser.addFile(type, fName ,  shortname)
                    else:
                        self.workspaceBrowser.addFile(type, fName , shortname,  exist=False)
           
    
    def fileOpenTemplate(self, type,  templateName, templatePath):
        methods={
            "PYTEMP":self.openPyfile, 
            "COLATEMP":self.openCola 
            }
        openIndex=self.isDocumentOpen(templatePath)
       
        if openIndex>=0:
            #The document is open
            self.workspaceBrowser.selectFile(templatePath)
            self.documents.setCurrentWidget(self.documents.widget(openIndex))
        else:
            
            try:
                    output=methods[type](fName=templatePath, templatePath=templatePath)
            except IOError as e:
                    QMessageBox.warning(self, "Open Template Failed", unicode(e))
                    return
            #Adding the item to the workspacearea
            if not self.workspaceBrowser.hasFile(templatePath):
                self.workspaceBrowser.addFile(type, templatePath,  templateName)
            #Adding the doc to the tab
            self.showDocument(unicode(templatePath), unicode(templateName), type )
            
    def fileOpenDocument(self, type, helpfile=None, filename=None):
        methods={
         "SET":self.openSet, 
         "TABLE": self.openTable, 
         "VOTABLE":self.openTable, 
         "IMAGE":self.openImage, 
         "PYFILE":self.openPyfile, 
         "TEXT":self.openText, 
         "COLA":self.openCola, 
         "HELP":self.openHelp
                 }
        if helpfile !=None:
            fName=helpfile
        elif filename !=None:
            fName=filename
        else:
            #dir = os.path.dirname(".")
            dir=self.LASTPATH
            fName = unicode(QFileDialog.getOpenFileName(self, "Choose %s File"%type, dir,FORMATS[type]))
            if (fName==""):
                return
            fName=unicode(fName) 
            self.LASTPATH=os.path.dirname(fName)
       
            
        if type=="SET":
            (name,ext)=os.path.splitext(fName)
            fName=name
#            if len(fName)>79:
#                 QMessageBox.warning(self, "Setname too long", "Some GIPSY task as MNMX and WFITS do not support setname longer than 80, so please, select a setname  with shorter path")
#                 return
        
        openIndex=self.isDocumentOpen(fName)
       
        if openIndex>=0:
            #The document is open
            self.workspaceBrowser.selectFile(fName)
            self.documents.setCurrentWidget(self.documents.widget(openIndex))
       
        else:
            #The document is not open and it is not in the session
            try:
                output=methods[type](fName)
            except IOError as e:
                QMessageBox.warning(self, "Open File Failed", unicode(e))
                return
            except imageException as e:
                QMessageBox.warning(self, "Open Image Failed", QString(e.msj))
                return
            except gipsyException as g:
                QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                return
            except tableException as t:
                QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
                return
            if type=="TABLE" or type=="VOTABLE": #In this case the method opentable return the type TABLE or VOTABLE
                if output=="": #The user has cancelled the operation
                    return
                type=output
                
            #Adding the file to the session and to the workspaceBrowser
            shortname=os.path.basename(fName)
            if type=="SET" :
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(output)
                #Adding the set without parents to the session
                self.session.setToSession(fName)
            else:
                #Adding the file to the session
                self.session.docToSession(fName, type)
                #Adding the item to the workspacearea
                if not self.workspaceBrowser.hasFile(fName):
                    self.workspaceBrowser.addFile(type, fName ,  shortname)
                    
            #Updated workflow log in session
            self.session.updateWorkflowText(self.workflow.getWorkflowText())
            #Adding the doc to the tab
            self.showDocument(fName, shortname, type )
            if type!="HELP":
                #Adding the file to recent opened
                self.addRecentDocuments(fName, type)

        #Emit open Document SIGNAL
        self.emit(SIGNAL("open"+type))
    

            
    def deleteSetTable(self, filename):
        filename=unicode(filename)
        tuple=filename.split("*")
        if len(tuple)==4:
            tablename=tuple[2]
            subset=tuple[3]
        else:
            QMessageBox.warning(self, "Unable delete set table", "Inapropiated Id:%s"%filename)
            return
        
        index=self.isDocumentOpen(tuple[0])
        if index >=0:
            try:
                output=self.allWidgets[tuple[0]].deleteTable(tablename, subset)
            except gipsyException as g:
                QMessageBox.warning(self, "Delete tableset Failed", QString(g.msj))
            else:
               
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(output)
                self.newSet(tuple[0],tuple[0])
        else:
            try:
                tmp=gipsySet()
                output=tmp.loadSet(tuple[0])
            except gipsyException as g:
                QMessageBox.warning(self, "Delete tableset Failed", QString(g.msj))
                return
            #Adding the log to the wokflow
            self.workflow.appendWorkflowText(output)
            try:
                output=tmp.deleteTable(tablename, subset)
            except gipsyException as g:
                QMessageBox.warning(self, "Delete tableset Failed", QString(g.msj))
                tmp.closeSet()
            else:
                self.newSet(tuple[0],tuple[0])
                tmp.closeSet()
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(output)
                
        #If the settable is open in a tab, it must be closed
        index=self.isDocumentOpen(filename)
        if index>=0:
            self.closeTab(index)

    def deleteFileFromDisk(self, fName=None, type=None):
        fName=unicode(fName)
        type=unicode(type)
        if fName==None:
            i = self.documents.currentIndex()
            if (i>-1):
                doc=self.allDocuments[i]
                fName=doc.getDocname()
                type=doc.getType()
            else:
                QMessageBox.warning(self, "Delete file failed", QString("No File selected"))
                return
              
        reply=QMessageBox.question(self,  
                                                        "Delete file",  
                                                        "Are you sure you want delete this file?",  
                                                        QMessageBox.Yes|QMessageBox.No)
           
           
        if reply==QMessageBox.No:
            return 
        else:
            if type!="SET":
                try:
                    os.remove(fName)
                except OSError as e:
                    QMessageBox.warning(self, "Delete file Failed", QString(unicode(e)))
                else:
                    indexOpen=self.isDocumentOpen(fName)
                    if indexOpen>=0:
                        doc=self.allDocuments.pop(indexOpen)
                        self.documents.removeTab(indexOpen)
                        del self.allWidgets[fName]
                    self.workspaceBrowser.delFile(type, fName)
            elif type=="SET":
                indexOpen=self.isDocumentOpen(fName)
                log=""
                if indexOpen>=0:
                    try:
                        log=self.allWidgets[self.allDocuments[indexOpen].getDocname()].delete()
                    except gipsyException as g:
                        QMessageBox.warning(self, "Delete Set Failed", QString(g.msj))
                        return
                    
                    self.workflow.appendWorkflowText(log)
                    doc=self.allDocuments.pop(indexOpen)
                    self.documents.removeTab(indexOpen)
                    del self.allWidgets[fName]
                
                else:
                    tmp=gipsySet()
                   
                    try:
                        log=tmp.loadSet(fName)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Delete Set Failed", QString(g.msj))
                        return
                    try:
                        log=log+"\n"+tmp.deleteSet()
                    except gipsyException as g:
                        QMessageBox.warning(self, "Delete Set Failed", QString(g.msj))
                        return
                    self.workflow.appendWorkflowText(log)
                self.workspaceBrowser.prunSet(fName)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                self.session.prunSet(fName)
                self.session.remove(fName, type)


    def saveSession(self):
        #Updated workflow log
        self.session.updateWorkflowText(self.workflow.getWorkflowText())
        #Save session into a file
        if not self.session.has_sessionfile():
            filename = QFileDialog.getSaveFileName(self,
                        "Save session",
                        "./sesion.ses", "Session files (*.ses)")
            if(filename != ""):
                self.session.saveSession(filename)
                self.workspaceBrowser.updateSessionTitle(os.path.basename(unicode(filename)))
                return True
            else:
                return False
            
        else:
            self.session.saveSession()
            return True
        
    
    def removeFileFromSession(self, fName=None, type=None):
        reply=QMessageBox.question(self,  
                                                        "Remove file from session",  
                                                        "Are you sure you want remove this file from session?",  
                                                        QMessageBox.Yes|QMessageBox.No)
           
           
        if reply==QMessageBox.No:
            return 
            
        #To do if it is necessary: If the option file>removeFileFromSession has been selected, 
        #the fName will not be None, so we have to get the current doc
        fName=unicode(fName)
        type=unicode(type)
        if fName!=None:
            
            indexOpen=self.isDocumentOpen(fName)
            if indexOpen>=0:
                if self.okToCloseDoc(indexOpen):
                    if type == "SET": #The object set has to be closed.
                        log=self.allWidgets[fName].closeSet()
                        self.workflow.appendWorkflowText(log)
                    doc=self.allDocuments.pop(indexOpen)
                    self.documents.removeTab(indexOpen)
                    del self.allWidgets[fName]
                else:
                    return
            if type=="SET":
                self.workspaceBrowser.prunSet(fName)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                self.session.prunSet(fName)
                self.session.remove(fName, type)
            else:
                self.workspaceBrowser.delFile(type, fName)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                self.session.remove(fName, type)
            
    def removeFileAndChildren(self, fName):
        #The fName always is a SET
        reply=QMessageBox.question(self,  
                                                        "Remove file and outputs from session",  
                                                        "Are you sure you want remove this file and its descendants from session?",  
                                                        QMessageBox.Yes|QMessageBox.No)
           
           
        if reply==QMessageBox.No:
            return
           
        fName=unicode(fName)
            
        if fName!=None:
            #First, close all its children
            children=self.session.successors(fName)    
            
            for child in children:
                
                indexOpen=self.isDocumentOpen(child)
                if indexOpen>=0:
                    log=self.allWidgets[child].closeSet()
                    self.workflow.appendWorkflowText(log)
                    doc=self.allDocuments.pop(indexOpen)
                    self.documents.removeTab(indexOpen)
                    del self.allWidgets[child]
                self.workspaceBrowser.delFile("SET", child)
            
            #Second, close the set itself
            indexOpen=self.isDocumentOpen(fName)
            if indexOpen>=0:
                log=self.allWidgets[fName].closeSet()
                self.workflow.appendWorkflowText(log)
                doc=self.allDocuments.pop(indexOpen)
                self.documents.removeTab(indexOpen)
                del self.allWidgets[fName]
            self.workspaceBrowser.delFile("SET", fName)
            
            #Third, update workflow log and remove the file and children from the session 
            self.session.updateWorkflowText(self.workflow.getWorkflowText())
            self.session.removeFileAndChildren(fName)
                
    def closeSession(self):
        
        if(self.okToContinue()):
            self.closeAll()
            self.session.close()
            c=self.cnt()
            self.session=session(c)
             
            self.workspaceBrowser.updateSessionTitle("Untitled Session")
            self.workspaceBrowser.clearTree()
            self.workflow.clearWorkflow()
            return True
        else:
            return False

    def closeTab(self,  index=None, force=None):
        if(index is None):
            i = self.documents.currentIndex()
        else:
            i=index
        
    
        if (i>-1):
                if force!=None:
                    ok=True
                else:
                    ok=self.okToCloseDoc(i)
                if ok:
                    doc=self.allDocuments.pop(i)
                    f=doc.getDocname()
                    type=doc.getType()
                    self.documents.removeTab(i)
                    if type == "SET": #The object set has to be closed.
                        log=self.allWidgets[f].closeSet()
                        self.workflow.appendWorkflowText(log)
                    del self.allWidgets[f]
        
        
    def closeAll(self):
        i=len(self.allDocuments)-1
        visited=[]
        while(len(self.allDocuments)>0 and i>=0):
            if(self.allDocuments[i].getDocname()  not in visited):
                visited.append(self.allDocuments[i].getDocname())
                self.closeTab(i)
            i=i-1
            
   
    def save(self):
        i=self.documents.currentIndex()
        type=self.allDocuments[i].getType()
        if(type=="TABLE" or type=="COLA" or type=="TEXT"or type =="PYFILE"):
            fName=self.allDocuments[i].getDocname()
            try:
                self.allWidgets[fName].save()
            except IOError as e:
                QMessageBox.warning(self, "Save File Failed", QString(unicode(e)))
                return False
            except UnicodeEncodeError as e:
                QMessageBox.warning(self, "Write file Failed", QString(unicode(e)))
                return
        return True
    
    def saveAsVotable(self):
        i=self.documents.currentIndex()
        type=self.allDocuments[i].getType()
        fName=self.allDocuments[i].getDocname()
        location=os.path.dirname(fName)
        if type=="TABLE" or type=="SETTABLE":
            defaultExt="*.xml"
            (name,ext)=os.path.splitext(fName)
            name=name+".xml"
            newFile = unicode(QFileDialog.getSaveFileName(self,location, name,defaultExt, "Choose a file"))
            for index, doc in enumerate(self.allDocuments):
                if doc.getDocname() == newFile:
                    QMessageBox.warning(self, "Failed to save", "Please, close the file with the same name")
                    return 
                    
            #Save the table as a ascii table
            try:
                self.allWidgets[fName].saveAsVOtable(newFile)
            except IOError as e:
                QMessageBox.warning(self, "Save Failed", QString(unicode(e)))
                return
            except UnicodeEncodeError as e:
                QMessageBox.warning(self, "Write file Failed", QString(unicode(e)))
                return
            
            #Open the new created table
            try:
                output=self.openTable(newFile, line_headers=0 )
            except IOError as e:
                QMessageBox.warning(self, "Open File Failed", unicode(e))
                return
            except tableException as t:
                QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
                return
            
            #Adding the file to the session and to the workspaceBrowser
            fName=newFile
            shortname=os.path.basename(fName)
            
            #Adding the file to the session
            type=output
            self.session.docToSession(fName, type)
            #Adding the item to the workspacearea
            if not self.workspaceBrowser.hasFile(fName):
                self.workspaceBrowser.addFile(type, fName ,  shortname)
                    
            #Adding the doc to the tab
            self.showDocument(fName, shortname, type )
            
            #Adding the file to recent opened
            self.addRecentDocuments(fName, type)

            #Emit open Document SIGNAL
            self.emit(SIGNAL("opentable"))
        return
    
    def saveAsASCIItable(self):
        i=self.documents.currentIndex()
        type=self.allDocuments[i].getType()
        fName=self.allDocuments[i].getDocname()
        location=os.path.dirname(fName)
        if type=="VOTABLE":
            defaultExt="*.dat"
            (name,ext)=os.path.splitext(fName)
            name=name+".dat"
            newFile = unicode(QFileDialog.getSaveFileName(self,location, name,defaultExt, "Choose a file"))
            if newFile=="" or newFile==None:
                return False
            for index, doc in enumerate(self.allDocuments):
                if doc.getDocname() == newFile:
                    QMessageBox.warning(self, "Failed to save", "Please, close the file with the same name")
                    return 
            
            #Save the table as a ascii table
            try:
                self.allWidgets[fName].save(newFile)
            except IOError as e:
                QMessageBox.warning(self, "Save Failed", QString(unicode(e)))
                return
            except UnicodeEncodeError as e:
                QMessageBox.warning(self, "Write file Failed", QString(unicode(e)))
                return
            
            #Open the new created table
            try:
                output=self.openTable(newFile, line_headers=0 )
            except IOError as e:
                QMessageBox.warning(self, "Open File Failed", unicode(e))
                return
            except tableException as t:
                QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
                return
            
            #Adding the file to the session and to the workspaceBrowser
            fName=newFile
            shortname=os.path.basename(fName)
            
            #Adding the file to the session
            type=output
            self.session.docToSession(fName, type)
            #Adding the item to the workspacearea
            if not self.workspaceBrowser.hasFile(fName):
                self.workspaceBrowser.addFile(type, fName ,  shortname)
                    
            #Adding the doc to the tab
            self.showDocument(fName, shortname, type )
            
            #Adding the file to recent opened
            self.addRecentDocuments(fName, type)

            #Emit open Document SIGNAL
            self.emit(SIGNAL("opentable"))
        
        return
        
    def saveAs(self):
        methods={
         "SET":self.openSet, 
         "TABLE": self.openTable, 
         "VOTABLE":self.openTable, 
         "SETTABLE":self.openSetTable, 
         "IMAGE":self.openImage, 
         "PYFILE":self.openPyfile, 
         "PYTEMP":self.openPyfile, 
         "TEXT":self.openText, 
         "COLA":self.openCola, 
         "COLATEMP":self.openCola, 
         "HELP":self.openHelp
                 }
        i=self.documents.currentIndex()
        type=self.allDocuments[i].getType()
        fName=self.allDocuments[i].getDocname()
        location=os.path.dirname(fName)
        if type=="TABLE":
            defaultExt="*.dat"
            (name,ext)=os.path.splitext(fName)
            name=name+".dat"
        else:
            name=fName
            defaultExt="*"
        newFile = unicode(QFileDialog.getSaveFileName(self,location, name,defaultExt, "Choose a file"))
        if newFile=="" or newFile==None:
            return False
        
        for index, doc in enumerate(self.allDocuments):
            if doc.getDocname() == newFile:
                QMessageBox.warning(self, "Failed to save", "Please, close the file with the same name")
                return False
        
        if(type!="SET"):
            #Save as a file with a new filename
            shortname=os.path.basename(newFile)
            try:
                self.allWidgets[fName].save(newFile)
            except IOError as e:
                QMessageBox.warning(self, "Save Failed", QString(unicode(e)))
                return
            except UnicodeEncodeError as e:
                QMessageBox.warning(self, "Write file Failed", QString(unicode(e)))
                return
            
            #Open the new file
            try:
                output=methods[type](newFile)
            except IOError as e:
                QMessageBox.warning(self, "Open File Failed", unicode(e))
                return
            except imageException as e:
                QMessageBox.warning(self, "Open Image Failed", QString(e.msj))
                return
            except gipsyException as g:
                QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                return
            except tableException as t:
                QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
                return

            #In case the doc to saveas is a new doc, it has to be closed
            if type == "PYFILE" or type=="COLA" or type=="TEXT":
                if  self.allWidgets[fName].isNew():
                    doc=self.allDocuments.pop(i)
                    f=doc.getDocname()
                    self.documents.removeTab(i)
                    del self.allWidgets[f]
                    self.workspaceBrowser.delFile(type, fName)
                    #Updated workflow log
                    self.session.updateWorkflowText(self.workflow.getWorkflowText())
                    self.session.remove(fName, type)
                
            if type=="TABLE" or type=="VOTABLE": #In this case the method opentable return the type TABLE or VOTABLE
                type=output
            if type=="PYTEMP":
                type="PYFILE"
            if type=="COLATEMP":
                type="COLA"
           
           
            #Adding the file to the session and to the workspaceBrowser
            fName=newFile
            shortname=os.path.basename(fName)
            
            #Adding the file to the session
            self.session.docToSession(fName, type)
            #Adding the item to the workspacearea
            if not self.workspaceBrowser.hasFile(fName):
                self.workspaceBrowser.addFile(type, fName ,  shortname)
                    
            
            #Adding the doc to the tab
            self.showDocument(fName, shortname, type )
            
            #Adding the file to recent opened
            self.addRecentDocuments(fName, type)

            #Emit open Document SIGNAL
            self.emit(SIGNAL("open"+type))
            
            
        return True


#MENU BAR SLOTS
    def voTemplate(self):
        return
    def sendTask(self, taskname):
        i=self.documents.currentIndex()
        input=None
        if (i>=0):
            if(self.allDocuments[i].getType()=="SET"):
                input=self.allDocuments[i].getDocname()
        try:
            gipsyDirectTask().sendTask(taskname, input)
        except gipsyException as g:
                QMessageBox.warning(self, "Run task %s Failed"%(taskname), QString(g.msj))
                return
        return
    def launchTask(self, taskname):
        
        task_din=gipsyDynamicalTask(self)
        self.connect(task_din, SIGNAL("taskExecuted"), self.taskExecuted)
        try:
            task_din.launchTask(taskname)
        except gipsyException as g:
                QMessageBox.warning(self, "Run task %s Failed"%(taskname), QString(g.msj))
                return
        return
    
    
        
#AUXILIARY FUNCTIONS
    def overwriteSet(self):
        reply= QMessageBox.question(self, "Set already exists", 
        "Do you want overwrite it?", 
        QMessageBox.Yes, 
        QMessageBox.No)
        if reply== QMessageBox.No:
            return False
        if reply== QMessageBox.Yes:
            return True
          
    def okToContinue(self):
        if self.session.isDirty():
            reply=QMessageBox.question(self,  
                                                        "Session unsaved",  
                                                        "Do you want save the current session to restore it next time", 
                                                        QMessageBox.Yes|QMessageBox.No|QMessageBox.Cancel)
            if reply== QMessageBox.Cancel:
                return False
            elif reply==QMessageBox.Yes:
                return self.saveSession()
                return True
            elif reply==QMessageBox.No:
                return True
        else:
            return True
            
          
    def okToCloseDoc(self, index):
        type=self.allDocuments[index].getType()
        if(type=="TABLE" or type=="COLA" or type=="TEXT" or type=="PYFILE"):
            docToClose=self.allWidgets[self.allDocuments[index].getDocname()]
            self.documents.setCurrentWidget(self.documents.widget(index))
            if docToClose.isDirty():
                reply=QMessageBox.question(self,  
                                                            "Document unsaved",  
                                                            "Do you want save the following document:\n%s?"%(self.allDocuments[index].getDocname()), 
                                                            QMessageBox.Yes|QMessageBox.No|QMessageBox.Cancel)
                if reply== QMessageBox.Cancel:
                    return False
                elif reply==QMessageBox.Yes:
                    if(type=="TABLE"):
                        result=self.save()
                    elif(type=="COLA" or type=="PYFILE" ):
                        if(docToClose.isNew() or docToClose.isTemplate()):
                            result=self.saveAs()
                        else:
                            result=self.save()
                    elif type=="TEXT":
                        if (docToClose.isNew()):
                            result=self.saveAs()
                        else:
                            result=self.save()
                    else:
                        result=True
                    return result
                else:
                    return True
            else:
                return True
        else:
            return True
            
    def setNameDlg(self):
        reply= QMessageBox.question(self, "Set already exists", 
        "Do you want overwrite it?", 
        QMessageBox.Yes, 
        QMessageBox.No)
        if reply== QMessageBox.No:
            return False
        if reply== QMessageBox.Yes:
            return True

    def setToWorkspace(self, setname,  parent_name=None):
        setname=unicode(setname)
        shortname=os.path.basename(setname)
        if not os.path.exists(setname+".image") or not os.path.exists(setname+".descr"):
            self.workspaceBrowser.addFile("SET",setname ,  shortname, exist=False)
        try:
           tmp=gipsySet()
           tmp.loadSetRO(setname)
        except gipsyException as g:
            raise g
            return

        #Adding the item to the workspacearea
        #Get the size of the file
        try:
            size=os.path.getsize(setname+".image")
        except OSError:
            info="Cannot read the size"
        else:
            info=unicode(size/1024)+" KBytes\n"
        info=info+tmp.getInfo()
        self.workspaceBrowser.addFile("SET",setname ,  shortname, parent_name,  info=info)
        
        #Adding the tables of the set to the workspacearea
        tablesInfo=tmp.getTablesInfo()
        for table in tablesInfo:
            longname=setname+'*'+unicode(table[0])+'*'+unicode(table[1])+'*'+unicode(table[2])
            info="Subset: %s\nNum. cols: %s"%(table[2],table[3])
            self.workspaceBrowser.addFile("SETTABLE",longname,unicode(table[1]),setname,info=info)
        tmp.closeSet()
        
    def openSet(self, setname,  parent_name=None):
        
        setname=unicode(setname)
        shortname=os.path.basename(setname)
        self.allWidgets[setname]=view_gipsySet(setname)
        try:
            log=self.allWidgets[setname].load()
        except gipsyException as g:
            raise g
            return

        self.connect(self.allWidgets[setname], SIGNAL("commentsChanged"), self.commentsChanged)
        self.connect(self.allWidgets[setname], SIGNAL("headersChanged"), self.headersChanged)
        self.connect(self.allWidgets[setname], SIGNAL("settosamp"), self.createFitsForSamp)
        
        
        #Adding the item to the workspacearea
        info=self.allWidgets[setname].getInfo()
        if self.workspaceBrowser.hasFile(setname):
            #Reload the new information about set
            self.workspaceBrowser.reloadInfoSet(setname,  info)
            #Remove from the workspace the tables of the set
            self.workspaceBrowser.clearSetTables(setname)
        else:
            self.workspaceBrowser.addFile("SET",setname ,  shortname, parent_name,  info=info)
        #Adding the tables of the set to the workspacearea
        tablesInfo=self.allWidgets[setname].getTablesInfo()
        for table in tablesInfo:
            longname=setname+'*'+unicode(table[0])+'*'+unicode(table[1])+'*'+unicode(table[2])
            info="Subset: %s\nNum. cols: %s"%(table[2],table[3])
            self.workspaceBrowser.addFile("SETTABLE",longname,unicode(table[1]),setname,info=info)

        return log
    
    def showDocument(self, fName, shortname,  type):
       
        #Adding a new document to allDocuments list
        self.allDocuments.append(document(fName, type))
        #Adding the tab within the gipsySet
        self.documents.addTab(self.allWidgets[fName],self.iconDict[type],shortname)
        #self.documents.setCurrentWidget(self.gipsySetWidgets[setname])
        self.documents.setCurrentWidget(self.allWidgets[fName])
        
    def openImage(self, fName):
        fName=unicode(fName)
        shortname=os.path.basename(fName)
        #Creating the new image view
        self.allWidgets[fName]=view_image()
        try:
            self.allWidgets[fName].loadImage(fName)
        except imageException as e:
            del self.allWidgets[fName]
            raise e
            return
       
    def openTable(self, fName, line_headers=None):
        fName=unicode(fName)
        shortname=os.path.basename(fName)
        #Creating the new table view
        self.allWidgets[fName]=view_table(self, fName)
        try:
            
            loadedType=self.allWidgets[fName].loadTable(line_headers)
        except IOError as e:
            del self.allWidgets[fName]
            raise e
            return ""
        except tableException as t:
            del self.allWidgets[fName]
            raise t
            return ""
        if loadedType !="":
            
            #Connection headers buttons
            curried = functools.partial(self.showTableHeaders, fName)
            self.connect(self.allWidgets[fName], SIGNAL("showTableHeaders()"), curried)
            curried = functools.partial(self.plotTable, fName)
            self.connect(self.allWidgets[fName], SIGNAL("plotTable()"), curried)
            curried=functools.partial(self.sendTableToSAMP, fName, loadedType)
            self.connect(self.allWidgets[fName], SIGNAL("tableToSamp()"), curried)
            
            #Emit open table signal
            self.emit(SIGNAL("openTable"))
            
        return loadedType

    def openSetTable(self, filename):
        filename=unicode(filename)

        (setname,numTable,nameTable, subset)=filename.split('*')
        numTable=int(numTable)
        try:
           tmp=gipsySet()
           tmp.loadSetRO(setname)
        except gipsyException as g:
            raise g
            return
        tabledata=tmp.getTableData(numTable)
        tmp.closeSet()

        #Creating the new table view
        if "ROTCUR" in nameTable:
            headers=ROTCURHEADER
        elif "ELLINT" in nameTable:
            headers=ELLINTHEADER
        else:
            headers=None
        self.allWidgets[filename]=view_table(self, filename)
        self.allWidgets[filename].loadSetTable(tabledata, headers)
        
        #Connection headers buttons
        curried = functools.partial(self.showTableHeaders, filename)
        self.connect(self.allWidgets[filename], SIGNAL("showTableHeaders()"), curried)
        curried = functools.partial(self.plotTable, filename)
        self.connect(self.allWidgets[filename], SIGNAL("plotTable()"), curried)
        curried=functools.partial(self.sendTableToSAMP, filename, "SETTABLE")
        self.connect(self.allWidgets[filename], SIGNAL("tableToSamp()"), curried)
        
        #Emit open table signal
        self.emit(SIGNAL("openTable"))
    
    def openText(self, fName):
        if (os.path.isfile(fName)):
            shortname=os.path.basename(unicode(fName))
        else:
            shortname=unicode(fName)
            
        #Creating the new image view
        self.allWidgets[fName]=view_text()
        try:
            self.allWidgets[fName].loadTextFile(fName)
        except IOError as e:
            del self.allWidgets[fName]
            raise e
            return
            


    def openCola(self, fName, templatePath=None):
        fName=unicode(fName)
        shortname=os.path.basename(fName)
        #Creating the new image view
        self.allWidgets[fName]=view_cola()
        try:
            self.allWidgets[fName].loadCola(templatePath,  fName)
        except IOError as e:
            del self.allWidgets[fName]
            raise e
            return
        (root, ext)=os.path.splitext(fName)
        curried = functools.partial(self.launchTask,"COLA NAME="+root)
        self.connect(self.allWidgets[fName], SIGNAL("launchTask"), curried)
        
    def openPyfile(self, fName,  templatePath=None):
        fName=unicode(fName)
        shortname=os.path.basename(fName)
            
        #Creating the new image view
        self.allWidgets[fName]=view_pyfile()
        try:
            self.allWidgets[fName].loadPyfile(templatePath, fName)
        except IOError as e:
            del self.allWidgets[fName]
            raise e
            return
        curried = functools.partial(self.launchTask,fName)
        self.connect(self.allWidgets[fName], SIGNAL("launchTask"), curried)
        
    def openHelp(self, fName):
        fName=unicode(fName)
        shortname=os.path.basename(fName)
        #Creating the new table view
        self.allWidgets[fName]=view_helpFile()
        try:
            error_msj=self.allWidgets[fName].loadHelpFile(fName)
        except IOError as e:
            del self.allWidgets[fName]
            raise e
            return
        self.connect(self.allWidgets[fName], SIGNAL("launchTask"), self.launchTask)
        
        return error_msj
        
        
    def commentsChanged(self,log):
        if(log!=""):
            self.workflow.appendWorkflowText(log)
    
    def headersChanged(self,log):
        if(log!=""):
            self.workflow.appendWorkflowText(log)
            i=self.documents.currentIndex()
            fName=self.allDocuments[i].getDocname()
            type=self.allDocuments[i].getType()
            if type=="SET":
                try:
                    log2=self.allWidgets[fName].reload()
                except gipsyException as g:
                    QMessageBox.warning(self, "Reload SET Failed", QString(g.msj))
                    return
                self.workflow.appendWorkflowText(log2)
           
    
    def taskExecuted(self,log):
        if(log!=""):
            self.workflow.appendWorkflowText(log)
        
            
    def newSet(self, fatherSet,  childSet, tabname=None):
        fatherSet=unicode(fatherSet).strip()
        childSet=unicode(childSet).strip()
        #The general variable LASTPATH is updated
        self.LASTPATH=os.path.dirname(childSet)
        if fatherSet == childSet: #We have to reopen the set.
           
            indexOpen=self.isDocumentOpen(fatherSet)
            if  indexOpen >= 0:#The set is opened
                self.closeTab(indexOpen)
            
            if self.workspaceBrowser.hasFile(fatherSet):
                self.session.prunSet(fatherSet)
                self.workspaceBrowser.prunSet(fatherSet)
            try:
                log=self.openSet(fatherSet)
            except gipsyException as g:
                QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                return
            #Adding the log to the wokflow
            self.workflow.appendWorkflowText(log)
            #Updated workflow log
            self.session.updateWorkflowText(self.workflow.getWorkflowText())
            #Adding the file to the session
            self.session.setToSession(fatherSet)
            #Adding the file to recent opened
            self.addRecentDocuments(unicode(fatherSet), "SET")
            #Showing in the tab widget
            shortname=os.path.basename(fatherSet)
            self.showDocument(fatherSet, shortname, "SET")
            
        else:
           
            indexOpen=self.isDocumentOpen(fatherSet)
            if  indexOpen < 0:#If the fatherset is closed it will have to be open.
            
                try:
                    log=self.openSet(fatherSet)
                except gipsyException as g:
                    QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                    return
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(log)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                #Adding the file to the session
                self.session.setToSession(fatherSet)
                #Adding the file to recent opened
                self.addRecentDocuments(unicode(fatherSet), "SET")
                #Showing in the tab widget
                shortname=os.path.basename(fatherSet)
                self.showDocument(fatherSet, shortname, "SET")
                
            indexOpen=self.isDocumentOpen(childSet)
            if indexOpen<0: #If the childset is closed it will have to be open.
                try:
                    log=self.openSet(childSet, parent_name=fatherSet)
                except gipsyException as g:
                    QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                    return
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(log)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                #Adding the file to the session
                self.session.setToSession(childSet, fatherSet)
                #Adding the file to recent opened
                self.addRecentDocuments(unicode(childSet), "SET")
                #Showing in the tab widget
                shortname=os.path.basename(childSet)
                self.showDocument(childSet, shortname, "SET")
            else:
                #If the child set is open, it will have to be closed
                self.closeTab(indexOpen)
                if self.workspaceBrowser.hasFile(childSet):
                    self.session.prunSet(childSet)
                    self.workspaceBrowser.prunSet(childSet)
               
                try:
                    log=self.openSet(childSet, parent_name=fatherSet)
                except gipsyException as g:
                    QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                    return
                #Adding the log to the wokflow
                self.workflow.appendWorkflowText(log)
                #Updated workflow log
                self.session.updateWorkflowText(self.workflow.getWorkflowText())
                #Adding the file to the session
                self.session.setToSession(childSet, fatherSet)
                #Adding the file to recent opened
                self.addRecentDocuments(unicode(childSet), "SET")
                #Showing in the tab widget
                shortname=os.path.basename(childSet)
                self.showDocument(childSet, shortname, "SET")
                
        #Now open the tab if it is necessary
        
        if tabname!=None:
            tablesInfo=self.allWidgets[childSet].getTablesInfo()
            for table in tablesInfo:
                if table[1]==tabname:
                    longname=childSet+'*'+unicode(table[0])+'*'+unicode(table[1])+'*'+unicode(table[2])
                    index=self.isDocumentOpen(longname)
                    if index >0:
                        self.closeTab(index)
                    try:
                        self.openSetTable(longname)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Open SET Failed", QString(g.msj))
                    self.showDocument(longname, tabname, "SETTABLE" )
                    return
            
            
    def newTable(self, fName, line_headers):
            
        try:
            output=self.openTable(fName, line_headers)
        except tableException as t:
            QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
            return
        type=output
            
        #Adding the file to the session and to the workspaceBrowser
        shortname=os.path.basename(fName)
        
        #Adding the file to the session
        self.session.docToSession(fName, type)
        #Adding the item to the workspacearea
        if not self.workspaceBrowser.hasFile(fName):
            self.workspaceBrowser.addFile(type, fName ,  shortname)
                
        #Updated workflow log in session
        self.session.updateWorkflowText(self.workflow.getWorkflowText())
        #Adding the doc to the tab
        self.showDocument(fName, shortname, type )
      
        #Adding the file to recent opened
        self.addRecentDocuments(fName, type)

            
            
    def isDocumentOpen(self, name):
        
        for index, doc in enumerate(self.allDocuments):
            if doc.getDocname() == name:
                return index
        return -1
        
    def showHistory(self, setname):
        try:
            history=self.gSet[setname].getHistory()
        except gipsyException as g:
            QMessageBox.warning(self, "Show history failed", QString(g.msj))
            return
        
        if(history=="") : 
            history="There is not any HISTORY item "

        Dlg=historyDlg(history)
        Dlg.exec_()
        
    def showContextMenu(self,point,  filename, type, shortname, exist=True):
        #CONTEXT MENU
        contextMenu=QMenu(self)
        if type=="TABLE" or type=="VOTABLE" or type=="SETTABLE":
            curried=functools.partial(self.sendTableToSAMP, str(filename), type)
            sendtosamp=self.createAction("Send table to SAMP", curried, tip="")
            contextMenu.addAction(sendtosamp)
            if type=="SETTABLE":
                curried=functools.partial(self.deleteSetTable, filename)
                deleteSetTableAction=self.createAction("&Delete table from SET", curried,  tip=menuTips['delete_settable'])
                contextMenu.addAction(deleteSetTableAction)
               
        else:
            if type== "PYTEMP" or type=="COLATEMP" or type=="HELP":
                curried=functools.partial(self.removeFileFromSession, filename, type)
                removeFileFromSessionAction=self.createAction("&Remove from Session", curried,  tip=menuTips['remove'])
                contextMenu.addAction(removeFileFromSessionAction)
            else:
                
                curried=functools.partial(self.deleteFileFromDisk, filename, type)
                deleteFileAction=self.createAction("&Delete from Disk", curried,  tip=menuTips['delete_set'])
                if not exist: #This is the case when a session is open but some of the files does not exist  
                    deleteFileAction.setEnabled(False)
                curried=functools.partial(self.removeFileFromSession, filename, type)
                removeFileFromSessionAction=self.createAction("&Remove from Session", curried,  tip=menuTips['remove'])
                if type=="SET":
                    curried=functools.partial(self.removeFileAndChildren, filename)
                    removeFileAndChildrenAction=self.createAction("Remove Set and outputs", curried,tip=menuTips['remove_fileAndChildren'] )
                    contextMenu.addAction(removeFileAndChildrenAction)
                    
                    curried=functools.partial(self.createFitsForSamp, filename)
                    sendtosamp=self.createAction("Send associated fits to SAMP", curried,tip="" )
                    contextMenu.addAction(sendtosamp)
                    

                contextMenu.addAction(deleteFileAction)
                contextMenu.addAction(removeFileFromSessionAction)
        
        contextMenu.exec_(self.workspaceBrowser.workspaceTree.mapToGlobal(point))
        
        
    def showTableHeaders(self, tablename):
        #tableHeaders=self.tableWidgets[tablename].getTableHeaders()      
        tableHeaders=self.allWidgets[tablename].getTableHeaders()      
        if(tableHeaders=="") : 
            tableHeaders="There is not any header in this table "

        Dlg=tableHeadersDlg(tableHeaders, self)
        if Dlg.exec_():
            newHeaders=unicode(Dlg.plainTextEdit.toPlainText())
            self.allWidgets[tablename].setTableHeaders(newHeaders)
    
    def plotTable(self, currentTable):
        #Gather the info about the tables in a list of dictionaries
        
        view_tables={}
        
        for doc in self.allDocuments:
            
            if(doc.getType()=="TABLE" or doc.getType()=="SETTABLE" or doc.getType()=="VOTABLE"):
                view_tables[doc.getDocname()]=self.allWidgets[doc.getDocname()]
  
        if(len(view_tables)>0):
            form=plotTableWindow(view_tables, currentTable, self)
            form.show()     
        return

        
    def addRecentDocuments(self, fname,  type):
           
        if fname is None:
            return
        
        if not self.recentDocuments.contains(fname):
            self.recentDocuments.prepend(fname)
            self.recentTypes.prepend(type)
            while self.recentDocuments.count() > 9:
                self.recentDocuments.takeLast()
                self.recentTypes.takeLast()
                
    def updateOpenRecentMenu(self):
        self.openRecentMenu.clear()
       
        for i, fname in enumerate(self.recentDocuments):
            type=unicode(self.recentTypes[i])
            fname=unicode(fname)
            if type=="SESSION":
                action = QAction(self.iconDict["SET"],"&%d %s" % (i + 1, fname), self)
                curried = functools.partial(self.fileOpenSession,  fname)
                self.connect(action, SIGNAL("triggered()"), curried)
                self.openRecentMenu.addAction(action)
            else:
                action = QAction(self.iconDict[type],  "&%d %s" % (i + 1, fname), self)
                curried = functools.partial(self.fileOpenDocument, type, None, fname)
                self.connect(action, SIGNAL("triggered()"), curried)
                self.openRecentMenu.addAction(action)
            


    
    def interfaceTask(self, view, taskmenu=None,  input=None):
        
        #input=None
        if input==None:
            i=self.documents.currentIndex()
            if (i>=0):
                if(self.allDocuments[i].getType()=="SET"):
                    input=self.allDocuments[i].getDocname()
       
        viewDlg=view(self, input,  self.LASTPATH)
        self.connect(viewDlg, SIGNAL("taskExecuted"), self.taskExecuted)
        self.connect(viewDlg, SIGNAL("newSet"), self.newSet)
        self.connect(viewDlg, SIGNAL("newTable"), self.newTable)
        self.connect(viewDlg, SIGNAL("openHelpFile"), lambda file: self.fileOpenDocument("HELP", file))
        self.connect(viewDlg, SIGNAL("concatenatedTask"), self.interfaceTask)
        curried = functools.partial(self.enableTaskMenuAction,taskmenu)
        self.connect(viewDlg, SIGNAL("finished(int)"), curried)
        
        
        viewDlg.show()
        viewDlg.raise_()
        viewDlg.activateWindow()
        
        if taskmenu!=None:
            self.taskMenuActions[taskmenu].setEnabled(False)

    def enableTaskMenuAction(self,  taskmenu):
        if taskmenu!=None:
            self.taskMenuActions[taskmenu].setEnabled(True)

    def emit_sampcoord (self, private_key, sender_id, mtype, params, extra):
        #print "Notification:", private_key, sender_id, mtype, params, extra
        self.emit(SIGNAL("sampcoord"), params['ra'], params['dec'])
    
    def emit_imageloadfits(self, private_key, sender_id, mtype, params, extra):
        #When a imageloadfits messages is received, the RFITS task dialog is opened
        pathSAMP=params['url'].split("file://localhost")        
        if len(pathSAMP)==2:
            
            if os.path.exists(pathSAMP[1]):
                #The dialog should be opened through a SIGNAL to avoid opening another GUI thread
                self.emit(SIGNAL("imageloadfits"), pathSAMP[1])
    
    def emit_loadvotable(self, private_key, sender_id, mtype, params, extra):
        print "loadSampVOtable ", params['url']
        
        pathSAMP=params['url'].split("file://localhost")        
        if len(pathSAMP)==2:
            if os.path.exists(pathSAMP[1]):
                #The dialog should be opened through a SIGNAL to avoid opening another GUI thread
                self.emit(SIGNAL("loadvotable"), pathSAMP[1])
            
    def openVotableFromSamp(self, fName):
        try:
            output=self.openTable(fName)
        except IOError as e:
            QMessageBox.warning(self, "Open File Failed", unicode(e))
            return
        except tableException as t:
            QMessageBox.warning(self, "Format TABLE Failed", QString(unicode(t.msj)))
            return
        if output=="": #The user has cancelled the operation
                return
        else:
            type=output
            
       #Adding the file to the session and to the workspaceBrowser
        shortname=os.path.basename(fName)
       
       #Adding the file to the session
        self.session.docToSession(fName, type)
       #Adding the item to the workspacearea
        if not self.workspaceBrowser.hasFile(fName):
            self.workspaceBrowser.addFile(type, fName ,  shortname)
                
       #Updated workflow log in session
        self.session.updateWorkflowText(self.workflow.getWorkflowText())
       #Adding the doc to the tab
        self.showDocument(fName, shortname, type )
#  
#               #Emit open Document SIGNAL
#                self.emit(SIGNAL("open"+type))
            
            
    
    def openFitsFromSamp(self, filepath):
        self.interfaceTask(view_rfits, taskmenu=None,  input=filepath)

    
    def createFitsForSamp(self, setname):
        task=gipsyDynamicalTask(self)
        tempPath=str(QDir.tempPath())
        tempfits=tempPath+"/"+os.path.basename(str(setname))+".fits"
        command="WFITS INSET=%s BOX= BITPIX= OKAY=Y FITSFILE=%s"%(str(setname), tempfits)
    
        curried = functools.partial(self.sendFitsToSamp, tempfits)
        self.connect(task, SIGNAL("taskExecuted"), curried)
        try:
            task.launchTask(command)
        except gipsyException as g:
            QMessageBox.warning(self, "WFITS Failed", QString("Unable write the corresponding fits file of the set\n"+g.msj))
            return

    def sendFitsToSamp(self, tempfits):
        urlpath="file://localhost"+tempfits
        self.sampClient.callAll("Send fits", {"samp.mtype":"image.load.fits", "samp.params":{"url":urlpath, "name":os.path.basename(tempfits)}})
        
    def sendTableToSAMP(self, fName, type):
        
        tempPath=str(QDir.tempPath())
        tempxml=tempPath+"/"+os.path.basename(str(fName))+".xml"
        
        indexOpen=self.isDocumentOpen(fName)
        if indexOpen>=0: #The table is opened
            if  self.allWidgets[fName].loadedType!="VOTABLE":
                try:
                    self.allWidgets[fName].saveAsVOtable(tempxml)
                except IOError as e:
                    QMessageBox.warning(self, "Save Failed", QString(unicode(e)))
                    return
                except UnicodeEncodeError as e:
                    QMessageBox.warning(self, "Write file Failed", QString(unicode(e)))
                    return
                fName=tempxml
        else: #The table is closed
            if type=="SETTABLE":
                    (setname,numTable,nameTable, subset)=fName.split('*')
                    numTable=int(numTable)
                    try:
                        tmp=gipsySet()
                        tmp.loadSetRO(setname)
                    except gipsyException as g:
                        QMessageBox.warning(self, "Process to export to VOTable failed", QString(unicode(g)))
                        return
                    tabledata=tmp.getTableData(numTable)
                    tmp.closeSet()
                    tmpTable=view_table(self, fName)
                    tmpTable.loadSetTable(tabledata)
                    tmpTable.saveAsVOtable(tempxml)
                    fName=tempxml
            else:
                tmp=view_table(self, fName)
                try:
                    loadedType=tmp.loadTable()
                except IOError as e:
                    QMessageBox.warning(self, "Process to export to VOTable failed", QString(unicode(e)))
                    return ""
                if loadedType!="VOTABLE":
                    tmp.saveAsVOtable(tempxml)
                    fName=tempxml
 
        urlpath="file://localhost"+fName
        self.sampClient.callAll("Send VOTABLE",{"samp.mtype": "table.load.votable","samp.params": {"url":  urlpath, "table-id":"id", "name":os.path.basename(fName)}})
        
#MAIN
def main():
 
    app = QApplication(sys.argv)
    app.setOrganizationName("amiga")
    app.setOrganizationDomain("iaa.es")
    app.setApplicationName("GUIpsy")
    gipsy.qtconnect() 
#    form = MainWindow()
#    form.show()
#    app.exec_()
   
    try:
        import networkx
    except:
        QMessageBox.warning(None,"Networkx is not installed", "NetworkX module is needed by GUIpsy program.\n\n \
You can install it executing: pip install networkx\nVisit http://http://networkx.lanl.gov/ for further details")
    else:
        try:
            import sampy
        except:
            QMessageBox.warning(None,"Sampy is not installed", "Sampy module is needed by GUIpsy program.\n\n\
You can install it executing: pip install sampy\nVisit https://pypi.python.org/pypi/sampy for further details")
        else:
            try:
                import astropy
                from astropy.io.votable import parse_single_table
                from astropy.table import Table as astroTable
                from astropy.io.votable.tree import VOTableFile

            except:
                QMessageBox.warning(None,"Astropy is not installed", "Astropy module is needed by GUIpsy program.\n\n\
You can install it executing: pip install sampy\nVisit http://www.astropy.org/ for further details")
            else:
                global networkx
                global sampy
                global astropy
                #Opening the window
                form = MainWindow()
                form.show()
                app.exec_()
        


if __name__ == "__main__":
    gipsy.init()
    main()
    gipsy.finis()



#<
