------art_59785_30970447.1165855345394
Content-Type: multipart/alternative; 
	boundary---art_59786_23962453.1165855345394"

------art_59786_23962453.1165855345394
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Please find my solution hereafter, I somehow do not like it because it is
unreadable, I wanted to show what ruby can do and that it can do it in
different ways, i liked the Quiz, save the output part, which was a
chellange but not really ruby specificly, well that is why my solution is so
unreadable, a readable solution might not differ very much from Smalltalk or
Java, structurally I mean ;)
Thx for the Quiz.

665/167 > cat screen.rb

class Screen
        def initialize size, &blk
                @lines  rray.new( size ){ [] }
                instance_eval &blk if blk
        end
        private
        def at c, pos_line, pos_col
                @lines[pos_line-1][pos_col-1]  
        end
        def out streamtdout
                stream.puts self
        end
        def str_at s, pos_line, pos_col
                s.each_byte do
                        |c|
                        at c, pos_line, pos_col
                        pos_col + 
                end
        end
        def str_align s, align, pos_line, pos_col
                str_at "%#{align}s" % s.to_s, pos_line, pos_col
        end
        def to_s
                @lines.map{ |line| line.map{ |c| c.nil? ? " " :
c.chr}.join}.join("\n")
        end
end

666/168 > cat sol.rb
require 'screen'
class Tournament
        def initialize n
                @n  .to_i
                abort "illegal number #@n" unless @n > 0
                @outputs  ]
                [*0..(@n - 1).to_s(2).length].inject([0]){
                        |pairs,n|
                        @outputs.unshift pairs
                        pairs.map{|p| [p, ( 1 << n ) * 2 - 1 - p]}.flatten
                }
                @outputs.map!{ |col| col.map!{|i| i < @n ? i + 1 : :bye} }
        end
        def print
                data  outputs
                Screen.new data.first.length * 2 do
                        data.each_with_index do
                                |output, col|
                                output.each_with_index do
                                        |player, row|
                                        main_row  **col + row*2**(col+1)
                                        str_align player, 4, main_row,
6*col+5
                                        str_at "-"*5 << "+", main_row,
6*col+9 unless
                                                output.length 1
                                        if col > 1 then
                                                (2**(col-1)-1).times do
                                                        |t|
                                                        at ?|, main_row
-1-t, 6*col+8
                                                        at ?|, main_row
+1+t, 6*col+8
                                                end
                                        end

                                end

                        end
                        out
                end
        end
end

Tournament.new( ARGV.first || "14" ).print

Robert

-- 
"The real romance is out ahead and yet to come. The computer revolution
hasn't started yet. Don't be misled by the enormous flow of money into bad
defacto standards for unsophisticated buyers using poor adaptations of
incomplete ideas."

- Alan Kay

------art_59786_23962453.1165855345394
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<br>Please find my solution hereafter, I somehow do not like it because it is unreadable, I wanted to show what ruby can do and that it can do it in different ways, i liked the Quiz, save the output part, which was a chellange but not really ruby specificly, well that is why my solution is so unreadable, a readable solution might not differ very much from Smalltalk or Java, structurally I mean ;)
<br>Thx for the Quiz.<br><div><span class="gmail_quote"><br>665/167 &gt; cat screen.rb<br><br>class Screen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def initialize size, &amp;blk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @lines = Array.new(ize ){ [] }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance_eval &amp;blk if blk
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ef at c, pos_line, pos_col<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @lines[pos_line-1][pos_col-1] = c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def out stream=$stdout<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream.puts self<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def str_at s, pos_line, pos_col<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.each_byte do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |c|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at c, pos_line, pos_col<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos_col += 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nd
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def str_align s, align, pos_line, pos_col<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_at &quot;%#{align}s&quot; % s.to_s, pos_line, pos_col<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def to_s<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @lines.map{ |line| line.map{
 |c| c.nil? ? &quot; &quot; : c.chr }.join}.join(&quot;\n&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>end<br><br>666/168 &gt; cat sol.rb<br>require 'screen'<br>class Tournament<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def initialize n<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @n = n.to_i<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abort &quot;illegal number #@n&quot; unless @n &gt; 0
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @outputs = []<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [*0..(@n - 1).to_s(2).length].inject([0]){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |pairs,n|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @outputs.unshift pairs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pairs.map{|p|
 [p, ( 1 &lt;&lt; n ) * 2 - 1 - p]}.flatten<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @outputs.map!{ |col| col.map!{|i| i &lt; @n ? i + 1 : :bye} }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; def print<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = @outputs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Screen.new data.first.length * 2 do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data.each_with_index do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |output, col|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output.each_with_index do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |player, row|
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main_row = 2**col + row*2**(col+1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_align player, 4, main_row, 6*col+5<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_at &quot;-&quot;*5 &lt;&lt; &quot;+&quot;, main_row, 6*col+9 unless
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; output.length3D= 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if col &gt; 1 then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2**(col-1)-1).times do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |t|
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at ?|, main_row -1-t, 6*col+8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at ?|, main_row +1+t, 6*col+8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br>end<br><br>Tournament.new
( ARGV.first || &quot;14&quot; ).print<br><br>Robert<br></span></div><br>--br>&quot;The real romance is out ahead and yet to come. The computer revolution hasn't started yet. Don't be misled by the enormous flow of money into bad defacto standards for unsophisticated buyers using poor adaptations of incomplete ideas.&quot;
<br><br>- Alan Kay


------art_59786_23962453.1165855345394--

------art_59785_30970447.1165855345394
Content-Type: application/x-ruby; name=sol.rb
Content-Transfer-Encoding: base64
X-Attachment-Id: f_evl4zmqq
Content-Disposition: attachment; filename="sol.rb"

cmVxdWlyZSAnc2NyZWVuJwpjbGFzcyBUb3VybmFtZW50CglkZWYgaW5pdGlhbGl6ZSBuCgkJQG4g
PSBuLnRvX2kKCQlhYm9ydCAiaWxsZWdhbCBudW1iZXIgI0BuIiB1bmxlc3MgQG4gPiAwCgkJQG91
dHB1dHMgPSBbXQoJCVsqMC4uKEBuIC0gMSkudG9fcygyKS5sZW5ndGhdLmluamVjdChbMF0pewoJ
CQl8cGFpcnMsbnwKCQkJQG91dHB1dHMudW5zaGlmdCBwYWlycwoJCQlwYWlycy5tYXB7fHB8IFtw
LCAoIDEgPDwgbiApICogMiAtIDEgLSBwXX0uZmxhdHRlbgoJCX0KCQlAb3V0cHV0cy5tYXAheyB8
Y29sfCBjb2wubWFwIXt8aXwgaSA8IEBuID8gaSArIDEgOiA6YnllfSB9CgllbmQKCWRlZiBwcmlu
dAoJCWRhdGEgPSBAb3V0cHV0cwoJCVNjcmVlbi5uZXcgZGF0YS5maXJzdC5sZW5ndGggKiAyIGRv
CgkJCWRhdGEuZWFjaF93aXRoX2luZGV4IGRvCgkJCQl8b3V0cHV0LCBjb2x8CgkJCQlvdXRwdXQu
ZWFjaF93aXRoX2luZGV4IGRvCgkJCQkJfHBsYXllciwgcm93fAoJCQkJCW1haW5fcm93ID0gMioq
Y29sICsgcm93KjIqKihjb2wrMSkKCQkJCSAgICAgICAgc3RyX2FsaWduIHBsYXllciwgNCwgbWFp
bl9yb3csIDYqY29sKzUKCQkJCQlzdHJfYXQgIi0iKjUgPDwgIisiLCBtYWluX3JvdywgNipjb2wr
OSB1bmxlc3MKCQkJCQkJb3V0cHV0Lmxlbmd0aCA9PSAxCgkJCQkJaWYgY29sID4gMSB0aGVuCgkJ
CQkJCSgyKiooY29sLTEpLTEpLnRpbWVzIGRvCgkJCQkJCQl8dHwKCQkJCQkJCWF0ID98LCBtYWlu
X3JvdyAtMS10LCA2KmNvbCs4CgkJCQkJCQlhdCA/fCwgbWFpbl9yb3cgKzErdCwgNipjb2wrOAoJ
CQkJCQllbmQKCQkJCQllbmQKCQkJCQkKCQkJCWVuZAoKCQkJZW5kCgkJCW91dAoJCWVuZAoJZW5k
CmVuZAoKVG91cm5hbWVudC5uZXcoIEFSR1YuZmlyc3QgfHwgIjE0IiApLnByaW50Cg------art_59785_30970447.1165855345394
Content-Type: application/x-ruby; name=screen.rb
Content-Transfer-Encoding: base64
X-Attachment-Id: f_evl51bd8
Content-Disposition: attachment; filename="screen.rb"

CmNsYXNzIFNjcmVlbgoJZGVmIGluaXRpYWxpemUgc2l6ZSwgJmJsawoJCUBsaW5lcyA9IEFycmF5
Lm5ldyggc2l6ZSApeyBbXSB9CgkJaW5zdGFuY2VfZXZhbCAmYmxrIGlmIGJsawoJZW5kCglwcml2
YXRlCglkZWYgYXQgYywgcG9zX2xpbmUsIHBvc19jb2wKCQlAbGluZXNbcG9zX2xpbmUtMV1bcG9z
X2NvbC0xXSA9IGMKCWVuZAoJZGVmIG91dCBzdHJlYW09JHN0ZG91dAoJCXN0cmVhbS5wdXRzIHNl
bGYKCWVuZAoJZGVmIHN0cl9hdCBzLCBwb3NfbGluZSwgcG9zX2NvbAoJCXMuZWFjaF9ieXRlIGRv
CgkJCXxjfAoJCQlhdCBjLCBwb3NfbGluZSwgcG9zX2NvbAoJCQlwb3NfY29sICs9IDEKCQllbmQK
CWVuZAoJZGVmIHN0cl9hbGlnbiBzLCBhbGlnbiwgcG9zX2xpbmUsIHBvc19jb2wKCQlzdHJfYXQg
IiUje2FsaWdufXMiICUgcy50b19zLCBwb3NfbGluZSwgcG9zX2NvbAoJZW5kCglkZWYgdG9fcwoJ
CUBsaW5lcy5tYXB7IHxsaW5lfCBsaW5lLm1hcHsgfGN8IGMubmlsPyA/ICIgIiA6IGMuY2hyIH0u
am9pbn0uam9pbigiXG4iKQoJZW5kCmVuZAoK
------art_59785_30970447.1165855345394--