Thursday, May 17, 2012

SGeva, a scala wrapper around Geva

Geva is a genetic programming algorithm that I am using to optimize the fuzzy language programs that control sumo robots. In order to understand the capabilities of Geva and for a convenient usage in scala programs I wrote this wrapper.

Resources

Usage

Instantiate an Instance of SGeva (WordMatchSGeva in our case) and call the run method.
object WordMatchSGevaRunner extends App {
  new WordMatchSGeva().run()
}

Derive your SGeva from AbstractSGeva and mixin the necessary factories to instantiate the designated Geva modules.
class WordMatchSGeva extends net.entelijan.sgeva.AbstractSGeva
  with net.entelijan.sgeva.conf.RampedHalfAndHalfInitialiserFactory
  with net.entelijan.sgeva.conf.DefaultDerivationTreeFactory
  with net.entelijan.sgeva.conf.SinglePointCrossoverFactory
  with net.entelijan.sgeva.conf.IntFlipMutationFactory
  with net.entelijan.sgeva.conf.GenerationalSelectionRepalcementFactory
  with net.entelijan.sgeva.conf.ProportionalRouletteWheelFactory
  with net.entelijan.sgeva.conf.StdoutCollectorFactory
  with net.entelijan.sgeva.conf.JreRandomFactory 
  with ExampleFormatter {

  // The properties needed for the above defined factories
  @SGevaProperty def seed = None

  @SGevaProperty def generations = 100

  @SGevaProperty def populationSize = 150
  @SGevaProperty def initChromSize = 100
  @SGevaProperty def growProb = 0.5

  @SGevaProperty def evaluateElite = false
  @SGevaProperty def eliteSize = 10

  @SGevaProperty def mutationProb = 0.01

  @SGevaProperty def crossoverProb = 0.8
  @SGevaProperty def fixedPointCrossover = false

  @SGevaProperty def maxWraps = 0
  @SGevaProperty def maxDepth = 10
  @SGevaProperty def maxDerivationTreeDepth = 50

  // The fitness function
  @SGevaProperty
  def fitnessFunction = new WordMatchFitnessFunction {
    def word = "noah"
    def canCache = true
  }

  // The grammar
  // In scala you can use XML directly inside the sourcecode. I used
  // that feature to define the grammer without using external resources.
  // So you can have all the relevant information together in one file
  def grammarString =
    
       ::= |
 ::= ||
 ::= _
# Vowels and consonats
 ::= a|o|u|e|i
 ::= q|w|r|t|y|p|s|d|f|g|h|j|k|l|z|x|c|v|b|n|m
      ]]>
    .text

}

A fitness function for the WordMatchSGeva. Returnes a fitness value according to the fitness of a program, expressed by the grammar above 
/**
 * The fitness function for the wordmatch.
 * The code was migrated from geva (java) to scala
 */
trait WordMatchFitnessFunction extends net.entelijan.sgeva.DoubleValueFitnessFunction {

  import Individuals.Phenotype
  
  def word: String

  override def toString() = "WordMatchFitnessFunction('%s') cache=%s" format (word, canCache)

  /**
   * Compare a string to the word. Each symbol not matching increases the fitness by 1.
   * Max fitness is max(length of the word, phenotype).
   * @param p Compared phenotype
   * @return Number of missmatches
   */
  protected def evaluateFitness(pheno: Phenotype): Double = {
    val indiWord: String = pheno.getStringNoSpace()
    if (indiWord == null) word.length()
    else {
      val minLength = math.min(indiWord.length(), word.length())
      val matchList = (0 to (minLength - 1)).map(i => if (indiWord.charAt(i) == word.charAt(i)) 1 else 0)
      val matchCount = matchList.foldLeft(0)((a, b) => a + b)
      val maxFitnessValue = math.max(indiWord.length(), word.length())
      return maxFitnessValue - matchCount;
    }
  }
}

Defines how the results of the SGeva run are recorded. In our case the results are written to standard output as the StdoutCollectorFactory is used in WordMatchSGeva (see above). The StdoutCollectorFactory needs a Formatter to define how to format results.
/**
 * Define the output of the results
 */
trait ExampleFormatter extends net.entelijan.sgeva.module.Formatter 
 with net.entelijan.sgeva.module.PopulationStat 
 with net.entelijan.sgeva.module.SGevaProperties 
 with net.entelijan.sgeva.module.FormatterUtil {

  import scala.collection.JavaConversions._
  def printHeader(pw: java.io.PrintWriter) {
    pw.println("-- Properties -------------------------------------------------------------------------------")
    sGevaProperties.foreach(p => pw.println("%s = %s" format (p.key, p.value)))
    pw.println("---------------------------------------------------------------------------------------------")
    pw.println("%15s\t%15s\t%15s\t%15s\t%s" format ("gen", "best", "mean", "worst", "words"))
  }
  
  def printGenerationData(pw: java.io.PrintWriter, genCount: Int, pop: Individuals.Populations.Population) {
    val stat = fitness(pop)
    pop.sort()
    val indis = pop.getAll()
    val words = formatList("%9s", "")(indis.map(i => "'%s'" format i.getPhenotype().getStringNoSpace()).toList)
    pw.println("%15d\t%15.2f\t%15.2f\t%15.2f\t%s" format (
      genCount, stat.min, stat.mean, stat.max,
      words))
  }
}
Running the program above leads to the following output
-- Properties -------------------------------------------------------------------------------
generations = 100
fitnessFunction = WordMatchFitnessFunction('noah') cache=true
randomNumberGeneratorImpl = Jre
seed = None
initialiserImpl = RampedHalfAndHalfInitialiser
crossoverOperationImpl = SinglePointCrossover
mutationOperationImpl = IntFlipMutation
eliteSelectionRepalcementStrategy = DefaultEliteSelectionRepalcementStrategy
selectionRepalcementStrategy = Generational
fitnessEvaluationStrategy = DefaultFitnessEvaluation
populationSize = 150
initChromSize = 100
growProb = 0,500
evaluateElite = false
eliteSize = 10
mutationProb = 0,010
crossoverProb = 0,800
fixedPointCrossover = false
maxWraps = 0
maxDepth = 10
maxDerivationTreeDepth = 50
---------------------------------------------------------------------------------------------
            gen            best            mean           worst words
              1            3,00            4,08            9,00      'ko'      'n'   'oiao'     'co'    '__a'     '_o'     '_o'     'co'   '_o__'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      '_'      'x'      'm'      '_'      'a'   '_i_u'      '_'      '_'     '_i'      'e'      'o'     '__'      '_'    'fi_'      'i'      '_'    'hi_'     'xu'      'w'      '_'      'u'      '_'      '_'      'a'      't'   'hixo'      'i'    'aat'     '_e'     'e_'      'j'      '_'      'z'    'b_s'      'u'      '_'     '_w'     '_e'     '_a'      'o'      'j'      'a'      '_'    '_e_'      'o'      'u'     '__'      'a'     'yk'      'c'      'e'      'o'      'o'      'g'      'x'      'y'   '_l__'      '_'      'o'      'f'     '__'     '_a'      'q'      'i'      'a'      'w'      '_'    '__o'      '_'     '_y'    '_i_'     'u_'      '_'     '__'      'a'      'l'      '_'    'ixu'    '___'      'i'     'a_'      '_'      '_'     'ce'    '___'   'hade'    '_y_'      '_'      'z' 'esao_c'  '_pocn'  'vv_en'  '_w_lo' '__eaee' '_i_l_j' 'z_n_db''oojmkias''i_lae_e''e_vzuoh_''_eedpxud''_eedpgm_o'   '_pue'       ''       ''       ''      '_'     'a_'   'z___'      '_'     '_l'      '_'   'nog_'    'm_x'      'i'      'a'  'i_l__'       ''   '_o__'      '_'     'zp'       ''      '_'       ''      'e'      'q'       ''       ''      '_'       ''       ''
              2            3,00            3,86            8,00    'oiao'    'i_a'    'oia'  'noga_'   'esa_'    'oia'     'ko'    '__a'     'co'     'go'     '_o'      'n'     'ko'    'hia'     'jo'    'lox'    'oia'      'n'    'uox'  'noga_'     '_o'      'n'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      'g'      'e'      'w'      'w'      '_'     '_k'     '_t'    '_l_'      'r'     'e_'   'hade'    'ixu'     '__'      '_'   '_u_t'    'b_s'      '_'     '_i'     '_a'      '_'    'b_k'      '_'      'u'     '__'   'hixo'     'xu'     '_e'    'o_i'    'beo'    '__u'      'a'      'a'      'a'      'o'     '_e'      'x'     'yz'     'a_'     'c_'      '_'      '_'    'yas'      'o'      'o'     'za'     '_j'    'b_y'      'i'      'o'      'i'    '_e_'     '_u'      '_'      'h'      'u'      '_'      'o'      'm'     'i_'     'xu'     '_e'     'uh'      'd'      '_'    '___'      'i'      '_'    '__u'      '_'      '_'    '__i'      'e'      't'      'u'     'l_'     'xu'      'l'      'u'      'o'     '_y'      'a'   '_ane'      'a'      'a'     '__'      'z'    '_e_'     '__'      'o'    'hi_'     'f_'      'z'     'yh'      '_'      'y' 'esao_c'  'k_xud'  '_ee_i'  'vv_en''oojmk_e''ojmkias''oi_lae_e'    'oea'     'iu'      'i'      'z'   '_poy'     '_j'   '_poc'     'oz'    '_ea''_nfoawy'      'o'       ''      'b'      '_'       ''
              3            2,00            3,85            7,00     'no_'      'n'     'ne'  'noga_'    'i_a'     '_o'    '__a'    'oia'     'ko'    '__a'    'p_a'     'ng'    'oia'     'jo'     '_o'    '__a'   'esa_'    '__a'    'uox'   'oiai'   'esa_'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      'v'      'y'     '__'      'o'      'd'      's'     '_j'      '_'      'w'     'xi'     '_e'      'i'   '_ana'      'e'   '_a_i'      '_'    '__o'      '_'      '_'      'o'      'z'     '_u'    'o__'     'g_'      '_'      'u'     'xu'      '_'      'o'     'bu'   'eyun'      '_'    'c__'      'o'      'v'     'o_'    '__i'    'i_l'     'o_'     'xv'    'eai'     '_d'     'e_'     'kd'     'a_'     '_j'    '_l_'    'b_y'     'f_'      '_'      '_'     '_a'    'oiw'     '__'      'i'      'i'      'u'      'g'     'gu'     'ke'     'pw'      'i'      '_'     '_i'      'l'     'ud'      'i'      '_'      '_'     '_a'      'o'      'i'     '__'      'j'    'b_s'     '__'     'it'     'ea'    '__u'    'k_o'      'a'    'o__'     '_i'  'k_xud'  'k_xud'  'k_xuh'  'iykye' 'oedeai' 'l_v_en''ojmkiae''oim_ga_'      '_'      '_'      'y'       ''       ''    'hao'     '__'     'bu'     '__'     '_o'      'u'     'iu'       ''      '_'      'a'      'o'       ''      'z'      'x'      'e'    '_uo'      '_'       ''      'd'   'hwit'    '_oq'     '__'
              4            2,00            3,74            5,00     'no_'    'no_'     'jo'   '_olx'   'nt_w'    '_ow'    'nun'     'co'    '__a'    '__a'     '_o'    '__a'      'n'    'nxv'   'oga_'      'n'    '__a'    '__a'     'go'    'lot'   'oeai'  'nog_a'     'ne'      'n'    '_ow'    'oia'    'lou'      'n'      'n'    'na_'   '_ga_'     '_o'  'nogod'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'b_s'     't_'     'i_'    'l__'     'ox'     'kd'      'e'      'e'      '_'      '_'      'u'      'i'      'u'      'f'      'e'      'i'     '_g'      'i'   'k__i'    '___'     'c_'     '__'     'xu'     '_n'     'u_'     '_n'     '_u'    '_ai'      'o'     '__'   'eyun'      'a'    '__i'      'v'     '_j'      'u'     '_i'      'u'      '_'     'o_'      '_'     '_y'      'o'   '_ana'     'ef'      'o'    'k_t'     '_u'      'v'    '_b_'     'mt'      'i'      '_'      '_'     'ei'    'ewi'     'ud'    '_a_'      'i'      'o'     'fi'      'd'     '__'      '_'     'od'      'l'    '___'     'ea'     'g_'    'c__'      '_'    '__i'    '__o'     '_e'    '__u'     'a_'   'eyuo'      'f'   'v_en'    'yas'      'j'      'm'      'e'    'oe_'    '___'      'i'      '_'    '__i'      'u'    'c__'    'eyu'   'iu_s'     'w_'      'm'      'f'      't'      'u'      'e'      'u'  'oi__a'  'm_ga_'  'k_xud'  'l_lox'  'iykye'  '____a'      '_'      'o'
              5            2,00            3,76            5,00     'noe'    'no_'    'no_'   '_oly'    'lox'     '_o'     'io'   '_oxw'    '_ea'   'oeai'    '_ow'     'co'     '_o'    '__a'    '_oy'    'na_'    'loj'     '_o'    'low'    'sca'  'noga_'   'nt_g'     'co'    '__a'     '_o'     'n_'    'lot'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'      'j'   'iuuy'    'b_s'     '_y'    '__u'      'l'      'x'      '_'   '_u_s'     'a_'     '__'      'e'    'lbe'    '_li'     'ms'    'b_o'      'e'     'j_'     'kd'    'odz'     '_a'     '_g'     '_u'    '_io'    'kye'     'oy'    'k_m'      'u'      'f'     'gx'      'i'      'j'      'j'     'xu'      'o'      '_'      'o'      '_'      'i'      'o'    '__o'     '__'     'me'      'o'     'be'    'c__'    'oai'     '__'      '_'      'i'      'p'      'u'      'w'    'ias'     'pw'    '__u'      'o'      'o'      '_'      'd'      '_'   'iu_a'    'ou_'      'o'      '_'    'la_'      'l'      'u'      'a'    '__u'     'lu'      'a'     'l_'   'eyu_'      't'     'ii'      'u'      'l'     'ga'   'oee_'      'u'      '_'    '__u'      '_'     '__'     'ez'      'e'      'o'     'a_'     'xu'      'm'      't'      't'     'oj'      'd'      'x'     'ci'  'leyuo'  '__m__'  'l_lox'  'm_ga_'  '_avdu'   'ogal'      't'      'u'       ''       ''      'c'       ''     'iu'     'k_'    'baa'  'oiwit'       ''
              6            2,00            3,83            7,00    'boai'    'no_'    'no_'    'no_'    'noe'   '_oiw'     'mo'     'co'     '_o'   '_oxs'    'lox'    '_oy'     'go'    'lon'     'ko'      'n'     'co'   'nno_'     'co'     'ao'    'low'      'n'    'bo_'    '_ua'    '__a'   'oeai'    '_o_'     '_o'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'     'a_'   'm_gx'    '__i'      'e'    '_l_'      'e'     'cs'   'ce_i'     'r_'     'mu'   'gu__'   'eyco'      'i'    'oai'     'ii'     '_l'      'o'      'i'      '_'      'o'     'p_'      'd'      'e'      's'      'm'   'eyus'    '___'      'f'     '_e'      'o'      'e'      'a'     'ca'      'u'      'm'      'u'    'xpw'    'b_u'     '__'      'o'      't'   '_u_s'      '_'      'l'      'u'    'm__'     'y_'    '__i'    '__j'     'eg'    'sco'      '_'     'a_'      '_'     'i_'      '_'      '_'     'ie'      'u'    '__o'     'e_'     'l_'     'o_'     'xu'     'kd'     'kd'      'a'     '_i'      's'      't'     'ox'      'i'     'be'     'l_'      'i'     'xe'      'l'      't'      'e'    'ca_'      'o'    'oao'     'oj'    '_io'      'e'      'z' 'nogaw_'    '___'      'k'      'u'      'e'     'he'      'u'    '___'      't'     '_s'    'iiu'    '__u'    'c__'      'a'      't'     'ei'     'am'      'o'   'oee_'   '_u_n'      'g'  'g_ga_'  'oet_w'  'i_eai' 'ea_u_s' 'cm_ga_' 'ouoga_''zx_deai'
              7            2,00            3,72            7,00     'no_'   'boai'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'      'n'     'nu'     'io'   '_o_a'     'co'      'n'    '__a'   '_u_h'     'eo'    'aoi'    'bo_'   '_oxs'     'ao'     'ni'   '_o_j'     'mo'   'aya_'     'co'      'n'      'n'    'lox'      'n'    'lod'   '_ois'    'boi'     'jo'     'co'      'n'    'boi'    '__a'      'i'      'y'     '_u'      'm'      'f'     'e_'      'a'      'u'     'au'     'ow'   'ce_v'     'a_'      'o'      '_'     'l_'   'oewb'     'h_'      '_'    'eai'      'o'     'u_'    'ea_'      'z'     'r_'      '_'      'a'      'j'      't'    '_ai'   'ce__'      'i'     'y_'      '_'    'c_o'      '_'    'aam'     '_e'      'o'     'ce'   '__o_'     '_y'     'ce'      '_'    '__i'      'g'     'cs'      'e'   'eyco'      'u'      'u'      'c'      'b'      'i'    '_ai'    'o_u'      't'      '_'      'o'      'i'    'iiu'    'g_z'      'e'    't_i'      'l'      'e'      'u'     'az'     '_u'      'b'     '_e'      'h'      'e'     'cs'    'b__'      'a'   '_u__'     '_k'    'ejt'     'cg'      'o'     'ke'     '_i'    '_xe'      'u'     'ei'     'iv'     '_u'      'a'    '__e'     'cw'      'g'    '__o'      'a'      '_'     'kh'      '_'      'q'    '__u'  'u_ga_'  'g_ga_' '_x_da_''bx_deai'       ''       ''     '_g'     '_l'      'u'    'eyu'      'i'    'eyo'      '_'
              8            1,00            3,84            9,00     'noa'   'boao'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'     'n_'    'bo_'     '_o'   '_o_a'    '__a'   '_oin'     'nu'    '_o_'   'oga_'    'nco'     'uo'      'n'    'lod'    'bo_'    'boo'   'dga_'     'jo'     'co'     'il'      'a'    '_ai'      '_'     'y_'      'f'      't'      'x'      'a'     'ce'      'a'      'j'      'i'    'o__'   'x_i_'      'e'      'g'     'y_'     '_y'      'u'      'o'      'u'     '_g'      'i'      'g'      'd'      'k'     'jt'      'u'     'yl'     'jn'      'o'      'o'      's'      'i'    'o_o'      's'   '___a'    '_ut'     'y_'     '_e'      'c'    'ca_'      'o'      'o'      'o'   'ku__'    '_a_'      'u'      's'     'ha'      'v'     'h_'      'u'      '_'      'c'      'e'      'r'      'o'     'uu'     'o_'    'be_'      'g'      '_'      '_'      'o'     'e_'     'rv'      't'      'e'      'i'    '__u'    'o_u'      'e'     '_a'   'ykyn'      '_'      'a'     'fu'      'u'      'b'      's'      't'      'i'     'in'    '_ii'      '_'      'o'     'b_'     '__'      'i'     'cg'      '_'      'h'      'g'    'ea_'      'i'      '_'     '_a'      'i'      'o'    'ow_'    '_wb'      'e'      'a'      'u'      'u'  '_x_bt'  'g_ga_'  '_uia_'  'h_eai' 'x_deai''zx_deai''h_x_deai''euzx_deai'     'c_'    '__i' 'tfoawy'     'aa'       ''
              9            1,00            3,69            7,00     'noa'    'no_'    'no_'    'no_'    '_oa'    'noi'    'boa'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'   'boao'    'nuu'    'n_g'     'jo'    'nh_'      'n'     'nw'   'oga_'    'ny_'    'boo'    'lod'     'ne'     'n_'     'uo'   'oga_'    '_oi'    'zoi'    'lod'    'boe'     'ro'    'na_'      'a'      'o'      'j'      'u'     'o_'      '_'      'a'    'eco'      'i'      '_'      's'     'fi'      'm'      'u'      'i'      't'      'o'      'f'      'o'     'od'     '__'      'g'    'be_'      'f'      'g'      'o'      'u'      'u'  'n_eai'     'b_'    'oai'      't'      'u'      's'      'v'      '_'     'yl'    '__o'      'u'      '_'     'rc'      'a'     'ee'    '_ei'      'g'      'g'      'a'      'e'     '__'     'mr'     'hr'      't'      'o'     'yz'      'a'      'a'     '_a'      'o'      'a'     'w_'    'kye'    '_ai'    'o_u'      'o'      'g'     't_'    'oli'  'nz__j'     'uw'    '_uh'    '__g'     'ca'      'a'      'j'      'u'      'x'      'b'    '_ae'   '___a'    'kco'      'h'      'o'      '_'      'o'      '_'      'm'      '_'      'y'      'a'      't'    'o__'     'u_'      'a'     'jm'      'o'     'ba'     '_g'      'y'   '_kye'    'e_i'      'u'      'a'      '_'    'owi'      'a'    'b__'  '_uiue''ocaobe_' '_aobe_''_x_deai'      'n'      '_'       ''
             10            1,00            3,63            6,00     'noa'    'noa'    'boa'   'no_m'   'boae'    'no_'   'boai'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'   'boao'      'n'    'uot'   'nboi'   'nuo_'     'zo'    'nuu'      'n'    'n_g'    '_ea'    'm_a'   'oga_'    'nnw'    '_o_'    'n_g'    'nac'   'nkco'     'uo'    '_of'    'n_y'      'n'   '_eai'     '_o'   'nalu'     '_o'  'nom__'      'y'     'o_'      'u'      'r'      '_'      't'     'ee'      'm'      'e'     'ky'    '_mr'     'e_'     'ii'    'e_u'      'o'     'fi'      'b'    '_ai'      'y'     'u_'      'o'      'i'      'j'    'e_i'      'g'     'o_'  'oga_w'      'c'      'v'     'cl'      'o'      't'      'a'      'i'  'n_eae'     'ow'      '_'    '__o'      'y'     'ru'     'ca'  'nz__j'    'owi'   'ox__'    'e__'      'c'      '_'      'j'      'g'      '_'     'ca'     'ei'     'is'      'd'      'c'    'e_i'      'g'      '_'      'j'      't'      't'      'l'      'i'      'g'      'g'      '_'    'omr'      'a'      '_'      'm'      'w'      'a'      'i'      '_'      'm'     '__'      'o'    'oce'      'a'     'b_'      'o'      'r'     'ce'      'e'      'o'      '_'      'j'     'rr'      'a'      'u'  'np_ui'   '____'     '_a'    'eae'      'a'   'yb_a'     '_i'      'w'     '_a' 'uk_xud' 'oedeai' '_x_da_'     'ja'       ''    'boa'       ''     'la'     'bv'
             11            1,00            3,45            9,00     'noa'    'noa'   'noat'    'noa'    'noa'    'noa'   'nsau'    'boa'   'boam'   'boa_'    'no_'    'boa'    'no_'   'boau'   'boau'    'no_'    'n_a'    'no_'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'    'nac'     'co'    'mot'   'eeae'     '_o'   'na__'    '_o_'    'n_g'    'n_g'   'nn_s'    'n__'    'nao'      'n'    'nac'      'n'     '_o'   'nx__'     'ni'     'uo'     'nj'   'nm_a'    '_of'      'n'    'n_g'     'w_'    'e_e'      'e'      'i'     'ku'    'a_i'    'wut'      'b'      'b'     '_s'     'e_'      'b'      'a'      's'      'u'    'm__'      'o'      '_'   '_m__'      'c'      'o'     '_l'      'u'      'l'      'j'      'a'     'e_'     '__'      'o'      'w'     'z_'     'ce'      '_'      'a'      'q'  'np_ua'      'o'     'cu'     'ri'      '_'      'u'     'w_'      'i'     'u_'     '_e'     'e_'      'c'     '_u'      't'      'a'      'g'      'e'     'le'     'at'      '_'      'd'      'i'   'anoa'     'wi'    '_bo'      'o'      'y'    'tau'      'q'      'i'  'nboao'      'o'     'b_'     '_u'      '_'      'u'      'u'     '_g'     'fi'  'nz__j'     'o_'     'yk'   'uk_b'      'a'     '__'  'n_ga_'    'ujm'      'o'    'omr'     'cl'      'c'     '_t'      '_'     'w_'     'h_' 'nknboi''np_ax_deai'    'bom'     '_a'      'u'     'at'      'a'       ''
             12            1,00            3,49            8,00    'noaq'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'    'loa'    'no_'    'no_'   'boa_'    'noo'   'yoat'    'no_'    'non'    'noi'    'nom'    'n_a'    'noe'   'boai'   'boau'   'now_'    'no_'    'boa'    'boa'    'no_'    'no_'    'noe'   'boai'      'n'  'noomr'     'nj'      'n'      'n'    'nac'     '_o'    '__a'     '_o'     'eo'    'naq'    'n_m'   'na_m'   'nb__'   'nnoa'    'm_a'     'uo'    'nan'    'n_r'    'n_w'     'yo'    'nk_'   'nm_a'   'n__a'     'n_'   'n_yk'     'na'     'zo'     'o_'      'u'     '_r'  'nsu_a'     'bu'     'be'      '_'     'oc'    '_ei'      'w'  'n_gw_'     'c_'      '_'      't'  'n_goo'     '_t'     'e_'      'u'      'e'     'o_'      'a'      '_'    '___'      'u'     'oi'      'a'   'uk_d'     '_a'      'b'      'c'      'g'  'caaq_'    'x__'      'o'     'wn'     'at'      'i'      'k'      '_'     'eu'      '_'      'e'  'na__a'      '_'      'x'     'cu'  'n_no_'      't'      'w'  'nz__o'     '_a'      'b'     'e_'     'ee'    'e_e'     '__'  'ne_oa'      'm'    'bi_'     'za'      'b'      'a'      'o'     'at'      'u'      '_'     '_t'      'o'     'le'      'u'      'm'     'ba'      'o'      'e'      '_'      'm'     '__'     'we'     'oa'      'u'  '__yu_'  'a_no_' 'np_awu' 'naobe_'  'ujno_''n_gaobe_''nknbboa_''nozx_deai''nnzx_deai'      'a'      'i'      'd'
             13            1,00            3,31            6,00     'noa'   'noaq'   'noaq'    'noa'   'noa_'   'noa_'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'   'boai'   'no_o'   'uoa_'    'no_'   'yoat'   'noyk'    'noc'    'nou'    'not'    'no_'    'no_'   'boae'   'boa_'    'noe'   'n_ai'   'no_a'    'no_'    'no_'    'noe'    'm_a'     'eo'    'x_a'      'n'    'n__'      'n'     'n_'   'n_yb'     '_o'   'wpad'     'ns'    'bo_'    'n_r'   'n_vo'     'eo'    'm_a'     'n_'    'p_a'    'nau'    'nax'   'na__'    'nnw'   'nb__'   'cow_'     'yo'   'n__a'     'bo'    'nau'    'nan'      'x'      'e'     'ai'     'ei'      'j'  'na__a'     'aw'      'e'     'wu'     '_c'     '_a'    'oio'     'es'      '_'      'a'      'a'    'bw_'   'unnw'     '__'      'u'      '_'      'w'      't'     '_n'      'c'   'on_g'   'bio_'   'edea'     'at'     'ke'     'ou'     'wi'      'u'   'x_wi'     'ua'     'o_'   'omo_'      '_'     'e_'      'e'     'oi'      'o'  'aobe_'    '__u'      'a'      'o'      't'     'c_'  'bom_n'    'm__'     'w_'    'dvd'    'uwu'     '__'      'w'      '_'      'o'     'ba'     'ye'      'z'      'a'  'ne_o_'  'ne_oo'      '_'      '_'     'ci'      'j'     'ei'      'y'    'owi'      'w'    'myo'     '_a'     'o_'     '_a'     '_a'      '_'    '__o'      'a'     '_a'     'eu'      'a'      '_'      'u'   'uk_d'      'x'    '__d'      'e'
             14            1,00            3,21            5,00    'noai'    'noa'    'noa'   'noaa'   'noa_'   'noam'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'nou'   'noz_'    'nou'    'noo'   'nnau'    'nou'   'no_a'    'nou'    'nog'   'no_e'    'noc'    'n_a'    'no_'   'no_a'    'noe'   'no_o'    'no_'    'non'   'uoao'    'noc'    'noe'    'nax'   'bow_'      'n'    'nnw'    '_o_'     'na'  'nonoa'    'nco'    'bo_'     'co'      'n'    'ne_'    'nau'    'nan'    'nan'    'nau'    'n_r'  'nom_a'    'n_i'   'na_u'     'ns'    'nle'    'bo_'   'nao_'   'n_w_'    'woi'     'eo'    'nan'     'n_'     'ns'    'kau'     'bu'      '_'      'w'    '__o'      'o'  'aobea'     'be'      '_'     'ei'    'a__'     'u_'     'wu'      'u'    'b_x'  'nanon'      '_'      'm'      '_' 'noou__'      '_'  'ne_oo'    'qke'      'c'      'a'      'u'     'k_'     'ou'      '_'      'w'     'ai'     'oa'     'ke'    'm__'      't'      'u'      'u'     '__'     'en'     'au'      'a'    'm__'     'ad'    'p_w'      'x'      'o'      'u'    'uwu'      '_'   'emo_'     'o_'      'w'   'x_wi'      'u'   'uk_d'      'g'      'o'     'ue'    'tau'      'r'      '_'     'ai'     'wu'     'au'    'xad'     '_a'      '_'    'owi'      'x'     'e_'   'x_w_'      'f'     'bu'    'p_t'     '_w'      'e'      'w'   'm_ke'      'u'     'o_'     'w_'      'w'
             15            1,00            3,15            5,00    'noaa'   'noaa'   'noaq'    'noa'   'noak'    'noa'   'noaz'   'noa_'   'noa_'    'noa'   'noaq'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'n_a'    'noo'    'no_'    'noe'    'n_a'   'noow'   'nmat'    'nou'    'n_a'    'nou'    'noe'   'no_o'   'no_a'    'noe'    'nna'    'nco'   'n__o'    'bo_'    'nao'  'noe_a'    'nax'    'yow'    'n_r'     'n_'     'na'      'n'     'wo'    'm_a'    'nec'    'nau'    'nco'    'bo_'   'nm_e'   'n__u'      'n'   'nawi'    'nan'     'n_'    'bou'    'nau'   'nao_'     'ni'    'naj'    'ne_'  'no_wo'     '_o'  'nonoa'    'n_y'    'ne_'    'nle'  'nonau'   'n_o_'    'nau'    'n_e'    'nw_'      '_'     'en'    '_ke'   'mnoo'      't'     '_u'   'ke_a'     'oe'   '_m_a'     'a_'      'm'     'zm'    'uwu'     'kx'      'm'    'm_u'      '_'      '_'      'u'   'm_ke'      '_'      'c'  'nu_ai'     'w_'    'owi'    'b_x'      'e'    '__o'    'oa_'      '_'      't'      '_'      't'      'g'     'en'      '_'      'o'    'eai'      'o'      '_'     'uu'     'ow'    'u_i'      '_'   'hb_e'    'm_e'     '__'     'm_'     'w_'      'w'      'a'     'eu'     '_a'    'oeo'     'u_'   'exw_'     'w_'     'w_'    'qkm'      'u'    'ou_'      'u'     'fi'     'oa'     'oa'     'uy'     'w_'      '_'  '_noom' 'ngelca' 'nuk_xu'  'edcxu''no_deai'
             16            1,00            3,01            4,00    'noaq'   'noaa'    'noa'   'noaa'    'noa'   'noaz'   'noaq'   'noat'   'noae'    'noa'    'noa'   'noak'    'noa'   'noam'    'noa'    'noa'   'noa_'   'noa_'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'non'    'noi'   'ntau'   'nmat'   'noeo'    'noe'    'nua'    'nou'    'nou'    'n_a'    'noe'    'nou'   'no_w'   'noon'   'now_'     'no'    'no_'    'm_a'    'nfi'     'nm'   'nukt'    'nag'    'nsg'      'n'    'nw_'    'nao'     'n_'    'o_a'   'n_oa'  'nonau'    'n__'    'nm_'    'nce'    'n_i'    'nlb'    'nau'  'noxw_'    'n_o'    'mo_'    'm_a'    'nec'    'ne_'    'nw_'      'n'   'nm_a'    'nau'  'nom_a'  'nou__'   'ww_p'     'ad'     'oa'      '_'     '_a'     'aw'     'w_'      'u'     'e_'     'wu'      '_'     'm_'     'w_'     'aj'      '_'     'aa'      'u'    '__e'  'ngel_' 'no_lod'     'au'     'au'    '_w_'      'u'      'u'     'ow'      'e'    'eai'     'oe'  'nnoa_'      '_'  'nu_au'   '_m__'      'm'      'z'      'g' 'noom_v'      'w'    'm__'     'o_'     '_u'     'aw'      'j'   'bm_a'      'a'   'hb_e'      'w'     'e_'    '_ai'     'z_'     'oa'      'a'     'w_'    '__e'      'z'      '_'   'hb_e'      '_'     'w_'     'om'      'w'      'c'     'w_'     'ce'   'm__o'      '_'    'e__'    'mwu'    'm_o'     'et'     'oe'      'm'     'wd'
             17            1,00            2,87            4,00     'noa'   'noaq'    'noa'   'noak'    'noa'   'noaq'    'noa'    'noa'    'noa'    'noa'   'noaq'   'noa_'   'noaq'   'noa_'   'noa_'    'noa'   'noam'    'noa'   'noan'   'noa_'   'noa_'   'noaq'   'noaa'   'noa_'    'noa'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'noo'   '_oat'    'noo'   'nmau'   'no__'   'now_'   'nofi'    'noe'    'no_'   'noe_'    'no_'    'no_'    'nsw'    'mwa'   'nm_u'    'nag'    'nad'   'nawi'    'ne_'    'mo_'    'n_e'    'nu_'    'nau'      'n'     'wo'  'noooe'    'ntm'    'na_'      'n'      'n'    'n__'    'nm_'   'nz_e'   'nukt'     'wo'  'nom__'    'ntm'    'n_i'    'nw_'   'ncw_'    'u_a'    'nau'    '_on'     'n_'    'nzy'   'nww_'    'n_o'    'nau'    'n_g'   'hb_e'     'aq'     'w_'    'tw_' 'nox_a_'      'z'     '__'     'fi'      'w'     'za'   '_m_f'      'c'     'wi'     'o_'     'a_'    '__u'   'hb_e'     'aa'    'e__'     'wu'     'hu'      'w'    '__e'     'w_'     'ez'     '_a'    '__e'   'hb_e'     'te'     'et'     'oi'     'w_'      'o'   'mxw_'     'ad'  'ns_na'      'g'      'g'     '_a'      'y'    '_au'      'm'     'jq'     'aj'    '_ai'      'a'      'm'      'w'     'w_'      '_'    'gu_'     '_g'      'x'     'j_'     'ze'  'nn_oa'     '_q'    'oat'      'j'      'o'   'bb_a'     'wd'      '_'     'e_'
             18            1,00            2,87            5,00    'noan'   'noaq'   'noa_'   'noaq'    'noa'   'noaq'   'noa_'   'noa_'   'noa_'    'noa'   'noan'    'noa'    'noa'   'noa_'    'noa'   'noan'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'noe'    'nou'   'nom_'     'no'   'n_au'    'nou'   'nooa'    'noe'    'no_'    'no_'    'nou'    'no_'   'noee'    'nma'   'no_i'  'noa_a'    'nou'    'noj'    'nou'    'noh'   'nooo'    'now'    'no_'    'nta'   'no_q'    'noe'   '_oat'    'nwa'    'noo'    'n__'   'naea'   'nuzo'    'n_q'    'n_e'     'n_'  'nooo_'  'noe_a'    'nag'    'nak'    'nti'      'n'    'nue'    'nuu'    'neg'    'neo'   'nukt'    'nsw'     'n_'     'nd'    'nau'    'nu_'    '_aa'    'u_a'   'nnoa'  'noxw_'   'nmo_'    'n_e'    'nww'     'wo'    'n__'    'nw_'   'nmx_'   'n__a'    'nwo'    'ntn'    '_on'    'nag'     'ew'     '__'    '__e' 'noooa_'    '_et'     '_e'     'o_'    'oat'   'www_'      'e'     '_u'     'hu'      '_'     'et'     'oa'    'aau'     'zi'     'at'      'o'     '_a'     'ek'   '_m__'      'e'     'ja'      'w'     'w_'      'a'     'fi'    'e_e'     'oa'      'o'    '_a_'     '_a'   'm_o_'     'bu'     'w_'  'nwww_'     'a_'     'a_'      'e'   'mxsw'     '_a'    'uwn'      'q'     '__'     'aa'    'oat'      'y'   'hb_e'     'ad'    'xw_'     'wu'     '_a'  'guh__'  'mzeai''nous_na'
             19            1,00            2,79            5,00    'noaq'    'noa'   'noaq'   'noaq'   'noa_'    'noa'   'noan'    'noa'   'noa_'   'noa_'    'noa'   'noan'   'noaq'    'noa'    'noa'   'noa_'    'noa'   'noaq'    'noa'   'noaq'   'noaw'   'noa_'    'noa'   'noaw'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'now'   'now_'    'now'    'nou'   'noea'    'no_'    'n_a'    'noe'    'no_'    'noe'    'noo'    'no_'    'no_'  'noa_u'    'noe'   'noeu'   'n_au'    'noy'     'no'    'noe'   'no_a'   'nona'    'non'    'nma'     'no'    'noi'    'num'   'nuo_'   'nn__'   'nuoa'     'zo'   'nuw_'    'nw_'   'mda_'    'nww'   'nxw_'    'ntn'   'nnu_'   'nm_a'   'ntm_'     'eo'    'nmo'    'nak'     'nt'     'n_'    'n__'    'nie'    'nu_'     'n_'   'nm_a'    'n__'    'nz_'     'nd'   'nuoa'    'nau'    'mwa'      'q'  'nm_on'     '_s'     'at'     'bu'     'te'     '_m'     'oj'     '_a'     'za'     'ei'     'x_'     '__'     'tu'   'ane_'     'tm'      '_'      '_'     'w_' 'noooa_'  'nun__'     'kt'    '_et'     '_u'    'xw_'     'a_'    'u_q'     'ze'     '_n'    'cth'    'wau'     'a_' 'noroee' 'noom_e'     '__'     'zi'     '_q'      'a'    '__w'     'w_'    '_a_'     'o_'     'w_'    'mw_'     '_z'     'g_'      'o'      't'     'ew'    'gu_'    'xw_'      'o'     'wu'  'nwww_'      '_'     'oa'      'e' 'nanoaq'  'wk_xu'
             20            1,00            2,90            4,00    'noak'   'noao'   'noaz'   'noaq'    'noa'    'noa'    'noa'   'noaa'   'noat'   'noan'   'noat'    'noa'   'noaq'   'noan'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'now'    'no_'   'noe_'    'now'    'no_'   'no__'  'noag_'   'nona'    'non'    'nea'   'noo_'    'nod'    '_oa'   'nou_'    'nou'    'nob'    'noe'    'n_a'    'noo'    'non'     'no'    'nou'   'n_au'  'noa_e'     'no'    'nor'   'noo_'    'ne_'   'nxw_'   'nuwu'    'nu_'    'm_a'   'nm__'     'nq'    'nao'     'eo'    'nee'     'nh'  'nooaq'     'ng'   'nu_a'    'm_a'   'nnou'    'uo_'   'nn_z'   'nuoa'     'nd'   'n__a'    'nau'   'nxwe'    'nug'    'nte'    'nee'   'nm_e'     'eo'    'nwt'    'naw'    'nmu'     'zo'   'nm_a'   'nu_j'   'nno_' 'noaoa_'     'w_'     'wu'   '_a_u'     'ta'   'om__'      'a'     'g_'    'haq'     'ke'     '_q'     '_z'     'aq'  'nm_o_'  'nun_a'     'w_'     '_u'  'numoa'     'x_'    'mzu' 'noom_u'     'w_'    'tau'     '_q'     'oj'    'm_y'     'qd'    'oaq'   'wnuy'     'an'      '_'      '_'    'bau'     '__'      'a'      '_'     'an'     'oi'     'au'     'w_'    'm_i'    '_eq'      'u'     'at'      '_'    'oa_'  'nnu_a'      '_'      'u'     'e_'     'w_'     'wu'    'rw_'     '_q'    'u_z'    'ha_'      'j'  'aooa_'    'mwe'     'at'     'oa'     'ze'
             21            0,00            2,83            4,00    'noah'   'noa_'   'noat'   'noao'    'noa'   'noan'   'noaz'   'noaq'   'noat'   'noan'   'noa_'   'noaq'    'noa'    'noa'   'noan'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'nua'   'noza'   'nooa'    'non'    'now'    'now'   'niak'    'noe'    'no_'    'noe'    'no_'    'noo'   'neai'    'n_a'    'now'    'now'    'noo'    'noe'   'nou_'    'noo'    'noi'   'nowu'   'noum'     'no'     'no'    'noo'   'noet'    'noe'    'nou'    'nou'    '_ot'    'n_z'      'n'     'nu'    'nau'     'nw'    'nu_'   'nm_m'    'n_q'   'mow_'   'nxw_'     'ao'    'nee'     'nd'     'nu'   'n__a'   'nnoe'   'nmoa'   'nuwu'    'uo_'    'nnd'    'nbw'   'nnoa'     'na'    'ne_'    'nug'    'nuu'   'nmoa'    'uo_'   'nnou'     'ng'     'nz'  'nou_a'   'nao_'    'u_a'  'nooo_'   'nxw_'     'n_'    'ne_'      'm'    'rwn'      'g'     'ow'      'i'    'oan'     'eu'    'hw_'   'dpxu'      '_'     'o_'     'bu'  'nm_o_'     'oa'    'tto' 'nodey_'     'ke'     'w_'      'a'      '_'      '_'    'e_e'     'w_'  'ndmo_'      '_'     'wu'   'u_ke'     'xu'     'oa'      'q'     'te'     'ug'    'xw_' 'noom_r'    'u_u'     'qd'      'g'   'mk__'  'aooa_'  'numoa'     '_i'      'e'     'aw'     'ww'    'ma_'     'z_'     'an'     'o_'     'gz'      '_'      '_'    'm_e'   'd_ue'   'dpxu'    'm_w'
             22            0,00            2,77            4,00    'noah'   'noah'   'noaq'    'noa'    'noa'    'noa'    'noa'    'noa'   'noaq'    'noa'    'noa'   'noat'    'noa'   'noaq'   'noau'   'noaq'   'noat'    'noa'   'noan'   'noae'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noza'   'noum'   'noze'   'neai'   'noow'    'no_'   'nooa'    'nog'    'n_a'     'no'   'nou_'    'noe'    'no_'    'noe'    'now'    'now'    'nou'    'no_'   'toat'    'no_'  'nooo_'   'mow_'     'nw'   'aouo'    'nau'  'nound'     'jo'    'e_a'    'm_a'  'noux_'   'nu_a'    'nu_'     'nu'    'ntg'    'nau'     'nw'    '_o_'    'nm_'    'uo_'     'nz'    'n__'     'na'    'u_a'    'uow'    'nez'     'n_'   'nm_o'  'nom_n'  'norwn'    'nau'     'nw'   'n__a'    'nuo'    'nug'      'n'   'uooi'      'n'   'nu_e'   'nnxa'     'nu'     'to'     'na'     'bo'    'nio'     'nk'    'na_'    'nto'      'n'     'n_'     'nz'   'dpa_'     'n_'     'nw'      '_'     'aq'     'w_'     't_'  'numoa'      'o'    'wew'    'ba_'    'r_u'     'oa'     'oa'    'm_o'      'z'      '_'      'a'     'o_'     'k_'    'jai'     'kj'      'o'    '___'      '_'     'wu'    'u_u'    'rwn'    'hah'     'uw'     'ua''noadpxu'      'e'     'o_'     'eu'      'u' 'no_om_'     '_c'     'za'      'm'      'o'      'a'    'y_n'     'o_'   'd_ua'     '_a' 'nodeza'     '_q'   'uu_w'
             23            0,00            2,73            4,00    'noah'   'noah'   'noah'   'noa_'   'noat'   'noaq'   'noax'   'noa_'   'noaq'   'noat'    'noa'   'noaq'   'noaq'   'noaq'   'noaq'   'noaq'   'noaw'   'noak'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'nouo'   'noze'    'noo'   'naau'   'naau'    'non'   'nou_'  'noaey'   'nout'    '_oa'    'noo'    'n_a'    'nza'   'noo_'   'noze'     'no'    'nou'   'nooe'    'noo'   'nou_'   'noow'    'no_'    'nou'   'nea_'   'noze'   'noee'    'nou'    'uoa'   'nuau'    'nog'    'not'     'nu'      'n'     'nw'  'noxz_'  'nonoa'     'ne'  'nean_'     'nb'      'n'      'n'    'ng_'    'to_'   '_om_'  'nonoa'    'nuz'     'n_'    'q_a'   'nnxa'   'nmw_'   'nn_a'    'nau'   'ngu_'     'nw'     'nx'   'm_an'    'too'  'noo_a'     'nw'     'nw'    'ni_'    'nau'    'nw_'    '_o_'     'bo'    'nmx'     'nk'    'nu_'  'nou_e'     'na'   '_om_'     'ni'    'nuu'    'n_u'    'ne_'     'n_'  'no__g'    'uoe'    'tau'      'a'     'aq'     'o_'     'an'     'ba'  'nmu_o' 'noo_a_'      'i'      'q'   '_rwn'   'hano'      'h'      '_'    'tau' 'nodeza''noadpxe'  'nnoan'     'u_'     'ha'     'b_'     'ag'     '_e'   'e__a'      'g'    'uw_'     '_a'     'w_'     'at'      'u'     '__'      't'      'w'     'w_'      'o'    'uuu'     'ta'     'z_'     'uu' 'nooaey'     '_a'    'wew'     'za'     'jq'     'kw'
             24            0,00            2,72            4,00    'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noad'   'noaq'   'noa_'   'noab'   'noak'   'noat'   'noaq'   'noaq'   'noau'   'noau'    'noa'    'noa'   'noaq'   'noa_'    'noa'   'noat'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noo'    'non'   'nouw'   'nouo'  'noage'    'no_'    'noo'   'ngae'   'now_'   'nozu'   'noo_'    'noo'   'xoat'   'noi_'    'nou'   'naad'    'noe'    'noh'   'now_'  'noadu'    'noi'    'nou'     'no'   'nooq'   'noe_'   'nou_'    'noe'   'ooa_'    'nzo' 'noaenx'    '_o_'     'to'     'nx'  'nuaau'    't_a'    'nw_'     'nm'    'nwu'    'nw_'     'nx'     'n_'   'nu_a'    '_o_'   'nm_n'  'nonoa'  'nom_e'  'nona_'  'nonaa'    'w_a'    'nm_'   'm_an'   'nuuu'  'no__g'     'n_'    'nu_'   'nxw_' 'noam_g'    'oja'    'new'    'n_e'   'nnu_'     'ao'  'noo_a'      'n'    'nwu'  'noi_t'     'nt'      'u'      'y'   'ugu_' 'nouoah'     'j_'  'nuoza'      'a'      'e'    'm_e'     'ue'     '_u'     'aq'    '_aq'      'a' 'nooxw_'     'oa'     'us'     'bx'   'mw_a'     '_u'     'ha'     'zu'     'at'    'ow_'     'h_'     'oe'    '_um'      'w'    'oa_'      '_'    '_i_'     'ze'     'ws'     'sn' 'nox_ae'      'a'     'zu'      'u'      '_'     'qa'      '_'      'w'     '_q'     'ag' 'nooxza'     'ah'      'o'     'oa' 'nodttg'  'nip_a'    'tau'     'uu'
             25            0,00            2,65            4,00    'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noab'   'noaw'   'noan'   'noab'   'noan'   'noan'   'nuah'   'noa_'   'noao'    'noa'   'noa_'   'noao'    'noa'   'noau'   'noa_'   'noam'    'noa'    'noa'    'noa'    'noq'   'nou_'  'noa_a'    'nna'    'no_'    'noe'    'noh'    'nou'   'noug'    'noo'  'noaau'   'nong'    'no_'   'nou_'   'noex'   'ngae'   'nooq'    'noo'    'no_'   'ngae'    'no_'   'nou_'   'noeq'    'nw_'    'nm_'    'n__'    'nau'   'nuw_'  'noxoa'    'nu_'     'oo'    'na_'  'noi_t'     'ne'    'nwu'    'n_e'     'ne'     'ni'     'n_'    'nke'   'nu_a'     '_o'    'nem'    'ni_'    'nwu'   'nxwx'   'nuw_'     'ng'   'nxw_'     'n_' 'nonhu_'  'noxwa'   'nuoa'    'mua'  'noim_'   'uoit'    'nw_'   'nnoa'  'noi_t'     'n_'     'na'  'nonax'    'nwn'    'nak'     'ng'   'nuw_'     'w_'   'o_o_'     'ta'   'gmoa'     'zu'    'xw_'     'w_'      '_'     'wu'      'a'      'a'      'o'     'u_'     'w_'     'tg'     'bu'      'e'      'w'      'u'    '_i_'      '_'     'w_' 'nonoaq'     'zu'     'a_'     'th'     '_u'    'uw_'     'ja'    'ug_'     'ah'     'wu'    'xw_'     'gu'    'hap' 'nooxw_'    'gae'     'ae'      'u'     '_a'    'oah'     'aq'     'aq'     'w_'  'nmoue'    '__n'     'u_'      'a'      'g'     'aa'