move line rendering tests to visual tests

This commit is contained in:
Dane Springmeyer 2014-04-24 20:48:19 -07:00
parent e94876ebe4
commit 67357568a5
35 changed files with 696 additions and 169 deletions

View file

@ -958,11 +958,10 @@ void map_parser::parse_point_symbolizer(rule & rule, xml_node const & sym)
{
optional<std::string> file = sym.get_opt_attr<std::string>("file");
optional<std::string> base = sym.get_opt_attr<std::string>("base");
optional<boolean> allow_overlap = sym.get_opt_attr<boolean>("allow-overlap");
optional<std::string> image_transform_wkt = sym.get_opt_attr<std::string>("transform");
point_symbolizer symbol;
if (allow_overlap) put(symbol, keys::allow_overlap, *allow_overlap);
set_symbolizer_property<point_symbolizer,boolean>(symbol, keys::allow_overlap, sym);
set_symbolizer_property<point_symbolizer,double>(symbol, keys::opacity, sym);
set_symbolizer_property<point_symbolizer,boolean>(symbol, keys::ignore_placement, sym);
@ -1081,8 +1080,7 @@ void map_parser::parse_markers_symbolizer(rule & rule, xml_node const& sym)
optional<double> max_error = sym.get_opt_attr<double>("max-error");
if (max_error) put(symbol,keys::max_error, *max_error);
optional<boolean> allow_overlap = sym.get_opt_attr<boolean>("allow-overlap");
if (allow_overlap) put(symbol, keys::allow_overlap, *allow_overlap);
set_symbolizer_property<markers_symbolizer,boolean>(symbol, keys::allow_overlap, sym);
set_symbolizer_property<markers_symbolizer,boolean>(symbol, keys::ignore_placement, sym);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View file

@ -1,165 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from nose.tools import *
from utilities import execution_path, run_all, Todo
from mapnik import *
def setup():
# All of the paths used are relative, if we run the tests
# from another directory we need to chdir()
os.chdir(execution_path('.'))
def test_charplacement():
m = Map(690,690,"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
m.background = Color(255,100,100,255)
road_style = Style()
road_rule = Rule()
road_stroke = Stroke(Color('white'), 1)
road_stroke.opacity = 0.7
road_rule.symbols.append(LineSymbolizer(road_stroke))
road_style.rules.append(road_rule);
text_symbolizer = TextSymbolizer(Expression('[NAME]'), 'DejaVu Sans Book', 20, Color('black'))
text_symbolizer.label_placement=label_placement.LINE_PLACEMENT
text_symbolizer.minimum_distance = 0
text_symbolizer.label_spacing = 20
text_symbolizer.label_position_tolerance = 50
text_symbolizer.minimum_distance = 5
text_symbolizer.avoid_edges = 0
text_symbolizer.halo_fill = Color('yellow')
text_symbolizer.halo_radius = 1
road_rule = Rule()
road_rule.symbols.append(text_symbolizer)
road_style.rules.append(road_rule)
road_layer = Layer('road')
road_layer.datasource = Shapefile(file='../data/shp/charplacement')
m.append_style('road', road_style)
road_layer.styles.append('road')
m.layers.append(road_layer)
m.zoom_to_box(Box2d(0,0,14,-14))
im = Image(m.width,m.height)
render(m, im)
actual = '/tmp/mapnik-char_placement.png'
expected = 'images/support/char_placement.png'
im.save(actual)
if not os.path.exists(expected):
print 'generating expected test image: %s' % expected
im.save(expected)
expected_im = Image.open(expected)
eq_(Image.open(actual).tostring('png32'),expected_im.tostring('png32'),'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected))
def test_overlap():
m = Map(690,690,"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
m.background = Color(255,100,100,255)
road_style = Style()
road_rule = Rule()
road_stroke = Stroke(Color('white'), 12)
road_stroke.opacity = 0.7
road_rule.symbols.append(LineSymbolizer(road_stroke))
road_style.rules.append(road_rule);
text_symbolizer = TextSymbolizer(Expression('[NAME]'), 'DejaVu Sans Book', 10, Color('black'))
text_symbolizer.label_placement=label_placement.LINE_PLACEMENT
text_symbolizer.minimum_distance = 0
text_symbolizer.label_spacing = 60
text_symbolizer.label_position_tolerance = 50
text_symbolizer.minimum_distance = 5
text_symbolizer.avoid_edges = 0
text_symbolizer.halo_fill = Color('yellow')
text_symbolizer.halo_radius = 1
road_rule = Rule()
road_rule.symbols.append(text_symbolizer)
road_style.rules.append(road_rule)
road_layer = Layer('road')
road_layer.datasource = Shapefile(file='../data/shp/overlap')
m.append_style('road', road_style)
road_layer.styles.append('road')
m.layers.append(road_layer)
m.zoom_to_box(Box2d(0,0,14,-14))
im = Image(m.width,m.height)
render(m, im)
actual = '/tmp/mapnik-overlap.png'
expected = 'images/support/overlap.png'
im.save(actual)
if not os.path.exists(expected):
print 'generating expected test image: %s' % expected
im.save(expected)
expected_im = Image.open(expected)
eq_(Image.open(actual).tostring('png32'),expected_im.tostring('png32'),'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected))
def test_displacement():
m = Map(690,690,"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
m.background = Color(255,100,100,255)
road_rule = Rule()
road_style = Style()
road_rule.symbols.append(LineSymbolizer(Stroke(Color("white"),.5)))
road_style.rules.append(road_rule);
text_symbolizer = TextSymbolizer(Expression('[NAME]'), 'DejaVu Sans Book', 10, Color('black'))
text_symbolizer.label_placement=label_placement.LINE_PLACEMENT
text_symbolizer.minimum_distance = 0
text_symbolizer.label_spacing = 60
text_symbolizer.label_position_tolerance = 5
text_symbolizer.avoid_edges = 0
text_symbolizer.halo_fill = Color('yellow')
text_symbolizer.halo_radius = 1
text_symbolizer.displacement = (0,5)
road_rule.symbols.append(text_symbolizer)
road_style.rules.append(road_rule)
road_layer = Layer('road')
road_layer.datasource = Shapefile(file='../data/shp/displacement')
m.append_style('road', road_style)
road_layer.styles.append('road')
m.layers.append(road_layer)
m.zoom_to_box(Box2d(0,0,14,-14))
im = Image(m.width,m.height)
render(m, im)
actual = '/tmp/mapnik-displacement.png'
expected = 'images/support/displacement.png'
im.save(actual)
if not os.path.exists(expected):
print 'generating expected test image: %s' % expected
im.save(expected)
expected_im = Image.open(expected)
eq_(Image.open(actual).tostring('png32'),expected_im.tostring('png32'),'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected))
def test_textspacing():
m = Map(690,690,"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
m.background = Color(255,100,100,255)
road_style = Style()
road_rule = Rule()
road_stroke = Stroke(Color('white'), 12)
road_stroke.line_cap = line_cap.ROUND_CAP
road_stroke.line_join = line_join.ROUND_JOIN
road_rule.symbols.append(LineSymbolizer(road_stroke))
road_style.rules.append(road_rule);
text_symbolizer = TextSymbolizer(Expression('[NAME]'), 'DejaVu Sans Book', 10, Color('black'))
text_symbolizer.label_placement=label_placement.LINE_PLACEMENT
text_symbolizer.minimum_distance = 0
text_symbolizer.label_spacing = 80
text_symbolizer.label_position_tolerance = 5
text_symbolizer.avoid_edges = 0
text_symbolizer.halo_fill = Color('yellow')
text_symbolizer.halo_radius = 1
road_rule = Rule()
road_rule.symbols.append(text_symbolizer)
road_style.rules.append(road_rule)
road_layer = Layer('road')
road_layer.datasource = Shapefile(file='../data/shp/textspacing')
m.append_style('road', road_style)
road_layer.styles.append('road')
m.layers.append(road_layer)
m.zoom_to_box(Box2d(0,0,14,-14))
im = Image(m.width,m.height)
render(m, im)
actual = '/tmp/mapnik-textspacing.png'
expected = 'images/support/textspacing.png'
im.save(actual)
if not os.path.exists(expected):
print 'generating expected test image: %s' % expected
im.save(expected)
expected_im = Image.open(expected)
eq_(Image.open(actual).tostring('png32'),expected_im.tostring('png32'),'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected))
if __name__ == "__main__":
setup()
run_all(eval(x) for x in dir() if x.startswith("test_"))

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,148 @@
{
"keys": [
"",
"2",
"5",
"6",
"9",
"1",
"11",
"10",
"7",
"8",
"13",
"12",
"3"
],
"data": {},
"grid": [
" ! # $ %%% %% ",
" & ! %% %%% ",
" ! # $ %%% ",
" & ! %%%%%% ",
" ! # $ %%%%%%%%% ",
" & ! %%%%%% ",
" ! # $ %%%%%%% ",
" & ! $ %%%%% ",
" ! ### $$$$ %%%% %% ",
" & ! #### $$$$$ %% %%% ",
" ! ### $$$ %%%%% ",
" & ! ### $$$$$ '''' '' % %%% ",
" ! ## # $$$$ '' ''' %%%%% ",
" & ! #### $$$$ ''''' %%%% ",
" ! #### $$$$ '''''' %%%% ",
" & ! #### $$$$ '' '''' %%%% ",
" ! #### $$$$ '''''' %%% ",
" & ! ##### $$$$$ ''''''' % %% ",
" ! ### $$$$ '' '' %%% ",
" & ! ##### $$ '''' '' %%%% ",
" ! ### $$$ ' '' %%%% ",
"& ! # $$$$$ ''''' %% ",
"& #### $$ $ '''' % ",
" & ! # # $$$$ ''''' % ",
" & ### $$$ '''' ",
" & ! ### $$$ ''''' ",
" & ### $$$ '''' %",
" & ! ### $$$ '''' %",
" & ### $ '''' %",
" & ! # # $$$ '''' %",
" & ### $$$ ''' %",
" & ! #### $$$ ''' ",
" & ### $$$ ''' ",
" & ! #### $$$ ",
" & $$$ ",
" & ! ' ",
" & ' ",
" & ! ' ",
" & ' ",
" & ! ",
" & ",
" & ! ",
" & ",
" ",
" ",
" ",
" ' ",
" ' ",
" ' ",
" ' ",
" ",
" ' ",
" ' ",
" ''' ",
" ''' (",
" '''' (",
" '''' (",
" ''' (",
" '' ' (",
" '''' ",
" '''' ",
" '''''' ( ",
" )))) *** '''''' ( ",
" )))) *** ''''' ( ",
" )))) *** ' '' ((((",
" ))) *** ''' '' ((((",
" ))) * '''' (((( ",
" ))) *** '''' ' (((( ",
" ))) * '''''' ((( ",
" ))) *** '''''''''' (((( ",
" ))) *** ''''' ''' (((( ",
" )) *** ''''''' (((( ",
" ))) **** '' ' '' ((( ( ",
" )))) **** '''' ' ((((((( ",
" )))) **** ((((( ",
" ))) ***** (( ((( ",
" )))) *** ((( ( ",
" ))))) *** (((( ",
" )))) **** (((((( ",
" )))) * * ((((((( ",
" )))) **** (((((((((( ",
" )))) **** (((( ((( ",
" )))) **** ((((((( ",
" ) ) **** ((( (((( ",
" )))) **** ( ",
" + + )) ****** ",
"+ ++ + ++ + )))) ***** ",
" ++ + ++ + + )))) **** ",
" + + + + + + ))) *** ",
" + + + + ) ) * ",
" + + + + + ) * ",
" + + + + + + + ) * ",
" + + + + + + + ) * ",
" + + + + + + ) * ",
" + + + + ) * ",
" + + + + + ) * ,, ",
" + + + ) * ,,, ",
" ,,,,,, ",
" ,, ,,,,,,,, ",
" , , ,,,,,,,,,, ",
" , ,,,,,,, ",
" , ,,,,,,,, ,",
" ,, ,,,, , ",
" ,,,,,, , ",
" , ,,,,,, , ",
" ,,,,,,,,,,,, ,, ",
" ,,,,,, ,,,, ",
" , , ,,,, ",
" , ",
" ",
" ",
" ",
" ",
" ",
" ",
" - - - ",
" --- - -- -- - --- -- - -- ------ -- --- -- --- ---- -- --- -- -- -- --- ------- - ",
"--------------------------------------------------------------------------------------------------------------------------------",
" ---- ----- - ------- - ---- ------------- - ------------- - ---------- --------- ---- ",
" - ---------- ------- - ---- -- ---------- - --------- -- - ---------- - ------- ---- ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "
]
}

View file

@ -0,0 +1,160 @@
{
"keys": [
"",
"3",
"15",
"14",
"22",
"25",
"2",
"4",
"13",
"16",
"23",
"1",
"5",
"12",
"6",
"9",
"11",
"21",
"8",
"10",
"7",
"17",
"18",
"19",
"20"
],
"data": {},
"grid": [
" !!!!!!!!!!! #$$$$$$$$$$ %%%%%%%%%%% &&&&&&&&&&",
" ' ' (( # $ $ % ",
" '' ' (( # $$$$$$ ",
" '' ' ((( # $$$$$$ ",
" '''' ' ((( # # )) % ",
" ''' ' (((( # ## ))) % % ",
" ' ' (( # ### ))) % ",
" ' # #### ))) ",
" ' # #### ))) ",
" ' # # )) % ",
"' * % % ++++++++++ ",
", * ",
", * ",
", --- **** .. ",
", -- *** .. ",
", -- *** .. ",
", -- *** .. ",
", -- *** .. ",
", --- **** .. ",
", * ",
", * ",
" / 0 1 1 2 2 ",
" / 000 11 1 2 ",
" / 000 111 1 ",
" / 000 111 1 ",
" 333 / // 0000 1111 1 2 ",
" 333 / //// 000 11 1 2 2 ",
" 333 / //// 1 2 ",
" 3333 / /// 444444 1 ",
" 333 / /// 444444 1 ",
" 3 / / 1 2 ",
" ",
" 5 5 ",
" 555555 ",
" 555555 ",
" ",
" ",
" ",
" 6 666 6666666 ",
" 666666666666666666 ",
" 66666 66 66 ",
" 6666 666666666666 6666 ",
" 666666 6 6 6666666 ",
" 666666 6 6 6666 ",
" 6666 6 6 66666 ",
" 6666 6 6 6666 ",
" 666666 6 666 ",
" 66666 6 666 ",
" 666 6 66666 ",
" 66666 66666 ",
" 66666 66666 ",
" 666 6 66666 ",
" 66 6 6666 ",
" 6 6 ",
" 6 6 ",
" 6 6 ",
"6 6 ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" 7 7 ",
" 7 7 ",
" 7 7 ",
" 7 7 ",
" 7 7 ",
" 8 9 ",
" 8 9 9 ",
" 8 99999 ",
" 8 99999 ",
" 8 99999 ",
" 8 99999 ",
" 8 9 999 ",
" 8 9 99 ",
" 8 9999 ",
" 8 99999 ",
" 8 9999 ",
" 999 ",
" 8 9999 ",
" 99 ",
" 8 9999 ",
" 99 ",
" 8 9999 ",
" 999 ",
" 8 9 99 ",
" 99 ",
" 8 999 ",
" 8 9999 ",
" 8 9999 ",
" 8 999 ",
" 8 9 ",
" 8 9999 ",
" 8 999 ",
" 8 999 ",
" 8 999 ",
" 8 999 ",
" 8 999 ",
" 99 ",
" 8 9 99 ",
" 9 9 ",
" 8 9 999 ",
" 999 ",
" 8 9999 ",
" 999 ",
" 8 9 99 ",
" 999 ",
" 8 9 99 ",
" 999 ",
" 999 ",
" 9999 ",
" 999 ",
" 999 ",
" 9999 ",
" 999 ",
" 999 ",
" 999 ",
" 99 "
]
}

View file

@ -0,0 +1,156 @@
{
"keys": [
"1",
"",
"8",
"4",
"6",
"2",
"7",
"3",
"19",
"20",
"16",
"15",
"18",
"17",
"5",
"9",
"13",
"10",
"14",
"11",
"12"
],
"data": {},
"grid": [
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!",
"&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&&!!!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!",
"&&&&&&&&&&&&&&&&&&&&$$$&&&&&&&&&&&&&&&&&&%%%%&&&&&&&&&&&&&&&&&&(((!!!!!!!!!''''''''''''''''''''###''''''''''''''''''''!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!*********************",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!###!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!(((!!!!!!!++++!!!!!,,,!!!!!!!!!!!!!!!!!!!!----!!!!!!!!!...!!!!!!!",
"/////////////////////////////////////////%%%%///////////////////((!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------",
"/////////////////////////////////////////%%%%///////////////////!!!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------",
"/////////////////////////////////////////%%%%///////////////////!!!!!!!!!+++++++++++++++++++++++++!!!!!!!-----------------------",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!$$$!!!!!!!!!!!!!!!!!!%%%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,,!!!!!!!!!!+++!!!!!!!!!!!!!!!!!!!!...!!!!!!-",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!!",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!00000000000000000000000000000000",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
" !!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!0000!!!!!!!!!!!!!!!!!!0",
"55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000",
"55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000",
"55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000",
"55555555511115555555555555555555555555555555555555553335555555555555555555555555555555!!!!!!!!!!!!!!!!!!!00000000000000000000000",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
"!!!!!!!!!1111!!!!!!!!!!!!!!!!!!222!!!!!!!!!!!!!!!!!!333!!!!!!!!!!!!!!!!!!4444!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
]
}

View file

@ -0,0 +1,153 @@
{
"keys": [
"",
"1",
"2",
"10",
"11",
"14",
"16",
"12",
"13",
"15",
"3",
"4",
"5",
"6",
"17",
"7",
"8",
"9"
],
"data": {},
"grid": [
" !!!! #### $$$ %%% &&&&&&&&&&&& ",
" !!! #### $$$$ %%%% &&&&&&&&&&&&&& ",
" !!!! #### $$$$ %%% &&&&&&&&&&& ",
" !!! #### $$$$ %%%% &&&&&&&&& ",
" !!!! #### $$$$ %%% &&&&&&&& ",
" !!! #### $$$$ %%%% &&&&&& ",
" !!!! #### $$$$ %%% &&&&&& ",
" !!! #### $$$$ %%%% &&&&& ",
" !!!! #### $$$$ %%% &&&&& ",
" !!! #### $$$$ %%%% ' &&&&& ",
" !!!! #### $$$$ %%% ''''''''' &&&& ",
" !!! #### $$$$ %%%% '''''''''''' &&&& ",
" !!!! #### $$$$ %%% '''''''''''''' &&&& ",
" !!! #### $$$$ %%%% '''''''''' &&&& ",
" !!!! #### $$$$ %%% '''''''' &&&& ",
" !!! #### $$$$ %%%% ''''''' &&& ",
" !!!! #### $$$$ %%% ''''''' &&&& ",
" !!! #### $$$$ %%%% '''''' &&& ",
"!!!! #### $$$$ %%% ''''' &&&& ",
"!!! #### $$$$ %%%% ''''' &&& ",
"!!! #### $$$$ %%% ''''' &&&&",
"!! #### $$$$ %%%% ''''' &&&&",
"!!! #### $$$$ %%%% '''' &&&",
"!!! ### $$$$ %%%% '''' &&&",
"!!!! #### $$$$ %%%% '''' &&&",
"!!!! ### $$$$ %%%% '''' &&",
" !!!! #### $$$$ %%%% '''' &&",
" !!!! ### $$$$ %%%% ''' &&",
" !!!! #### $$$$ %%%% '''' &&",
" !!!! ### $$$$ %%%% ''' &&",
" !!!! #### $$$$ %%%% '''' &&",
" !!!! ### $$$$ %%%% ''' &&",
" !!!! #### $$$$ %%%% ''' &",
" !!!! ### $$$$ %%%% '''' ",
" !!!! #### $$$$ %%%% '''' ",
" !!!! ### $$$$ %%%% ''' ",
" !!!! #### $$$$ %%%% ''' ",
" !!!! ### $$$$ %%%% ''' ",
" !!!! #### $$$$ %%%% ''' ",
" !!!! ### $$$$ %%%% ''' ",
" !!!! #### $$$$ %%%% '''' ",
" !!!! ### $$$$ %%%% '''' ",
" !!!! #### $$$$ %%%% '''' ",
" !!!! ### $$$$ %%%% '''' ",
" !! # $$ %% ''' ",
" ''' ",
" ''' ",
" ''' ",
" ''' ",
" ''' ",
" '''' ",
" '''' ",
" (( )) ''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) '''' **",
" (((( )))) ''''' ***",
" (((( )))) '''' ***",
" (((( )))) '''' ***",
"++++++++++++ (((( )))) '''' ****",
"+++++++++++++ (((( )))) ''''' *** ",
"++++++++++++ (((( )))) ''''' **** ",
" (((( )))) ''''' **** ",
" (((( )))) '''''' **** ",
" (((( )))) '''''' **** ",
" (((( )))) ''''''' **** ",
" (((( )))) '''''''' **** ",
" (((( )))) ''''''''''' **** ",
" (((( )))) ''''''''''''''' **** ",
",,,,,,,,,,,,,,,,,,,,,, (((( )))) ''''''''''' ***** ",
",,,,,,,,,,,,,,,,,,,,,,, (((( )))) '''''''' ***** ",
",,,,,,,,,,,,,,,,,,,,,,, (((( )))) ***** ",
",,,,,,,,,,,,,,,,,,,,,, (((( )))) ***** ",
" (((( )))) ***** ",
" (((( )))) ****** ",
" (((( )))) ******* ",
" (((( )))) ******* ",
" (((( )))) ********* ",
" (((( )))) ************* ",
" (((( )))) ************* ",
"---------------------------------- (((( )))) *********** ",
"---------------------------------- (((( )))) ***** ",
"---------------------------------- (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
" (((( )))) ",
"............................................ (((( )))) ",
"............................................. ((( ))) //////// ",
"............................................ ((( ))) ///////////// ",
" //////////////// ",
" /////// //////// /",
" ///// ////// //",
" ///// ////// ///",
" //// ////// ////",
" // ////// //// ",
" ///////// /////// ",
"00000000000000000000000000000000000000000000000000000000000000000 //////////////// ",
"000000000000000000000000000000000000000000000000000000000000000000 ////////////// ",
"000000000000000000000000000000000000000000000000000000000000000000 /////// ",
"00000000000000000000000000000000000000000000000000000000000000000 ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-color="rgb(255,100,100)">
<Style name="road">
<Rule>
<LineSymbolizer stroke="rgb(255,255,255)" stroke-opacity="0.7"/>
</Rule>
<Rule>
<TextSymbolizer placement="line" label-position-tolerance="50" spacing="20" minimum-distance="5" face-name="DejaVu Sans Book" size="20" halo-radius="1" halo-fill="rgb(255,255,0)">[NAME]</TextSymbolizer>
</Rule>
</Style>
<Layer name="road" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
<StyleName>road</StyleName>
<Datasource>
<Parameter name="file">../data/charplacement</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-color="rgb(255,100,100)">
<Style name="road">
<Rule>
<LineSymbolizer stroke="rgb(255,255,255)" stroke-width="0.5"/>
</Rule>
<Rule>
<LineSymbolizer stroke="rgb(255,255,255)" stroke-width="0.5"/>
<TextSymbolizer dy="5" placement="line" label-position-tolerance="5" spacing="60" face-name="DejaVu Sans Book" halo-radius="1" halo-fill="rgb(255,255,0)">[NAME]</TextSymbolizer>
</Rule>
</Style>
<Layer name="road" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
<StyleName>road</StyleName>
<Datasource>
<Parameter name="file">../data/displacement</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-color="rgb(255,100,100)">
<Style name="road">
<Rule>
<LineSymbolizer stroke="rgb(255,255,255)" stroke-width="12" stroke-opacity="0.7"/>
</Rule>
<Rule>
<TextSymbolizer placement="line" label-position-tolerance="50" spacing="60" minimum-distance="5" face-name="DejaVu Sans Book" halo-radius="1" halo-fill="rgb(255,255,0)">[NAME]</TextSymbolizer>
</Rule>
</Style>
<Layer name="road" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
<StyleName>road</StyleName>
<Datasource>
<Parameter name="file">../data/overlap</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-color="rgb(255,100,100)">
<Style name="road">
<Rule>
<LineSymbolizer stroke="rgb(255,255,255)" stroke-width="12" stroke-linejoin="round" stroke-linecap="round"/>
</Rule>
<Rule>
<TextSymbolizer placement="line" label-position-tolerance="5" spacing="80" face-name="DejaVu Sans Book" halo-radius="1" halo-fill="rgb(255,255,0)">[NAME]</TextSymbolizer>
</Rule>
</Style>
<Layer name="road" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
<StyleName>road</StyleName>
<Datasource>
<Parameter name="file">../data/textspacing</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -237,6 +237,10 @@ files = {
'group-symbolizer-2':{'sizes':[(512,512)]},
'group-symbolizer-line-1':{'sizes':[(512,512)]},
'group-symbolizer-line-2':{'sizes':[(512,512)]}
'text-charplacement':{'sizes':[(512,512)]},
'text-displacement':{'sizes':[(512,512)]},
'text-overlap':{'sizes':[(512,512)]},
'text-spacing':{'sizes':[(512,512)]},
}
class Reporting: