cremefraiche 1.1.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cremefraiche might be problematic. Click here for more details.

Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/bin/cremefraiche +25 -0
  3. data/bin/cremefraicheGui +26 -0
  4. data/cremefraiche.gemspec +24 -0
  5. data/lib/LANG +1 -0
  6. data/lib/busy_indicator/busy_function_test.rb +56 -0
  7. data/lib/busy_indicator/busy_indicator.rb +95 -0
  8. data/lib/busy_indicator/color_output.rb +51 -0
  9. data/lib/cfprawn.rb +394 -0
  10. data/lib/confcheck.rb +112 -0
  11. data/lib/config +192 -0
  12. data/lib/configuration.rb +259 -0
  13. data/lib/cremefraiche.rb +341 -0
  14. data/lib/emlfile.rb +140 -0
  15. data/lib/file_checking.rb +87 -0
  16. data/lib/gui/AboutDialog.rb +64 -0
  17. data/lib/gui/ButtonLabel.rb +49 -0
  18. data/lib/gui/ConfDialog.rb +618 -0
  19. data/lib/gui/HowtoDialog.rb +184 -0
  20. data/lib/gui/conf_option.rb +279 -0
  21. data/lib/gui/conf_value.rb +65 -0
  22. data/lib/gui/cremefraicheGui.rb +625 -0
  23. data/lib/gui/gtk-about.xpm +90 -0
  24. data/lib/gui/gtk-close.xpm +90 -0
  25. data/lib/gui/gtk-execute.xpm +118 -0
  26. data/lib/gui/gtk-open.xpm +147 -0
  27. data/lib/gui/gtk-properties.xpm +378 -0
  28. data/lib/gui/gtk-quit.xpm +352 -0
  29. data/lib/gui/gtk-remove.xpm +123 -0
  30. data/lib/gui/gtk-save.xpm +214 -0
  31. data/lib/gui/gtk-stop.xpm +344 -0
  32. data/lib/gui/help.xpm +463 -0
  33. data/lib/gui/icon.xpm +300 -0
  34. data/lib/gui/message_dialog.rb +34 -0
  35. data/lib/gui/okay.xpm +49 -0
  36. data/lib/gui/preferences-color.xpm +252 -0
  37. data/lib/gui/view.xpm +75 -0
  38. data/lib/html2text.rb +177 -0
  39. data/lib/icon/icon.xpm +300 -0
  40. data/lib/icon/icon_big.xpm +661 -0
  41. data/lib/license.rb +705 -0
  42. data/lib/log.conf +65 -0
  43. data/lib/logging.rb +193 -0
  44. data/lib/tag_munging.rb +97 -0
  45. data/lib/translating.rb +78 -0
  46. data/lib/translations +598 -0
  47. data/lib/version.rb +26 -0
  48. metadata +213 -0
data/lib/gui/view.xpm ADDED
@@ -0,0 +1,75 @@
1
+ /* XPM */
2
+ static char * view_xpm[] = {
3
+ "24 24 48 1",
4
+ " c None",
5
+ ". c #000000",
6
+ "+ c #252525",
7
+ "@ c #707070",
8
+ "# c #A4A4A4",
9
+ "$ c #C5C5C5",
10
+ "% c #FFFFFF",
11
+ "& c #FFFFFE",
12
+ "* c #9A8567",
13
+ "= c #754C24",
14
+ "- c #C3C3C3",
15
+ "; c #B8B8B8",
16
+ "> c #828282",
17
+ ", c #383838",
18
+ "' c #1B1B1B",
19
+ ") c #7A7A7A",
20
+ "! c #EEEEEE",
21
+ "~ c #E3DCD6",
22
+ "{ c #653100",
23
+ "] c #673300",
24
+ "^ c #663300",
25
+ "/ c #A5A5A5",
26
+ "( c #1A1A1A",
27
+ "_ c #EFEFEF",
28
+ ": c #7F5222",
29
+ "< c #612E00",
30
+ "[ c #696969",
31
+ "} c #5B2400",
32
+ "| c #6B3600",
33
+ "1 c #000200",
34
+ "2 c #F1F1F1",
35
+ "3 c #6A3500",
36
+ "4 c #130A00",
37
+ "5 c #8D8D8D",
38
+ "6 c #010101",
39
+ "7 c #7F7F7F",
40
+ "8 c #E2DBD5",
41
+ "9 c #E6E0D9",
42
+ "0 c #B6B6B6",
43
+ "a c #353535",
44
+ "b c #232323",
45
+ "c c #818181",
46
+ "d c #AAAAA7",
47
+ "e c #533D20",
48
+ "f c #512900",
49
+ "g c #553F22",
50
+ "h c #82827F",
51
+ "i c #5C5C5C",
52
+ " ",
53
+ " ",
54
+ " ",
55
+ " ",
56
+ " ",
57
+ " ",
58
+ " ",
59
+ " ..... ",
60
+ " ............. ",
61
+ " .+@#$%&*==*%-;>,.. ",
62
+ " ')!%%%%~{]^^]{~%%%%/( ",
63
+ " _%%%%%:^^<<^^:%%%%% . ",
64
+ " [%%%%%}^|11|^}%%%%/ ",
65
+ " +2%%%:^3443^:%%%5 ",
66
+ " 67!%8{]33]{9%0a ",
67
+ " .bcdeffghi.. ",
68
+ " ..... ",
69
+ " ",
70
+ " ",
71
+ " ",
72
+ " ",
73
+ " ",
74
+ " ",
75
+ " "};
data/lib/html2text.rb ADDED
@@ -0,0 +1,177 @@
1
+ #encoding: UTF-8
2
+ =begin
3
+ /***************************************************************************
4
+ * ©2011-2016 Michael Uplawski <michael.uplawski@uplawski.eu> *
5
+ * *
6
+ * This program is free software; you can redistribute it and/or modify *
7
+ * it under the terms of the GNU General Public License as published by *
8
+ * the Free Software Foundation; either version 3 of the License, or *
9
+ * (at your option) any later version. *
10
+ * *
11
+ * This program is distributed in the hope that it will be useful, *
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14
+ * GNU General Public License for more details. *
15
+ * *
16
+ * You should have received a copy of the GNU General Public License *
17
+ * along with this program; if not, write to the *
18
+ * Free Software Foundation, Inc., *
19
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
20
+ ***************************************************************************/
21
+ =end
22
+ require 'rubygems'
23
+ require 'nokogiri'
24
+ require_relative 'logging'
25
+ require_relative 'configuration'
26
+ require_relative 'tag_munging'
27
+ # An object of this class formats the HTML from an email for rendering
28
+ # in a PRAWN-generated PDF-file
29
+
30
+ class Html2Text
31
+ include Logging
32
+ include TagMunging
33
+ def initialize( html)
34
+ init_logger($CONF.log_file ? $CONF.log_file : STDOUT, $CONF.log_level ? $CONF.log_level : Logger::UNKNOWN)
35
+ #remove line-breaks
36
+ html.gsub!("\n", ' ')
37
+ # whatever...
38
+ html.gsub!("<BR>", "\n")
39
+ html.gsub!("<BR/>", "\n")
40
+ html.gsub!("<br>", "\n")
41
+ html.gsub!("<br/>", "\n")
42
+ html.gsub!("<br />", "\n")
43
+ #remove html-comments
44
+ html.gsub!(/\<\!--([\s*\S*])*-->/, '')
45
+ @html = Nokogiri::HTML::fragment(html)
46
+ define_tag_handlers if @html
47
+ @out_text = ''
48
+ end
49
+
50
+ # def text(tag = @html)
51
+ def text()
52
+ @out_text = handle(@html)
53
+ end
54
+
55
+ #TODO: verify children in the node-list
56
+ def handle(tag = @html)
57
+ @log.debug('handle tag ' << tag.name)
58
+ tcontent = ''
59
+ if(tag.respond_to?(:children) )
60
+ tag.children().each do |t|
61
+ @log.debug("\tchild tag " << t.name)
62
+ tresult = nil
63
+ handler = @@tag_handlers[t.name.downcase]
64
+ if(!handler)
65
+ handler = @@tag_handlers['any']
66
+ end
67
+ tresult = handler.call(t)
68
+ tcontent << (tresult ? tresult : '')
69
+ end
70
+ else
71
+ tcontent = tag.to_s
72
+ end
73
+ tcontent
74
+ end
75
+
76
+ private
77
+ def define_tag_handlers
78
+ @@tag_handlers = {}
79
+
80
+ do_nothing = Proc.new() do |value|
81
+ handle(value)
82
+ end
83
+
84
+ @@tag_handlers['a'] = Proc.new() do |value|
85
+ v = handle(value)
86
+ link_color = "#" << $CONF.link_color if $CONF.link_color
87
+ link_color ||= DEF_LINK_COLOR
88
+
89
+ # someting in Nokogiri prevents me from setting the link content,
90
+ # I write the tag explicitly.
91
+ link = '<link href="' << value['href'] << '">'
92
+ link << '<color rgb="' << link_color << '">'
93
+ link << v << '</color></link>'
94
+ =begin
95
+ # DOES NOT WORK:
96
+ link = new_tag(@html, 'link', :content => v, :href => value['href'])
97
+ color = new_tag(@html, 'color', :parent => link)
98
+ color['rgb'] = link_color
99
+ =end
100
+ @log.debug('link is : ' << link.to_s)
101
+ link
102
+ end
103
+
104
+ @@tag_handlers['strong'] = Proc.new() do |value|
105
+ "<b>" << handle(value) <<"</b>"
106
+ end
107
+ @@tag_handlers['body'] = Proc.new() do |value|
108
+ handle(value)
109
+ end
110
+ @@tag_handlers['blockquote'] = Proc.new() do |value|
111
+ content = "\n ------------------------------- "
112
+ handle(value).split("\n").each do |l|
113
+ content << "\n| " << l
114
+ end
115
+ content << "\n ------------------------------- "
116
+ content
117
+ end
118
+
119
+ @@tag_handlers['div'] = Proc.new() do |value|
120
+ "\n" << handle(value)
121
+ end
122
+
123
+ @@tag_handlers['syle'] = do_nothing
124
+ @@tag_handlers['meta'] = do_nothing
125
+ @@tag_handlers['head'] = do_nothing
126
+ @@tag_handlers['tbody'] = do_nothing
127
+ @@tag_handlers['doctype'] = do_nothing
128
+ @@tag_handlers['font'] = do_nothing
129
+ @@tag_handlers['img'] = do_nothing
130
+
131
+ @@tag_handlers['span'] = Proc.new() do |value|
132
+ handle(value)
133
+ end
134
+
135
+
136
+ @@tag_handlers['title'] = Proc.new() do |value|
137
+ "<b>" << handle(value ) << "</b>"
138
+ end
139
+
140
+ @@tag_handlers['td'] = Proc.new() do |value|
141
+ @log.debug("\t\thandler td : " << value)
142
+ v = handle(value)
143
+ ntag = ''
144
+ if(v && !v.strip.empty?)
145
+ ntag << v
146
+ end
147
+ ntag
148
+ end
149
+ @@tag_handlers['table'] = Proc.new() do |value|
150
+ handle(value)
151
+ end
152
+
153
+ @@tag_handlers['tr'] = Proc.new() do |value|
154
+ @log.debug("\t\thandler tr : " << value)
155
+ "\n" << handle(value )
156
+ end
157
+
158
+
159
+ @@tag_handlers['p'] = Proc.new() do |value|
160
+ "\n" << handle(value )
161
+ end
162
+
163
+ @@tag_handlers['b'] = Proc.new() do |value|
164
+ '<b>' << handle(value) << ' </b>'
165
+ end
166
+
167
+ @@tag_handlers['i'] = Proc.new() do |value|
168
+ "<i>" << handle(value)<< "</i>"
169
+ end
170
+
171
+ @@tag_handlers['any'] = Proc.new() do |value|
172
+ @log.debug("\t\thandling any : " << value)
173
+ value
174
+ end
175
+ end
176
+ end
177
+
data/lib/icon/icon.xpm ADDED
@@ -0,0 +1,300 @@
1
+ /* XPM */
2
+ static char * icon_xpm[] = {
3
+ "48 48 249 2",
4
+ " c None",
5
+ ". c #000200",
6
+ "+ c #0C0F0B",
7
+ "@ c #790200",
8
+ "# c #1A1C19",
9
+ "$ c #B5001B",
10
+ "% c #272927",
11
+ "& c #C30000",
12
+ "* c #B10704",
13
+ "= c #CB0001",
14
+ "- c #BC0502",
15
+ "; c #2C2D2B",
16
+ "> c #BC0713",
17
+ ", c #BD090C",
18
+ "' c #C90A0B",
19
+ ") c #762223",
20
+ "! c #C90C1A",
21
+ "~ c #B5121D",
22
+ "{ c #CA0D14",
23
+ "] c #A51815",
24
+ "^ c #BF111C",
25
+ "/ c #C01223",
26
+ "( c #5A2C59",
27
+ "_ c #C21417",
28
+ ": c #B71624",
29
+ "< c #393B38",
30
+ "[ c #84234B",
31
+ "} c #3C3A3D",
32
+ "| c #C1162A",
33
+ "1 c #C31725",
34
+ "2 c #3C3D3B",
35
+ "3 c #652D64",
36
+ "4 c #B61A3A",
37
+ "5 c #6C2C67",
38
+ "6 c #3E403E",
39
+ "7 c #B91D37",
40
+ "8 c #702E75",
41
+ "9 c #C81D1B",
42
+ "0 c #40423F",
43
+ "a c #C91F16",
44
+ "b c #A7272B",
45
+ "c c #BE212F",
46
+ "d c #5D3A5D",
47
+ "e c #434749",
48
+ "f c #454744",
49
+ "g c #CC2425",
50
+ "h c #633F63",
51
+ "i c #484A47",
52
+ "j c #CD262C",
53
+ "k c #BE2E42",
54
+ "l c #B33334",
55
+ "m c #834140",
56
+ "n c #714270",
57
+ "o c #4F504E",
58
+ "p c #CC2F2D",
59
+ "q c #C2313F",
60
+ "r c #8A3D71",
61
+ "s c #91413F",
62
+ "t c #CF3335",
63
+ "u c #625153",
64
+ "v c #6A4C6E",
65
+ "w c #A93C74",
66
+ "x c #575856",
67
+ "y c #AF3C71",
68
+ "z c #C23C4E",
69
+ "A c #C13C53",
70
+ "B c #CE3B37",
71
+ "C c #585C5F",
72
+ "D c #765176",
73
+ "E c #5B5C5A",
74
+ "F c #D03D3E",
75
+ "G c #A84382",
76
+ "H c #5F5D61",
77
+ "I c #625D5C",
78
+ "J c #C94147",
79
+ "K c #5E605D",
80
+ "L c #B34571",
81
+ "M c #755A76",
82
+ "N c #C54468",
83
+ "O c #CF4546",
84
+ "P c #666468",
85
+ "Q c #646663",
86
+ "R c #BB4B71",
87
+ "S c #BB4D78",
88
+ "T c #67677C",
89
+ "U c #D64B4B",
90
+ "V c #6B6D6A",
91
+ "W c #766975",
92
+ "X c #B75586",
93
+ "Y c #D5524D",
94
+ "Z c #D55252",
95
+ "` c #726E6C",
96
+ " . c #6F716E",
97
+ ".. c #C95769",
98
+ "+. c #727074",
99
+ "@. c #D45855",
100
+ "#. c #DA5757",
101
+ "$. c #D25960",
102
+ "%. c #737472",
103
+ "&. c #B95D8B",
104
+ "*. c #D55A5C",
105
+ "=. c #8D6C7E",
106
+ "-. c #6C7878",
107
+ ";. c #757A7C",
108
+ ">. c #707C7C",
109
+ ",. c #D76360",
110
+ "'. c #7B7C79",
111
+ "). c #6D807F",
112
+ "!. c #B96C6D",
113
+ "~. c #7E7C80",
114
+ "{. c #A371A1",
115
+ "]. c #80827F",
116
+ "^. c #AC70B6",
117
+ "/. c #B6709B",
118
+ "(. c #DA6B65",
119
+ "_. c #D56D73",
120
+ ":. c #DA6D6C",
121
+ "<. c #AF74B3",
122
+ "[. c #C7728A",
123
+ "}. c #C3739C",
124
+ "|. c #DB746F",
125
+ "1. c #B17AB2",
126
+ "2. c #E77274",
127
+ "3. c #BA7BB6",
128
+ "4. c #CF7992",
129
+ "5. c #8D8F8C",
130
+ "6. c #DA7B79",
131
+ "7. c #BC7FAD",
132
+ "8. c #D67B8A",
133
+ "9. c #BB80B4",
134
+ "0. c #B981BA",
135
+ "a. c #B986AB",
136
+ "b. c #E0807E",
137
+ "c. c #949693",
138
+ "d. c #E9807B",
139
+ "e. c #C887B0",
140
+ "f. c #BE8ABB",
141
+ "g. c #DE8686",
142
+ "h. c #C38CB8",
143
+ "i. c #BE8DC4",
144
+ "j. c #AF94C4",
145
+ "k. c #E28C98",
146
+ "l. c #E08E8C",
147
+ "m. c #D694AB",
148
+ "n. c #C197CC",
149
+ "o. c #B69DB3",
150
+ "p. c #C797C1",
151
+ "q. c #C597C7",
152
+ "r. c #D094C8",
153
+ "s. c #D99AA3",
154
+ "t. c #E19B94",
155
+ "u. c #C79EC6",
156
+ "v. c #D29CBB",
157
+ "w. c #E89A90",
158
+ "x. c #E19D9B",
159
+ "y. c #D29DCF",
160
+ "z. c #CAA1C9",
161
+ "A. c #ED9B9E",
162
+ "B. c #C9A3D0",
163
+ "C. c #D4A4C2",
164
+ "D. c #D9A5B7",
165
+ "E. c #E6A4A8",
166
+ "F. c #C6A9D7",
167
+ "G. c #E9A4A3",
168
+ "H. c #CBA9CF",
169
+ "I. c #E5A7A3",
170
+ "J. c #E4A8AA",
171
+ "K. c #C8ACDD",
172
+ "L. c #D1ACCD",
173
+ "M. c #D6ADC9",
174
+ "N. c #CEAFDB",
175
+ "O. c #D2AFD6",
176
+ "P. c #DBADDD",
177
+ "Q. c #D7B0DE",
178
+ "R. c #CEB5DC",
179
+ "S. c #C8BBBB",
180
+ "T. c #E8B3B3",
181
+ "U. c #DFB4CA",
182
+ "V. c #D5B6D5",
183
+ "W. c #F2B4B0",
184
+ "X. c #DDBCD5",
185
+ "Y. c #D8BED5",
186
+ "Z. c #EABCB9",
187
+ "`. c #D6BFDC",
188
+ " + c #C6C8C5",
189
+ ".+ c #E9BFC8",
190
+ "++ c #E1C1CE",
191
+ "@+ c #D6C2E5",
192
+ "#+ c #DCC2D9",
193
+ "$+ c #E9C3C4",
194
+ "%+ c #EFC2C5",
195
+ "&+ c #DFC5DD",
196
+ "*+ c #D4C8E9",
197
+ "=+ c #EFC9CA",
198
+ "-+ c #EACBCA",
199
+ ";+ c #DFCCE2",
200
+ ">+ c #D1D3D0",
201
+ ",+ c #E3D1D9",
202
+ "'+ c #E2D2EE",
203
+ ")+ c #E1D6E9",
204
+ "!+ c #D9DBD8",
205
+ "~+ c #E1DDEF",
206
+ "{+ c #E7DDF4",
207
+ "]+ c #F0DDE2",
208
+ "^+ c #ECDFDF",
209
+ "/+ c #EAE0E7",
210
+ "(+ c #F5DEDB",
211
+ "_+ c #E1E4E0",
212
+ ":+ c #F1DEED",
213
+ "<+ c #E9E2EE",
214
+ "[+ c #E4E7F4",
215
+ "}+ c #EDE7E6",
216
+ "|+ c #EBE8ED",
217
+ "1+ c #E9EBE8",
218
+ "2+ c #F6E8E9",
219
+ "3+ c #EAECE9",
220
+ "4+ c #F3E9F0",
221
+ "5+ c #EEEBF0",
222
+ "6+ c #F1EBEA",
223
+ "7+ c #E8EEF0",
224
+ "8+ c #ECEEEB",
225
+ "9+ c #FFEAED",
226
+ "0+ c #EEF0ED",
227
+ "a+ c #EFF0FA",
228
+ "b+ c #EFF2EE",
229
+ "c+ c #F1F3F0",
230
+ "d+ c #EEF4F6",
231
+ "e+ c #F7F2F0",
232
+ "f+ c #ECF5FD",
233
+ "g+ c #F6F3F8",
234
+ "h+ c #F3F5F2",
235
+ "i+ c #FCF2F9",
236
+ "j+ c #EBF9F9",
237
+ "k+ c #F5F7F4",
238
+ "l+ c #F0F8FF",
239
+ "m+ c #F3F8FB",
240
+ "n+ c #FCF6F5",
241
+ "o+ c #F9F7FB",
242
+ "p+ c #F7F9F6",
243
+ "q+ c #F1FBF5",
244
+ "r+ c #F2FCF7",
245
+ "s+ c #F9FBF7",
246
+ "t+ c #FDFAFF",
247
+ "u+ c #F1FEFF",
248
+ "v+ c #FAFCF9",
249
+ "w+ c #FFFBF9",
250
+ "x+ c #FBFDFA",
251
+ "y+ c #F8FEFF",
252
+ "z+ c #FDFFFC",
253
+ " ",
254
+ " ",
255
+ " ",
256
+ " ",
257
+ " ",
258
+ " ",
259
+ " & ",
260
+ " { & U j Z ",
261
+ " * @ j.r ~ a. ",
262
+ ". % V E E E E E E E E E E E E E E E C u ] H ( n T b [ d E E E E E E E H C E E E E E E E E Q ; . ",
263
+ "; V +z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+9+#.z+y.z+z+d.k.P.z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+>+ .o ",
264
+ "0 z+o 5.z+z+z+z+z+z+z+z+z+z+z+z+y+z+z+Z.@.'+L.z+z+:.E.q.4+z+x+y+x+v+v+v+v+s+s+s+s+t+s+z+ 0 z+Q ",
265
+ "2 z+z+Q %.z+z+z+z+z+z+z+z+z+w+z+z+z+z+=+#.@+#+z+z+U %+q.<+z+v+v+v+t+s+s+s+s+s+s+s+o+z+ 0 0+z+E ",
266
+ "2 z+z+z+'.K z+z+z+z+z+z+z+z+z+z+z+z+z+(+U R.#+z+n+F ]+q.4+z+s+s+y+s+s+s+o+s+s+o+p+z+ f c+z+z+E ",
267
+ "2 z+z+z+z+c.o s+z+z+z+z+z+z+z+z+w+x+z+2+Y C.V.z+=+#.:+p.g+x+s+s+s+s+w+s+s+s+p+p+z+ i p+t+k+z+E ",
268
+ "2 z+z+z+z+z+ 6 1+z+v+z+x+x+x+x+v+v+z+w+#.m.O.z+g.b.)+z.x+s+s+s+s+s+p+p+p+p+k+z+c.i s+v+g+k+z+E ",
269
+ "2 z+z+z+z+z+z+ +< >+z+x+x+w+v+v+v+s+v+z+:.8.B.y+U =+O.X.z+s+o+n+p+p+p+n+k+k+z+].x v+s+k+k+h+z+E ",
270
+ "2 z+z+z+x+x+v+z+!+6 z+s+v+s+s+s+t+s+z+G.$.q..+B y+f.<+x+p+p+k+k+k+k+k+k+z+].K z+x+c+h+h+c+z+C ",
271
+ "2 z+z+x+x+x+v+v+z+5+f z+x+s+s+s+s+s+y+2+t N.z w.)+p.s+p+k+k+o+k+k+k+k+z+Q < z+p+c+c+c+c+g+z+E ",
272
+ "2 z+z+v+v+v+v+s+p+z+ . c.z+x+s+s+s+s+s+z+Z 4.1 n+p.#+v+n+k+k+k+k+h+s+z+V %.x +w+c+d+c+c+g+z+E ",
273
+ "< z+z+s+s+s+s+s+z+_+0 }+Q %.z+x+s+s+s+o+y+T.& ..{+f.5+p+k+m+k+k+d+k+z+V .z+ +0 w+e+c+c+c+c+z+E ",
274
+ "< z+x+s+s+s+s+z+t+f +z+z+'.I 0+8+3+3+3+8+}+& /.1.L.0+1+1+7+1+1+1+8+K %.z+b+z+'.'.z+e+b+b+b+z+E ",
275
+ "< z+v+s+s+s+s+z+Q c.z+k+s+z+5.E .V V ` -.s = [ 8 W .V V V V V .x 5.z+c+b+k+o+e +p+b+b+b+z+x ",
276
+ "< z+s+m+s+p+z+5.P z+e+k+k+g+z+c+0+0+0+m+}+t G.c <.|+b+7+3+3+3+3+1+0+s+b+b+b+d+s+ +0 m+7+0+0+z+x ",
277
+ "< z+s+o+k+z+ f v+v+k+k+d+e+e+n+n+s+v+y+,.b.l+| X ;+x+k+k+k+h+h+k+h+b+b+b+b+7+6+z+'.;.z+0+8+z+x ",
278
+ "< z+s+k+v+1+< !+v+h+e+m+y+y+y+m+6+]+^+T.p p+R.[.q K.y+h+b+b+b+b+b+b+b+b+0+0+0+0+b+c+f s+5+z+x ",
279
+ "< z+s+m+z+i z+d+e+y+y+$+:.F g 9 g g & 9 9 / O ' R ++d+u+d+6+6+0+0+0+7+8+8+5+8+8+k+ +0 c+1+z+x ",
280
+ "< z+d+z+ .].z+c+e+u+-+t 9 (.x.D.v.z...7 7.G y R k & _ p |.$+u+u+d+8+8+8+6+8+8+8+8+|+z+~.%.z+z+x ",
281
+ "< z+z+ o z+b+c+u+Z.{ l.5+@+i.0.n.}._ M.^.<.H.K.n.1 w w 7 > p t.}+u+6+6+8+3+3+3+5+3+8+c+f z+x ",
282
+ "< z+>+2 0+k+c+c+e+g Z.a+0.f.Y.5+c+g T.<+9./+s+k+u+I.: ^.B.f.L $ 9 x.j+d+3+1+1+1+1+3+1+s+ 0 z+x ",
283
+ "2 z+} +z+c+c+m+J.@.u+9.L.h+r+u+F _.m+9.Y.c+8+7+6+q+F R ~+6+~+O.&.> F |+j+1+3+3+1+3+3+1+s+'.5.V ",
284
+ "0 K z+e+b+b+u+g.l.`.u.k+c+u+*.O u+p.u.c+8+8+8+3+j+-+> h.d+8+c+d+`.A _ ,+j+1+1+5+3+3+1+3+c+x % ",
285
+ ". ].z+0+b+b+b+j+l.b.N.;+u+u+,.B r+L.f.5+0+8+3+3+3+3+j+|.4 *+b+5+1+b+f+_.| ;+b+3+1+3+3+3+3+k+ ++ ",
286
+ "; k+g+0+0+0+0+d+$+t F.[+^+F F u+V.9./+0+6+6+1+1+1+1+1+c+p S [+0+1+3+b+u+O L )+b+3+1+3+1+1+1+z+x ",
287
+ "< s+b+0+6+8+8+0+m+@.^ J a 6.m+H.3.<+b+1+3+3+3+5+1+3+1+d+-+, e.j+1+1+1+j+I.z n.5+3+1+3+1+3+3+z+x ",
288
+ "2 z+z+z+z+z+z+z+z+z+A.N U.{+r.y.i+z+z+z+z+z+z+z+z+z+z+z+z+W.! M.y+z+z+z+T.2.Q.:+z+z+z+z+z+z+z+K ",
289
+ "# '.%.%.%. . . . . .;.v 5 3 h +.%. . . . . . . . . . . .` >.) ^ =.>.-.).l m D M %. . . . . .'.% ",
290
+ " *.* !.S.!.- {.o. ",
291
+ " s.c 9 ' p. ",
292
+ " ;+7.3.0.9.&+ ",
293
+ " L.z.&+ ",
294
+ " ",
295
+ " ",
296
+ " ",
297
+ " ",
298
+ " ",
299
+ " ",
300
+ " "};