mirror of
https://github.com/mapnik/mapnik.git
synced 2025-12-08 20:13:09 +00:00
Merge branch 'master' into release/image_data_any
This commit is contained in:
commit
ffb34544e6
@ -104,7 +104,9 @@ struct feature_grammar :
|
||||
qi::rule<Iterator,void(FeatureType &),space_type> properties;
|
||||
qi::rule<Iterator,qi::locals<std::string>, void(FeatureType &),space_type> attributes;
|
||||
qi::rule<Iterator, json_value(), space_type> attribute_value;
|
||||
|
||||
qi::rule<Iterator, qi::locals<std::int32_t>, std::string(), space_type> stringify_object;
|
||||
qi::rule<Iterator, qi::locals<std::int32_t>, std::string(), space_type> stringify_array;
|
||||
// functions
|
||||
phoenix::function<put_property> put_property_;
|
||||
phoenix::function<extract_geometry> extract_geometry_;
|
||||
// error handler
|
||||
|
||||
@ -43,15 +43,14 @@ feature_grammar<Iterator,FeatureType,ErrorHandler>::feature_grammar(mapnik::tran
|
||||
qi::_a_type _a;
|
||||
qi::_r1_type _r1;
|
||||
qi::eps_type eps;
|
||||
|
||||
qi::char_type char_;
|
||||
using qi::fail;
|
||||
using qi::on_error;
|
||||
using phoenix::new_;
|
||||
using phoenix::construct;
|
||||
|
||||
// generic json types
|
||||
json_.value = json_.object | json_.array | json_.string_
|
||||
| json_.number
|
||||
json_.value = json_.object | json_.array | json_.string_ | json_.number
|
||||
;
|
||||
|
||||
json_.pairs = json_.key_value % lit(',')
|
||||
@ -94,7 +93,14 @@ feature_grammar<Iterator,FeatureType,ErrorHandler>::feature_grammar(mapnik::tran
|
||||
attributes = (json_.string_ [_a = _1] > lit(':') > attribute_value [put_property_(_r1,_a,_1)]) % lit(',')
|
||||
;
|
||||
|
||||
attribute_value %= json_.number | json_.string_ ;
|
||||
attribute_value %= json_.number | json_.string_ | stringify_object | stringify_array
|
||||
;
|
||||
|
||||
stringify_object %= char_('{')[_a = 1 ] >> *(eps(_a > 0) >> (char_('{')[_a +=1] | char_('}')[_a -=1] | char_))
|
||||
;
|
||||
|
||||
stringify_array %= char_('[')[_a = 1 ] >> *(eps(_a > 0) >> (char_('[')[_a +=1] | char_(']')[_a -=1] | char_))
|
||||
;
|
||||
|
||||
feature.name("Feature");
|
||||
feature_type.name("type");
|
||||
|
||||
@ -36,11 +36,13 @@ namespace mapnik { namespace json {
|
||||
inline bool from_geojson(std::string const& json, mapnik::feature_impl & feature)
|
||||
{
|
||||
static const mapnik::transcoder tr("utf8");
|
||||
using iterator_type = std::string::const_iterator;
|
||||
using iterator_type = char const*;
|
||||
static const mapnik::json::feature_grammar<iterator_type,mapnik::feature_impl> g(tr);
|
||||
using namespace boost::spirit;
|
||||
ascii::space_type space;
|
||||
return qi::phrase_parse(json.begin(), json.end(), (g)(boost::phoenix::ref(feature)), space);
|
||||
iterator_type start = json.c_str();
|
||||
iterator_type end = start + json.length();
|
||||
return qi::phrase_parse(start, end, (g)(boost::phoenix::ref(feature)), space);
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@ -37,10 +37,10 @@ namespace mapnik { namespace json {
|
||||
inline bool from_geojson(std::string const& json, geometry_container & paths)
|
||||
{
|
||||
using namespace boost::spirit;
|
||||
static const geometry_grammar<std::string::const_iterator> g;
|
||||
static const geometry_grammar<char const*> g;
|
||||
ascii::space_type space;
|
||||
std::string::const_iterator start = json.begin();
|
||||
std::string::const_iterator end = json.end();
|
||||
char const* start = json.c_str();
|
||||
char const* end = start + json.length();
|
||||
return qi::phrase_parse(start, end, (g)(boost::phoenix::ref(paths)), space);
|
||||
}
|
||||
|
||||
|
||||
@ -179,6 +179,7 @@ DEFINE_ENUM(justify_alignment_e, justify_alignment_enum);
|
||||
enum text_upright_enum : std::uint8_t
|
||||
{
|
||||
UPRIGHT_AUTO,
|
||||
UPRIGHT_AUTO_DOWN,
|
||||
UPRIGHT_LEFT,
|
||||
UPRIGHT_RIGHT,
|
||||
UPRIGHT_LEFT_ONLY,
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
// boost
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/spirit/include/qi.hpp>
|
||||
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
// mapnik
|
||||
#include <mapnik/boolean.hpp>
|
||||
#include <mapnik/unicode.hpp>
|
||||
@ -50,6 +50,8 @@
|
||||
#include <mapnik/json/extract_bounding_box_grammar_impl.hpp>
|
||||
#include <mapnik/util/boost_geometry_adapters.hpp> // boost.geometry - register box2d<double>
|
||||
|
||||
#include <mapnik/mapped_memory_cache.hpp>
|
||||
|
||||
using mapnik::datasource;
|
||||
using mapnik::parameters;
|
||||
|
||||
@ -122,11 +124,14 @@ geojson_datasource::geojson_datasource(parameters const& params)
|
||||
}
|
||||
if (!inline_string_.empty())
|
||||
{
|
||||
parse_geojson(inline_string_);
|
||||
char const* start = inline_string_.c_str();
|
||||
char const* end = start + inline_string_.size();
|
||||
parse_geojson(start, end);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
cache_features_ = *params.get<mapnik::boolean_type>("cache_features", true);
|
||||
#if 0
|
||||
mapnik::util::file file(filename_);
|
||||
if (!file.open())
|
||||
{
|
||||
@ -136,20 +141,40 @@ geojson_datasource::geojson_datasource(parameters const& params)
|
||||
std::string file_buffer;
|
||||
file_buffer.resize(file.size());
|
||||
std::fread(&file_buffer[0], file.size(), 1, file.get());
|
||||
cache_features_ = *params.get<mapnik::boolean_type>("cache_features", true);
|
||||
char const* start = file_buffer.c_str();
|
||||
char const* end = start + file_buffer.length();
|
||||
if (cache_features_)
|
||||
{
|
||||
parse_geojson(file_buffer);
|
||||
parse_geojson(start, end);
|
||||
}
|
||||
else
|
||||
{
|
||||
initialise_index(file_buffer.begin(), file_buffer.end());
|
||||
initialise_index(start, end);
|
||||
}
|
||||
#else
|
||||
boost::optional<mapnik::mapped_region_ptr> mapped_region =
|
||||
mapnik::mapped_memory_cache::instance().find(filename_, false);
|
||||
if (!mapped_region)
|
||||
{
|
||||
throw std::runtime_error("could not get file mapping for "+ filename_);
|
||||
}
|
||||
|
||||
char const* start = reinterpret_cast<char const*>((*mapped_region)->get_address());
|
||||
char const* end = start + (*mapped_region)->get_size();
|
||||
if (cache_features_)
|
||||
{
|
||||
parse_geojson(start, end);
|
||||
}
|
||||
else
|
||||
{
|
||||
initialise_index(start, end);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
using base_iterator_type = std::string::const_iterator;
|
||||
using base_iterator_type = char const*;
|
||||
const mapnik::transcoder tr("utf8");
|
||||
const mapnik::json::feature_collection_grammar<base_iterator_type,mapnik::feature_impl> fc_grammar(tr);
|
||||
}
|
||||
@ -160,11 +185,14 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
||||
mapnik::json::boxes boxes;
|
||||
mapnik::json::extract_bounding_box_grammar<Iterator> bbox_grammar;
|
||||
boost::spirit::ascii::space_type space;
|
||||
if (!boost::spirit::qi::phrase_parse(start, end, (bbox_grammar)(boost::phoenix::ref(boxes)) , space))
|
||||
Iterator itr = start;
|
||||
if (!boost::spirit::qi::phrase_parse(itr, end, (bbox_grammar)(boost::phoenix::ref(boxes)) , space))
|
||||
{
|
||||
throw mapnik::datasource_exception("GeoJSON Plugin: could not parse: '" + filename_ + "'");
|
||||
}
|
||||
// bulk insert initialise r-tree
|
||||
tree_ = std::make_unique<spatial_index_type>(boxes);
|
||||
// calculate total extent
|
||||
for (auto const& item : boxes)
|
||||
{
|
||||
auto const& box = std::get<0>(item);
|
||||
@ -174,28 +202,14 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
||||
extent_ = box;
|
||||
// parse first feature to extract attributes schema.
|
||||
// NOTE: this doesn't yield correct answer for geoJSON in general, just an indication
|
||||
mapnik::util::file file(filename_);
|
||||
if (!file.open())
|
||||
{
|
||||
throw mapnik::datasource_exception("GeoJSON Plugin: could not open: '" + filename_ + "'");
|
||||
}
|
||||
|
||||
std::fseek(file.get(), geometry_index.first, SEEK_SET);
|
||||
std::vector<char> json;
|
||||
json.resize(geometry_index.second);
|
||||
std::fread(json.data(), geometry_index.second, 1, file.get());
|
||||
|
||||
using chr_iterator_type = std::vector<char>::const_iterator;
|
||||
chr_iterator_type start = json.begin();
|
||||
chr_iterator_type end = json.end();
|
||||
|
||||
Iterator itr = start + geometry_index.first;
|
||||
Iterator end = itr + geometry_index.second;
|
||||
mapnik::context_ptr ctx = std::make_shared<mapnik::context_type>();
|
||||
mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1));
|
||||
using namespace boost::spirit;
|
||||
static const mapnik::transcoder tr("utf8");
|
||||
static const mapnik::json::feature_grammar<chr_iterator_type,mapnik::feature_impl> grammar(tr);
|
||||
ascii::space_type space;
|
||||
if (!qi::phrase_parse(start, end, (grammar)(boost::phoenix::ref(*feature)), space))
|
||||
static const mapnik::json::feature_grammar<Iterator, mapnik::feature_impl> grammar(tr);
|
||||
boost::spirit::ascii::space_type space;
|
||||
if (!boost::spirit::qi::phrase_parse(itr, end, (grammar)(boost::phoenix::ref(*feature)), space))
|
||||
{
|
||||
throw std::runtime_error("Failed to parse geojson feature");
|
||||
}
|
||||
@ -213,8 +227,8 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void geojson_datasource::parse_geojson(T const& buffer)
|
||||
template <typename Iterator>
|
||||
void geojson_datasource::parse_geojson(Iterator start, Iterator end)
|
||||
{
|
||||
boost::spirit::ascii::space_type space;
|
||||
mapnik::context_ptr ctx = std::make_shared<mapnik::context_type>();
|
||||
@ -222,7 +236,7 @@ void geojson_datasource::parse_geojson(T const& buffer)
|
||||
|
||||
mapnik::json::default_feature_callback callback(features_);
|
||||
|
||||
bool result = boost::spirit::qi::phrase_parse(buffer.begin(), buffer.end(), (fc_grammar)
|
||||
bool result = boost::spirit::qi::phrase_parse(start, end, (fc_grammar)
|
||||
(boost::phoenix::ref(ctx),boost::phoenix::ref(start_id), boost::phoenix::ref(callback)),
|
||||
space);
|
||||
if (!result)
|
||||
|
||||
@ -96,8 +96,8 @@ public:
|
||||
mapnik::layer_descriptor get_descriptor() const;
|
||||
boost::optional<mapnik::datasource::geometry_t> get_geometry_type() const;
|
||||
//
|
||||
template <typename T>
|
||||
void parse_geojson(T const& buffer);
|
||||
template <typename Iterator>
|
||||
void parse_geojson(Iterator start, Iterator end);
|
||||
template <typename Iterator>
|
||||
void initialise_index(Iterator start, Iterator end);
|
||||
private:
|
||||
|
||||
@ -24,5 +24,5 @@
|
||||
#include <mapnik/json/feature_collection_grammar_impl.hpp>
|
||||
#include <string>
|
||||
|
||||
using iterator_type = std::string::const_iterator;
|
||||
using iterator_type = char const*;
|
||||
template struct mapnik::json::feature_collection_grammar<iterator_type,mapnik::feature_impl, mapnik::json::default_feature_callback> ;
|
||||
|
||||
@ -24,5 +24,5 @@
|
||||
#include <mapnik/json/feature_grammar_impl.hpp>
|
||||
#include <string>
|
||||
|
||||
using iterator_type = std::string::const_iterator;
|
||||
using iterator_type = char const*;
|
||||
template struct mapnik::json::feature_grammar<iterator_type,mapnik::feature_impl>;
|
||||
|
||||
@ -23,5 +23,5 @@
|
||||
#include <mapnik/json/geometry_grammar_impl.hpp>
|
||||
#include <string>
|
||||
|
||||
using iterator_type = std::string::const_iterator;
|
||||
using iterator_type = char const*;
|
||||
template struct mapnik::json::geometry_grammar<iterator_type>;
|
||||
|
||||
@ -168,6 +168,7 @@ IMPLEMENT_ENUM( text_transform_e, text_transform_strings )
|
||||
|
||||
static const char * text_upright_strings[] = {
|
||||
"auto",
|
||||
"auto-down",
|
||||
"left",
|
||||
"right",
|
||||
"left_only",
|
||||
|
||||
@ -97,6 +97,10 @@ text_upright_e placement_finder::simplify_upright(text_upright_e upright, double
|
||||
{
|
||||
return (std::fabs(normalize_angle(angle)) > 0.5*M_PI) ? UPRIGHT_LEFT : UPRIGHT_RIGHT;
|
||||
}
|
||||
if (upright == UPRIGHT_AUTO_DOWN)
|
||||
{
|
||||
return (std::fabs(normalize_angle(angle)) < 0.5*M_PI) ? UPRIGHT_LEFT : UPRIGHT_RIGHT;
|
||||
}
|
||||
if (upright == UPRIGHT_LEFT_ONLY)
|
||||
{
|
||||
return UPRIGHT_LEFT;
|
||||
@ -302,6 +306,12 @@ bool placement_finder::single_line_placement(vertex_cache &pp, text_upright_e or
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (orientation == UPRIGHT_AUTO_DOWN)
|
||||
{
|
||||
// Try again with opposite orientation
|
||||
begin.restore();
|
||||
return single_line_placement(pp, real_orientation == UPRIGHT_RIGHT ? UPRIGHT_LEFT : UPRIGHT_RIGHT);
|
||||
}
|
||||
|
||||
for (box2d<double> const& box : bboxes)
|
||||
{
|
||||
|
||||
@ -21,7 +21,9 @@
|
||||
"spaces":"this has spaces",
|
||||
"double":1.1,
|
||||
"boolean":true,
|
||||
"NOM_FR":"Québec"
|
||||
"NOM_FR":"Québec",
|
||||
"object": {"value":{"type":"\u041c\u0430pni\u043a","array": [3,0,"x"]}},
|
||||
"array" : [ [ [1], ["deux"]],[["\u0442\u0440\u0438","four","\u4e94"]]]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@ -23,7 +23,7 @@ if 'geojson' in mapnik.DatasourceCache.plugin_names():
|
||||
def test_geojson_properties():
|
||||
ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson')
|
||||
f = ds.features_at_point(ds.envelope().center()).features[0]
|
||||
eq_(len(ds.fields()),7)
|
||||
eq_(len(ds.fields()),9)
|
||||
desc = ds.describe()
|
||||
eq_(desc['geometry_type'],mapnik.DataGeometryType.Point)
|
||||
|
||||
@ -38,7 +38,7 @@ if 'geojson' in mapnik.DatasourceCache.plugin_names():
|
||||
|
||||
ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson')
|
||||
f = ds.all_features()[0]
|
||||
eq_(len(ds.fields()),7)
|
||||
eq_(len(ds.fields()),9)
|
||||
|
||||
desc = ds.describe()
|
||||
eq_(desc['geometry_type'],mapnik.DataGeometryType.Point)
|
||||
@ -66,7 +66,7 @@ if 'geojson' in mapnik.DatasourceCache.plugin_names():
|
||||
# @raises(RuntimeError)
|
||||
def test_that_nonexistant_query_field_throws(**kwargs):
|
||||
ds = mapnik.Datasource(type='geojson',file='../data/json/escaped.geojson')
|
||||
eq_(len(ds.fields()),7)
|
||||
eq_(len(ds.fields()),9)
|
||||
# TODO - this sorting is messed up
|
||||
#eq_(ds.fields(),['name', 'int', 'double', 'description', 'boolean', 'NOM_FR'])
|
||||
#eq_(ds.field_types(),['str', 'int', 'float', 'str', 'bool', 'str'])
|
||||
|
||||
@ -0,0 +1,215 @@
|
||||
{
|
||||
"keys": [
|
||||
"",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7"
|
||||
],
|
||||
"data": {},
|
||||
"grid": [
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ! ",
|
||||
" !!! ",
|
||||
" !!!!! ",
|
||||
" !!!!!!! ",
|
||||
" !!!!!!!!! ",
|
||||
" !!!! !!!!! ",
|
||||
" !!!! !!!!! ",
|
||||
" !!!! !!!!! ",
|
||||
" !!!! !!!!! ",
|
||||
" !!!! # !!!!! ",
|
||||
" !!!! ### !!!!! ",
|
||||
" !!!! ##### !!!!! ",
|
||||
" !!!! ####### !!!!! ",
|
||||
" !!!!! ######### !!!!! ",
|
||||
" !!!!!! ##### ##### !!!!! ",
|
||||
" !!!! ##### ##### !!!!! ",
|
||||
" !!!!! ##### ##### !!!!! ",
|
||||
" !!!!! ##### ##### !!!!! ",
|
||||
" !!!!! ##### ##### !!!!! ",
|
||||
" !!!! ##### $ ##### !!!!! ",
|
||||
" !!!!! ##### $$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$$$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ $$$$$ ##### !!!!! ",
|
||||
" !!!! ! ##### $$$$ $$$$$ ##### !!!!!! ",
|
||||
" !!!! ##### $$$$ $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ % $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%%%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% & %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&&&&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& & '' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& '''''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& '''''''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((((( '''' &&&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& & ''''' (((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( (((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' (((((( (((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' (((((( (((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' (((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( (((((( '''' &&&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%%% $$$$$ ##### !!!!! ",
|
||||
" !!!! ##### $$$$ %%%%% &&&& ''''' ((((( ((((( '''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((( ''' &&& %% $$$ ## !!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( '''''' &&&&& %%%% $$$$$ #### !!!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& ' '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& ' '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' ' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' ' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& ' '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((((((( ''''' &&&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ((( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ( ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& '''' ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& ''''''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& ''''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& ''''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& ' ''' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& ' ' &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&&& &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&&&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&&&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% &&& %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% & %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%% %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%%%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %%%% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ %% $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$ $$$$$ #### !!!!! ",
|
||||
" !!!!! ##### $$$$$$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$$$$$ #### !!!!!! ",
|
||||
" !!!!! ##### $$$$$ #### !!!!! ",
|
||||
" !!!!!! ##### $$$ #### !!!!! ",
|
||||
" !!!!! ##### $ #### !!!!! ",
|
||||
" !!!!! ##### #### !!!!! ",
|
||||
" !!!!! ##### #### !!!!! ",
|
||||
" !!!!!! ##### #### !!!!! ",
|
||||
" !!!!! ##### #### !!!!! ",
|
||||
" !!!!! ##### #### !!!!! ",
|
||||
" !!!!!! ######## !!!!! ",
|
||||
" !!!!! ###### !!!!! ",
|
||||
" !!!!!! #### !!!!!! ",
|
||||
" !!!!! ## !!!!! ",
|
||||
" !!!!! !!!!! ",
|
||||
" !!!!! !!!!! ",
|
||||
" !!!!! !!!!! ",
|
||||
" !!!!! !!!!! ",
|
||||
" !!!!! !!!!! ",
|
||||
" !!!!!!!!! ",
|
||||
" !!!!!!! ",
|
||||
" !!!!! ",
|
||||
" !!! ",
|
||||
" ! ",
|
||||
" ",
|
||||
" "
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,215 @@
|
||||
{
|
||||
"keys": [
|
||||
"",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7"
|
||||
],
|
||||
"data": {},
|
||||
"grid": [
|
||||
" ",
|
||||
" ! ",
|
||||
" !!! ",
|
||||
" !!!!! ",
|
||||
" !!!!!!! ",
|
||||
" !!!!!!!!! ",
|
||||
" !!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!###!!!!!!!!! ",
|
||||
" !!!!!!!!!####!!!!!!!!!! ",
|
||||
" !!!!!!!!!#######!!!!!!!!! ",
|
||||
" !!!!!!!!!#########!!!!!!!!! ",
|
||||
" !!!!!!!!!##########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#############!!!!!!!!! ",
|
||||
" !!!!!!!!!##############!!!!!!!!!! ",
|
||||
" !!!!!!!!!#################!!!!!!!!! ",
|
||||
" !!!!!!!!!!!####### #######!#!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $ #######!#!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% & %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#!####### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!#!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&'''''''' ((((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&''''''' ((((((((( ((((((((( '''''''&'&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&''''''' ((((((((( ((((((((( '''''''&&&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ ########!!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!!!#######$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!!!!!!!!!!! ",
|
||||
" !!!!!!!!!#!####### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #######!#!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!#########$$$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''''&&&&&&&&& %%%%%%%%%$$$$$$$$$ #########!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((((( '''''''' &&&&&&&&& %%%%%%%% $$$$$$$$$ ######## !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((( '''''' &&&&&&& %%%%%% $$$$$$$ ###### !!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((( ''''' &&&&& %%%%% $$$$$ ###### !!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( ((((((( ''''''' &&&&&&& %%%%%%% $$$$$$$ ######## !!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&'''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&''''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%%%$$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" ! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!!! ",
|
||||
" !! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&''''''' ((((((((( ((((((((('''''''''&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'&''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' ((((((((( (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((((''''''''' '&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((((''''''''' ''&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (((''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&''''''''' (''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" ! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !! !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''''' &'&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''''' &'&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''''' &'&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'''' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&'' &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&& &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &&&%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%% &%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%%%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$%% $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$ $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $$$######### !!!!!!!!! ",
|
||||
" !!!!!!!!!######### $######### !!!!!!!!! ",
|
||||
" !!!!!!!!!################## !!!!!!!!! ",
|
||||
" !!!!!!!!!################ !!!!!!!!! ",
|
||||
" !!!!!!!!!############## !!!!!!!!! ",
|
||||
" !!!!!!!!!############ !!!!!!!!! ",
|
||||
" !!!!!!!!!########## !!!!!!!!! ",
|
||||
" !!!!!!!!!!######## !!!!!!!!! ! ",
|
||||
" !! !!!!!!!!!###### !!!!!!!!!! ",
|
||||
" ! !!!!!!!!!#### !!!!!!!!!! ",
|
||||
" !!!!!!!!!!## !!!!!!!!! ",
|
||||
" !!!!!!!!!! !!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!! ",
|
||||
" !!!!!!!!! ",
|
||||
" !!!!!!! ",
|
||||
" !!!!! ",
|
||||
" !!! ",
|
||||
" ! "
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
60
tests/visual_tests/styles/text-upright.xml
Normal file
60
tests/visual_tests/styles/text-upright.xml
Normal file
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE Map>
|
||||
<Map background-color="white" srs="+proj=latlong +datum=WGS84">
|
||||
<Parameters>
|
||||
<Parameter name="sizes">800, 800</Parameter>
|
||||
<Parameter name="bbox">-1.05, -1.05, 1.05, 1.05</Parameter>
|
||||
</Parameters>
|
||||
|
||||
<Layer name="layer" srs="+proj=latlong +datum=WGS84">
|
||||
<StyleName>lines</StyleName>
|
||||
<StyleName>text</StyleName>
|
||||
<Datasource>
|
||||
<Parameter name="type">csv</Parameter>
|
||||
<Parameter name="inline">
|
||||
id, wkt, upright
|
||||
0, "LINESTRING(1 0, 0 -1, -1 0, 0 1, 1 0)", "[default]"
|
||||
1, "LINESTRING(0.9 0, 0 -0.9, -0.9 0, 0 0.9, 0.9 0)", "auto"
|
||||
2, "LINESTRING(0.8 0, 0 -0.8, -0.8 0, 0 0.8, 0.8 0)", "auto-down"
|
||||
3, "LINESTRING(0.7 0, 0 -0.7, -0.7 0, 0 0.7, 0.7 0)", "left"
|
||||
4, "LINESTRING(0.6 0, 0 -0.6, -0.6 0, 0 0.6, 0.6 0)", "right"
|
||||
5, "LINESTRING(0.5 0, 0 -0.5, -0.5 0, 0 0.5, 0.5 0)", "left_only"
|
||||
6, "LINESTRING(0.4 0, 0 -0.4, -0.4 0, 0 0.4, 0.4 0)", "right_only"
|
||||
</Parameter>
|
||||
</Datasource>
|
||||
</Layer>
|
||||
|
||||
<Style name="lines">
|
||||
<Rule>
|
||||
<LineSymbolizer
|
||||
stroke-width="12"
|
||||
stroke="rgb(255, 100, 100)"
|
||||
/>
|
||||
</Rule>
|
||||
</Style>
|
||||
|
||||
<Style name="text">
|
||||
<Rule>
|
||||
<Filter>[id] = 0</Filter>
|
||||
<TextSymbolizer
|
||||
face-name="DejaVu Sans Book"
|
||||
size="16"
|
||||
placement="line"
|
||||
spacing="100"
|
||||
max-char-angle-delta="0"
|
||||
>[upright]</TextSymbolizer>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<ElseFilter />
|
||||
<TextSymbolizer
|
||||
face-name="DejaVu Sans Book"
|
||||
size="16"
|
||||
placement="line"
|
||||
spacing="100"
|
||||
upright="[upright]"
|
||||
max-char-angle-delta="0"
|
||||
>[upright]</TextSymbolizer>
|
||||
</Rule>
|
||||
</Style>
|
||||
|
||||
</Map>
|
||||
Loading…
x
Reference in New Issue
Block a user