Merge branch 'master' into skia-renderer

This commit is contained in:
artemp 2013-07-19 08:34:00 +01:00
commit acc14b9cc0
59 changed files with 2980 additions and 99 deletions

View file

@ -8,8 +8,12 @@ For a complete change history, see the git log.
## Future ## Future
- Added `webp` image encoding and decoding support (#1955)
- Added `premultiplied` property on mapnik::image_32 / mapnik.Image to enable knowledge of premultiplied status of image buffer. - Added `premultiplied` property on mapnik::image_32 / mapnik.Image to enable knowledge of premultiplied status of image buffer.
- Added `scale-hsla` image-filter that allows scaling colors in HSL color space. RGB is converted to HSL (hue-saturation-lightness) and then each value (and the original alpha value) is stretched based on the specified scaling values. An example syntax is `scale-hsla(0,1,0,1,0,1,0,1)` which means no change because the full range will be kept (0 for lowest, 1 for highest). Other examples are: 1) `scale-hsla(0,0,0,1,0,1,0,1)` which would force all colors to be red in hue in the same way `scale-hsla(1,1,0,1,0,1,0,1)` would, 2) `scale-hsla(0,1,1,1,0,1,0,1)` which would cause all colors to become fully saturated, 3) `scale-hsla(0,1,1,1,0,1,.5,1)` which would force no colors to be any more transparent than half, and 4) `scale-hsla(0,1,1,1,0,1,0,.5)` which would force all colors to be at least half transparent. (#1954)
## 2.2.0 ## 2.2.0
Released June 3rd, 2013 Released June 3rd, 2013

View file

@ -48,22 +48,26 @@ Mapnik Core depends on:
- regex (optionally built with icu regex support) - regex (optionally built with icu regex support)
- program_options (optionally for mapnik command line programs) - program_options (optionally for mapnik command line programs)
* libicuuc >= 4.0 (ideally >= 4.2) - International Components for Unicode * libicuuc >= 4.0 (ideally >= 4.2) - International Components for Unicode
* libpng >= 1.2.x - PNG graphics
* libjpeg - JPEG graphics
* libtiff - TIFF graphics
* libz - Zlib compression * libz - Zlib compression
* libfreetype - Freetype2 for font support (Install requires freetype-config) * libfreetype - Freetype2 for font support (Install requires freetype-config)
* libxml2 - XML parsing (Install requires xml2-config) * libxml2 - XML parsing (Install requires xml2-config)
* libproj - PROJ.4 projection library
Mapnik Core optionally depends on:
* libpng >= 1.2.x - PNG graphics (Default enabled, if found)
* libjpeg - JPEG graphics (Default enabled, if found)
* libtiff - TIFF graphics (Default enabled, if found)
* libwebp - WEBP graphics (Default enabled, if found)
* libproj - PROJ.4 projection library (Default enabled, if found)
Mapnik Python bindings depend on: Mapnik Python bindings depend on:
* Python 2.5-2.7 or >= 3.2 * Python 2.5-2.7 or >= 3.2
* Boost python * Boost python
Note: Python3k is supported, see: https://github.com/mapnik/mapnik/wiki/Python3k Note: Python 3.x is supported, see: https://github.com/mapnik/mapnik/wiki/Python3k
Optional dependencies: Additional optional dependencies:
* Cairo >= 1.6.0 - Graphics library for output formats like PDF, PS, and SVG * Cairo >= 1.6.0 - Graphics library for output formats like PDF, PS, and SVG
- pkg-config - Required for building with cairo support - pkg-config - Required for building with cairo support

View file

@ -73,6 +73,7 @@ pretty_dep_names = {
'jpeg':'JPEG C library | configure with JPEG_LIBS & JPEG_INCLUDES', 'jpeg':'JPEG C library | configure with JPEG_LIBS & JPEG_INCLUDES',
'tiff':'TIFF C library | configure with TIFF_LIBS & TIFF_INCLUDES', 'tiff':'TIFF C library | configure with TIFF_LIBS & TIFF_INCLUDES',
'png':'PNG C library | configure with PNG_LIBS & PNG_INCLUDES', 'png':'PNG C library | configure with PNG_LIBS & PNG_INCLUDES',
'webp':'WEBP C library | configure with WEBP_LIBS & WEBP_INCLUDES',
'icuuc':'ICU C++ library | configure with ICU_LIBS & ICU_INCLUDES or use ICU_LIB_NAME to specify custom lib name | more info: http://site.icu-project.org/', 'icuuc':'ICU C++ library | configure with ICU_LIBS & ICU_INCLUDES or use ICU_LIB_NAME to specify custom lib name | more info: http://site.icu-project.org/',
'z':'Z compression library | more info: http://www.zlib.net/', 'z':'Z compression library | more info: http://www.zlib.net/',
'm':'Basic math library, part of C++ stlib', 'm':'Basic math library, part of C++ stlib',
@ -325,6 +326,9 @@ opts.AddVariables(
BoolVariable('TIFF', 'Build Mapnik with TIFF read and write support', 'True'), BoolVariable('TIFF', 'Build Mapnik with TIFF read and write support', 'True'),
PathVariable('TIFF_INCLUDES', 'Search path for libtiff include files', '/usr/include', PathVariable.PathAccept), PathVariable('TIFF_INCLUDES', 'Search path for libtiff include files', '/usr/include', PathVariable.PathAccept),
PathVariable('TIFF_LIBS', 'Search path for libtiff library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept), PathVariable('TIFF_LIBS', 'Search path for libtiff library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
BoolVariable('WEBP', 'Build Mapnik with WEBP read', 'True'),
PathVariable('WEBP_INCLUDES', 'Search path for libwebp include files', '/usr/include', PathVariable.PathAccept),
PathVariable('WEBP_LIBS','Search path for libwebp library files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
BoolVariable('PROJ', 'Build Mapnik with proj4 support to enable transformations between many different projections', 'True'), BoolVariable('PROJ', 'Build Mapnik with proj4 support to enable transformations between many different projections', 'True'),
PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept), PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept),
PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept), PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
@ -1193,7 +1197,7 @@ if not preconfigured:
if env['JPEG']: if env['JPEG']:
env.Append(CPPDEFINES = '-DHAVE_JPEG') env.Append(CPPDEFINES = '-DHAVE_JPEG')
LIBSHEADERS.append(['jpeg', ['stdio.h', 'jpeglib.h'], True,'C']) LIBSHEADERS.append(['jpeg', ['stdio.h', 'jpeglib.h'], False,'C'])
inc_path = env['%s_INCLUDES' % 'JPEG'] inc_path = env['%s_INCLUDES' % 'JPEG']
lib_path = env['%s_LIBS' % 'JPEG'] lib_path = env['%s_LIBS' % 'JPEG']
env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
@ -1203,7 +1207,7 @@ if not preconfigured:
if env['PROJ']: if env['PROJ']:
env.Append(CPPDEFINES = '-DMAPNIK_USE_PROJ4') env.Append(CPPDEFINES = '-DMAPNIK_USE_PROJ4')
LIBSHEADERS.append(['proj', 'proj_api.h', True,'C']) LIBSHEADERS.append(['proj', 'proj_api.h', False,'C'])
inc_path = env['%s_INCLUDES' % 'PROJ'] inc_path = env['%s_INCLUDES' % 'PROJ']
lib_path = env['%s_LIBS' % 'PROJ'] lib_path = env['%s_LIBS' % 'PROJ']
env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
@ -1213,7 +1217,7 @@ if not preconfigured:
if env['PNG']: if env['PNG']:
env.Append(CPPDEFINES = '-DHAVE_PNG') env.Append(CPPDEFINES = '-DHAVE_PNG')
LIBSHEADERS.append(['png', 'png.h', True,'C']) LIBSHEADERS.append(['png', 'png.h', False,'C'])
inc_path = env['%s_INCLUDES' % 'PNG'] inc_path = env['%s_INCLUDES' % 'PNG']
lib_path = env['%s_LIBS' % 'PNG'] lib_path = env['%s_LIBS' % 'PNG']
env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
@ -1221,9 +1225,19 @@ if not preconfigured:
else: else:
env['SKIPPED_DEPS'].extend(['png']) env['SKIPPED_DEPS'].extend(['png'])
if env['WEBP']:
env.Append(CPPDEFINES = '-DHAVE_WEBP')
LIBSHEADERS.append(['webp', 'webp/decode.h', False,'C'])
inc_path = env['%s_INCLUDES' % 'WEBP']
lib_path = env['%s_LIBS' % 'WEBP']
env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
env.AppendUnique(LIBPATH = os.path.realpath(lib_path))
else:
env['SKIPPED_DEPS'].extend(['webp'])
if env['TIFF']: if env['TIFF']:
env.Append(CPPDEFINES = '-DHAVE_TIFF') env.Append(CPPDEFINES = '-DHAVE_TIFF')
LIBSHEADERS.append(['tiff', 'tiff.h', True,'C']) LIBSHEADERS.append(['tiff', 'tiff.h', False,'C'])
inc_path = env['%s_INCLUDES' % 'TIFF'] inc_path = env['%s_INCLUDES' % 'TIFF']
lib_path = env['%s_LIBS' % 'TIFF'] lib_path = env['%s_LIBS' % 'TIFF']
env.AppendUnique(CPPPATH = os.path.realpath(inc_path)) env.AppendUnique(CPPPATH = os.path.realpath(inc_path))

View file

@ -35,7 +35,7 @@ class filter_featureset : public Featureset
typedef T filter_type; typedef T filter_type;
public: public:
filter_featureset(featureset_ptr fs, filter_type const& filter) filter_featureset(featureset_ptr const& fs, filter_type const& filter)
: fs_(fs), filter_(filter) {} : fs_(fs), filter_(filter) {}
feature_ptr next() feature_ptr next()

View file

@ -486,9 +486,8 @@ void apply_filter(Src & src, colorize_alpha const& op)
} }
} }
/*
template <typename Src> template <typename Src>
void apply_filter(Src & src, hsla const& transform) void apply_filter(Src & src, scale_hsla const& transform)
{ {
using namespace boost::gil; using namespace boost::gil;
bool tinting = !transform.is_identity(); bool tinting = !transform.is_identity();
@ -507,16 +506,24 @@ void apply_filter(Src & src, hsla const& transform)
uint8_t & g = get_color(src_it[x], green_t()); uint8_t & g = get_color(src_it[x], green_t());
uint8_t & b = get_color(src_it[x], blue_t()); uint8_t & b = get_color(src_it[x], blue_t());
uint8_t & a = get_color(src_it[x], alpha_t()); uint8_t & a = get_color(src_it[x], alpha_t());
double a2 = a/255.0; double a2 = static_cast<double>(a)/255.0;
double a1 = a2; double a1 = a2;
bool alpha_modified = false;
if (set_alpha && a2 > 0.01) if (set_alpha && a2 > 0.01)
{ {
a2 = transform.a0 + (a2 * (transform.a1 - transform.a0)); a2 = transform.a0 + (a2 * (transform.a1 - transform.a0));
a = static_cast<unsigned>(std::floor((a2 * 255.0) +.5)); if (a2 <= 0)
if (a > 255) a = 255; {
if (a < 0) a = 0; a = 0;
}
else
{
a = static_cast<unsigned>(std::floor((a2 * 255.0) +.5));
if (a > 255) a = 255;
}
alpha_modified = true;
} }
if (tinting && a2 > 0.01) if (tinting && a > 1)
{ {
double h; double h;
double s; double s;
@ -537,12 +544,12 @@ void apply_filter(Src & src, hsla const& transform)
double h2 = transform.h0 + (h * (transform.h1 - transform.h0)); double h2 = transform.h0 + (h * (transform.h1 - transform.h0));
double s2 = transform.s0 + (s * (transform.s1 - transform.s0)); double s2 = transform.s0 + (s * (transform.s1 - transform.s0));
double l2 = transform.l0 + (l * (transform.l1 - transform.l0)); double l2 = transform.l0 + (l * (transform.l1 - transform.l0));
if (h2 > 1) { std::clog << "h2: " << h2 << "\n"; h2 = 1; } if (h2 > 1) { h2 = 1; }
else if (h2 < 0) { std::clog << "h2: " << h2 << "\n"; h2 = 0; } else if (h2 < 0) { h2 = 0; }
if (s2 > 1) { std::clog << "h2: " << h2 << "\n"; s2 = 1; } if (s2 > 1) { s2 = 1; }
else if (s2 < 0) { std::clog << "s2: " << s2 << "\n"; s2 = 0; } else if (s2 < 0) { s2 = 0; }
if (l2 > 1) { std::clog << "h2: " << h2 << "\n"; l2 = 1; } if (l2 > 1) { l2 = 1; }
else if (l2 < 0) { std::clog << "l2: " << l2 << "\n"; l2 = 0; } else if (l2 < 0) { l2 = 0; }
hsl2rgb(h2,s2,l2,r,g,b); hsl2rgb(h2,s2,l2,r,g,b);
// premultiply // premultiply
// we only work with premultiplied source, // we only work with premultiplied source,
@ -551,7 +558,7 @@ void apply_filter(Src & src, hsla const& transform)
g *= a2; g *= a2;
b *= a2; b *= a2;
} }
else else if (alpha_modified)
{ {
// demultiply // demultiply
if (a1 <= 0.0) if (a1 <= 0.0)
@ -576,7 +583,6 @@ void apply_filter(Src & src, hsla const& transform)
} }
} }
} }
*/
template <typename Src> template <typename Src>
void apply_filter(Src & src, gray const& op) void apply_filter(Src & src, gray const& op)

View file

@ -67,8 +67,8 @@ struct image_filter_grammar :
qi::rule<Iterator, ContType(), qi::ascii::space_type> start; qi::rule<Iterator, ContType(), qi::ascii::space_type> start;
qi::rule<Iterator, ContType(), qi::ascii::space_type> filter; qi::rule<Iterator, ContType(), qi::ascii::space_type> filter;
qi::rule<Iterator, qi::locals<int,int>, void(ContType&), qi::ascii::space_type> agg_blur_filter; qi::rule<Iterator, qi::locals<int,int>, void(ContType&), qi::ascii::space_type> agg_blur_filter;
//qi::rule<Iterator, qi::locals<double,double,double,double,double,double,double,double>, qi::rule<Iterator, qi::locals<double,double,double,double,double,double,double,double>,
// void(ContType&), qi::ascii::space_type> hsla_filter; void(ContType&), qi::ascii::space_type> scale_hsla_filter;
qi::rule<Iterator, qi::locals<mapnik::filter::colorize_alpha, mapnik::filter::color_stop>, void(ContType&), qi::ascii::space_type> colorize_alpha_filter; qi::rule<Iterator, qi::locals<mapnik::filter::colorize_alpha, mapnik::filter::color_stop>, void(ContType&), qi::ascii::space_type> colorize_alpha_filter;
qi::rule<Iterator, qi::ascii::space_type> no_args; qi::rule<Iterator, qi::ascii::space_type> no_args;
qi::uint_parser< unsigned, 10, 1, 3 > radius_; qi::uint_parser< unsigned, 10, 1, 3 > radius_;

View file

@ -28,7 +28,6 @@
#include <mapnik/color.hpp> #include <mapnik/color.hpp>
// boost // boost
#include <boost/variant.hpp> #include <boost/variant.hpp>
#include <boost/variant/variant_fwd.hpp>
// stl // stl
#include <vector> #include <vector>
#include <ostream> #include <ostream>
@ -54,10 +53,9 @@ struct agg_stack_blur
unsigned ry; unsigned ry;
}; };
/* struct scale_hsla
struct hsla
{ {
hsla(double _h0, double _h1, scale_hsla(double _h0, double _h1,
double _s0, double _s1, double _s0, double _s1,
double _l0, double _l1, double _l0, double _l1,
double _a0, double _a1) : double _a0, double _a1) :
@ -81,14 +79,6 @@ struct hsla
return (a0 == 0 && return (a0 == 0 &&
a1 == 1); a1 == 1);
} }
std::string to_string() const {
std::ostringstream s;
s << h0 << "x" << h1 << ";"
<< s0 << "x" << s1 << ";"
<< l0 << "x" << l1 << ";"
<< a0 << "x" << a1;
return s.str();
}
double h0; double h0;
double h1; double h1;
double s0; double s0;
@ -98,7 +88,6 @@ struct hsla
double a0; double a0;
double a1; double a1;
}; };
*/
struct color_stop struct color_stop
{ {
@ -124,7 +113,7 @@ typedef boost::variant<filter::blur,
filter::x_gradient, filter::x_gradient,
filter::y_gradient, filter::y_gradient,
filter::invert, filter::invert,
//filter::hsla, filter::scale_hsla,
filter::colorize_alpha> filter_type; filter::colorize_alpha> filter_type;
inline std::ostream& operator<< (std::ostream& os, blur) inline std::ostream& operator<< (std::ostream& os, blur)
@ -145,16 +134,14 @@ inline std::ostream& operator<< (std::ostream& os, agg_stack_blur const& filter)
return os; return os;
} }
/* inline std::ostream& operator<< (std::ostream& os, scale_hsla const& filter)
inline std::ostream& operator<< (std::ostream& os, hsla const& filter)
{ {
os << "hsla(" << filter.h0 << 'x' << filter.h1 << ':' os << "hsla-transform(" << filter.h0 << 'x' << filter.h1 << ':'
<< filter.s0 << 'x' << filter.s1 << ':' << filter.s0 << 'x' << filter.s1 << ':'
<< filter.l0 << 'x' << filter.l1 << ':' << filter.l0 << 'x' << filter.l1 << ':'
<< filter.a0 << 'x' << filter.a1 << ')'; << filter.a0 << 'x' << filter.a1 << ')';
return os; return os;
} }
*/
inline std::ostream& operator<< (std::ostream& os, emboss) inline std::ostream& operator<< (std::ostream& os, emboss)
{ {
@ -198,7 +185,27 @@ inline std::ostream& operator<< (std::ostream& os, invert)
return os; return os;
} }
inline std::ostream& operator<< (std::ostream& os, filter_type const& filter); template <typename Out>
struct to_string_visitor : boost::static_visitor<void>
{
to_string_visitor(Out & out)
: out_(out) {}
template <typename T>
void operator () (T const& filter_tag)
{
out_ << filter_tag;
}
Out & out_;
};
inline std::ostream& operator<< (std::ostream& os, filter_type const& filter)
{
to_string_visitor<std::ostream> visitor(os);
boost::apply_visitor(visitor, filter);
return os;
}
MAPNIK_DECL bool generate_image_filters(std::back_insert_iterator<std::string> & sink, std::vector<filter_type> const& v); MAPNIK_DECL bool generate_image_filters(std::back_insert_iterator<std::string> & sink, std::vector<filter_type> const& v);

View file

@ -147,6 +147,12 @@ inline bool is_ps (std::string const& filename)
return boost::algorithm::iends_with(filename,std::string(".ps")); return boost::algorithm::iends_with(filename,std::string(".ps"));
} }
inline bool is_webp (std::string const& filename)
{
return boost::algorithm::iends_with(filename,std::string(".webp"));
}
inline boost::optional<std::string> type_from_filename(std::string const& filename) inline boost::optional<std::string> type_from_filename(std::string const& filename)
{ {
@ -157,6 +163,7 @@ inline boost::optional<std::string> type_from_filename(std::string const& filena
if (is_pdf(filename)) return result_type("pdf"); if (is_pdf(filename)) return result_type("pdf");
if (is_svg(filename)) return result_type("svg"); if (is_svg(filename)) return result_type("svg");
if (is_ps(filename)) return result_type("ps"); if (is_ps(filename)) return result_type("ps");
if (is_webp(filename)) return result_type("webp");
return result_type(); return result_type();
} }

View file

@ -88,6 +88,12 @@ public:
{ {
return data_.getRow(row + y_) + x_; return data_.getRow(row + y_) + x_;
} }
inline char const* getBytes() const
{
return reinterpret_cast<char const*>(&data_);
}
inline T& data() inline T& data()
{ {
return data_; return data_;
@ -107,4 +113,3 @@ private:
} }
#endif // MAPNIK_IMAGE_VIEW_HPP #endif // MAPNIK_IMAGE_VIEW_HPP

View file

@ -36,7 +36,7 @@ static inline void rgb2hsl(unsigned char red, unsigned char green, unsigned char
double min = std::min(r,std::min(g,b)); double min = std::min(r,std::min(g,b));
double delta = max - min; double delta = max - min;
double gamma = max + min; double gamma = max + min;
h = s = l = gamma / 2.0; h = 0.0, s = 0.0, l = gamma / 2.0;
if (delta > 0.0) { if (delta > 0.0) {
s = l > 0.5 ? delta / (2.0 - gamma) : delta / gamma; s = l > 0.5 ? delta / (2.0 - gamma) : delta / gamma;
if (max == r && max != g) h = (g - b) / delta + (g < b ? 6.0 : 0.0); if (max == r && max != g) h = (g - b) / delta + (g < b ? 6.0 : 0.0);
@ -47,7 +47,6 @@ static inline void rgb2hsl(unsigned char red, unsigned char green, unsigned char
} }
static inline double hueToRGB(double m1, double m2, double h) { static inline double hueToRGB(double m1, double m2, double h) {
// poor mans fmod
if(h < 0) h += 1; if(h < 0) h += 1;
if(h > 1) h -= 1; if(h > 1) h -= 1;
if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
@ -59,13 +58,13 @@ static inline double hueToRGB(double m1, double m2, double h) {
static inline void hsl2rgb(double h, double s, double l, static inline void hsl2rgb(double h, double s, double l,
unsigned char & r, unsigned char & g, unsigned char & b) { unsigned char & r, unsigned char & g, unsigned char & b) {
if (!s) { if (!s) {
r = g = b = static_cast<unsigned char>(l * 255); r = g = b = static_cast<unsigned char>(std::floor((l * 255.0)+.5));
} }
double m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s; double m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s;
double m1 = l * 2 - m2; double m1 = l * 2 - m2;
r = static_cast<unsigned char>(hueToRGB(m1, m2, h + 0.33333) * 255); r = static_cast<unsigned char>(std::floor((hueToRGB(m1, m2, h + 0.33333) * 255.0)+.5));
g = static_cast<unsigned char>(hueToRGB(m1, m2, h) * 255); g = static_cast<unsigned char>(std::floor((hueToRGB(m1, m2, h) * 255.0)+.5));
b = static_cast<unsigned char>(hueToRGB(m1, m2, h - 0.33333) * 255); b = static_cast<unsigned char>(std::floor((hueToRGB(m1, m2, h - 0.33333) * 255.0)+.5));
} }
} }

130
include/mapnik/webp_io.hpp Normal file
View file

@ -0,0 +1,130 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2013 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
#ifndef MAPNIK_WEBP_IO_HPP
#define MAPNIK_WEBP_IO_HPP
#include <webp/encode.h>
#include <ostream>
#include <sstream>
#include <stdexcept>
namespace mapnik {
template <typename T>
int webp_stream_write(const uint8_t* data, size_t data_size, const WebPPicture* picture)
{
T* out = static_cast<T*>(picture->custom_ptr);
out->write(reinterpret_cast<const char*>(data), data_size);
return true;
}
std::string webp_encoding_error(WebPEncodingError error) {
std::ostringstream os;
switch (error) {
case VP8_ENC_ERROR_OUT_OF_MEMORY: os << "memory error allocating objects"; break;
case VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY: os << "memory error while flushing bits"; break;
case VP8_ENC_ERROR_NULL_PARAMETER: os << "a pointer parameter is NULL"; break;
case VP8_ENC_ERROR_INVALID_CONFIGURATION: os << "configuration is invalid"; break;
case VP8_ENC_ERROR_BAD_DIMENSION: os << "picture has invalid width/height"; break;
case VP8_ENC_ERROR_PARTITION0_OVERFLOW: os << "partition is bigger than 512k"; break;
case VP8_ENC_ERROR_PARTITION_OVERFLOW: os << "partition is bigger than 16M"; break;
case VP8_ENC_ERROR_BAD_WRITE: os << "error while flushing bytes"; break;
case VP8_ENC_ERROR_FILE_TOO_BIG: os << "file is bigger than 4G"; break;
default: os << "unknown error (" << error << ")"; break;
}
os << " during encoding";
return os.str();
}
template <typename T1, typename T2>
void save_as_webp(T1& file,
float quality,
int method,
int lossless,
int image_hint,
T2 const& image)
{
WebPConfig config;
if (!WebPConfigPreset(&config, WEBP_PRESET_DEFAULT, quality))
{
throw std::runtime_error("version mismatch");
}
// Add additional tuning
if (method >= 0) config.method = method;
#if (WEBP_ENCODER_ABI_VERSION >> 8) >= 2
config.lossless = lossless;
config.image_hint = static_cast<WebPImageHint>(image_hint);
#else
#ifdef _MSC_VER
#pragma NOTE(compiling against webp that does not support lossless flag)
#else
#warning "compiling against webp that does not support lossless flag"
#endif
#endif
bool valid = WebPValidateConfig(&config);
if (!valid) {
throw std::runtime_error("Invalid configuration");
}
WebPPicture pic;
if (!WebPPictureInit(&pic))
{
throw std::runtime_error("version mismatch");
}
pic.width = image.width();
pic.height = image.height();
#if (WEBP_ENCODER_ABI_VERSION >> 8) >= 2
pic.use_argb = 1;
#endif
if (!WebPPictureAlloc(&pic))
{
throw std::runtime_error("memory error");
}
int stride = sizeof(typename T2::pixel_type) * image.width();
uint8_t const* bytes = reinterpret_cast<uint8_t const*>(image.getBytes());
int ok = WebPPictureImportRGBA(&pic, bytes, stride);
if (!ok)
{
throw std::runtime_error(webp_encoding_error(pic.error_code));
}
pic.writer = webp_stream_write<T1>;
pic.custom_ptr = &file;
ok = WebPEncode(&config, &pic);
WebPPictureFree(&pic);
if (!ok)
{
throw std::runtime_error(webp_encoding_error(pic.error_code));
}
file.flush();
}
}
#endif // MAPNIK_WEBP_IO_HPP

View file

@ -57,7 +57,7 @@ void agg_renderer<T>::process(building_symbolizer const& sym,
typedef agg::renderer_base<agg::pixfmt_rgba32> ren_base; typedef agg::renderer_base<agg::pixfmt_rgba32> ren_base;
typedef agg::renderer_scanline_aa_solid<ren_base> renderer; typedef agg::renderer_scanline_aa_solid<ren_base> renderer;
agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4);
agg::pixfmt_rgba32 pixf(buf); agg::pixfmt_rgba32 pixf(buf);
ren_base renb(pixf); ren_base renb(pixf);

View file

@ -115,7 +115,7 @@ void agg_renderer<T>::process(line_pattern_symbolizer const& sym,
if (!pat) return; if (!pat) return;
agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4);
pixfmt_type pixf(buf); pixfmt_type pixf(buf);
pixf.comp_op(static_cast<agg::comp_op_e>(sym.comp_op())); pixf.comp_op(static_cast<agg::comp_op_e>(sym.comp_op()));
renderer_base ren_base(pixf); renderer_base ren_base(pixf);

View file

@ -73,7 +73,7 @@ void agg_renderer<T>::process(line_symbolizer const& sym,
gamma_ = stroke_.get_gamma(); gamma_ = stroke_.get_gamma();
} }
agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4);
typedef agg::rgba8 color_type; typedef agg::rgba8 color_type;
typedef agg::order_rgba order_type; typedef agg::order_rgba order_type;

View file

@ -127,7 +127,7 @@ void agg_renderer<T>::process(markers_symbolizer const& sym,
coord2d center = bbox.center(); coord2d center = bbox.center();
agg::trans_affine_translation recenter(-center.x, -center.y); agg::trans_affine_translation recenter(-center.x, -center.y);
agg::trans_affine marker_trans = recenter * tr; agg::trans_affine marker_trans = recenter * tr;
buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4);
dispatch_type rasterizer_dispatch(render_buffer, dispatch_type rasterizer_dispatch(render_buffer,
svg_renderer, svg_renderer,
*ras_ptr, *ras_ptr,
@ -167,7 +167,7 @@ void agg_renderer<T>::process(markers_symbolizer const& sym,
svg_attribute_type attributes; svg_attribute_type attributes;
bool result = push_explicit_style( (*stock_vector_marker)->attributes(), attributes, sym); bool result = push_explicit_style( (*stock_vector_marker)->attributes(), attributes, sym);
svg_renderer_type svg_renderer(svg_path, result ? attributes : (*stock_vector_marker)->attributes()); svg_renderer_type svg_renderer(svg_path, result ? attributes : (*stock_vector_marker)->attributes());
buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4);
dispatch_type rasterizer_dispatch(render_buffer, dispatch_type rasterizer_dispatch(render_buffer,
svg_renderer, svg_renderer,
*ras_ptr, *ras_ptr,
@ -205,7 +205,7 @@ void agg_renderer<T>::process(markers_symbolizer const& sym,
agg::trans_affine marker_trans = recenter * tr; agg::trans_affine marker_trans = recenter * tr;
boost::optional<mapnik::image_ptr> marker = (*mark)->get_bitmap_data(); boost::optional<mapnik::image_ptr> marker = (*mark)->get_bitmap_data();
typedef raster_markers_rasterizer_dispatch<buf_type,rasterizer, detector_type> dispatch_type; typedef raster_markers_rasterizer_dispatch<buf_type,rasterizer, detector_type> dispatch_type;
buf_type render_buffer(current_buffer_->raw_data(), width_, height_, width_ * 4); buf_type render_buffer(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4);
dispatch_type rasterizer_dispatch(render_buffer, dispatch_type rasterizer_dispatch(render_buffer,
*ras_ptr, *ras_ptr,
**marker, **marker,

View file

@ -59,7 +59,7 @@ void agg_renderer<T>::process(polygon_pattern_symbolizer const& sym,
typedef agg::conv_clip_polygon<geometry_type> clipped_geometry_type; typedef agg::conv_clip_polygon<geometry_type> clipped_geometry_type;
typedef coord_transform<CoordTransform,clipped_geometry_type> path_type; typedef coord_transform<CoordTransform,clipped_geometry_type> path_type;
agg::rendering_buffer buf(current_buffer_->raw_data(), width_, height_, width_ * 4); agg::rendering_buffer buf(current_buffer_->raw_data(), current_buffer_->width(), current_buffer_->height(), current_buffer_->width() * 4);
ras_ptr->reset(); ras_ptr->reset();
if (sym.get_gamma() != gamma_ || sym.get_gamma_method() != gamma_method_) if (sym.get_gamma() != gamma_ || sym.get_gamma_method() != gamma_method_)
{ {
@ -135,8 +135,8 @@ void agg_renderer<T>::process(polygon_pattern_symbolizer const& sym,
path_type path(t_,clipped,prj_trans); path_type path(t_,clipped,prj_trans);
path.vertex(&x0,&y0); path.vertex(&x0,&y0);
} }
offset_x = unsigned(width_ - x0); offset_x = unsigned(current_buffer_->width() - x0);
offset_y = unsigned(height_ - y0); offset_y = unsigned(current_buffer_->height() - y0);
} }
span_gen_type sg(img_src, offset_x, offset_y); span_gen_type sg(img_src, offset_x, offset_y);

View file

@ -76,7 +76,7 @@ void agg_renderer<T>::process(polygon_symbolizer const& sym,
} }
} }
agg::rendering_buffer buf(current_buffer_->raw_data(),width_,height_, width_ * 4); agg::rendering_buffer buf(current_buffer_->raw_data(),current_buffer_->width(),current_buffer_->height(), current_buffer_->width() * 4);
color const& fill = sym.get_fill(); color const& fill = sym.get_fill();
unsigned r=fill.red(); unsigned r=fill.red();

View file

@ -68,6 +68,9 @@ if env['PNG']:
if env['TIFF']: if env['TIFF']:
lib_env['LIBS'].append('tiff') lib_env['LIBS'].append('tiff')
if env['WEBP']:
lib_env['LIBS'].append('webp')
if env['JPEG']: if env['JPEG']:
lib_env['LIBS'].append('jpeg') lib_env['LIBS'].append('jpeg')
@ -280,6 +283,12 @@ if env['PNG']:
png_reader.cpp png_reader.cpp
""") """)
if env['WEBP']:
source += Split(
"""
webp_reader.cpp
""")
# agg backend # agg backend
source += Split( source += Split(
""" """

View file

@ -88,8 +88,8 @@ image_filter_grammar<Iterator,ContType>::image_filter_grammar()
| |
agg_blur_filter(_val) agg_blur_filter(_val)
| |
//hsla_filter(_val) scale_hsla_filter(_val)
//| |
colorize_alpha_filter(_val) colorize_alpha_filter(_val)
; ;
@ -100,16 +100,14 @@ image_filter_grammar<Iterator,ContType>::image_filter_grammar()
[push_back(_r1,construct<mapnik::filter::agg_stack_blur>(_a,_b))] [push_back(_r1,construct<mapnik::filter::agg_stack_blur>(_a,_b))]
; ;
/* scale_hsla_filter = lit("scale-hsla")
hsla_filter = lit("hsla")
>> lit('(') >> lit('(')
>> double_[_a = _1] >> lit('x') >> double_[_b = _1] >> lit(';') >> double_[_a = _1] >> lit(',') >> double_[_b = _1] >> lit(',')
>> double_[_c = _1] >> lit('x') >> double_[_d = _1] >> lit(';') >> double_[_c = _1] >> lit(',') >> double_[_d = _1] >> lit(',')
>> double_[_e = _1] >> lit('x') >> double_[_f = _1] >> lit(';') >> double_[_e = _1] >> lit(',') >> double_[_f = _1] >> lit(',')
>> double_[_g = _1] >> lit('x') >> double_[_h = _1] >> lit(')') >> double_[_g = _1] >> lit(',') >> double_[_h = _1] >> lit(')')
[push_back(_r1, construct<mapnik::filter::hsla>(_a,_b,_c,_d,_e,_f,_g,_h))] [push_back(_r1, construct<mapnik::filter::scale_hsla>(_a,_b,_c,_d,_e,_f,_g,_h))]
; ;
*/
colorize_alpha_filter = lit("colorize-alpha")[_a = construct<mapnik::filter::colorize_alpha>()] colorize_alpha_filter = lit("colorize-alpha")[_a = construct<mapnik::filter::colorize_alpha>()]
>> lit('(') >> lit('(')

View file

@ -34,28 +34,6 @@ namespace mapnik {
namespace filter { namespace filter {
template <typename Out>
struct to_string_visitor : boost::static_visitor<void>
{
to_string_visitor(Out & out)
: out_(out) {}
template <typename T>
void operator () (T const& filter_tag)
{
out_ << filter_tag;
}
Out & out_;
};
inline std::ostream& operator<< (std::ostream& os, filter_type const& filter)
{
to_string_visitor<std::ostream> visitor(os);
boost::apply_visitor(visitor, filter);
return os;
}
bool generate_image_filters(std::back_insert_iterator<std::string>& sink, std::vector<filter_type> const& filters) bool generate_image_filters(std::back_insert_iterator<std::string>& sink, std::vector<filter_type> const& filters)
{ {
using boost::spirit::karma::stream; using boost::spirit::karma::stream;

View file

@ -59,6 +59,14 @@ inline boost::optional<std::string> type_from_bytes(char const* data, size_t siz
} }
} }
if (size>=12)
{
if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F' &&
data[8] == 'W' && data[9] == 'E' && data[10] == 'B' && data[11] == 'P')
{
return result_type("webp");
}
}
return result_type(); return result_type();
} }

View file

@ -40,6 +40,10 @@ extern "C"
#include <mapnik/jpeg_io.hpp> #include <mapnik/jpeg_io.hpp>
#endif #endif
#if defined(HAVE_WEBP)
#include <mapnik/webp_io.hpp>
#endif
#include <mapnik/image_util.hpp> #include <mapnik/image_util.hpp>
#include <mapnik/image_data.hpp> #include <mapnik/image_data.hpp>
#include <mapnik/graphics.hpp> #include <mapnik/graphics.hpp>
@ -237,6 +241,73 @@ void handle_png_options(std::string const& type,
} }
#endif #endif
#if defined(HAVE_WEBP)
void handle_webp_options(std::string const& type,
double & quality,
int & method,
int & lossless,
int & image_hint
)
{
if (type == "webp")
{
return;
}
if (type.length() > 4){
boost::char_separator<char> sep(":");
boost::tokenizer< boost::char_separator<char> > tokens(type, sep);
BOOST_FOREACH(std::string t, tokens)
{
if (boost::algorithm::starts_with(t, "quality="))
{
std::string val = t.substr(8);
if (!val.empty())
{
if (!mapnik::util::string2double(val,quality) || quality < 0.0 || quality > 100.0)
{
throw ImageWriterException("invalid webp quality: '" + val + "'");
}
}
}
else if (boost::algorithm::starts_with(t, "method="))
{
std::string val = t.substr(7);
if (!val.empty())
{
if (!mapnik::util::string2int(val,method) || method < 0 || method > 6)
{
throw ImageWriterException("invalid webp method: '" + val + "'");
}
}
}
else if (boost::algorithm::starts_with(t, "lossless="))
{
std::string val = t.substr(9);
if (!val.empty())
{
if (!mapnik::util::string2int(val,lossless) || lossless < 0 || lossless > 1)
{
throw ImageWriterException("invalid webp lossless: '" + val + "'");
}
}
}
else if (boost::algorithm::starts_with(t, "image_hint="))
{
std::string val = t.substr(11);
if (!val.empty())
{
if (!mapnik::util::string2int(val,image_hint) || image_hint < 0 || image_hint > 3)
{
throw ImageWriterException("invalid webp image_hint: '" + val + "'");
}
}
}
}
}
}
#endif
template <typename T> template <typename T>
void save_to_stream(T const& image, void save_to_stream(T const& image,
std::ostream & stream, std::ostream & stream,
@ -369,6 +440,26 @@ void save_to_stream(T const& image,
save_as_jpeg(stream, quality, image); save_as_jpeg(stream, quality, image);
#else #else
throw ImageWriterException("jpeg output is not enabled in your build of Mapnik"); throw ImageWriterException("jpeg output is not enabled in your build of Mapnik");
#endif
}
else if (boost::algorithm::starts_with(t, "webp"))
{
#if defined(HAVE_WEBP)
double quality = 90.0; // 0 lowest, 100 highest
int method = 3; // 0 if fastest, 6 slowest
int lossless = 0; // Lossless encoding (0=lossy(default), 1=lossless).
int image_hint = 3; // used when lossless=1
/*
WEBP_HINT_DEFAULT = 0, // default preset.
WEBP_HINT_PICTURE, // digital picture, like portrait, inner shot
WEBP_HINT_PHOTO, // outdoor photograph, with natural lighting
WEBP_HINT_GRAPH, // Discrete tone image (graph, map-tile etc).
WEBP_HINT_LAST
*/
handle_webp_options(t,quality,method,lossless, image_hint);
save_as_webp(stream, static_cast<float>(quality), method, lossless, image_hint, image);
#else
throw ImageWriterException("webp output is not enabled in your build of Mapnik");
#endif #endif
} }
else throw ImageWriterException("unknown file type: " + type); else throw ImageWriterException("unknown file type: " + type);

239
src/webp_reader.cpp Normal file
View file

@ -0,0 +1,239 @@
/*****************************************************************************
*
* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2013 Artem Pavlenko
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*****************************************************************************/
// mapnik
#include <mapnik/debug.hpp>
#include <mapnik/image_reader.hpp>
extern "C"
{
#include <webp/types.h>
#include <webp/decode.h>
}
// boost
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/stream.hpp>
// stl
#include <fstream>
namespace mapnik
{
struct external_buffer_policy
{
external_buffer_policy( uint8_t const* data, std::size_t size)
: data_(data),
size_(size) {}
uint8_t const* data() const
{
return data_;
}
std::size_t size() const
{
return size_;
}
uint8_t const* data_;
std::size_t size_;
};
struct internal_buffer_policy
{
internal_buffer_policy(std::size_t size)
: data_((size!=0) ? static_cast<uint8_t*>(::operator new(sizeof(uint8_t) * size)) : 0),
size_(size)
{}
uint8_t * data() const
{
return data_;
}
std::size_t size() const
{
return size_;
}
~internal_buffer_policy()
{
::operator delete(data_), data_=0;
}
uint8_t * data_;
std::size_t size_;
};
template <typename T>
class webp_reader : public image_reader
{
typedef T buffer_policy_type;
private:
struct config_guard
{
config_guard(WebPDecoderConfig & config)
: config_(config) {}
~config_guard()
{
WebPFreeDecBuffer(&config_.output);
}
WebPDecoderConfig & config_;
};
std::auto_ptr<buffer_policy_type> buffer_;
size_t size_;
unsigned width_;
unsigned height_;
public:
explicit webp_reader(char const* data, std::size_t size);
explicit webp_reader(std::string const& filename);
~webp_reader();
unsigned width() const;
unsigned height() const;
bool premultiplied_alpha() const { return false; }
void read(unsigned x,unsigned y,image_data_32& image);
private:
void init();
};
namespace
{
image_reader* create_webp_reader(char const * data, std::size_t size)
{
return new webp_reader<external_buffer_policy>(data, size);
}
image_reader* create_webp_reader2(std::string const& filename)
{
return new webp_reader<internal_buffer_policy>(filename);
}
const bool registered = register_image_reader("webp", create_webp_reader);
const bool registered2 = register_image_reader("webp", create_webp_reader2);
}
// ctor
template <typename T>
webp_reader<T>::webp_reader(char const* data, std::size_t size)
: buffer_(new buffer_policy_type(reinterpret_cast<uint8_t const*>(data), size)),
width_(0),
height_(0)
{
init();
}
template <typename T>
webp_reader<T>::webp_reader(std::string const& filename)
: buffer_(),
size_(0),
width_(0),
height_(0)
{
std::ifstream file(filename.c_str(), std::ios::binary);
if (!file)
{
throw image_reader_exception("WEBP: Can't read file:" + filename);
}
std::streampos beg = file.tellg();
file.seekg (0, std::ios::end);
std::streampos end = file.tellg();
std::size_t file_size = end - beg;
file.seekg (0, std::ios::beg);
buffer_ = std::auto_ptr<buffer_policy_type>(new buffer_policy_type(file_size));
file.read(reinterpret_cast<char*>(buffer_->data()), buffer_->size());
if (!file)
{
throw image_reader_exception("WEBP: Failed to read:" + filename);
}
init();
}
// dtor
template <typename T>
webp_reader<T>::~webp_reader()
{
//
}
template <typename T>
void webp_reader<T>::init()
{
int width, height;
if (!WebPGetInfo(buffer_->data(), buffer_->size(), &width, &height))
{
throw image_reader_exception("WEBP reader: WebPGetInfo failed");
}
width_ = width;
height_ = height;
}
template <typename T>
unsigned webp_reader<T>::width() const
{
return width_;
}
template <typename T>
unsigned webp_reader<T>::height() const
{
return height_;
}
template <typename T>
void webp_reader<T>::read(unsigned x0, unsigned y0,image_data_32& image)
{
WebPDecoderConfig config;
config_guard guard(config);
if (!WebPInitDecoderConfig(&config))
{
throw image_reader_exception("WEBP reader: WebPInitDecoderConfig failed");
}
config.options.use_cropping = 1;
config.options.crop_left = x0;
config.options.crop_top = y0;
config.options.crop_width = std::min(width_ - x0, image.width());
config.options.crop_height = std::min(height_ - y0, image.height());
if (WebPGetFeatures(buffer_->data(), buffer_->size(), &config.input) != VP8_STATUS_OK)
{
throw image_reader_exception("WEBP reader: WebPGetFeatures failed");
}
config.output.colorspace = MODE_RGBA;
config.output.u.RGBA.rgba = (uint8_t *)image.getBytes();
config.output.u.RGBA.stride = 4 * image.width();
config.output.u.RGBA.size = image.width() * image.height() * 4;
config.output.is_external_memory = 1;
if (WebPDecode(buffer_->data(), buffer_->size(), &config) != VP8_STATUS_OK)
{
throw image_reader_exception("WEBP reader: WebPDecode failed");
}
}
}

View file

View file

@ -67,6 +67,20 @@ int main(int argc, char** argv)
BOOST_TEST( true ); BOOST_TEST( true );
} }
should_throw = "./tests/cpp_tests/data/blank.webp";
BOOST_TEST( mapnik::util::exists( should_throw ) );
type = mapnik::type_from_filename(should_throw);
BOOST_TEST( type );
try
{
std::auto_ptr<mapnik::image_reader> reader(mapnik::get_image_reader(should_throw,*type));
BOOST_TEST( false );
}
catch (std::exception const&)
{
BOOST_TEST( true );
}
should_throw = "./tests/data/images/xcode-CgBI.png"; should_throw = "./tests/data/images/xcode-CgBI.png";
BOOST_TEST( mapnik::util::exists( should_throw ) ); BOOST_TEST( mapnik::util::exists( should_throw ) );
type = mapnik::type_from_filename(should_throw); type = mapnik::type_from_filename(should_throw);

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

View file

@ -0,0 +1,98 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os, mapnik
from timeit import Timer, time
from nose.tools import *
from utilities import execution_path, run_all
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('.'))
tmp_dir = '/tmp/mapnik-webp/'
if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir)
opts = [
'webp',
'webp:q=64',
]
def gen_filepath(name,format):
return os.path.join('images/support/encoding-opts',name+'-'+format.replace(":","+")+'.webp')
def test_quality_threshold():
im = mapnik.Image(256,256)
im.tostring('webp:quality=99.99000')
im.tostring('webp:quality=0')
im.tostring('webp:quality=0.001')
@raises(RuntimeError)
def test_quality_threshold_invalid():
im = mapnik.Image(256,256)
im.tostring('webp:quality=101')
@raises(RuntimeError)
def test_quality_threshold_invalid2():
im = mapnik.Image(256,256)
im.tostring('webp:quality=-1')
generate = False
def test_expected_encodings():
im = mapnik.Image(256,256)
for opt in opts:
expected = gen_filepath('solid',opt)
actual = os.path.join(tmp_dir,os.path.basename(expected))
if generate or not os.path.exists(expected):
print 'generating expected image %s' % expected
im.save(expected,opt)
im.save(actual,opt)
eq_(mapnik.Image.open(actual).tostring(),
mapnik.Image.open(expected).tostring(),
'%s (actual) not == to %s (expected)' % (actual,expected))
for opt in opts:
expected = gen_filepath('blank',opt)
actual = os.path.join(tmp_dir,os.path.basename(expected))
if generate or not os.path.exists(expected):
print 'generating expected image %s' % expected
im.save(expected,opt)
im.save(actual,opt)
eq_(mapnik.Image.open(actual).tostring(),
mapnik.Image.open(expected).tostring(),
'%s (actual) not == to %s (expected)' % (actual,expected))
def test_transparency_levels():
# create partial transparency image
im = mapnik.Image(256,256)
im.background = mapnik.Color('rgba(255,255,255,.5)')
c2 = mapnik.Color('rgba(255,255,0,.2)')
c3 = mapnik.Color('rgb(0,255,255)')
for y in range(0,im.height()/2):
for x in range(0,im.width()/2):
im.set_pixel(x,y,c2)
for y in range(im.height()/2,im.height()):
for x in range(im.width()/2,im.width()):
im.set_pixel(x,y,c3)
t0 = tmp_dir + 'white0.webp'
# octree
format = 'webp'
expected = 'images/support/transparency/white0.webp'
if generate or not os.path.exists(expected):
im.save('images/support/transparency/white0.webp')
im.save(t0,format)
im_in = mapnik.Image.open(t0)
t0_len = len(im_in.tostring(format))
eq_(t0_len,len(mapnik.Image.open(expected).tostring(format)))
if __name__ == "__main__":
setup()
run_all(eval(x) for x in dir() if x.startswith("test_"))

Binary file not shown.

View file

@ -0,0 +1,344 @@
{
"keys": [
"",
"836",
"840",
"690",
"525",
"523",
"528",
"490",
"472",
"415",
"599",
"598",
"154",
"159",
"153",
"100",
"102",
"108",
"122",
"110",
"113",
"737",
"481",
"473",
"57",
"1",
"72",
"200",
"269",
"228",
"173",
"174",
"687",
"483",
"551",
"583",
"480",
"479",
"401",
"421",
"389",
"749",
"774",
"179",
"851",
"586",
"620",
"548",
"535",
"582",
"325",
"324",
"445",
"393",
"839",
"440",
"268",
"482",
"633",
"634",
"466",
"671",
"462",
"448",
"333",
"326",
"146",
"16",
"25",
"356",
"261",
"238",
"248",
"767",
"849",
"577",
"484",
"471",
"469",
"332",
"378",
"225",
"188",
"175",
"585",
"668",
"665",
"550",
"485",
"570",
"562",
"575",
"131",
"354",
"284",
"285",
"553",
"850",
"739",
"587",
"486",
"632",
"373",
"133",
"41",
"358",
"260",
"177",
"641",
"615",
"95",
"121",
"376",
"56",
"788",
"359",
"236",
"686",
"786",
"692",
"578",
"614",
"579",
"673",
"50",
"92",
"58",
"357",
"212",
"847",
"827",
"664",
"645",
"607",
"505",
"743",
"493",
"841",
"439",
"438",
"214",
"213",
"254",
"835",
"165",
"647",
"626",
"494",
"39",
"5",
"54",
"158",
"317",
"252",
"753",
"838",
"769",
"223",
"784",
"631",
"621",
"674",
"77",
"36",
"304",
"118",
"52",
"773",
"224",
"255",
"727",
"139",
"624",
"628",
"666",
"453",
"295",
"292",
"3",
"123",
"732",
"830",
"771",
"845",
"623",
"613",
"629",
"580",
"144",
"459",
"294",
"23",
"27",
"125",
"844",
"184",
"545",
"507",
"616",
"606",
"681",
"65",
"48",
"35",
"37",
"63",
"831",
"740",
"842",
"221",
"166",
"501",
"142",
"506",
"680",
"26",
"444",
"730",
"742",
"826",
"556",
"117",
"755",
"20",
"699",
"822",
"701",
"808",
"311",
"780",
"170",
"234",
"33",
"569",
"516",
"713",
"705",
"744",
"725",
"350",
"310",
"349",
"192",
"719",
"185",
"552",
"559",
"546",
"643",
"684",
"24",
"706",
"750",
"795",
"818",
"712",
"351",
"683",
"206",
"190",
"689",
"105",
"32",
"34",
"759",
"810",
"819",
"791",
"707",
"852",
"290",
"235",
"160",
"536",
"98",
"44",
"541",
"346",
"811",
"297",
"778",
"169",
"162",
"163",
"752",
"748",
"809",
"805",
"341",
"18",
"167",
"168",
"109",
"112",
"67",
"537",
"829",
"828",
"496",
"540",
"561",
"709",
"340",
"70",
"161",
"176",
"754",
"432",
"306",
"164",
"178",
"824"
],
"data": {},
"grid": [
" !#$ %%%& ' ( ) *+,---./01112233344555555555 ",
" # 6 %%%' (( 7) 8 ****./911:; <=> ?? @ ",
" !#A$ BB%%(( C77DEF GH /I9JK:L <> ? @@ ",
" # M$NN OO( PCQQR 8S TU/V9W:XL <Y> ?? @ ",
" !#M$NB BOZ[]^^_`8abcd/e99fgL <hh ij? @ ",
" k#lM6N mmnQop^88qaqrre9fffL <<s> ? tt u ",
" # MM6 vm ZwQxyz{|}~//e9ff\u007fgL <\u0080> \u0081tuuu ",
" \u0082 ! l\u0083\u0084 \u0085\u0085v ))\u0086\u0087 \u0088\u0089~/\u008a9fff\u007f\u008bL <\u0080>\u008c \u0081\u0081 \u008d\u008d\u008d ",
" \u0082\u0082 !# NA$\u008e \u0085v \u008fz \u0089\u0089\u0090\u0091\u0092\u0093ff\u0094\u007f\u0095 LLL\u0096\u0096\u0096\u0081\u0081\u008d\u008d\u0097\u0097\u0098\u0099\u0098 ",
" \u0082\u0082 !# N\u009am $$ \u0085\u0085\u008f\u009b\u009c \u009d\u0089\u009e\u009f\u00a0\u0093\u0093ffK\u007f\u00a1\u007f\u00a2 \u0097\u0098\u0099\u0098\u0099\u0099 \u00a3\u00a4 ",
" \u0082 !#\u009a\u00a5\u00a6\u00a7\u00a8 \u00a9\u00a9 \u008f\u008f\u00aa }\u0089\u009e\u009e\u009f\u009f\u0093\u0093f\u00ab\u0094\u00ac\u00ad\u00a2\u00ae\u00af\u00b0\u00b1\u0098\u0097\u0098\u0099 \u00a3\u00a4\u00a4\u00b2\u00b2 ",
" \u0082\u0082 ! \u00b3\u00a5\u00b4\u00b4\u00a8 A$\u008f\u00b5\u00aa \u0089\u0089\u00b6\u00b7\u009f\u009f\u00b8\u00b8\u00b9\u00ba\u0094K \u007f\u00bb\u00bc\u00bd\u00be\u00bf\u0099\u0099 \u00c0\u00a3\u00a4\u00a4\u00b2\u00b2 ",
" \u0082\u0082 !#\u00a7\u00a5\u00c1 \u00c2\u00a8\u008f\u00c3\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00c6\u00c6\u00c7\u00b8\u00c8\u00b9#\u00c9\u0094\u00b1\u00bc\u00bb\u00bb\u00ca\u00cb\u00cb\u0099\u00a3\u00c0\u00a3\u00a4\u00b2\u00b2 ",
" \u0082 \u00cc#\u00cd\u00ce \u00cf\u00c2\u008f\u00d0\u00c4\u00c4\u0089\u0089\u009e\u00c5\u00d1\u00d2\u00d3\u00c7\u00d4\u00d4\u00d5#\u00d6\u00d7\u00d8\u00be \u00cb\u00cb\u00cb\u00c0\u00d9\u00a3\u00a4 \u00b2\u00b2 ",
" \u0082\u0082 \u00cc#\u00cd\u00da\u00db\u00dc \u00c4\u00c4\u00dd\u0089\u009e\u00de\u00df\u00e0\u00d2\u00d2\u00c7\u00e1\u00e2\u00e3\u00d6\u00d6\u00d7\u00d8\u00cb\u00cb \u00e4\u00e4\u00a3\u00a4\u00e5\u00b2\u00b2 ",
" \u0082\u0082\u00e6 \u00cc!\u00cd\u00e7\u00e8 \u00e9\u00ea\u00eb\u0089\u0089\u00ec\u00de\u00de\u00df\u00ed\u00ee\u00ef\u00e2\u00e2\u00e3\u00d6\u00d6 \u00f0\u00f1\u00c0\u00a3\u00a4\u00f2\u00f3\u00f3\u00e5\u00f4 ",
" \u0082\u00e6\u00e6k#\u00f5\u00f6\u00f7\u00e9\u00f8\u0089\u0089\u00ec\u00ed\u00de\u00de\u00ee\u00ee##\u00f9\u00e2\u00e2\u00fa\u00fb \u00fc\u00fd\u00fd \u00f2\u00e5 \u00f4 ",
" \u0082\u0082\u00e6\u00f5\u00f5\u00fe\u00f6\u00f6\u00f6\u0089\u00ec\u00ed\u00ed\u00ed\u00ff##\u0100\u00be\u00be\u0101\u0102\u0103\u0104\u0105\u0105\u0106\u00fd\u0107 \u00f2\u0108\u0108\u0108\u0108\u0109\u0109 ",
" \u0082\u0082\u00e6k\u00fe!#\u010a\u010a\u00ed\u010b\u010c##\u010d\u00be\u00be \u010e\u010f\u0110\u0110\u0103\u0111\u0112\u0113\u0114\u00f0\u0115\u00f2\u0116 \u00f4 ",
" \u0117 \u0118\u0119\u011a\u011b\u011c\u010a\u010a###\u011d\u00be\u00be\u010e\u010e\u00cc\u011e\u011f\u0120\u0121\u0121\u0122\u0123\u0123\u0124\u0125\u0126\u00f2\u0116\u0116\u00f4\u00f4 \u0127\u0127\u0127 ",
" \u0117\u0117\u0118 \u0082\u0082\u0128\u010a\u010a\u0129\u012a\u012a\u011d\u011d\u011e\u011e\u011b\u011e\u012b\u012c\u012d\u0121\u012e\u012f\u0130\u0131\u0131\u0131\u0123\u0123\u00f0\u00f2\u0116\u0116 \u0127\u0127\u0132\u0132\u0132\u0132\u0132 ",
" \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u012a\u0136\u011e\u011e\u011e\u011d \u0137\u0138\u011f\u012d\u0139\u013a\u012f\u012f\u0101\u013b\u013b\u013b\u013b\u0131\u00f0\u0107\u00f2\u013c\u013d\u013d\u0132\u0132\u0132\u0132 ",
" \u0117\u0118\u0118\u0133\u0133\u0134\u0135\u0135\u0135\u012a\u013e\u013f \u0140\u0140\u0141\u012d\u0139\u013a\u013a\u0142\u0101\u0101\u0143\u0144 \u0145\u013b\u0131\u0146\u0147\u0147\u013d\u013d\u0148\u0148 ",
" \u0117\u0117\u0118\u0149\u0149 \u0135\u0135\u0135\u014a\u014b\u014c\u014c\u014d\u014e \u0140\u012b\u011f\u012d\u0139\u013a\u014f\u0150 \u0151\u0101\u0101\u0144 \u0145 \u0152\u0147\u0147\u0107 \u0153\u0148\u0148\u0148\u0148\u0148 ",
" \u0117\u0117\u0118 \u0149\u0128\u0135\u0135\u014a\u0154\u014c\u014c \u014e\u014d\u012b\u011f\u012d\u012d\u013a\u013a\u0155\u0156\u0156\u0156\u0156\u0101\u0101\u0144\u0144\u0145\u0157\u0152\u0158 \u0159\u0107 \u0153 \u0148\u0148\u0148 "
]
}

View file

@ -0,0 +1,887 @@
{
"keys": [
"",
"330",
"155",
"74",
"57",
"749",
"788",
"201",
"202",
"181",
"691",
"774",
"228",
"46",
"523",
"73",
"530",
"384",
"286",
"385",
"1",
"156",
"644",
"361",
"531",
"43",
"449",
"93",
"328",
"527",
"605",
"589",
"288",
"215",
"635",
"532",
"588",
"154",
"138",
"287",
"637",
"638",
"529",
"576",
"362",
"348",
"45",
"639",
"497",
"300",
"329",
"237",
"600",
"137",
"534",
"636",
"595",
"103",
"14",
"180",
"232",
"593",
"104",
"353",
"526",
"592",
"594",
"136",
"352",
"327",
"323",
"203",
"490",
"415",
"442",
"342",
"258",
"528",
"596",
"599",
"157",
"343",
"331",
"257",
"598",
"412",
"313",
"335",
"277",
"89",
"597",
"344",
"431",
"276",
"126",
"113",
"108",
"107",
"591",
"590",
"407",
"414",
"147",
"99",
"369",
"413",
"337",
"97",
"124",
"122",
"110",
"174",
"406",
"75",
"82",
"83",
"72",
"278",
"173",
"472",
"481",
"336",
"159",
"153",
"100",
"102",
"96",
"200",
"266",
"265",
"263",
"269",
"231",
"446",
"66",
"409",
"410",
"315",
"179",
"182",
"419",
"392",
"391",
"390",
"525",
"417",
"411",
"183",
"479",
"473",
"146",
"475",
"474",
"401",
"421",
"445",
"356",
"483",
"480",
"551",
"583",
"325",
"324",
"476",
"582",
"364",
"389",
"393",
"839",
"724",
"440",
"227",
"620",
"462",
"477",
"268",
"267",
"225",
"464",
"16",
"271",
"535",
"463",
"299",
"693",
"261",
"270",
"247",
"548",
"467",
"465",
"422",
"241",
"466",
"238",
"239",
"246",
"489",
"634",
"671",
"333",
"326",
"488",
"482",
"633",
"448",
"243",
"248",
"461",
"460",
"332",
"378",
"577",
"484",
"471",
"381",
"25",
"188",
"470",
"565",
"469",
"334",
"379",
"355",
"284",
"279",
"175",
"667",
"562",
"380",
"665",
"550",
"373",
"354",
"632",
"485",
"570",
"363",
"575",
"673",
"585",
"131",
"404",
"285",
"587",
"78",
"145",
"85",
"41",
"739",
"478",
"87",
"121",
"40",
"358",
"226",
"260",
"283",
"687",
"690",
"486",
"133",
"672",
"95",
"322",
"321",
"195",
"264",
"194",
"177",
"396",
"359",
"402",
"55",
"686",
"619",
"15",
"382",
"397",
"319",
"735",
"212",
"236",
"282",
"280",
"618",
"615",
"614",
"403",
"376",
"59",
"204",
"786",
"640",
"641",
"375",
"374",
"400",
"320",
"58",
"773",
"199",
"692",
"584",
"377",
"395",
"405",
"398",
"56",
"579",
"670",
"31",
"357",
"505",
"493",
"784",
"743",
"50",
"92",
"38",
"213",
"847",
"741",
"492",
"841",
"254",
"747",
"827",
"568",
"39",
"53",
"439",
"753",
"224",
"607",
"5",
"61",
"158",
"840",
"438",
"214",
"835",
"223",
"626",
"22",
"13",
"838",
"302",
"54",
"52",
"708",
"769",
"697",
"165",
"118",
"62",
"494",
"491",
"301",
"9",
"222",
"622",
"423",
"296",
"317",
"318",
"252",
"631",
"495",
"304",
"710",
"36",
"123",
"308",
"760",
"762",
"630",
"621",
"674",
"2",
"3",
"253",
"255",
"846",
"77",
"316",
"771",
"628",
"453",
"291",
"383",
"830",
"722",
"564",
"295",
"292",
"365",
"845",
"617",
"624",
"666",
"662",
"581",
"42",
"294",
"726",
"694",
"627",
"654",
"661",
"456",
"48",
"47",
"716",
"732",
"836",
"623",
"507",
"629",
"606",
"651",
"571",
"580",
"574",
"572",
"293",
"837",
"613",
"457",
"65",
"459",
"23",
"764",
"844",
"144",
"125",
"758",
"834",
"831",
"719",
"780",
"184",
"616",
"679",
"681",
"458",
"833",
"825",
"166",
"139",
"682",
"17",
"511",
"509",
"29",
"832",
"770",
"772",
"766",
"768",
"689",
"842",
"220",
"610",
"675",
"518",
"63",
"26",
"27",
"713",
"219",
"221",
"506",
"677",
"120",
"498",
"680",
"35",
"30",
"714",
"730",
"738",
"678",
"676",
"573",
"37",
"443",
"740",
"717",
"502",
"642",
"130",
"444",
"703",
"826",
"767",
"501",
"503",
"142",
"117",
"18",
"28",
"742",
"731",
"745",
"90",
"569",
"70",
"20",
"715",
"808",
"170",
"727",
"515",
"514",
"521",
"755",
"191",
"185",
"684",
"557",
"516",
"513",
"522",
"311",
"234",
"556",
"519",
"517",
"701",
"310",
"545",
"450",
"699",
"696",
"733",
"350",
"211",
"520",
"303",
"725",
"729",
"702",
"822",
"210",
"64",
"820",
"349",
"524",
"140",
"744",
"746",
"815",
"813",
"189",
"192",
"190",
"555",
"135",
"24",
"705",
"698",
"712",
"707",
"193",
"553",
"538",
"546",
"643",
"33",
"34",
"510",
"345",
"721",
"818",
"539",
"750",
"795",
"817",
"351",
"559",
"603",
"601",
"604",
"794",
"793",
"783",
"683",
"206",
"544",
"76",
"734",
"819",
"781",
"789",
"32",
"706",
"805",
"785",
"787",
"297",
"12",
"711",
"235",
"105",
"44",
"542",
"759",
"807",
"791",
"852",
"290",
"347",
"289",
"536",
"51",
"757",
"728",
"811",
"810",
"425",
"160",
"430",
"169",
"778",
"704",
"504",
"541",
"779",
"709",
"134",
"98",
"4",
"346",
"809",
"339",
"305",
"685",
"148",
"752",
"341",
"167",
"162",
"163",
"149",
"754",
"748",
"340",
"10",
"168",
"67",
"828",
"540",
"824",
"782",
"688",
"109",
"554",
"763",
"756",
"428",
"112",
"68",
"496",
"127",
"229",
"128",
"161",
"761",
"829",
"132",
"249",
"176",
"561",
"306",
"537",
"111",
"171",
"307",
"432",
"309",
"19",
"164",
"250",
"178",
"695",
"129",
"116",
"804",
"775",
"197",
"360",
"21",
"802",
"800",
"806",
"803",
"801",
"799",
"797",
"798",
"217",
"216",
"718",
"69",
"150",
"7",
"790",
"338",
"843",
"720",
"152",
"151",
"86",
"8",
"207",
"796",
"233",
"88",
"218",
"560",
"209",
"6",
"777",
"452",
"208",
"172",
"776",
"558",
"451"
],
"data": {},
"grid": [
" ! ##$ %%&'' ( )) *** ",
" ! ##$ %%+', ( ))) ** - ",
" !! #.$ %%&+' ( ))) ** - ",
" / 0 ! #.$ %%&', ( ))) ** - ",
" / 1 0 ! #.$ 2 %%&+', ( ))3 *** - ",
" / 1 00 !! #.$ 4 2 %%&', ( )) 33 ** -- ",
" / 1 000 ! #.$ 4 222 %%%+',55 ( )) 3 ** -- ",
" / 1 66700 ! 8888 ##.$4 22 %%&',555 ( )) 3 ** -- ",
" / 1 99667000 ! 888 #..$4 222 :%%+',55; ( )) 33*** -- ",
" / 1 99 667700 ! 8 ##.$$4 22 :%%&', 55 ( )) 33** -- ",
" / 1 99 66770<0 ! 8 ##.$=422 :%%+',55; ( )) **3 -- ",
" />>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ",
" / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%&+',555 ( ) H 3--- BB BB ",
" / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #OGG= ::%%&' ,55; ( ) * 3- B ",
" //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ",
" / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&+ ,55; () TT - BBBBBBBBB ",
"W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ",
"//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&+ ,555 ))TT] - BB ^ ",
"bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ",
"/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ",
" bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&' ,555 hh iT ] - B nnn ",
" o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ",
" o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{",
" oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081",
" o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ",
" o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',5\u008d\u008e\u008eh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0090\u0090\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0091\u0081\u0081 ",
" o j kq |||\u0084\u0084\u0092\u0087\u0086\u0086 \u0093\u0088\u0088\u0088\u0088\u0088\u0088\u0094\u0095`\u0089\u0089\u0089\u0089\u0089\u0089\u0089\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008d\u008e\u008e\u0082\u0082\u0082\u0082\u0082\u0096\u0096\u0096\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u008f\u0097 -- \u0098 \u0091 ",
" o jj \u0099\u009a\u0099 kkk| \u009b\u0087\u0092\u0092 \u0086\u0086 \u0093\u0093\u009c\u009c\u0088\u0088\u009d\u009e\u009e\u009e\u009e\u009e\u009e\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u0096\u0096\u00a0\u0096\u0096\u0096\u0096 \u00a1\u00a2\u00a3\u00a4\u00a4\u00a5 \u00a6\u00a6\u00a6\u00a6--- \u0098\u0098 \u0091 ",
" o jj \u0099\u0099\u009a \u0099\u0099\u0099 k \u0087\u009b \u0092 k\u00a7\u009c\u009c\u00a8\u009d\u00a9\u00a9\u00aax\u00ab %%%&',55 \u00ac \u00a1\u00a2 \u00ad\u00ad\u00a5\u00a6-- \u0098 \u0091 ",
" o j \u0099 \u009a \u0099 kkkkkkkkkk\u00aekkk \u009c\u009c\u009d\u009d\u00af\u00b0 x\u00b1 %%&&',55 \u00ac \u00a1\u00a2 \u00ad - \u0098\u0098 \u0091 ",
"\u00b2\u00b2\u00b2 o j \u0099 \u009a \u00b3 \u00b4\u00a7\u009c\u009d\u009d\u00af\u00b0x \u00ab\u00b1 %%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ",
" \u00b2\u00b2\u00b2o j \u0099\u0099 \u009a\u009a \u00b6\u00b7 \u00b3 \u00b4\u00a7\u00b8\u009d \u00af\u00b0x\u00ab \u00b1%%%&+',55 \u00ac \u00a1\u00a2\u00b5\u00ad - \u0098 \u0091 ",
" \u00b2\u00b2\u00b2 jj \u0099\u0099 \u009a \u00b9\u00ba \u00b6\u00b7\u00b7\u00b7 \u00bb\u00bb\u00bb\u00bb\u00bc \u00bd\u00b8\u00b8\u009d\u00af \u00b0x\u00ab\u00b1 %%%&+',5\u00be \u00ac \u00a1 \u00a2\u00b5\u00ad - \u0098 \u0091 ",
"\u00bf \u00b2\u00b2\u00b2 jj \u0099 \u009a \u00b9 \u00ba\u00ba\u00ba \u00c0 \u00b7\u00b7 \u00bb\u00bb\u00bb \u00bc \u00bd\u00b8\u009d\u009d\u00af\u00b0 x\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a1\u00a2\u00b5\u00b5\u00ad - \u0098 \u0091 ",
" \u00bf\u00bf \u00b2\u00b2 j \u0099\u00c1 \u009a\u009a\u009a\u00b9 \u00c2\u00c2\u00c0\u00b6 \u00b7 \u00c3 \u00c4 \u00bd\u00bd\u00b8\u009d \u00af\u00b0x\u00ab\u00ab\u00b1 %% &+'55\u00be \u00ac \u00a1\u00a2\u00a2\u00b5\u00b5\u00ad- \u0098 \u0091 ",
" \u00bf\u00bf j \u0099\u0099\u00c1 \u009a\u00c5\u00c5 \u00c6 \u00b6\u00b6\u00b6\u00b6\u00b6\u00b7 \u00c3 \u00c4 \u00bd\u00c7\u00b8\u009d \u00c8\u00c8\u00b0\u00c9\u00b1\u00b1 %% \u00ca\u00cb,55 \u00cc \u00ac \u00a1 \u00a2 \u00b5\u00cd\u00cd- \u0098 \u0091 ",
" \u00bf\u00ce\u00ce\u00ce jj j \u0099\u0099\u00c1\u00c1\u00cf\u00cf\u00cf\u00cf\u00cf\u00b9\u00cf \u00d0\u00c5 \u00c6 \u00b7 \u00c3 \u00c4\u00c4 \u00bd\u00b8\u00b8\u009d \u00b0\u00c9\u00b1 %%%&\u00ca',55 \u00cc \u00ac \u00a1\u00a1\u00d1\u00d1\u00d2\u00d3 -- \u0098 \u0091 ",
" \u00bf\u00bf\u00ce\u00cej jj \u0099\u00cf\u00cf\u00c1 \u00d4\u00cf\u00cf\u00d0 \u00c5\u00c6 \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%%&\u00ca',55 \u00cc \u00ac\u00ac \u00a1\u00d6\u00d1 \u00d3\u00d3 - \u0098 \u0091 ",
" \u00bf\u00bf \u00ce\u00ce \u0099\u00cf\u00cf \u00c1\u00c1\u00d7\u00d7\u00d7\u00d7\u00d7\u00d7\u00d8 \u00cf\u00cf\u00c6 \u00b7 \u00c3 \u00c4 \u00d9\u00bd\u00b8\u009d x\u00c9\u00ab %%%&\u00da',55\u00cc\u00be \u00ac \u00a1\u00a1\u00db\u00dc \u00d3 - \u00dd\u00dd\u0098\u0098 \u0091 ",
" \u00bf\u00bf \u00ce\u00ce \u0099\u00de\u00cf \u00d7\u00d7 \u00df \u00d7\u00d7\u00d7 \u00e0\u00cf\u00cf \u00b7 \u00c3 \u00e1\u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00dc\u00dc \u00d3 - \u00e2\u00dd \u0098 \u0091 ",
" \u00bf \u00ce\u00ce \u0099\u0099\u00cf\u00de\u00de\u00de \u00e3\u00e3\u00df\u00e3 \u00d7\u00e0 \u00cf \u00b7 \u00c3 \u00c4 \u00bd\u00b8\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1\u00a1 \u00db\u00db \u00d3 -- \u00e4\u00e5\u00e6 \u0098\u0098 \u0091 ",
" \u00bf \u00e7 \u0099 \u00cf\u00e8\u00e8\u00e8 \u00e3 \u00e3\u00e3 \u00e9\u00d7\u00d7 \u00cf \u00b7 \u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00da',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db -- \u00e4\u00e4\u00e5\u00e6 \u0098 \u0091 ",
" \u00bf\u00bf \u00e7\u00ec \u00ed\u0099 \u00cf\u00ee\u00ee\u00d7 \u00e3\u00e3 \u00e9\u00e3 \u00d7\u00d7 \u00cf\u00cf \u00b7 \u00ef\u00ef\u00ea\u00ea\u00ea \u00eb \u00bd\u00b8\u009d\u009d x\u00c9\u00ab \u00d5%% &\u00ca',55 \u00be \u00ac \u00a1 \u00db\u00db\u00db\u00db- \u00e4\u00f0\u00f1\u00f1\u00f1\u0098 \u0091 ",
" \u00bf \u00ec\u00ec\u00ed\u00ed \u0099\u00cf\u00f2\u00ee\u00d7 \u00e3 \u00e3 \u00d7\u00f3\u00f3\u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ef\u00ea\u00ea \u00eb \u00f5\u00bd\u00b8\u009d x\u00c9\u00ab \u00d5%% &\u00da' 55 \u00be \u00ac \u00a1\u00a1 \u00d3\u00d3 - \u0098 \u0091 ",
" \u00bf \u00f6\u00ed\u00f7\u00f7\u00f7\u00f7\u0099\u00cf \u00d7 \u00f8\u00e3 \u00e3 \u00d7\u00f3 \u00cf \u00b7 \u00f4\u00f4\u00ef\u00ef\u00ea \u00eb \u00f9\u00f5\u00f5\u00f5\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00ca' \u00fa\u00fa \u00be \u00ac\u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ",
" \u00f6\u00f6\u00f6 \u00f7\u0099\u00cf \u00d7\u00f8 \u00e3\u00e3 \u00e3 \u00d7 \u00cf\u00b7\u00b7 \u00f4\u00ef\u00ea\u00eb\u00eb \u00f9\u00bd\u00b8\u009d\u00f5\u00f5 x\u00c9\u00ab \u00d5\u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be \u00ac \u00a1\u00a1 \u00d3 - \u0098 \u00fb ",
" \u00f6 \u00ed\u00ed\u00f7\u00f7\u0099 \u00cf \u00d7 \u00e3\u00fc\u00e3\u00e3 \u00e3\u00e3 \u00d7 \u00cf\u00b7 \u00f4\u00f4 \u00bd\u00b8\u009d\u00f5 x\u00c9\u00ab\u00ab \u00d5%% &\u00cb'\u00fa\u00fa\u00fa \u00be\u00be \u00ac \u00a1 \u00d3 - \u0098 \u00fb ",
" \u00f6\u00f6 \u00ed\u00f7\u0099 \u00cf\u00cf \u00fd\u00d7\u00d7\u00fc\u00fc \u00fe \u00d7 \u00b7\u00b7 \u00ff \u00b8\u00b8\u009d\u0100 x\u00c9\u00ab \u00d5%% &\u00cb,\u00fa\u00fa\u0101\u0101 \u00be \u00ac \u00a1 \u0102\u0102\u0103 - \u0098 \u00fb \u0104\u0104\u0104",
" \u00f6\u00f6 \u00ed\u00ed \u00cf\u00cf\u0105 \u00d7\u00d7\u00d7 \u00fe \u00d7\u00d7 \u00cf\u00b7 \u0106 \u00ff \u00b8\u00b8\u009d\u0107xxx\u00c9\u00ab \u00d5%% &\u00cb'\u00fa\u00fa \u0101 \u00be \u00ac \u00a1\u0102\u0102\u0102\u0103\u00d3 -- \u0098 \u00fb \u0104\u0104\u0104\u0104 ",
" \u00f6 \u0099\u0099 \u00cf \u00d7\u0108\u00d7\u00d7\u00d7 \u0109 \u00cf\u00b7\u00b7 \u0106\u010a \u00ff \u00bd\u00b8\u009d\u009d \u00c9\u00ab \u00d5%% &\u00cb\u00fa\u00fa\u00fa\u010b\u010b \u00be \u00ac \u00a1\u00a1 \u0102\u00d3 - \u0098 \u00fb\u00fb \u0104\u0104\u0104\u0104 ",
" \u00f6 \u0099\u0099 \u0108\u010c\u010c \u0109 \u00cf\u010d \u010e\u010a\u010a\u010a\u010a\u010f \u0110 \u0111\u0111\u00b8\u009d\u009d \u00c9\u00c9\u00ab \u00d5\u00d5%% &\u00cb\u00fa\u00fa\u010b \u010b \u00be\u00be \u00ac \u00a1 \u0102\u00d3 - \u0098\u00fb\u00fb \u0104\u0104\u0104\u0104 ",
" \u00f6\u0112 \u0099\u0099 \u010c \u00cf\u0109\u010d \u010e \u010a\u010a\u0110 \u0111\u0113\u0113\u0113\u00b8\u00b8\u009d \u0114\u00ab \u00d5%%% &\u00fa\u00fa\u00fa\u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 - \u0115\u00fb\u0104\u0104\u0104\u0104 ",
" \u00f6\u0116\u0116\u0112\u0112 \u0099 \u010c\u00b7\u00b7\u010d\u010d \u010a\u010a \u010a\u010a \u0110 \u0111\u0113\u0113\u0113\u0117\u0118\u0119\u009d\u011a\u011a \u0114 \u00ab\u00ab\u00d5%% &\u00fa\u00fa \u010b \u010b \u00be \u00ac \u00a1 \u0102\u00d3 -- \u0115\u0115\u0104 ",
"\u011b \u00f6 \u0116\u0116\u0112\u0112 \u0099\u0099 \u011c\u00b7\u00b7\u00b7\u00b7 \u010d\u010d \u010a\u010a\u010a \u0110 \u0111\u0113\u0113\u0117\u0117\u0117\u0118\u011d\u011e\u011a\u011a\u011f\u011f\u0114 \u00d5\u00d5%% \u00fa\u00fa\u00fa,\u010b \u010b\u010b \u00be\u0120\u0120\u0120 \u00ac \u00a1 \u0102\u0102\u0121\u00d3\u00d3--\u0122\u0122\u0123 \u0115\u0115 ",
"\u0124\u0125\u0125 \u00f6 \u0116\u0112\u0112 \u0099\u0099 \u011c\u0126\u0126 \u010d \u010a\u010a \u0110\u0111\u0127\u0113\u0117\u0128\u0128\u0128\u0129\u011e\u011e\u012a\u012b\u011f\u011f\u011f\u00d5\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b\u010b\u00be\u00be \u00ac\u00ac \u00a1 \u0102\u0121 \u012c\u012d\u012e\u0123 \u0115\u0115 \u012f\u012f",
" \u0124\u0125\u0125 \u00f6 \u0116\u0116\u0112\u0112 \u0099\u011c\u0126 \u0126 \u010d \u0110 \u0127\u0127\u0128 \u0129\u0129\u011e\u011e\u0130\u012b\u012b\u011f\u011f\u00d5\u00d5\u00d5%% \u00fa\u00fa\u00fa', \u010b \u010b \u0131 \u00ac\u00ac\u00ac \u00a1 \u0121 \u012c \u012e\u012e \u0115\u0115 \u012f\u012f\u012f\u012f ",
" \u0125\u0125 \u00f6\u00f6 \u0116\u0116\u0112\u0112 \u011c\u0126\u0126\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0128 \u0129\u0129\u011e\u011e \u0132\u012b\u012b %% \u00fa\u00fa\u0133\u00da', \u010b \u0131 \u00ac\u00ac\u00ac\u00ac\u00ac\u00ac\u00ac \u00a1 \u0121 \u012d \u0123 \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134",
" \u0135 \u0124\u0125\u0125 \u0116\u0112\u0112 \u0099\u0126\u0126\u010d\u010d \u0110\u0111\u0127\u0127\u0136\u0136\u0137\u0137 \u0129\u0129\u011e\u011e \u0138 \u0132\u012b %%% \u00fa\u00fa\u00fa\u0139\u013a\u00cb, \u010b \u013b\u010b \u00ac\u00ac\u00ac\u00ac\u013c\u013c\u013c \u013d \u013e \u0115\u0115 \u012f\u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 ",
" \u013f \u0135 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141\u0126 \u0110\u0111\u0127\u0127\u0136\u0136\u0136\u0136\u0137\u0137\u0129 \u011e \u0142\u0143\u0132\u0132\u012b\u0144%% \u00fa\u00fa\u00fa\u0133\u0139\u00da', \u010b \u013b \u010b \u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u013c\u0145\u0145\u0115\u0115 \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0134 \u0146\u0146\u0146\u0146",
"\u00bf \u013f \u00f6 \u0147\u0125\u0125\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0110\u0110\u0127\u0127\u0128\u0149\u0149\u014a\u0136\u0136\u0137\u0129 \u011e\u0143\u0143\u0143\u014b\u0132\u014c\u014d\u014d% \u00fa\u00fa\u0133\u0139 \u013a\u014e' \u010b\u010b \u013b\u013b \u010b\u010b \u014f\u014f \u012f\u012f\u012f\u012f \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 ",
"\u00bf \u00f6\u00f6 \u0147\u0124\u0125\u0148 \u0116\u0112\u0112 \u0140\u0140\u0141 \u0151\u0151 \u0110\u0111\u0127\u0128\u0149\u0149\u014a\u014a\u0136\u0136 \u0129\u0152\u0143\u0143\u011e\u011e\u0153\u0154\u0155\u014d\u0156\u0156%\u00fa\u00fa\u0133 \u0139 &\u014e', \u010b \u013b\u013b \u010b\u010b \u012f\u012f\u012f \u0134\u0134\u0134\u0134\u0146\u0146\u0150\u0146\u0150\u0150 ",
" \u00f6\u00f6 \u0124\u0125\u0125 \u0116\u0116\u0112 \u0140\u0141 \u0151\u0157 \u0158\u0111\u0127\u0128\u014a\u0149\u014a\u014a\u0136\u0159\u0159\u0159\u0129\u0152 \u011e\u011e\u0154\u014d\u014d\u0156\u0156\u00fa\u00fa\u00fa\u0133 \u0139 \u00da\u014e', \u010b \u015a\u013b \u010b\u010b \u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150 ",
"\u015b \u00f6 \u0147\u0125\u0125 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u0157\u015c \u0110\u0111\u0127\u0127\u0128 \u014a\u0159\u0159\u0159\u0159\u0159\u0159\u0129 \u014d\u014d\u014d\u0156\u0156\u0156\u00fa\u00fa\u0133 \u0139 &\u014e', \u010b\u015a\u015a\u013b\u013b \u013b\u013b\u013b \u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0150\u0150\u0150 \u015d",
"\u015b\u00f6 \u0147\u0124\u015e\u0148 \u0116\u0116\u0112\u0112 \u0140\u0141\u0141 \u015c\u015c \u015c \u0110\u0111\u0127\u0127\u0128\u015f\u015f\u015f\u0159\u0159\u0159\u0159 \u0160\u0160\u0161\u0161\u0161\u014d\u014d\u014d\u014d\u014d\u0156\u0156\u00fa\u00fa\u0133\u014c\u014c & ',, \u010b\u015a \u013b\u013b \u013b\u013b\u0162\u013b\u013b \u0134\u0134\u0134\u0146\u0146\u0146\u0146\u0150\u0150\u0150 \u015d\u015d\u0163",
" \u015b \u0164\u0125\u0125 \u0116\u0116\u0140\u0140\u0141 \u015c\u015c \u015c\u0165 \u0110\u0111\u0127\u0128\u015f\u015f\u015f\u015f\u0161\u0161\u0161\u0161\u0161\u0160\u0160\u0161\u0161\u0161\u014d\u014d\u014d \u0156\u0156\u0156\u00fa\u00fa\u0133 \u014c \u0166 \u014e', \u010b\u010b \u013b\u013b \u013b\u0162\u0162\u0162\u013b\u013b\u013b \u0167\u0167\u0167\u0134\u0134\u0134\u0134\u0146\u0146\u0146\u0146 \u0150\u0150\u0150 \u015d\u0163\u0163\u0168\u0169",
"\u016a \u015b\u015b \u0124\u015e\u0125 \u0116\u0140\u0141 \u015c \u0165\u0165 \u0110\u0111\u0127\u0128\u015f\u015f\u015f\u016b\u016b\u016b\u016b\u016b\u016b\u016b\u0160\u0160\u016b\u0161\u0161 \u016c\u0156\u00fa\u00fa\u0133\u0154\u0155\u014c\u014c \u0166\u00da\u014e',\u016d \u010b\u010b \u013b\u013b \u013b \u0162\u0162\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0167\u0134\u016e\u0134\u0146\u0146\u0146\u0146\u016f\u016f \u0150\u0150 \u015d\u0163\u0163\u0168\u0169\u0169 ",
"\u0170\u016a \u015b\u015b \u0147\u0124\u0125\u0148 \u0140\u0141 \u015c \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u016b\u016b\u016b\u016b\u0171\u0171\u0171\u016b\u016b\u0160\u016b\u016b\u016b \u016c\u0172\u0172\u0133\u0173\u0173\u0154\u0155\u014c \u0174\u00da\u014e\u00cb ,\u016d \u0175\u0175\u010b\u010b \u013b\u013b\u0176 \u0167 \u0177\u0134\u016e\u016e\u0146\u0146\u0146 \u0178\u016f \u0150\u0150 \u015d\u0163\u0163\u0168\u0169\u0169 ",
"\u0170\u016a\u016a \u0179\u015b \u0147\u0124\u0125\u0125 \u0140\u0141\u0141 \u015c \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u016b\u016b\u0171\u0171\u0171\u0171\u0171\u0171\u0171\u0171\u0160\u016b\u016b\u016b\u016b\u016b \u016c\u016c\u0172\u0172\u017a\u017b\u0173\u0173\u0155\u014c \u0166\u00da \u014e',\u016d\u016d\u0175\u0175 \u0175\u0175\u0175\u010b \u0176\u0176\u0176 \u0167 \u0177\u0177\u0177\u016e\u017c\u0146\u0146 \u0178\u0178\u0178\u016f \u0150 \u015d\u0163\u0163\u0163\u0168\u0169\u0169 ",
"\u0170 \u016a\u016a\u0179 \u015b \u0124\u0125\u0125 \u0140\u0140\u0141 \u015c\u015c \u0110\u0110\u0111\u0127\u015f\u015f\u016b\u016b\u0171\u0171 \u017d\u017d \u0160\u0160\u0171\u016b\u016b\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0173\u0154\u014c \u0166\u00da \u014e',,\u016d\u0175 \u010b\u010b \u0167\u0167\u0167\u0177\u0177\u0177\u0180\u016e\u0181\u017c \u0178\u0178\u0178 \u016f \u0150 \u015d\u0163\u0163\u0182\u0168\u0169\u0169 \u0183\u0183",
"\u0170\u016a\u016a\u0179\u0179 \u015b\u015b \u0147\u0124\u0125\u0148 \u0140\u0140\u0141 \u015c\u015c \u0110\u0111\u0127\u015f\u015f\u015f\u016b\u0171\u0171 \u017d \u017d\u017d\u017d\u017d \u0184\u0184\u0171\u0185\u0185\u016b\u016b\u017e\u017e\u017f\u017a\u017a\u017b\u017b\u0173\u0173\u0155\u014c \u0174\u00da \u014e', \u016d \u010b\u010b \u0167\u0167\u0167\u0177\u0177\u0177\u0180\u017c\u017c\u0181 \u0178\u0178\u0178 \u016f\u016f \u0150 \u015d\u0163\u0163\u0168\u0168\u0169\u0169 \u0183\u0183\u0183 ",
" \u016a\u0179\u0179 \u015b\u015b \u0147\u0124\u0125\u0148\u0140\u0141 \u0186\u0187 \u0110\u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0171 \u017d\u017d\u0188 \u017d\u017d\u0189\u0184\u0189\u0185\u0185 \u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0173\u0155\u014c \u0174\u00da \u014e',, \u016d \u010b\u010b\u0167\u0177\u0177\u0177\u0180\u0180\u017c\u017c\u0181 \u0178\u0178 \u018a\u018a\u016f \u0150 \u015d\u0163\u0163\u0168\u0168\u0169\u0169 \u0183\u0183 ",
"\u016a \u0179\u018b \u015b\u015b \u0124\u0148\u0148\u0141 \u0186 \u0187 \u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0171 \u017d\u017d \u0188\u0188\u0188\u0188\u0188 \u018c\u0184\u0189\u0185\u0185\u0185\u017e\u017e\u017f\u017f\u017a\u017a \u017b\u017b\u0173\u0155\u014c\u018d\u018e\u018e\u018e\u018f\u014e\u00cb', \u016d \u0190\u0190\u0177\u0180\u016e\u017c\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a\u018a\u016f\u016f\u0150 \u015d\u0163\u0163\u0168\u0169\u0169\u0169 \u0183\u0183 ",
" \u0191 \u015b\u015b \u0140\u0147\u0141 \u0192 \u0187 \u0111\u0111\u0127\u015f\u015f\u016b\u016b\u0171 \u017d\u017d \u0193\u0193 \u0188\u0188\u0188\u017d\u0184\u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u017a\u017a\u017a\u017b\u017b\u0173\u018d \u0174\u0194 \u018f\u018f\u014e',, \u016d \u0177\u0177 \u0190\u0190\u0190\u017c\u0181 \u0178\u0178\u0178 \u018a\u018a \u016f\u0150\u0150 \u015d\u0163\u0182\u0168\u0169\u0169\u0169 \u0183\u0183 ",
"\u0179 \u015b\u015b \u0140\u0140\u0141 \u0192\u0192\u0187\u0187 \u0111\u0127\u015f\u015f\u015f\u016b\u0171\u0195\u0195\u0195\u0193\u0193 \u0193\u0193\u0193 \u0188\u017d \u0184\u0189\u0185\u0185\u017e\u017e\u017f\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174\u0194 \u018f\u014e\u00cb', \u016d\u016d \u0177\u0177 \u0198\u016e\u0199\u017c\u0190\u0190 \u016f\u016f\u016f\u016f\u018a\u018a\u018a \u016f \u0150 \u0163\u0163\u0182\u0168\u0169\u0169 \u0183\u0183 ",
"\u019a \u019b\u019b\u015b \u0140\u0141 \u019c\u019c\u019c\u019c\u019c \u0111\u0127\u0127\u015f\u015f\u016b\u0171\u0195\u0195\u0195 \u0193\u0193\u0193\u0193 \u0184\u0189\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174\u00da \u018f \u014e',, \u016d \u0177\u0177 \u0180\u016e\u017c\u017c\u0181\u0181 \u019f\u019f \u016f\u016f\u016f\u016f\u01a0\u01a0\u016f\u016f\u0150 \u015d\u015d\u0163\u01a1\u0168\u0169\u0169 \u0183\u0183 ",
" \u019b \u015b \u0140\u0141\u0141 \u019c\u019c\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u015f\u015f\u016b\u016b\u0195\u0195\u0195 \u0193 \u0184\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u017b\u0196\u0197 \u0174 \u0194 \u01a3\u014e\u00cb',\u01a4\u0177\u0177 \u0180\u016e\u017c\u017c\u0181\u0181 \u01a0\u01a0 \u0150\u0150 \u015d\u0163\u0163\u01a1\u0168\u0169\u0169 \u0183\u0183 ",
" \u01a5 \u019b \u015b\u015b\u0140\u0141\u0141 \u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2\u01a2 \u0111\u0127\u0127\u015f\u015f\u016b\u016b\u0195\u0195\u0195 \u01a6\u01a6\u01a7\u01a7\u01a7\u01a7 \u01a8\u01a8\u0184\u0189\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0196 \u0174 \u0194 \u01a9\u01aa\u01a4\u01a4 \u0180\u016e\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0163\u0163\u01a1\u0169\u0169\u0169 \u0183\u0183 ",
" \u01a5\u01a5\u01ab\u01ab\u01ab \u015b\u0140\u0141 \u01a2\u01a2\u01a2 \u01a2\u01a2 \u0111\u0127\u015f\u015f\u015f\u016b\u0195\u0195\u0195 \u01a7\u01ac\u01a7 \u01a7\u01a7\u01a7 \u01ad\u01ad\u01ae\u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196\u0197 \u0174 \u0194\u00da \u01a9\u01a9\u01aa\u01a4\u01a4\u017c\u017c \u0181\u0181 \u01a0\u01a0 \u0150 \u015d\u0163\u01a1\u01af\u01af\u0169\u0169 \u0183\u0183\u0183 ",
"\u01b0\u01b1 \u019b\u019b\u01ab \u01ab\u01ab\u01ab \u015b\u015b\u01b2\u01b3 \u019c\u01a2\u01a2\u01b4\u01b4\u01b4\u01b4 \u01a2\u01a2\u0127\u0127\u015f\u015f\u01b5\u0195\u0195 \u01b6\u01a7 \u01ac\u01ac \u01a7\u01ad\u01ad \u01ae\u0184\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u017b\u0196 \u0174\u0174 \u0194\u00da \u0177\u0177\u01a9\u01b7\u01aa\u01a4\u01a4 \u0181\u0181 \u01a0\u01a0\u01a0\u01a0\u01a0 \u01b8\u0150\u015d\u0163\u0182\u01af\u0168\u0169\u0169 \u0183\u0183 ",
"\u01b1\u01b0\u01b0 \u01b9\u01b9 \u01ab \u01ba\u01bb\u01b2\u019c\u01a2\u01a2\u01b4\u01b4 \u01b4 \u01bc\u0111\u0127\u0127\u01bd\u015f\u01be\u01b5\u01b5 \u01a7\u01b6\u01b6\u01b6 \u01ac\u01ac \u01a7 \u01ae\u0184\u0185\u019d\u019e\u019e\u016b\u016b\u017a\u017a\u0196\u0196 \u0174 \u01bf\u01c0\u01c1\u0177 \u0180\u0180\u01a9\u01a9\u01aa\u01a4\u01a4\u0181 \u01a0\u01a0\u01a0\u01a0 \u01a0\u01a0\u01a0 \u015d\u015d\u0163\u01af\u01af\u0169 \u0183\u0183 ",
"\u016a\u016a\u01c2\u01b0 \u01c3 \u01c4\u01ab \u01c5\u01c6\u01c7\u01a2\u01a2 \u01b4 \u01c8 \u01c9\u01ca\u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01b5 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac\u01ac\u01a7 \u01ae\u0184\u0184\u019d\u019d\u019e\u019e\u016b\u017a\u017b\u0196\u0197 \u0174\u0174 \u01bf\u01c0\u01c0\u01cc\u0180\u017c\u017c\u01a9\u01b7\u01aa\u01a4\u01a4 \u01a0\u01a0 \u01a0\u01a0\u015d\u01b8\u0163\u0168\u01af\u0169 \u0183\u0183 ",
" \u016a\u016a \u01cd\u01c3 \u019b\u01c4\u01c4 \u01c5\u01ce\u01a2\u01cf\u01b4 \u01c8 \u01c8\u01c9 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5 \u01d0\u01a7 \u01cb\u01cb \u01b6\u01b6 \u01ac\u01ac \u01ae \u0184\u0185\u019d\u019e\u01d1\u01d1\u01d1 \u0196 \u0174\u0174 \u01c1\u01c1\u01bf\u01c0\u01c0\u01d2\u017c \u0181\u0181\u01a9\u01b7\u01aa\u01a4 \u01a0\u01a0 \u01a0\u015d\u015d\u01d3\u0163\u0182\u0169\u0169 \u0183\u0183 ",
" \u016a \u01cd\u01cd\u019b\u019b\u01ab\u01ab \u01c5\u01ce \u01cf\u01cf\u01cf\u01c8 \u0111\u0127\u0128\u01bd\u01bd\u01be\u01b5\u01b5\u01d4\u01d4\u01a7\u01a7\u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6 \u01a7 \u01ae \u0184\u0184\u019d\u01d1\u01d1\u01d1\u01d1\u0196\u01d5\u0174\u0174\u01c1\u01c1\u01d6\u01d7\u01bf\u01c0\u01c0 \u0181\u0181\u0181 \u01d8\u01d9\u01da\u01da\u01a0\u01a0\u01a0\u01a0\u01a0 \u01a0\u015d\u01d3\u01d3\u0163\u0168\u0169\u0169 \u01db\u01db \u0183\u0183 ",
" \u016a \u01c3\u01dc\u019b \u01ab \u01c5\u01ce\u01dd\u01de\u01dd\u01cf\u01cf\u01cf \u0111\u0127\u0127\u01bd\u01bd\u01bd\u01b5\u01b5 \u01d4\u01df\u01df \u01d0\u01d0 \u01cb\u01cb \u01b6\u01b6\u01a7 \u01ae \u0184\u01d1\u01d1\u01d1\u01d1\u016b\u01d5\u01d5\u0174\u01c1\u01d6\u01e0\u01d7\u01d7\u01bf\u01c0\u01c0\u0181\u0181 \u01d8\u01d9\u01da\u01a0 \u01a0\u01d3\u01d3\u0163\u0163\u01e1\u0169\u0169\u01b8 \u01db\u01db \u01e2 ",
"\u01e3 \u016a \u01c3 \u01dc\u01ab \u01c5\u01ce\u01dd\u01de\u01e4\u01dd\u01dd\u01cf\u01cf \u0111\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5 \u01e6 \u01e7\u01d4\u01df\u01df \u01d0\u01d0 \u01cb\u01cb\u01a7\u01a7 \u01ae \u01d1\u01d1\u01d1\u01d1\u01e8\u01e8\u01d5\u01d5\u01e9\u01e0\u01ea\u01eb\u01ec\u01ed\u01bf\u01bf\u01c0 \u01d8\u01ee\u01d9\u01da\u01a0 \u01a0\u015d\u0163\u0163\u0168\u01e1\u01e1\u0169 \u01ef \u01f0\u01f0 \u01db\u01db\u01db \u01e2 ",
"\u01e3\u01e3\u016a \u01c3 \u01ab\u01ab\u01ab \u01f1\u01f1\u01dd\u01de \u01e4\u01f2\u01dd\u01dd\u01cf\u01cf\u0127\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5\u01f3\u01e6\u01e6\u01e7\u01d4\u01d4 \u01df\u01df \u01d0\u01d0\u01a7\u01a7\u01cb\u01a7 \u01ae\u01f4\u01f4\u01d1\u01d1\u01f5\u01f6\u01f6\u01e8\u01d5\u01d5\u01ea\u01eb\u01f7\u01ed\u0181\u0181\u01bf\u01c0\u01c0 \u01ee\u01d9\u01da\u01da \u01a0\u015d\u0163\u0163\u0168\u0169\u0169\u0169 \u01ef \u01f8\u01f0\u01f0\u01f0 \u01f9\u01db\u01db \u01e2 ",
" \u01e3\u01e3 \u01c3\u01fa \u01ab \u01c5\u01f1\u01dd\u01de\u01e4\u01e4\u01f2\u01fb \u01dd\u01cf\u0127\u0128\u01bd\u01bd\u01be\u01e5\u01e5 \u01f3\u01e7\u01e6 \u01e5\u01d4 \u01a7\u01a7\u01df\u01a7\u01a7\u01a7 \u01f4\u01f4\u01f4\u01f4\u01f4\u01fc\u01f5\u01f5\u01f6\u01f6\u01d5\u01d5\u01ed\u01ec\u0181\u0181\u0181 \u01bf \u01d8\u01d8\u01d9\u01da\u01a0 \u01a0\u01a0\u015d\u0163\u0163\u0168\u0169\u0169 \u01ef \u01f8\u01f8\u01f9\u01f9\u01f0 \u01e2 ",
" \u01e3\u01e3 \u01fd\u01fa\u01fa \u01ab \u01c5\u01c5\u01ce \u01fe\u01e4\u01f2\u01f2\u01fb\u01dd \u0127\u0128\u01bd\u01bd\u01bd\u0171\u01e5\u01e5\u01e5 \u01f3\u01e5\u01e5\u01e5\u01d4\u01e5 \u01ff\u01ff\u01f4\u01f4\u01f4\u01f4 \u0174\u01fc\u01fc\u01f5\u01f6\u01f6\u0200\u01d5\u01ec\u0181\u0181 \u0201\u0202 \u01d8\u01ee\u01d9\u0203\u0203\u0203\u0163\u0163\u0168\u0169\u0169 \u01ef \u01f8\u01f8 \u01e2 ",
"\u0174 \u01e3\u01e3\u01e3 \u01fa\u01ab \u01c5\u01ce \u01fe \u0204\u0205\u0206\u01dd\u01dd\u0127\u0127\u01bd\u01bd\u01bd\u0171\u0171 \u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01e5\u01d4\u01d4 \u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u01f4 \u0174\u0174\u01c1\u01e9\u01fc\u01f5\u01f6\u01f6\u01f6\u01d5\u0181 \u0208\u0208 \u0201\u0202 \u0203\u0203\u0209\u0209\u020a\u0168\u0169\u0169 \u01ef \u01db\u01db \u01e2 ",
"\u0174\u0174 \u020b\u01e3\u01e3\u01e3 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205\u020c\u01dd\u0127\u0127\u0128\u01bd\u01bd\u01be\u0171 \u01e5\u01e5\u01e5\u01e5\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u01d7\u01fc\u01fc\u01f5\u01f6\u01f6\u01d5\u020d \u0208\u0208\u020e \u0201\u0202 \u020f\u0203\u0209\u020a\u0210\u0210\u0210 \u01ef\u01db \u01db\u01db \u01e2 ",
"\u0211\u0174\u0174 \u0212\u0213\u01e3\u01e3\u0214\u0214 \u01fa\u01fa\u01fa \u01c5\u01ce\u01fe\u01fe\u0204 \u0205 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u0171 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0215\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u0207\u0207\u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u016e\u016e\u01f7 \u01fc\u01f5\u01f5\u0216\u0217\u020d\u0208\u0208 \u020e \u0201\u0202 \u020f\u020f\u0218\u0219\u021a\u0210\u0210\u0210\u01da \u01ef \u01db\u01db \u01e2 ",
"\u0211\u01c1\u01c1\u0174\u0212 \u0213\u0213\u021b\u0214\u0214\u0214\u0214 \u01fa\u01fa\u01fa\u01c5\u01ce\u01fe\u0204\u0204\u0205 \u020c \u0127\u0128\u01bd\u01bd\u01bd\u0171 \u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u01ff\u021c\u0215\u0215 \u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u01d7\u016e\u016e\u01f7 \u0181\u0181\u01fc\u021d\u021e\u021e\u0216\u020d\u020d \u0201\u0202 \u020f\u0218\u0218\u021f\u0219\u0220\u0220\u0210\u01d8\u01ee\u01d9\u01da \u01ef \u0221\u0221\u0221 \u01e2 ",
"\u0222\u0211\u0211\u0212\u0212\u0174 \u0213\u0213 \u021b\u0214\u0214\u0214\u0214 \u01c5\u01fa\u020c\u020c\u0204\u0205\u0205\u020c \u0127\u0127\u01bd\u01bd\u01bd\u0171\u01ff\u01ff\u01ff\u01ff\u01ff\u0223\u0224\u0224\u0225\u021c\u021c\u021c\u0215\u0215 \u0207\u0207\u0207\u0207\u0207 \u0174\u0174\u01c1\u01e9\u0226\u016e\u01d7\u01f7 \u0181\u0181 \u021d\u021e\u021e\u0216\u0216\u020d\u0197 \u0201\u0202 \u020f\u0218\u0218\u021f\u0220\u0220\u0220\u0227\u0227\u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221\u0221 ",
"\u0229\u0222\u0211\u0212\u0212\u0174\u0174 \u0213\u0213\u022a\u021b\u021b\u0214\u0214\u0214\u0214 \u020c\u0205\u020c \u0127\u0127\u0128\u01bd\u01bd\u01be\u01ff\u01ff\u01ff\u01ff\u01ff\u022b\u0223 \u021c\u021c\u021c\u022c\u022d \u0215\u0215\u0207\u0207\u0207 \u0174\u01c1\u01c1\u01e9\u0226\u01d7\u016e\u01f7 \u0181\u0181 \u021d\u021d\u021e\u021e\u0216\u020d\u020d \u0201\u0202 \u020f\u0218\u0218\u021f\u0220\u0220\u0220 \u022e \u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2\u022f\u022f\u022f\u022f\u022f ",
" \u0229\u0229\u0222\u0211\u0212\u01c1\u0174\u0174 \u0230 \u021b\u021b\u0214\u0214\u0214\u0214 \u020c\u0127\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff\u0231\u0232\u0232\u022b\u021c\u021c\u0224\u0224\u0225 \u022c\u022d \u0215\u0215\u0207 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u016e\u01f7\u01f7\u0181\u0181 \u021d\u021e\u021e\u0216\u0216\u020d\u0197 \u0233\u0233\u0218\u0218\u021f\u0220\u0220\u0220 \u0234\u022e \u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 \u022f\u022f\u022f\u022f\u022f\u022f ",
"\u0235\u0235 \u0229\u0222\u0211\u0211 \u01c1\u0174\u0230\u0230 \u021b\u021b\u0214\u0214\u0214\u0214\u0127\u0128\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u0231 \u021c\u021c\u022b\u0223 \u0224\u0225\u0225\u022c\u022d\u0236 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u01d7\u016e\u01f7\u0181\u0181 \u021d\u021d\u021e\u021e\u0216\u020d\u020d\u0237\u0238\u0239\u0239\u0239\u021f\u0220\u0220\u0220 \u023a \u0234 \u022e \u023b\u023b\u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ",
" \u0235\u0235 \u0229\u0222\u0211\u0211\u0230\u0230\u0174\u0174\u0174 \u021b\u021b\u021b\u0214\u0214\u01bd\u01bd\u01bd\u01ff\u01ff\u01ff \u023c\u021c\u021c\u0232 \u022b \u0223\u0224 \u0225\u0236 \u0174\u01c1\u01c1\u01e9\u01e9\u01d7\u01d7\u01f7\u01f7\u0181\u0181 \u023d\u021d\u021e\u021e\u0216\u0237\u0237\u0237\u023e\u023f\u0240\u0241\u0220\u0220 \u023a\u023a \u0234 \u0242\u022e\u023b \u0227\u0227 \u01ee\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ",
" \u0235\u0235 \u0229\u0222\u0230\u0230 \u01c1\u01c1\u0174\u0174 \u021b\u0127 \u0243\u0243\u01ff\u01ff\u01ff \u023c\u0231 \u0232\u022b\u022b\u0223\u0236\u0224 \u0174\u0174\u01c1\u01e9\u01e9 \u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u023d \u021d\u0237\u0237\u0237\u0237\u023e\u023e\u023e\u0241\u0241\u0244 \u023a\u023a \u0234 \u0245\u0242\u0242 \u0227 \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ",
"\u0246\u0246\u0246\u0246\u0246\u0235\u0235 \u0230\u0222\u0222\u0211\u0211\u01c1\u01c1\u0174\u0174\u0174 \u0247 \u0243\u0243\u0171\u01ff\u01ff \u023c \u0231\u0232 \u022b\u0236 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7\u01f7\u0181\u0181 \u023d\u023d\u0248 \u0249\u0237\u0237\u0237\u023e\u023e\u023e\u024a\u024a\u024b\u0244 \u023a\u023a \u0245 \u024c\u024c \u024d\u024e \u01d8\u01ee\u01d9\u01da \u01ef \u0228 \u01e2 ",
" \u0235\u0235\u024f \u0229\u0229\u0222\u0211\u0211\u0211\u01c1\u0174\u0174\u0250\u0250\u0251\u0243\u0243\u01ff\u01ff \u023c\u0231\u0236\u0232 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0248\u0248\u0249 \u023e\u023e\u0253\u024a\u024a\u024b\u024b\u0254\u0255 \u023a \u0234 \u0256\u024d \u024e \u01d8\u01ee\u01d9\u01da \u01ef\u01ef \u0228 \u01e2 ",
"\u0257 \u0258\u0258\u0258 \u0259\u025a\u025a\u025a \u0229\u0229\u0229\u0211\u0211\u0250\u0250\u0251\u0251\u025b\u025b\u025c\u01ff \u025d\u025d \u023c\u0236 \u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252\u0252\u0252 \u025e\u0248\u0248 \u0222\u0222\u025f\u024a\u0260\u024b\u024b\u024b\u0254\u0254\u0255\u023a \u0256\u0256\u0256\u0256\u0256\u024c \u024e \u01d8\u01ee\u01d9\u01da \u01ef \u0228\u0228 \u01e2 ",
"\u0257\u0257\u0258\u0258\u0258 \u0259\u0261 \u025a\u025a\u025a \u0229\u0229\u0250\u0251\u0251\u025b\u025b\u025c\u025c \u025d\u025d\u025d\u025d \u0174\u0174\u0174\u01c1\u01e9\u01e9\u01e9\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u025e\u0222\u0222\u0222\u0262\u0263\u0264\u0260\u0260\u024b\u024b\u0216\u0254\u0254\u0255\u0265 \u024c \u024e\u024e \u01ee \u01da\u01da \u01ef \u0228\u0228 \u01e2 ",
" \u0266\u0257 \u0259\u0267 \u0268\u0269 \u0250\u0250\u0251\u025b\u025b\u025c\u025c\u0181\u01c1\u0174\u0174\u01c1\u0174\u0174\u0174\u0174\u01c1\u0174\u01c1\u01c1\u01e9\u01e9\u01f7\u01f7\u01f7 \u0181\u0181\u0181 \u0252\u0252\u0252\u0252 \u0222\u0222\u0229\u0222\u0262\u0262\u026a\u0263\u026b\u026c\u024b\u024b\u021e\u021e\u0216\u0254\u0255\u0255\u0265\u0265\u0265\u0265 \u026d\u026d\u026d\u026d\u026d \u026e \u024e\u024e \u01d8\u01d8 \u01da\u01da\u01ef\u01ef \u0228 \u01e2 ",
"\u0266 \u0257\u0257 \u0261\u0261\u0267 \u026f \u0270\u0270\u0251\u025b\u025b\u025b\u025c\u0229\u0229\u0229\u0222\u0181\u0181\u0181 \u01e9\u01e9\u0271\u01f7\u01f7\u0181\u0181\u0181 \u0252\u0252\u0252 \u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262\u0272\u0272\u0263\u0273\u026c\u0274 \u021d\u021d\u021e\u0254\u0254\u0255\u020d\u020d\u0265 \u026d\u026d\u026d\u026d\u026d \u026d\u026d\u026e\u026d\u026d\u026d \u024e\u024e \u01d8\u01ee \u01da \u01ef \u0228 \u01e2 ",
"\u0266 \u0257\u0257 \u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u025b\u025b\u025c\u025c \u0229\u0222\u0222\u0229\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0181\u0276\u0276\u0276\u0252\u0252 \u0222\u0222\u0222\u0222\u0222\u0229\u0262\u0262\u0262\u0262 \u0272\u0277\u0263\u026b\u0278\u026c\u0279 \u027a\u021d\u021d\u0254\u0255\u0255\u027b\u020d\u027c \u026d\u026d\u026d \u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d\u027d \u026e \u026d\u026d\u026d \u01d8\u01d8\u01d9\u01da\u01ef\u01ef \u0228 \u01e2 \u027e",
" \u0257\u0257\u0261 \u0267 \u026f \u0270\u0270\u0275\u0275\u027f\u027f\u025c\u025c\u0280 \u0281\u0229\u0271\u0229\u0222\u0222\u0222\u0276\u0276\u0276\u0276\u0276\u0222\u0222\u0222\u0222\u0229\u0222\u0222\u0222\u0229\u0229\u0262\u0262\u0262\u0262\u0262 \u0282\u0282\u0272\u0277\u0277\u026b\u0278\u0279\u0283\u0274 \u027a \u0254\u0254\u0255\u0216\u027c\u027c\u027c\u0284\u0285\u0286\u0287\u0287\u027d \u027d\u027d\u027d\u027d \u026d\u026d \u01d8\u01ee\u01d9\u01da\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e",
" \u0288\u0257 \u0267 \u026f \u0270\u0275\u0275\u027f\u027f\u0289\u0289 \u0280 \u0281\u0281\u028a\u028a\u028a \u028b\u0276\u0276\u0276\u0276\u0229\u0229\u0262\u0262\u0262\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028d\u0272\u0277\u0263\u0273\u0278\u0279\u0283\u0274 \u027a \u0254\u0255\u0255\u027c\u027c\u0284\u0284\u0285\u028e \u0287 \u027d\u027d\u027d \u026d\u026d \u01d8\u01ee\u01d9\u01ef\u01ef \u0228\u0228 \u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f",
" \u0288 \u0257\u0257 \u026f \u0270\u0270\u0275\u027f\u027f\u027f\u0289 \u0280 \u0281\u0281\u028a\u028a \u028b\u028b\u028b \u0262\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028c\u028c\u028d\u0277\u026b\u026b\u0278\u0279\u0283\u0274\u027a\u027a \u0254\u0255\u027c\u0284\u0284\u0285\u0285\u020d\u020d\u0290\u0291 \u027d\u027d\u027d \u026d \u01ee\u01ee\u01d9\u01ef\u01ef \u0228\u0228\u01e2\u01e2 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ",
" \u0288\u0288 \u0257\u0257 \u0270\u0270\u0275\u027f\u027f\u027f\u0289 \u0280\u0281\u0281\u028a\u028a \u028b\u0262\u0262\u0262\u0262\u0262 \u0282\u028c\u028c\u028c\u028d\u0277\u0277\u0263\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0293\u027c\u0284\u0284\u0285\u021e\u0216\u027b\u020d\u0290\u0291 \u027d\u027d \u026d\u026d\u01d8\u01ee\u01d9\u01ef \u0228\u0228 \u027e\u027e\u027e\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ",
" \u0288\u0288 \u0294\u0294\u0257\u0270\u0270\u0275\u0275\u027f\u027f\u0289\u0289 \u0295\u028a\u028a \u028b\u028b\u0262\u0262\u0262 \u028c\u028c\u028d\u028d\u0277\u0277\u0296\u026c\u0278\u0283\u0283 \u027a\u027a \u0292\u0293\u0297\u0297\u0285\u0285\u021e\u021e\u021e\u0216\u020d\u020d\u0290\u0291\u0291\u0291\u0291 \u027d \u026d\u026d\u01d8 \u01da\u01ef \u01e2 \u027e\u027e\u0298\u027e\u027e\u027e\u028f\u028f\u028f\u028f\u028f\u028f ",
" \u0288 \u0294\u0294 \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u029a \u0281\u0281\u028a\u0295 \u028b\u0262\u0262\u0262 \u029b\u029c\u028d\u028d\u0277\u0277\u026b\u026c\u0278\u0283\u0283 \u027a\u027a \u0292\u0297\u0297\u0285\u029d\u029e\u021d\u021e\u021e\u021e\u0216\u020d \u0291\u0291\u0291\u0291\u0291\u0291\u0291 \u027d\u027d \u026d\u01d8\u01d8\u01d9\u029f\u01ef \u01e2\u01e2 \u02a0\u02a0\u02a0\u02a0\u027e\u028f\u028f\u028f\u028f\u028f\u028f ",
" \u0288 \u0294\u0294 \u0299\u0275\u0275\u027f\u027f\u029a\u029a \u0281\u0281\u028a \u02a1\u02a1\u0262\u0262 \u029b\u029c\u028d \u0277\u0263\u0296\u026c\u0278\u0283\u0283 \u027a \u0292\u0297\u0297\u02a2 \u029e\u029e\u021d\u021d\u021e\u021e\u0216\u0216\u020d \u02a3 \u0291\u0291\u0291\u0291\u0291\u0291\u0291 \u027d\u027d \u026d\u01d8\u01d9\u01ef\u01ef \u02a4\u02a0\u02a0\u02a0\u02a5\u02a5\u02a5\u02a6\u02a6\u028f ",
" \u0288 \u0294\u0299\u0299\u0275\u027f\u027f\u027f\u029a \u0281\u0281\u028a \u02a7\u02a8\u02a8\u02a8 \u029b\u029c\u028d \u0277\u0263\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0297\u0297 \u02a9\u029e \u021d\u02aa\u021e\u021e\u0216\u020d \u02a3 \u02ab\u0291\u0291\u0291\u0291\u0291\u0291\u027d\u027d \u01d8\u01ee\u01d9\u029f \u02a4\u02a4\u02a4\u02a4\u02a5\u02a5\u02a5\u02a5\u02a5\u02ac\u02ac ",
"\u0288\u0288 \u0299\u0299\u0275\u0275\u027f\u027f\u029a \u0281\u028a \u02ad\u02ad \u02a8\u02ae \u029c\u028d\u028d\u02ae\u0277\u026b\u0273\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0297 \u02a9\u02a9 \u021d\u021d\u021e\u021e\u0216\u0216\u020d \u02a3 \u02ab \u027d\u027d \u026d\u02af\u02b0\u02b1\u02b2\u02b2\u02b2\u02a4\u02a5\u02a5\u02a5 \u02ac\u02ac ",
"\u0288 \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02b4\u02b5 \u02a7\u02ad\u02ad \u02ae \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u026b\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9\u029e \u021d\u021d\u021e\u021e\u0216\u020d\u02b6 \u02a3 \u02ab \u027d \u026d\u02b2\u02b2\u02b7\u02b7\u02b7\u02b8 \u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0275\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02b4\u02b5 \u02a7\u02ad \u02b9\u02ae \u029b\u029c\u028d\u028d\u0277\u0263\u026b\u0273\u0278\u0283\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u02aa\u021d\u021e\u021e\u0216\u0216\u02ba \u02a3\u02a3 \u02ab \u027d \u02b2\u02b2\u02b7\u02b7\u02b7\u02b7\u01da\u02bb\u02bb \u02ac\u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02b4\u02b4 \u02ad\u02ad \u02b9\u02b9 \u02ae \u029b\u029c\u028d\u02ae\u0277\u0277\u0296\u0273\u0278\u0283\u0283 \u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u021d\u02bc\u021e\u021e\u0216\u02ba\u02b6 \u02a3 \u02ab \u02bd\u02b2\u02b7\u02b7\u02b7\u02af\u02b1\u01da\u01da \u02ac\u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02be\u02bf \u02a7\u02ad \u02b9\u02b9 \u02ae \u029b\u029c\u028d\u02ae\u0277\u0263\u026b\u026c\u0278\u0283\u0283\u027a\u027a \u0292\u0297\u0297 \u02a9\u02a9 \u029e \u02bc\u021e\u021e\u0216\u0216\u02b6 \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02b7 \u026d\u02af\u02b1\u01da\u01da \u02c1\u02c2 \u02ac\u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf \u02a7\u02ad \u02b9\u02b9 \u02ae\u02ae \u029b\u029c\u028d\u02ae\u0277\u026b\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e\u029e \u02bc\u02bc\u021e\u021e\u0216\u02ba \u02a3 \u02ab \u02bd\u02bd\u02c0\u02c0 \u02af\u02b0\u02b1\u01da\u01da \u02c2\u02c2 \u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae\u02ae \u02c3\u02c3 \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u0296\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u0297 \u02a9\u02a9 \u029e \u02bc\u021e\u021e\u0216\u02ba \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02c0 \u02af\u02af\u02b1\u01da\u01da \u02c2 \u02ac\u02ac\u02ac\u02ac ",
" \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae\u02c3\u02c3 \u029b\u029c\u028d\u028d\u0277\u0263\u026b\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0297\u0297 \u02a9\u02a9 \u02c4\u02c4\u02c4\u02c4\u02c4 \u02bc\u021e\u021e\u0216 \u02a3 \u02ab \u02bd\u02bd\u02bd\u02c0\u02c0 \u026d\u02b0\u02b1\u01da \u02c2 \u02ac\u02ac\u02ac\u02ac",
"\u02c5\u02c5 \u0299\u0299\u0275\u027f\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae \u029b\u029c\u028d\u028d\u0277\u0277\u0263\u0273\u0278\u0279\u0283\u0274\u027a \u0292\u0297 \u02a9 \u02c4\u02c4 \u02c4\u02c4 \u02bc\u021e\u021e\u0216\u02b6 \u02a3\u02a3\u02a3\u02a3\u02a3\u02a3\u02a3 \u02ab \u02bd\u02bd\u02c6\u02c0\u02c7 \u026d\u02af\u02b1\u02b1\u01da \u02c2 \u02ac",
" \u02c5\u0299\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf \u02ad \u02b9\u02b9 \u02ae\u02ae \u029b\u029c\u028d\u02ae\u0277\u0263\u0296\u026c\u0278\u0283\u0283\u0274\u027a \u0292\u0292\u0297 \u02a9\u02c8 \u02c4\u02c4\u02c4 \u02c4 \u02bc\u021e\u02ba\u02ba \u02a3\u02a3\u02a3\u02a3\u02a3\u02bd\u02bd\u02bd\u02c6\u02c6 \u02c7\u02c7 \u026d\u02b0\u02b0 \u01da \u02c2 ",
" \u0299\u0299\u0275\u0275\u027f\u027f\u029a\u02b3 \u02bf\u02bf\u02ad\u02ad \u02b9\u02b9 \u02ae\u02ae\u02ae\u029b\u029c\u028d\u02ae\u0277\u0263\u026b\u026c\u0279\u0283\u0283\u027a\u027a \u0292\u0292 \u02c9\u02c9 \u02ca\u02ca\u02c4\u02c4 \u02c4 \u02bc\u02bc\u02ba\u02cb \u02cc\u02cc\u02bd\u02c6\u02c6 \u02cd\u02c7\u02ce\u02ce \u026d\u02af\u02b1 \u01da \u02c2\u02c2 ",
" \u0299\u0299\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02bf\u02bf\u02a7\u02ad \u02b9\u02b9 \u029b\u028d\u028d\u02ae\u0277\u0263\u0296\u026c\u0278\u0283\u0283\u027a\u027a \u0292\u02cf \u02c9 \u02ca \u02c4 \u02c4\u02d0\u02d0\u02ba \u02cc\u02cc\u02d1\u02d1 \u02cd\u02cd\u02cd \u02c7 \u02ce \u026d\u02b0\u02b1\u01da\u01da \u02c2\u02c2 ",
"\u0299\u0299\u0275\u027f\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9\u02b9 \u029c\u028d\u028d\u0277\u0277\u02d2\u026b\u026c\u0279\u0283\u0274\u027a\u027a \u0292\u02d3\u02cf \u02c9 \u02c4\u02c4 \u02c4\u02c4\u02c4\u02bc\u02bc\u02ba\u02b6 \u02cc\u02cc\u02c6\u02c6\u02d4 \u02c7\u02ce\u02ce \u02af\u02af\u02b1\u01da\u01da \u02c2 ",
"\u0299\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf\u02a7\u02ad \u02b9\u02b9 \u029c\u028d\u028d\u0277\u0277\u02d2\u0273\u0278\u0279\u0283\u0274\u027a\u027a \u0292\u0292\u02cf \u02d5\u02d5\u02c9 \u02c4\u02c4\u02c4 \u02d6\u02bc\u02bc\u02ba \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7\u02c7\u02ce\u02ce \u026d\u02b0\u02b1\u01da \u02c2 ",
"\u0275\u027f\u027f\u027f\u029a\u02b3 \u02bf\u02bf\u02ad \u02b9\u02b9 \u02ae\u029c\u028d\u028d\u0277\u0277\u02d2\u02d7\u02d8\u0279\u0283\u0274\u027a \u0292\u02cf \u02d5\u02d5\u02c9 \u02d6\u02bc\u02ba\u02ba \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7\u02c7\u02ce \u02af\u02b1\u02b1\u01da \u02c2 ",
"\u0275\u027f\u027f\u029a\u02b3\u02b3 \u02bf\u02bf\u02a7\u02ad \u02b9 \u02ae\u02ae\u029c\u029c\u028d\u02d9\u0277\u02da\u02db\u02d8\u02dc\u0283\u0274\u027a \u0292\u0292\u02cf \u02d5\u02d5 \u02c9 \u02d6\u02bc\u02bc\u02ba\u02b6 \u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7 \u02ce \u02b0\u02b1 \u01da \u02c2\u02c2 ",
"\u027f\u027f\u029a\u02b3\u02b3 \u02be\u02bf\u02ad\u02ad \u02b9 \u02ae\u02ae \u029c\u028d\u028d\u02d9\u0277\u02d7\u02db\u02dc\u02dd\u02de\u027a\u027a \u0292\u0292\u02cf \u02d5 \u02c9\u02c9 \u02d6\u02bc\u02bc\u02ba\u02b6\u02b6\u02cc\u02cc\u02c6\u02c6 \u02d4 \u02c7 \u02ce \u02af\u02af\u02b1\u01da\u01da \u02c2\u02c2 ",
"\u027f\u029a\u029a\u02b3 \u02be\u02bf\u02a7\u02ad \u02b9 \u02ae \u029c\u028d\u028d\u02d9\u0277\u02d7\u02db\u02dc\u02de\u02de\u027a\u027a \u0292\u0292\u02cf \u02d5 \u02c9 \u02d6\u02d6\u02bc\u02bc\u02ba\u02ba\u02cc\u02cc\u02c6\u02c6\u02df\u02df\u02e0 \u02d4 \u02c7 \u02ce \u02af\u02b0\u02e1\u01da\u01da ",
"\u027f\u029a\u02b3 \u02bf\u02bf\u02ad \u02b9\u02b9 \u02ae \u029c\u028d\u028d\u02d9\u0277\u02db\u02d8\u02dc\u02de \u027a\u027a \u0292\u0292\u02cf \u02d5\u02d5 \u02c9 \u02d6\u02d6\u02bc\u02cb\u02e2\u02cc\u02e3\u02c6 \u02e0\u02e0\u02e0\u02d4\u02d4\u02d4\u02d4\u02d4 \u02c7\u02c7\u02e4\u02ce \u02af\u02b0\u02b1\u01da ",
"\u029a\u02b3 \u02bf\u02bf\u02a7 \u02b9\u02b9 \u02ae\u029c\u028d\u02d9\u02d9\u0277\u02d8\u02db\u02de\u02de \u027a\u027a \u0292\u02e5\u0292 \u02d5\u02d5 \u02c9 \u02e6 \u02d6\u02bc\u02bc\u02e2\u02cb\u02e3\u02c6 \u02d4\u02d4\u02d4\u02d4\u02d4\u02d4\u02d4\u02c7\u02c7\u02e4\u02ce \u02e7\u02b0\u02e8\u01da ",
"\u02b3\u02b3 \u02be\u02bf\u02ad\u02ad \u02b9\u02b9 \u02ae\u02ae\u02d9\u02d9\u0277 \u02d8\u02dd\u02dd \u027a\u027a \u0292\u02e5\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6\u02e6 \u02d6\u02e9\u02e9\u02cb\u02ea\u02c6 \u02d4\u02c7\u02e4\u02e4\u02ce \u02af\u02b1\u02e1\u01da ",
"\u02b3 \u02be\u02bf\u02a7\u02ad \u02d9\u0277\u0277 \u02dc\u02dd \u027a\u027a \u02e5\u02e5\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02e9\u02e9\u02e9\u02cb\u02cb\u02ec \u02ed\u02c7\u02e4\u02ce\u02ce \u02af\u02e7\u02e8\u02e8\u01da ",
" \u02bf\u02a7\u02ad \u02d9\u0277\u0277 \u02dc\u02ee \u027a\u027a\u0292\u0292\u02cf \u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02eb\u02ef\u02f0\u02f0\u02d6\u02ec\u02ec\u02ec\u02ec \u02ed \u02c7\u02e4\u02ce\u02ce \u02f1\u02f1 \u02af\u02e7\u02b1\u01da\u01da ",
" \u02bf\u02bf\u02a7 \u02d9\u0277\u02f2\u02ee\u02dc \u027a\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02eb\u02eb\u02f0\u02f0\u02f3\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec \u02ed \u02c7\u02c7\u02e4\u02ce\u02ce\u02f1\u02f1 \u02e7\u02b0\u02e8\u01da\u01da ",
" \u02be\u02bf\u02ad \u02d9\u02d9\u0277\u02f2\u02f5\u02ee\u027a\u027a\u0292\u0292\u0292 \u02d5\u02d5 \u02c9 \u02e6 \u02f6\u02eb\u02eb\u02f0 \u02f3\u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f7\u02ec \u02f8\u02e4\u02e4\u02f1\u02f1 \u02af\u02b0\u02e1\u01da\u01da ",
"\u02be\u02bf\u02a7\u02ad \u02d9\u02d9\u0277\u02f2\u02f5\u02f9\u02fa\u02fa\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02fb\u02f6\u02eb\u02f0\u02f0 \u02f3\u02f4\u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f7\u02f7\u02ec\u02ec\u02ec\u02ec\u02ec\u02ec\u02f8\u02e4\u02e4\u02ce \u02af\u02af\u02b1\u02e1\u01da\u01da ",
"\u02bf\u02ad\u02ad \u02d9\u0277\u0277\u02f5\u02f5\u02f9\u02fa\u0292\u0292\u02cf \u02d5\u02d5 \u02c9\u02c9 \u02e6 \u02f6\u02f6\u02f6\u02eb\u02f0 \u02f3\u02f3\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f7\u02f4\u02f4\u02ec\u02ec\u02ec\u02ec\u02ec\u02f8\u02ec\u02e4\u02e4\u02ce \u02af\u02af\u02b1\u02e1\u01da ",
"\u02a7\u02ad \u02d9\u0277 \u02f5\u02f5\u02f9\u02fa\u0292\u0292 \u02d5 \u02c9\u02c9 \u02fb \u02f0\u02f0 \u02f3\u02f3\u02f3\u02f3\u02f4\u02f3\u02f3\u02f3\u02f3\u02f3\u02f7\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02f4\u02ec\u02ec\u02f8\u02ec\u02ec\u02e4\u02ce \u02af\u02b0\u02b1 \u01da ",
"\u02ad \u02d9\u02d9\u0277 \u02f9\u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02f4\u02f8\u02ec\u02ec\u02ec\u02ce\u02ce \u02af\u02b0\u02b1 \u01da ",
"\u02ad \u02d9\u02d9\u0277 \u02f9\u02f9\u02fa\u0292\u02cf \u02c9 \u02f8\u02f4\u02ec\u02ec\u02ec\u02ec\u02ce \u02af\u02b1\u02b1\u01da\u01da ",
" \u02d9\u0277\u0277 \u02f9\u02f9\u0292\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02af\u02b1\u02b1\u01da\u01da ",
" \u02d9\u02d9\u0277 \u02f9\u02f9\u0292\u0292 \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1\u02b1\u01da ",
" \u02d9\u02d9\u0277 \u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da ",
" \u02d9\u0277 \u02f9\u02fa\u0292\u02cf \u02c9\u02c9 \u02f4\u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da ",
" \u02d9 \u02f9\u02f9\u02fa\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af \u02b1\u01da\u01da ",
" \u02f9\u02f9\u0292\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1\u02b1\u01da ",
" \u02f9\u02f9\u0292\u0292\u02cf \u02f4\u02ec\u02ec\u02ec\u02ce \u02af\u02b0\u02b1 \u01da "
]
}

View file

@ -0,0 +1,891 @@
{
"keys": [
"",
"330",
"155",
"74",
"57",
"749",
"788",
"201",
"202",
"181",
"691",
"774",
"228",
"46",
"523",
"73",
"530",
"384",
"286",
"385",
"1",
"156",
"644",
"361",
"531",
"43",
"449",
"93",
"328",
"527",
"605",
"589",
"288",
"215",
"635",
"532",
"588",
"154",
"138",
"287",
"637",
"638",
"529",
"576",
"362",
"348",
"45",
"639",
"497",
"300",
"329",
"237",
"600",
"137",
"534",
"636",
"595",
"103",
"14",
"180",
"232",
"593",
"104",
"353",
"526",
"592",
"594",
"136",
"352",
"327",
"323",
"203",
"490",
"415",
"442",
"342",
"258",
"528",
"596",
"599",
"157",
"343",
"331",
"257",
"598",
"412",
"313",
"335",
"277",
"89",
"597",
"344",
"431",
"276",
"126",
"113",
"108",
"107",
"591",
"590",
"407",
"414",
"147",
"372",
"369",
"413",
"337",
"124",
"122",
"110",
"174",
"406",
"75",
"82",
"83",
"99",
"97",
"72",
"278",
"173",
"472",
"481",
"336",
"159",
"153",
"100",
"102",
"96",
"200",
"266",
"265",
"263",
"269",
"231",
"446",
"371",
"66",
"409",
"410",
"315",
"179",
"182",
"419",
"392",
"391",
"390",
"525",
"417",
"411",
"183",
"479",
"473",
"146",
"475",
"474",
"401",
"421",
"445",
"356",
"483",
"480",
"551",
"583",
"325",
"324",
"476",
"582",
"364",
"389",
"393",
"839",
"724",
"440",
"227",
"620",
"462",
"477",
"268",
"267",
"225",
"464",
"16",
"271",
"535",
"463",
"299",
"693",
"261",
"270",
"247",
"548",
"467",
"465",
"422",
"241",
"466",
"238",
"239",
"246",
"489",
"634",
"671",
"333",
"326",
"488",
"482",
"633",
"448",
"243",
"248",
"461",
"460",
"332",
"378",
"577",
"484",
"471",
"381",
"25",
"188",
"355",
"470",
"565",
"469",
"334",
"379",
"284",
"279",
"175",
"667",
"562",
"380",
"665",
"550",
"373",
"354",
"632",
"485",
"570",
"363",
"575",
"673",
"585",
"131",
"404",
"285",
"587",
"78",
"145",
"85",
"41",
"773",
"739",
"478",
"87",
"121",
"40",
"358",
"226",
"260",
"283",
"687",
"690",
"486",
"133",
"672",
"95",
"322",
"321",
"195",
"264",
"194",
"177",
"396",
"359",
"402",
"55",
"686",
"619",
"15",
"382",
"397",
"319",
"735",
"212",
"236",
"282",
"280",
"618",
"615",
"614",
"403",
"376",
"59",
"204",
"786",
"640",
"641",
"375",
"374",
"400",
"320",
"58",
"199",
"692",
"584",
"377",
"395",
"405",
"398",
"56",
"579",
"670",
"31",
"357",
"505",
"493",
"784",
"743",
"50",
"92",
"38",
"213",
"847",
"741",
"492",
"841",
"254",
"747",
"827",
"568",
"39",
"53",
"439",
"753",
"224",
"607",
"5",
"61",
"158",
"840",
"438",
"214",
"835",
"223",
"626",
"22",
"13",
"838",
"302",
"54",
"52",
"708",
"769",
"697",
"165",
"118",
"62",
"494",
"491",
"301",
"9",
"222",
"622",
"423",
"296",
"317",
"318",
"252",
"631",
"495",
"304",
"710",
"762",
"36",
"123",
"308",
"760",
"630",
"621",
"674",
"2",
"3",
"253",
"255",
"846",
"77",
"316",
"771",
"628",
"453",
"291",
"383",
"722",
"564",
"295",
"292",
"365",
"830",
"845",
"617",
"624",
"666",
"662",
"581",
"42",
"294",
"726",
"694",
"627",
"654",
"661",
"456",
"48",
"47",
"716",
"732",
"836",
"623",
"507",
"629",
"606",
"651",
"571",
"580",
"574",
"572",
"293",
"837",
"613",
"457",
"65",
"459",
"23",
"758",
"834",
"764",
"831",
"780",
"844",
"144",
"125",
"719",
"184",
"616",
"679",
"681",
"458",
"833",
"713",
"825",
"166",
"139",
"682",
"17",
"511",
"509",
"29",
"832",
"770",
"772",
"766",
"768",
"689",
"842",
"220",
"610",
"675",
"518",
"63",
"26",
"27",
"219",
"221",
"506",
"677",
"120",
"714",
"498",
"680",
"35",
"730",
"738",
"678",
"676",
"573",
"37",
"443",
"740",
"717",
"502",
"642",
"130",
"444",
"703",
"742",
"826",
"767",
"501",
"503",
"142",
"117",
"18",
"28",
"731",
"745",
"90",
"569",
"70",
"20",
"715",
"808",
"170",
"727",
"515",
"514",
"521",
"755",
"191",
"185",
"684",
"557",
"516",
"513",
"522",
"311",
"234",
"556",
"519",
"517",
"701",
"310",
"545",
"450",
"699",
"696",
"733",
"350",
"211",
"520",
"303",
"725",
"736",
"702",
"823",
"210",
"64",
"816",
"822",
"820",
"349",
"524",
"140",
"345",
"746",
"815",
"814",
"189",
"192",
"190",
"555",
"135",
"24",
"705",
"744",
"698",
"813",
"193",
"553",
"538",
"546",
"643",
"33",
"34",
"510",
"721",
"818",
"712",
"707",
"539",
"750",
"795",
"817",
"12",
"351",
"559",
"603",
"601",
"604",
"794",
"793",
"783",
"683",
"206",
"544",
"76",
"734",
"819",
"781",
"789",
"32",
"706",
"805",
"785",
"787",
"297",
"235",
"105",
"44",
"542",
"759",
"807",
"791",
"711",
"290",
"347",
"289",
"536",
"51",
"757",
"728",
"811",
"810",
"852",
"425",
"160",
"430",
"169",
"778",
"704",
"504",
"779",
"709",
"134",
"98",
"4",
"541",
"346",
"809",
"339",
"305",
"685",
"148",
"540",
"752",
"341",
"167",
"162",
"163",
"149",
"754",
"748",
"340",
"10",
"168",
"67",
"828",
"824",
"782",
"688",
"109",
"554",
"763",
"756",
"428",
"112",
"68",
"496",
"127",
"229",
"128",
"161",
"761",
"829",
"132",
"249",
"176",
"561",
"306",
"537",
"111",
"171",
"307",
"432",
"309",
"19",
"164",
"250",
"178",
"695",
"129",
"116",
"804",
"775",
"197",
"360",
"21",
"802",
"800",
"806",
"803",
"801",
"799",
"797",
"798",
"217",
"216",
"718",
"69",
"150",
"7",
"790",
"338",
"843",
"720",
"152",
"151",
"86",
"8",
"207",
"796",
"233",
"88",
"218",
"560",
"209",
"6",
"777",
"452",
"208",
"172",
"776",
"558",
"451"
],
"data": {},
"grid": [
" ! ##$ %%&'' ( )) *** ",
" ! ##$ %%+', ( ))) ** - ",
" !! #.$ %%&+' ( ))) ** - ",
" / 0 ! #.$ %%&', ( ))) ** - ",
" / 1 0 ! #.$ 2 %%&+', ( ))3 *** - ",
" / 1 00 !! #.$ 4 2 %%&', ( )) 33 ** -- ",
" / 1 000 ! #.$ 4 222 %%%+',55 ( )) 3 ** -- ",
" / 1 66700 ! 8888 ##.$4 22 %%&',555 ( )) 3 ** -- ",
" / 1 99667000 ! 888 #..$4 222 :%%+',55; ( )) 33*** -- ",
" / 1 99 667700 ! 8 ##.$$4 22 :%%&', 55 ( )) 33** -- ",
" / 1 99 66770<0 ! 8 ##.$=422 :%%+',55; ( )) **3 -- ",
" />>> ? 1 9@@ 667<<000 !! 8 #..$=422 :%%&',,55; ( )) A**3 ------- BBBB ",
" / C>>>> ? D 9 @E EE66F 0000 ! 8 ##.GG=42 ::%&+',555 ( ) H 3--- BB BB ",
" / CI J>>KKK DDDD 9 E EEE ELFFF 000 ! MMMMMMNN #O.G= ::%%&' ,55; ( ) * 3- B ",
" //PPPPPJ Q DDDDD99 E EE L FFF 000 ! R R N## GGS: :::%&+',555 ( )) **TT BB ",
" / PC IJPPQ DD EE EE UUU FFF 0000 ! R R #VVGS.::::%%&+ ,55; () TT - BBBBBBBBB ",
"W/ PXXIJP Q EE E YYUUU FFF 000 ! R R ZZ VSS[:::%%&+', 55 ) TT] - BB ^ ",
"//PPP JP Q E E __YYY UU FFF 000 ! R R ZZ``Saa[[ %%&+ ,555 ))TT] - BB ^ ",
"bb C PPPPQ E E c __ YY U dFF ee0 ! R RR Z``fg [[[%%&',,55 hh T ] - B ^^ ",
"/bbbb J Q EE LLLcc ___YY dd FFF e000 ! RRR ZZ``fg [[%&+',555 hhiT ] - B ^^ ",
" bbbbQ j kkk ccc__ d FFFe 000 !!l ZZ`mmmmm [%%&' ,555 hh iT ] - B nnn ",
" o jj kkkccc d p qFFF 00r lll Z``stttmm[%%+', 55 hh iT ]]- B uun ",
" o jj kkkk d vvppq FFFF rr00llllll wZ` sx tm%%&+',55;y hh iT ]z-- B ^ u {{{{{{{{{{",
" oo jjjjj kkd ||vvvqpp FFFr 0000llll ZZ` s}}}m[%%&'~,55 yyh iT \u007f\u007f\u007f zzzzzz--- B {{{{{{\u0080{{{{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081",
" o j kk|||qvv pp rrFF 00000l Z`` ssssm[%%&',555 hh iT\u007f\u007f \u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0083\u0083{{{{{{{{{{\u0081\u0081\u0081\u0081\u0081\u0080\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081 ",
" o j kkk q| vv\u0084\u0085\u0086\u0087 FFF\u0088\u0088\u008800000Z`\u0089\u008a\u008bx \u008cm%%&+',55\u008d\u008dh\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u0082\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008f\u008f\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0081\u0090\u0081\u0081 ",
" o j kq |||\u0084\u0084\u0091\u0087\u0086\u0086 \u0092\u0088\u0088\u0088\u0088\u0088\u0088\u0093\u0094`\u0095\u0095\u0095\u0095\u0095\u0095\u0095\u0096\u0096&+\u0096,\u0096\u0096\u0096\u008d\u008d\u0082\u0082\u0082\u0082\u0082\u0097\u0097\u0097\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u008e\u0098 -- \u0099 \u0090 ",
" o jj \u009a\u009b\u009a kkk| \u009c\u0087\u0091\u0091 \u0086\u0086 \u0092\u0092\u009d\u009d\u0088\u0088\u009e\u009f\u009f\u009f\u009f\u009f\u009f\u009f\u00a0\u00a0\u00a0\u00a0+\u00a0,\u00a0\u00a0\u0097\u0097\u00a1\u0097\u0097\u0097\u0097 \u00a2\u00a3\u00a4\u00a5\u00a5\u00a6 \u00a7\u00a7\u00a7\u00a7--- \u0099\u0099 \u0090 ",
" o jj \u009a\u009a\u009b \u009a\u009a\u009a k \u0087\u009c \u0091 k\u00a8\u009d\u00a9\u00aa\u009e\u00ab\u00ab\u00acx\u00ad %%%&',55 \u00ae \u00a2\u00a3 \u00af\u00af\u00a6\u00a7-- \u0099 \u0090 ",
" o j \u009a \u009b \u009a kkkkkkkkkk\u00b0kkk \u009d\u009d\u009e\u009e\u00b1\u00b2 x\u00b3 %%&&',55 \u00ae \u00a2\u00a3 \u00af - \u0099\u0099 \u0090 ",
"\u00b4\u00b4\u00b4 o j \u009a \u009b \u00b5 \u00b6\u00a8\u009d\u009e\u009e\u00b1\u00b2x \u00ad\u00b3 %%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ",
" \u00b4\u00b4\u00b4o j \u009a\u009a \u009b\u009b \u00b8\u00b9 \u00b5 \u00b6\u00a8\u00ba\u009e \u00b1\u00b2x\u00ad \u00b3%%%&+',55 \u00ae \u00a2\u00a3\u00b7\u00af - \u0099 \u0090 ",
" \u00b4\u00b4\u00b4 jj \u009a\u009a \u009b \u00bb\u00bc \u00b8\u00b9\u00b9\u00b9 \u00bd\u00bd\u00bd\u00bd\u00be \u00bf\u00ba\u00ba\u009e\u00b1 \u00b2x\u00ad\u00b3 %%%&+',5\u00c0 \u00ae \u00a2 \u00a3\u00b7\u00af - \u0099 \u0090 ",
"\u00c1 \u00b4\u00b4\u00b4 jj \u009a \u009b \u00bb \u00bc\u00bc\u00bc \u00c2 \u00b9\u00b9 \u00bd\u00bd\u00bd \u00be \u00bf\u00ba\u009e\u009e\u00b1\u00b2 x\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a2\u00a3\u00b7\u00b7\u00af - \u0099 \u0090 ",
" \u00c1\u00c1 \u00b4\u00b4 j \u009a\u00c3 \u009b\u009b\u009b\u00bb \u00c4\u00c4\u00c2\u00b8 \u00b9 \u00c5 \u00c6 \u00bf\u00bf\u00ba\u009e \u00b1\u00b2x\u00ad\u00ad\u00b3 %% &+'55\u00c0 \u00ae \u00a2\u00a3\u00a3\u00b7\u00b7\u00af- \u0099 \u0090 ",
" \u00c1\u00c1 j \u009a\u009a\u00c3 \u009b\u00c7\u00c7 \u00c8 \u00b8\u00b8\u00b8\u00b8\u00b8\u00b9 \u00c5 \u00c6 \u00bf\u00c9\u00ba\u009e \u00ca\u00ca\u00b2\u00cb\u00b3\u00b3 %% \u00cc\u00cd,55 \u00ce \u00ae \u00a2 \u00a3 \u00b7\u00cf\u00cf- \u0099 \u0090 ",
" \u00c1\u00d0\u00d0\u00d0 jj j \u009a\u009a\u00c3\u00c3\u00d1\u00d1\u00d1\u00d1\u00d1\u00bb\u00d1 \u00d2\u00c7 \u00c8 \u00b9 \u00c5 \u00c6\u00c6 \u00bf\u00ba\u00ba\u009e \u00b2\u00cb\u00b3 %%%&\u00cc',55 \u00ce \u00ae \u00a2\u00a2\u00d3\u00d3\u00d4\u00d5 -- \u0099 \u0090 ",
" \u00c1\u00c1\u00d0\u00d0j jj \u009a\u00d1\u00d1\u00c3 \u00d6\u00d1\u00d1\u00d2 \u00c7\u00c8 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%%&\u00cc',55 \u00ce \u00ae\u00ae \u00a2\u00d8\u00d3 \u00d5\u00d5 - \u0099 \u0090 ",
" \u00c1\u00c1 \u00d0\u00d0 \u009a\u00d1\u00d1 \u00c3\u00c3\u00d9\u00d9\u00d9\u00d9\u00d9\u00d9\u00da \u00d1\u00d1\u00c8 \u00b9 \u00c5 \u00c6 \u00db\u00bf\u00ba\u009e x\u00cb\u00ad %%%&\u00dc',55\u00ce\u00c0 \u00ae \u00a2\u00a2\u00dd\u00de \u00d5 - \u00df\u00df\u0099\u0099 \u0090 ",
" \u00c1\u00c1 \u00d0\u00d0 \u009a\u00e0\u00d1 \u00d9\u00d9 \u00e1 \u00d9\u00d9\u00d9 \u00e2\u00d1\u00d1 \u00b9 \u00c5 \u00e3\u00c6 \u00bfx\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00de\u00de \u00d5 - \u00e4\u00df \u0099 \u0090 ",
" \u00c1 \u00d0\u00d0 \u009a\u009a\u00d1\u00e0\u00e0\u00e0 \u00e5\u00e5\u00e1\u00e5 \u00d9\u00e2 \u00d1 \u00b9 \u00c5 \u00c6 \u00bf\u00ba\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2\u00a2 \u00dd\u00dd \u00d5 -- \u00e6\u00e7\u00e8 \u0099\u0099 \u0090 ",
" \u00c1 \u00e9 \u009a \u00d1\u00ea\u00ea\u00ea \u00e5 \u00e5\u00e5 \u00eb\u00d9\u00d9 \u00d1 \u00b9 \u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00dc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd -- \u00e6\u00e6\u00e7\u00e8 \u0099 \u0090 ",
" \u00c1\u00c1 \u00e9\u00ee \u00ef\u009a \u00d1\u00f0\u00f0\u00d9 \u00e5\u00e5 \u00eb\u00e5 \u00d9\u00d9 \u00d1\u00d1 \u00b9 \u00f1\u00f1\u00ec\u00ec\u00ec \u00ed \u00bf\u00ba\u009e\u009e x\u00cb\u00ad \u00d7%% &\u00cc',55 \u00c0 \u00ae \u00a2 \u00dd\u00dd\u00dd\u00dd- \u00e6\u00f2\u00f3\u00f3\u00f3\u0099 \u0090 ",
" \u00c1 \u00ee\u00ee\u00ef\u00ef \u009a\u00d1\u00f4\u00f0\u00d9 \u00e5 \u00e5 \u00d9\u00f5\u00f5\u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00f1\u00ec\u00ec \u00ed \u00f7\u00bf\u00ba\u009e x\u00cb\u00ad \u00d7%% &\u00dc' 55 \u00c0 \u00ae \u00a2\u00a2 \u00d5\u00d5 - \u0099 \u0090 ",
" \u00c1 \u00f8\u00ef\u00f9\u00f9\u00f9\u00f9\u009a\u00d1 \u00d9 \u00fa\u00e5 \u00e5 \u00d9\u00f5 \u00d1 \u00b9 \u00f6\u00f6\u00f1\u00f1\u00ec \u00ed \u00fb\u00f7\u00f7\u00f7\u00f7\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cc' \u00fc\u00fc \u00c0 \u00ae\u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ",
" \u00f8\u00f8\u00f8 \u00f9\u009a\u00d1 \u00d9\u00fa \u00e5\u00e5 \u00e5 \u00d9 \u00d1\u00b9\u00b9 \u00f6\u00f1\u00ec\u00ed\u00ed \u00fb\u00bf\u00ba\u009e\u009e\u00f7 x\u00cb\u00ad \u00d7\u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0 \u00ae \u00a2\u00a2 \u00d5 - \u0099 \u00fd ",
" \u00f8 \u00ef\u00ef\u00f9\u00f9\u009a \u00d1 \u00d9 \u00e5\u00ff\u00e5\u00e5 \u00e5\u00e5 \u00d9 \u00d1\u00b9 \u00f6\u00f6 \u00bf\u00ba\u009e\u00f7 x\u00cb\u00ad\u00ad \u00d7%% &\u00cd'\u00fc\u00fc\u00fe \u00c0\u00c0 \u00ae \u00a2 \u00d5 - \u0099 \u00fd ",
" \u00f8\u00f8 \u00ef\u00f9\u009a \u00d1\u00d1 \u0100\u00d9\u00d9\u00ff\u00ff \u0101 \u00d9 \u00b9\u00b9 \u0102 \u00ba\u00ba\u009e\u0103 x\u00cb\u00ad \u00d7%% &\u00cd,\u00fc\u00fc\u00fe\u00fe \u00c0 \u00ae \u00a2 \u0104\u0104\u0105 - \u0099 \u00fd \u0106\u0106\u0106",
" \u00f8\u00f8 \u00ef\u00ef \u00d1\u00d1\u0107 \u00d9\u00d9\u00d9 \u0101 \u00d9\u00d9 \u00d1\u00b9 \u0108 \u0102 \u00ba\u00ba\u009e\u0109xxx\u00cb\u00ad \u00d7%% &\u00cd'\u00fc\u00fc \u00fe \u00c0 \u00ae \u00a2\u0104\u0104\u0104\u0105\u00d5 -- \u0099 \u00fd \u0106\u0106\u0106\u0106 ",
" \u00f8 \u009a\u009a \u00d1 \u00d9\u010a\u00d9\u00d9\u00d9 \u010b \u00d1\u00b9\u00b9 \u0108\u010c \u0102 \u00bf\u00ba\u009e\u009e \u00cb\u00ad \u00d7%% &\u00cd,\u00fc\u010d\u010d\u010d \u00c0 \u00ae \u00a2\u00a2 \u0104\u00d5 - \u0099 \u00fd\u00fd \u0106\u0106\u0106\u0106 ",
" \u00f8 \u009a\u009a \u010a\u010e\u010e \u010b \u00d1\u010f \u0110\u010c\u010c\u010c\u010c\u0111 \u0112 \u0113\u0113\u00ba\u009e\u009e \u00cb\u00cb\u00ad \u00d7\u00d7%% &\u00cd'\u00fc\u010d \u010d \u00c0\u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0099\u00fd\u00fd \u0106\u0106\u0106\u0106 ",
" \u00f8\u0114 \u009a\u009a \u010e \u00d1\u010b\u010f \u0110 \u010c\u010c\u0112 \u0113\u0115\u0115\u0115\u00ba\u00ba\u009e \u0116\u00ad \u00d7%%% &\u00dc'\u00fc\u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 - \u0117\u00fd\u0106\u0106\u0106\u0106 ",
" \u00f8\u0118\u0118\u0114\u0114 \u009a \u010e\u00b9\u00b9\u010f\u010f \u010c\u010c \u010c\u010c \u0112 \u0113\u0115\u0115\u0115\u0119\u011a\u011b\u009e\u011c\u011c \u0116 \u00ad\u00ad\u00d7%% &\u011d\u00fc \u010d \u010d \u00c0 \u00ae \u00a2 \u0104\u00d5 -- \u0117\u0117\u0106 ",
"\u011e \u00f8 \u0118\u0118\u0114\u0114 \u009a\u009a \u011f\u00b9\u00b9\u00b9\u00b9 \u010f\u010f \u010c\u010c\u010c \u0112 \u0113\u0115\u0115\u0119\u0119\u0119\u011a\u0120\u0121\u011c\u011c\u0122\u0122\u0116 \u00d7\u00d7%% &\u00dc',\u010d \u010d\u010d \u00c0\u0123\u0123\u0123 \u00ae \u00a2 \u0104\u0104\u0124\u00d5\u00d5--\u0125\u0125\u0126 \u0117\u0117 ",
"\u0127\u0128\u0128 \u00f8 \u0118\u0114\u0114 \u009a\u009a \u011f\u0129\u0129 \u010f \u010c\u010c \u0112\u0113\u012a\u0115\u0119\u012b\u012b\u012b\u012c\u0121\u0121\u012d\u012e\u0122\u0122\u0122\u00d7\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d\u010d\u00c0\u00c0 \u00ae\u00ae \u00a2 \u0104\u0124 \u012f\u0130\u0131\u0126 \u0117\u0117 \u0132\u0132",
" \u0127\u0128\u0128 \u00f8 \u0118\u0118\u0114\u0114 \u009a\u011f\u0129 \u0129 \u010f \u0112 \u012a\u012a\u012b \u012c\u012c\u0121\u0121\u0133\u012e\u012e\u0122\u0122\u00d7\u00d7\u00d7%% \u00fc\u00fc\u011d', \u010d \u010d \u0134 \u00ae\u00ae\u00ae \u00a2 \u0124 \u012f \u0131\u0131 \u0117\u0117 \u0132\u0132\u0132\u0132 ",
" \u0128\u0128 \u00f8\u00f8 \u0118\u0118\u0114\u0114 \u011f\u0129\u0129\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012b \u012c\u012c\u0121\u0121 \u0135\u012e\u012e %% \u00fc\u00fc\u0136\u00dc', \u010d \u0134 \u00ae\u00ae\u00ae\u00ae\u00ae\u00ae\u00ae \u00a2 \u0124 \u0130 \u0126 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137",
" \u0138 \u0127\u0128\u0128 \u0118\u0114\u0114 \u009a\u0129\u0129\u010f\u010f \u0112\u0113\u012a\u012a\u0139\u0139\u013a\u013a \u012c\u012c\u0121\u0121 \u013b \u0135\u012e %%% \u00fc\u00fc\u00fc\u013c\u013d\u00cd, \u010d \u013e\u010d \u00ae\u00ae\u00ae\u00ae\u013f\u013f\u013f \u0140 \u0141 \u0117\u0117 \u0132\u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 ",
" \u0142 \u0138 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144\u0129 \u0112\u0113\u012a\u012a\u0139\u0139\u0139\u0139\u013a\u013a\u012c \u0121 \u0145\u0146\u0135\u0135\u012e\u0147%% \u00fc\u00fc\u00fc\u0136\u013c\u00dc', \u010d \u013e \u010d \u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u013f\u0148\u0148\u0117\u0117 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0137 \u0149\u0149\u0149\u0149",
"\u00c1 \u0142 \u00f8 \u014a\u0128\u0128\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0112\u0112\u012a\u012a\u012b\u014c\u014c\u014d\u0139\u0139\u013a\u012c \u0121\u0146\u0146\u0145\u014e\u0135\u014f\u0150\u0150% \u00fc\u00fc\u0136\u013c \u013d\u011d' \u010d\u010d \u013e\u013e \u010d\u010d \u0151\u0151 \u0132\u0132\u0132\u0132 \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 ",
"\u00c1 \u00f8\u00f8 \u014a\u0127\u0128\u014b \u0118\u0114\u0114 \u0143\u0143\u0144 \u0153\u0153 \u0112\u0113\u012a\u012b\u014c\u014c\u014d\u014d\u0139\u0139 \u012c\u0154\u0146\u0146\u0121\u0121\u0155\u0156\u0157\u0150\u0158\u0158%\u00fc\u00fc\u0136 \u013c &\u011d', \u010d \u013e\u013e \u010d\u010d \u0132\u0132\u0132 \u0137\u0137\u0137\u0137\u0149\u0149\u0152\u0149\u0152\u0152 ",
" \u00f8\u00f8 \u0127\u0128\u0128 \u0118\u0118\u0114 \u0143\u0144 \u0153\u0159 \u015a\u0113\u012a\u012b\u014d\u014c\u014d\u014d\u0139\u015b\u015b\u015b\u012c\u0154 \u0121\u0121\u0156\u0150\u0150\u0158\u0158\u00fc\u00fc\u00fc\u0136 \u013c \u00dc\u011d', \u010d \u015c\u013e \u010d\u010d \u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152 ",
"\u015d \u00f8 \u014a\u0128\u0128 \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u0159\u015e \u0112\u0113\u012a\u012a\u012b \u014d\u015b\u015b\u015b\u015b\u015b\u015b\u012c \u0150\u0150\u0150\u0158\u0158\u014f\u00fc\u00fc\u0136 \u013c &\u011d', \u010d\u015c\u015c\u013e\u013e \u013e\u013e\u013e \u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0152\u0152\u0152 \u015f",
"\u015d\u00f8 \u014a\u0127\u0160\u014b \u0118\u0118\u0114\u0114 \u0143\u0144\u0144 \u015e\u015e \u015e \u0112\u0113\u012a\u012a\u012b\u0161\u0161\u0161\u015b\u015b\u015b\u015b \u0162\u0162\u0163\u0163\u0163\u0150\u0150\u0150\u0150\u0121\u0158\u0158\u00fc\u00fc\u0136\u014f\u014f & ',, \u010d\u015c \u013e\u013e \u013e\u013e\u0164\u013e\u013e \u0137\u0137\u0137\u0149\u0149\u0149\u0149\u0152\u0152\u0152 \u015f\u015f\u0165",
" \u015d \u0166\u0128\u0128 \u0118\u0118\u0143\u0143\u0144 \u015e\u015e \u015e\u0167 \u0112\u0113\u012a\u012b\u0161\u0161\u0161\u0161\u0163\u0163\u0163\u0163\u0163\u0163\u0162\u0163\u0163\u0163\u0150\u0150\u0150 \u0158\u0158\u0158\u00fc\u00fc\u0157 \u014f \u0168 \u011d', \u010d\u010d \u013e\u013e \u013e\u0164\u0164\u0164\u013e\u013e\u013e \u0169\u0169\u0169\u0137\u0137\u0137\u0137\u0149\u0149\u0149\u0149 \u0152\u0152\u0152 \u015f\u0165\u0165\u016a\u016b",
"\u016c \u015d\u015d \u0127\u0160\u0128 \u0118\u0143\u0144 \u015e \u0167\u0167 \u0112\u0113\u012a\u012b\u0161\u0161\u0161\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u016d\u0162\u016d\u0163\u0163 \u016e\u0158\u00fc\u00fc\u0136\u0156\u0157\u014f\u014f \u0168\u00dc\u011d',\u016f \u010d\u010d \u013e\u013e \u013e \u0164\u0164\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0169\u0137\u0170\u0137\u0149\u0149\u0149\u0149\u0171\u0171 \u0152\u0152 \u015f\u0165\u0165\u016a\u016b\u016b ",
"\u0172\u016c \u015d\u015d \u014a\u0127\u0128\u014b \u0143\u0144 \u015e \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u016d\u016d\u016d\u016d\u0173\u0173\u0173\u016d\u016d\u0162\u016d\u016d\u016d \u016e\u0174\u0174\u0136\u0175\u0175\u0156\u0157\u014f \u0176\u00dc\u011d\u00cd ,\u016f \u0177\u0177\u010d\u010d \u013e\u013e\u0178 \u0169 \u0179\u0137\u0170\u0170\u0149\u0149\u0149 \u017a\u0171 \u0152\u0152 \u015f\u0165\u0165\u016a\u016b\u016b ",
"\u0172\u016c\u016c \u017b\u015d \u014a\u0127\u0128\u0128 \u0143\u0144\u0144 \u015e \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u016d\u016d\u0173\u0173\u0173\u0173\u0173\u0173\u0173\u0173\u0162\u016d\u016d\u016d\u016d\u016d \u016e\u016e\u0174\u0174\u017c\u017d\u0175\u0175\u0157\u014f \u0168\u00dc \u011d',\u016f\u016f\u0177\u0177 \u0177\u0177\u0177\u010d \u0178\u0178\u0178 \u0169 \u0179\u0179\u0179\u0170\u017e\u0149\u0149 \u017a\u017a\u017a\u0171 \u0152 \u015f\u0165\u0165\u0165\u016a\u016b\u016b ",
"\u0172 \u016c\u016c\u017b \u015d \u0127\u0128\u0128 \u0143\u0143\u0144 \u015e\u015e \u0112\u0112\u0113\u012a\u0161\u0161\u016d\u016d\u0173\u0173 \u017f\u017f \u0162\u0173\u0173\u016d\u016d\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0175\u0156\u014f \u0168\u00dc \u011d',,\u016f\u0177 \u010d\u010d \u0169\u0169\u0169\u0179\u0179\u0179\u0182\u0170\u0183\u017e \u017a\u017a\u017a \u0171 \u0152 \u015f\u0165\u0165\u0184\u016a\u016b\u016b \u0185\u0185",
"\u0172\u016c\u016c\u017b\u017b \u015d\u015d \u014a\u0127\u0128\u014b \u0143\u0143\u0144 \u015e\u015e \u0112\u0113\u012a\u0161\u0161\u0161\u016d\u0173\u0173 \u017f \u017f\u017f\u017f\u017f \u0186\u0186\u0173\u0187\u0187\u016d\u016d\u0180\u0180\u0181\u017c\u017c\u017d\u017d\u0175\u0175\u0157\u014f \u0176\u00dc \u011d', \u016f \u010d\u010d \u0169\u0169\u0169\u0179\u0179\u0179\u0182\u017e\u017e\u0183 \u017a\u017a\u017a \u0171\u0171 \u0152 \u015f\u0165\u0165\u016a\u016a\u016b\u016b \u0185\u0185\u0185 ",
" \u016c\u017b\u017b \u015d\u015d \u014a\u0127\u0128\u014b\u0143\u0144 \u0188\u0189 \u0112\u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0173 \u017f\u017f\u018a \u017f\u017f\u018b\u0186\u018b\u0187\u0187 \u016d\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0175\u0157\u014f \u0176\u00dc \u011d',, \u016f \u010d\u010d\u0169\u0179\u0179\u0179\u0182\u0182\u017e\u017e\u0183 \u017a\u017a \u018c\u018c\u0171 \u0152 \u015f\u0165\u0165\u016a\u016a\u016b\u016b \u0185\u0185 ",
"\u016c \u017b\u018d \u015d\u015d \u0127\u014b\u014b\u0144 \u0188 \u0189 \u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0173 \u017f\u017f \u018a\u018a\u018a\u018a\u018a \u018e\u0186\u018b\u0187\u0187\u0187\u0180\u0180\u0181\u0181\u017c\u017c \u017d\u017d\u0175\u0157\u014f\u018f\u0176\u00dc\u0190\u0191\u011d\u00cd', \u016f \u0192\u0179\u0179\u0182\u0170\u017e\u017e\u0183 \u017a\u017a\u017a \u018c\u018c\u018c\u0171\u0171\u0152 \u015f\u0165\u0165\u016a\u016b\u016b\u016b \u0185\u0185 ",
" \u0193 \u015d\u015d \u0143\u014a\u0144 \u0194 \u0189 \u0113\u0113\u012a\u0161\u0161\u016d\u016d\u0173 \u017f\u017f \u0195\u0195 \u018a\u018a\u018a\u017f\u0186\u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u017c\u017c\u017c\u017d\u017d\u0175\u018f \u0176\u0196 \u0191\u0191\u011d',, \u016f \u0179\u0179 \u0182\u0170\u0197\u017e\u0183 \u017a\u017a\u017a \u018c\u018c \u0171\u0152\u0152 \u015f\u0165\u0184\u016a\u016b\u016b\u016b \u0185\u0185 ",
"\u017b \u015d\u015d \u0143\u0143\u0144 \u0194\u0194\u0189\u0189 \u0113\u012a\u0161\u0161\u0161\u016d\u0173\u0198\u0198\u0198\u0195\u0195 \u0195\u0195\u0195 \u018a\u017f \u0186\u018b\u0187\u0187\u0180\u0180\u0181\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176\u0196 \u0191\u011d\u00cd', \u016f\u016f \u0179\u0179 \u019b\u0170\u0197\u017e\u0183\u0192 \u0171\u0171\u0171\u0171\u018c\u018c\u018c \u0171 \u0152 \u0165\u0165\u0184\u016a\u016b\u016b \u0185\u0185 ",
"\u019c \u019d\u019d\u015d \u0143\u0144 \u019e\u019e\u019e\u019e\u019e \u0113\u012a\u012a\u0161\u0161\u016d\u0173\u0198\u0198\u0198 \u0195\u0195\u0195\u0195 \u0186\u018b\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176\u00dc \u0191 \u011d',, \u016f \u0179\u0179 \u0182\u0170\u017e\u017e\u0183\u0183 \u01a1\u01a1 \u0171\u0171\u0171\u0171\u01a2\u01a2\u0171\u0171\u0152 \u015f\u015f\u0165\u01a3\u016a\u016b\u016b \u0185\u0185 ",
" \u019d \u015d \u0143\u0144\u0144 \u019e\u019e\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0161\u0161\u016d\u016d\u0198\u0198\u0198 \u0195 \u0186\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u017d\u0199\u019a \u0176 \u0196 \u01a5\u011d\u00cd',\u01a6\u0179\u0179 \u0182\u0170\u017e\u017e\u0183\u0183 \u01a2\u01a2 \u0152\u0152 \u015f\u0165\u0165\u01a3\u016a\u016b\u016b \u0185\u0185 ",
" \u01a7 \u019d \u015d\u015d\u0143\u0144\u0144 \u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4\u01a4 \u0113\u012a\u012a\u0161\u0161\u016d\u016d\u0198\u0198\u0198 \u01a8\u01a8\u01a9\u01a9\u01a9\u01a9 \u01aa\u01aa\u0186\u018b\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u0199 \u0176 \u0196 \u011d\u01ab\u01a6\u01a6 \u0182\u0170\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0165\u0165\u01a3\u016b\u016b\u016b \u0185\u0185 ",
" \u01a7\u01a7\u01ac\u01ac\u01ac \u015d\u0143\u0144 \u01a4\u01a4\u01a4 \u01a4\u01a4 \u0113\u012a\u0161\u0161\u0161\u016d\u0198\u0198\u0198 \u01a9\u01ad\u01a9 \u01a9\u01a9\u01a9 \u01ae\u01ae\u01af\u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199\u019a \u0176 \u0196\u00dc \u01b0\u0179\u01ab\u01a6\u0182\u017e\u017e \u0183\u0183 \u01a2\u01a2 \u0152 \u015f\u0165\u01a3\u01b1\u01b1\u016b\u016b \u0185\u0185\u0185 ",
"\u01b2\u01b3 \u019d\u019d\u01ac \u01ac\u01ac\u01ac \u015d\u015d\u01b4\u01b5 \u019e\u01a4\u01a4\u01b6\u01b6\u01b6\u01b6 \u01a4\u01a4\u012a\u012a\u0161\u0161\u01b7\u0198\u0198 \u01b8\u01a9 \u01ad\u01ad \u01a9\u01ae\u01ae \u01af\u0186\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u017d\u0199 \u0176\u0176 \u0196\u00dc \u0179\u0179\u01b0\u01b9\u0182\u01a6\u01a6 \u0183\u0183 \u01a2\u01a2\u01a2\u01a2\u01a2 \u01ba\u0152\u015f\u0165\u0184\u01b1\u016a\u016b\u016b \u0185\u0185 ",
"\u01b3\u01b2\u01b2 \u01bb\u01bb \u01ac \u01bc\u01bd\u01b4\u019e\u01a4\u01a4\u01b6\u01b6 \u01b6 \u01be\u0113\u012a\u012a\u01bf\u0161\u01c0\u01b7\u01b7 \u01a9\u01b8\u01b8\u01b8 \u01ad\u01ad \u01a9 \u01af\u0186\u0187\u019f\u01a0\u01a0\u016d\u016d\u017c\u017c\u0199\u0199 \u0176 \u01c1\u01c2\u01c3\u0179 \u0182\u0182\u017e\u01b0\u01ab\u01a6\u0183\u0183 \u01a2\u01a2\u01a2\u01a2 \u01a2\u01a2\u01a2 \u015f\u015f\u0165\u01b1\u01b1\u016b \u0185\u0185 ",
"\u016c\u016c\u01c4\u01b2 \u01c5 \u01c6\u01ac \u01c7\u01c8\u01c9\u01a4\u01a4 \u01b6 \u01ca \u01cb\u01cc\u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01b7 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad\u01ad\u01a9 \u01af\u0186\u0186\u019f\u019f\u01a0\u01a0\u016d\u017c\u017d\u0199\u019a \u0176\u0176 \u01c3\u01c2\u01c2\u01ce\u0182\u017e\u017e\u01b0\u01b9\u01ab\u01a6\u01a6 \u01a2\u01a2 \u01a2\u01a2\u015f\u01ba\u0165\u016a\u01b1\u016b \u0185\u0185 ",
" \u016c\u016c \u01cf\u01c5 \u019d\u01c6\u01c6 \u01c7\u01d0\u01a4\u01d1\u01b6 \u01ca \u01ca\u01cb \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7 \u01d2\u01a9 \u01cd\u01cd \u01b8\u01b8 \u01ad\u01ad \u01af \u0186\u0187\u019f\u01a0\u01a0\u01d3\u01d3 \u0199 \u0176\u0176 \u01c3\u01c3\u01d4\u01c2\u01d5\u01d6\u017e \u0183\u0183\u01b0\u01d7\u01ab\u01d8 \u01a2\u01a2 \u01a2\u015f\u015f\u01d9\u0165\u0184\u016b\u016b \u0185\u0185 ",
" \u016c \u01cf\u01cf\u019d\u019d\u01ac\u01ac \u01c7\u01d0 \u01d1\u01d1\u01d1\u01ca \u0113\u012a\u012b\u01bf\u01bf\u01c0\u01b7\u01b7\u01da\u01da\u01a9\u01a9\u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8 \u01a9 \u01af \u0186\u0186\u019f\u01a0\u01d3\u01d3\u016d\u0199\u01db\u0176\u0176\u01c3\u01c3\u01d4\u01d5\u01d5\u01c2\u01d6 \u0183\u0183\u0183 \u01d7\u01dc\u01d8\u01d8\u01a2\u01a2\u01a2\u01a2\u01a2 \u01a2\u015f\u01d9\u01d9\u0165\u016a\u016b\u016b \u01dd\u01dd \u0185\u0185 ",
" \u016c \u01c5\u01de\u019d \u01ac \u01c7\u01d0\u01df\u01e0\u01df\u01d1\u01d1\u01d1 \u0113\u012a\u012a\u01bf\u01bf\u01bf\u01b7\u01b7 \u01da\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd \u01b8\u01b8\u01a9 \u01af \u0186\u019f\u01d3\u01d3\u016d\u016d\u01db\u01db\u0176\u01c3\u01d4\u01e2\u01d5\u01d5\u01e3\u01c2\u0183\u0183\u0183 \u01d7\u01dc\u01d8\u01a2 \u01a2\u01d9\u01d9\u0165\u0165\u01e4\u016b\u016b\u01ba \u01dd\u01dd \u01e5 ",
"\u01e6 \u016c \u01c5 \u01de\u01ac \u01c7\u01d0\u01df\u01e0\u01e7\u01df\u01df\u01d1\u01d1 \u0113\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8 \u01e9 \u01ea\u01da\u01e1\u01e1 \u01d2\u01d2 \u01cd\u01cd\u01a9\u01a9 \u01af \u01d3\u01d3\u01d3\u01a0\u01eb\u01eb\u0176\u01c3\u01ec\u01e2\u01ed\u01ee\u01ef\u01f0\u0183\u01c1\u0183 \u01d7\u01f1\u01dc\u01d8\u01a2 \u01a2\u015f\u0165\u0165\u016a\u01e4\u01e4\u016b \u01f2 \u01f3\u01f3 \u01dd\u01dd\u01dd \u01e5 ",
"\u01e6\u01e6\u016c \u01c5 \u01ac\u01ac\u01ac \u01f4\u01f4\u01df\u01e0 \u01e7\u01f5\u01df\u01df\u01d1\u01d1\u012a\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8\u01f6\u01e9\u01e9\u01ea\u01da\u01da \u01e1\u01e1 \u01d2\u01d2\u01a9\u01a9\u01cd\u01a9 \u01af\u01f7\u01f7\u01d3\u01d3\u01f8\u01f9\u0176\u01c3\u01ec\u01db\u01ed\u01ee\u01e3\u01f0\u0183\u0183\u0183\u01c2\u01c2 \u01f1\u01dc\u01d8\u01d8 \u01a2\u015f\u0165\u0165\u016a\u016b\u016b\u016b \u01f2 \u01fa\u01f3\u01f3\u01f3 \u01fb\u01dd\u01dd \u01e5 ",
" \u01e6\u01e6 \u01c5\u01fc \u01ac \u01c7\u01f4\u01df\u01e0\u01e7\u01e7\u01f5\u01fd \u01df\u01d1\u012a\u012b\u01bf\u01bf\u01c0\u01e8\u01e8 \u01f6\u01ea\u01e9 \u01e8\u01da \u01a9\u01a9\u01e1\u01a9\u01a9\u01a9 \u01f7\u01f7\u01f7\u01f7\u01f7\u01fe\u0176\u01c3\u01ec\u01f9\u01db\u01db\u01f0\u01ef\u0183\u0183\u0183 \u01ff \u01d7\u01d7\u01dc\u01d8\u01a2 \u01a2\u01a2\u015f\u0165\u0165\u016a\u016b\u016b \u01f2 \u01fa\u01fa\u01fb\u01fb\u01f3 \u01e5 ",
" \u01e6\u01e6 \u0200\u01fc\u01fc \u01ac \u01c7\u01c7\u01d0 \u0201\u01e7\u01f5\u01f5\u01fd\u01df \u012a\u012b\u01bf\u01bf\u01bf\u0173\u01e8\u01e8\u01e8 \u01f6\u01e8\u01e8\u01e8\u01da\u01e8 \u0202\u0202\u01f7\u01f7\u01f7\u01f7 \u0176\u01c3\u01fe\u01ec\u01d5\u01d5\u01f0\u01db\u01ef\u0183\u0183 \u01ff\u0203 \u01d7\u01f1\u01dc\u01d8\u0204\u0204\u0165\u0165\u016a\u016b\u016b \u01f2 \u01fa\u01fa \u01e5 ",
"\u0176 \u01e6\u01e6\u01e6 \u01fc\u01ac \u01c7\u01d0 \u0201 \u0205\u0206\u0207\u01df\u01df\u012a\u012a\u01bf\u01bf\u01bf\u0173\u0173 \u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01e8\u01da\u01da \u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u01f7 \u0176\u0176\u01c3\u01ec\u01d5\u01d5\u01e3\u01f9\u01ef\u01ef\u0183 \u0209\u0209 \u01ff\u0203 \u01d7\u01f1\u01dc\u020a\u020b\u016a\u016b\u016b \u01f2 \u01dd\u01dd \u01e5 ",
"\u0176\u0176 \u020c\u01e6\u01e6\u01e6 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206\u020d\u01df\u012a\u012a\u012b\u01bf\u01bf\u01c0\u0173 \u01e8\u01e8\u01e8\u01e8\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u01d5\u01fe\u01e3\u01f8\u01ef\u01f9\u01db\u020e \u0209\u0209\u020f \u01ff\u0203 \u0210\u0211\u020a\u020b\u0212\u0212\u016b \u01f2\u01dd \u01dd\u01dd \u01e5 ",
"\u0213\u0176\u0176 \u0214\u0215\u01e6\u01e6\u0216\u0216 \u01fc\u01fc\u01fc \u01c7\u01d0\u0201\u0201\u0205 \u0206 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0173 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0217\u0202\u0202\u0202\u0202\u0202\u0202\u0208\u0208\u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u0170\u0170\u01e3 \u01fe\u01f8\u01f8\u0218\u0219\u020e\u0209\u0209 \u020f \u01ff\u0203 \u0210\u0210\u0211\u021a\u021b\u0212\u0212\u01dc\u01d8 \u01f2 \u01dd\u01dd \u01e5 ",
"\u0213\u01c3\u01c3\u0176\u0214 \u0215\u0215\u021c\u0216\u0216\u0216\u0216 \u01fc\u01fc\u01fc\u01c7\u01d0\u0201\u0205\u0205\u0206 \u020d \u012a\u012b\u01bf\u01bf\u01bf\u0173 \u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u0202\u021d\u0217\u0217 \u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u01d5\u0170\u0170\u01e3 \u0183\u0183\u01fe\u021e\u021f\u021f\u0218\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u021a\u0221\u0221\u0212\u01d7\u01f1\u01dc\u01d8 \u01f2 \u0222\u0222\u0222 \u01e5 ",
"\u0223\u0213\u0213\u01c3\u0176\u0176 \u0215\u0215 \u021c\u0216\u0216\u0216\u0216 \u01c7\u01fc\u020d\u020d\u0205\u0206\u0206\u020d \u012a\u012a\u01bf\u01bf\u01bf\u0173\u0202\u0202\u0202\u0202\u0202\u0224\u0225\u0225\u0226\u021d\u021d\u021d\u0217\u0217 \u0208\u0208\u0208\u0208\u0208 \u0176\u0176\u01c3\u01ec\u0227\u0170\u01d5\u01e3 \u0183\u0183 \u021e\u021f\u021f\u0218\u0218\u020e\u019a \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221\u0228\u0228\u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222\u0222 ",
"\u022a\u0223\u0213\u0214\u0214\u0176\u0176 \u0215\u0215\u022b\u021c\u021c\u0216\u0216\u0216\u0216 \u020d\u0206\u020d \u012a\u012a\u012b\u01bf\u01bf\u01c0\u0202\u0202\u0202\u0202\u0202\u022c\u0224 \u021d\u021d\u021d\u022d\u022e \u0217\u0217\u0208\u0208\u0208 \u0176\u01c3\u01c3\u01ec\u0227\u01d5\u0170\u01e3 \u0183\u0183 \u021e\u021e\u021f\u021f\u0218\u020e\u020e \u01ff\u0203 \u0210\u0211\u0211\u0220\u0221\u0221\u0221 \u022f \u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5\u0230\u0230\u0230\u0230\u0230 ",
" \u022a\u022a\u0223\u0213\u0214\u01c3\u0176\u0176 \u0231 \u021c\u021c\u0216\u0216\u0216\u0216 \u020d\u012a\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202\u0232\u0233\u0233\u022c\u021d\u021d\u0225\u0225\u0226 \u022d\u022e \u0217\u0217\u0208 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u0170\u01e3\u01e3\u0183\u0183 \u021e\u021f\u021f\u0218\u0218\u020e\u019a \u01ff\u0234\u0211\u0211\u0220\u0221\u0221\u0221 \u0235\u022f \u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 \u0230\u0230\u0230\u0230\u0230\u0230 ",
"\u0236\u0236 \u022a\u0223\u0213\u0213 \u01c3\u0176\u0231\u0231 \u021c\u021c\u0216\u0216\u0216\u0216\u012a\u012b\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u0232 \u021d\u021d\u022c\u0224 \u0225\u0226\u0226\u022d\u022e\u0237 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u0170\u01e3\u0183\u0183 \u021e\u021e\u021f\u021f\u0218\u020e\u020e\u0238\u0239\u0239\u023a\u023a\u0220\u0221\u0221\u0221 \u023b \u0235 \u022f \u023c\u023c\u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ",
" \u0236\u0236 \u022a\u0223\u0213\u0213\u0231\u01c3\u0176\u0176\u0176 \u021c\u021c\u021c\u0216\u0216\u01bf\u01bf\u01bf\u0202\u0202\u0202 \u023d\u021d\u021d\u0233 \u022c \u0224\u0225 \u0226\u0237 \u0176\u01c3\u01c3\u01ec\u01ec\u01d5\u01d5\u01e3\u01e3\u0183\u0183 \u023e\u021e\u021f\u021f\u0218\u0218\u0238\u0238\u023f\u0240\u0241\u0242\u0221\u0221 \u023b\u023b \u0235 \u0243\u022f\u023c \u0228\u0228 \u01f1\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ",
" \u0236\u0236 \u022a\u0223\u0231\u0213 \u01c3\u01c3\u0176\u0176 \u021c\u012a \u0244\u0244\u0202\u0202\u0202 \u023d\u0232 \u0233\u022c\u022c\u0224\u0237\u0225 \u0176\u0176\u01c3\u01ec\u01ec \u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u023e \u021e\u0238\u021f\u0238\u0238\u023f\u023f\u023f\u0245\u0246\u0247 \u023b\u023b \u0235 \u0248\u0243\u0243 \u0228 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ",
"\u0249\u0249\u0249\u0249\u0249\u0236\u0236 \u022a\u0223\u0223\u0213\u0213\u01c3\u01c3\u0176\u0176\u0176 \u024a \u0244\u0244\u0173\u0202\u0202 \u023d \u0232\u0233 \u022c\u0237 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3\u01e3\u0183\u0183 \u023e\u023e\u024b \u024c\u024c\u0238\u0238\u023f\u023f\u023f\u024d\u024d\u024e\u0203 \u023b\u023b \u0248 \u024f\u024f \u0250\u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229 \u01e5 ",
" \u0236\u0236\u0252 \u022a\u022a\u0223\u0213\u0213\u0213\u01c3\u0176\u0176\u0176\u0253\u0254\u0244\u0244\u0202\u0202 \u023d\u0232\u0237\u0233 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0256\u0256\u024c \u023f\u023f\u0257\u024d\u024d\u0258\u020e\u01ff\u0203 \u023b \u0235 \u0259\u0250 \u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2\u01f2 \u0229 \u01e5 ",
"\u025a \u025b\u025b\u025b \u025c\u025d\u025d\u025d \u022a\u022a\u022a\u0213\u0213\u0253\u01c3\u0176\u0254\u025e\u025e\u025f\u0202 \u0260\u0260 \u023d\u0237 \u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255\u0255\u0255 \u024b\u024b\u0256 \u0223\u0223\u0261\u024d\u0262\u0258\u0258\u0218\u020e\u0263\u0264\u023b \u0259\u0259\u0259\u0259\u0259\u024f \u0251 \u01d7\u01f1\u01dc\u01d8 \u01f2 \u0229\u0229 \u01e5 ",
"\u025a\u025a\u025b\u025b\u025b \u025c\u0265 \u025d\u025d\u025d \u022a\u022a\u0223\u0223\u0254\u0213\u0213\u01c3\u0176 \u0260\u0260\u0260\u0260 \u0176\u0176\u0176\u01c3\u01ec\u01ec\u01ec\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u024b\u0223\u0223\u0223\u0266\u0267\u0268\u0262\u0262\u0258\u021f\u0218\u0269\u0263\u020e\u026a \u024f \u0251\u0251 \u01f1 \u01d8\u01d8 \u01f2 \u0229\u0229 \u01e5 ",
" \u026b\u025a \u025c\u026c \u026d\u026e \u0253\u0253\u0254\u022a\u025e\u022a\u0213\u0183\u01c3\u0176\u0176\u01c3\u0176\u0176\u0176\u0176\u01c3\u0176\u01c3\u01c3\u01ec\u01ec\u01e3\u01e3\u01e3 \u0183\u0183\u0183 \u0255\u0255\u0255\u0255 \u0223\u0223\u022a\u0223\u0266\u0266\u026f\u0267\u0270\u0271\u0258\u021e\u021f\u021f\u0218\u0263\u0264\u020e\u026a\u026a\u026a\u026a \u0272\u0272\u0272\u0272\u0272 \u0273 \u0251\u0251 \u01d7\u01d7 \u01d8\u01d8\u01f2\u01f2 \u0229 \u01e5 ",
"\u026b \u025a\u025a \u0265\u0265\u026c \u0274 \u0275\u0275\u0254\u025e\u025e\u025e\u025f\u022a\u022a\u022a\u0223\u0183\u0183\u0183 \u01ec\u01ec\u0276\u01e3\u01e3\u0183\u0183\u0183 \u0255\u0255\u0255 \u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266\u0277\u0277\u0267\u0278\u0271\u0279 \u021e\u021e\u021f\u021f\u0263\u0264\u020e\u020e\u026a \u0272\u0272\u0272\u0272\u0272 \u0272\u0272\u0272\u0272\u0272\u0272 \u0251\u0251 \u01d7\u01f1 \u01d8 \u01f2 \u0229 \u01e5 ",
"\u026b \u025a\u025a \u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u025e\u025e\u025f\u025f \u022a\u0223\u0223\u022a\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u0183\u027b\u027b\u027b\u0255\u0255 \u0223\u0223\u0223\u0223\u0223\u022a\u0266\u0266\u0266\u0266 \u0277\u027c\u0267\u0270\u027d\u0271\u027e \u027f\u021e\u021e\u021f\u0264\u0218\u0269\u020e\u020e \u0272\u0272\u0272 \u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280\u0280 \u0273 \u0272\u0272\u0272 \u01d7\u01d7\u01dc\u01d8\u01f2\u01f2 \u0229 \u01e5 \u0281",
" \u025a\u025a\u0265 \u026c \u0274 \u0275\u0275\u027a\u027a\u0282\u0282\u025f\u025f\u0283 \u0284\u022a\u0276\u022a\u0223\u0223\u0223\u0223\u0223\u027b\u027b\u0223\u0223\u0223\u0223\u0223\u022a\u0223\u0223\u0223\u022a\u022a\u0266\u0266\u0266\u0266\u0266 \u0285\u0285\u0277\u027c\u027c\u0270\u027d\u027e\u0286\u0279 \u027f \u021e\u0263\u0264\u0218\u0218\u0269\u0287\u0272\u0288\u0289\u028a\u028a\u0280 \u0280\u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01dc\u01d8\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281",
" \u028b\u025a \u026c \u0274 \u0275\u027a\u027a\u0282\u0282\u028c\u028c \u0283 \u0284\u0284\u028d\u028d\u028d \u028e\u028e\u027b\u027b\u027b\u022a\u022a\u0266\u0266\u0266\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u0290\u0277\u027c\u0267\u0278\u027d\u027e\u0286\u0279 \u027f \u0263\u0264\u021f\u021f\u0287\u0291\u0291\u0288\u0292 \u028a \u0280\u0280\u0280 \u0272\u0272 \u01d7\u01f1\u01dc\u01f2\u01f2 \u0229\u0229 \u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293",
" \u028b \u025a\u025a \u0274 \u0275\u0275\u027a\u0282\u0282\u0282\u028c \u0283 \u0284\u0284\u028d\u028d \u028e\u028e\u028e \u0266\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u028f\u028f\u0290\u027c\u0270\u0270\u027d\u027e\u0286\u0279\u027f\u027f \u0263\u0264\u021e\u0291\u0291\u0288\u0288\u020e\u020e\u0294\u0295 \u0280\u0280\u0280 \u0272 \u01f1\u01f1\u01dc\u01f2\u01f2 \u0229\u0229\u01e5\u01e5 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ",
" \u028b\u028b \u025a\u025a \u0275\u0275\u027a\u0282\u0282\u0282\u028c \u0283\u0284\u0284\u028d\u028d \u028e\u0266\u0266\u0266\u0266\u0266 \u0285\u028f\u028f\u028f\u0290\u027c\u027c\u0267\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0297\u0287\u0291\u0291\u0288\u021f\u0218\u0269\u020e\u0294\u0295 \u0280\u0280 \u0272\u0272\u01d7\u01f1\u01dc\u01f2 \u0229\u0229 \u0281\u0281\u0281\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ",
" \u028b\u028b \u0298\u0298\u025a\u0275\u0275\u027a\u027a\u0282\u0282\u028c\u028c \u0284\u028d\u028d \u028e\u028e\u0266\u0266\u0266 \u028f\u028f\u0290\u0290\u027c\u027c\u0299\u0271\u027d\u0286\u0286 \u027f\u027f \u0296\u0297\u029a\u029a\u0288\u0288\u021f\u021f\u021f\u0218\u020e\u020e\u0294\u0295\u0295\u0295\u0295 \u0280 \u0272\u0272\u01d7 \u01d8\u01f2 \u01e5 \u0281\u0281\u029b\u0281\u0281\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ",
" \u028b \u0298\u0298 \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u029d \u0284\u0284\u028d\u029e \u028e\u0266\u0266\u0266 \u029f\u02a0\u0290\u0290\u027c\u027c\u0270\u0271\u027d\u0286\u0286 \u027f\u027f \u0296\u029a\u029a\u0288\u02a1\u02a2\u021e\u021f\u021f\u021f\u0218\u020e \u0295\u0295\u0295\u0295\u0295\u0295\u0295 \u0280\u0280 \u0272\u01d7\u01d7\u01dc\u02a3\u01f2 \u01e5\u01e5 \u02a4\u02a4\u02a4\u02a4\u0281\u0293\u0293\u0293\u0293\u0293\u0293 ",
" \u028b \u0298\u0298 \u029c\u027a\u027a\u0282\u0282\u029d\u029d \u0284\u0284\u028d \u02a5\u02a6\u0266\u0266 \u029f\u02a0\u0290 \u027c\u0267\u0299\u0271\u027d\u0286\u0286 \u027f \u0296\u029a\u029a\u02a7 \u02a2\u02a2\u021e\u021e\u021f\u021f\u0218\u0218\u020e \u02a8 \u0295\u0295\u0295\u0295\u0295\u0295\u0295 \u0280\u0280 \u0272\u01d7\u01dc\u01f2\u01f2 \u02a9\u02a4\u02a4\u02a4\u02aa\u02aa\u02aa\u02ab\u02ab\u0293 ",
" \u028b \u0298\u029c\u029c\u027a\u0282\u0282\u0282\u029d \u0284\u0284\u028d \u02ac\u02ad\u02ad\u02ad \u029f\u02a0\u0290 \u027c\u0267\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u029a\u029a \u02ae\u02a2 \u021e\u02af\u021f\u021f\u0218\u020e \u02a8 \u02b0\u0295\u0295\u0295\u0295\u0295\u0295\u0280\u0280 \u01d7\u01f1\u01dc\u02a3 \u02a9\u02a9\u02a9\u02a9\u02aa\u02aa\u02aa\u02aa\u02aa\u02b1\u02b1 ",
"\u028b\u028b \u029c\u029c\u027a\u027a\u0282\u0282\u029d \u0284\u028d \u02b2\u02b2 \u02ad\u02a5 \u02a0\u0290\u0290\u02a5\u027c\u0270\u0278\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u029a \u02ae\u02ae \u021e\u021e\u021f\u021f\u0218\u0218\u020e \u02a8 \u02b0 \u0280\u0280 \u0272\u02b3\u02b4\u02b5\u01f2\u02b6\u02b6\u02a9\u02aa\u02aa\u02aa \u02b1\u02b1 ",
"\u028b \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02b8\u02b9 \u02ac\u02b2\u02b2 \u02a5 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0270\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae\u02a2 \u021e\u021e\u021f\u021f\u0218\u020e\u02ba \u02a8 \u02b0 \u0280 \u0272\u02b3\u02b4\u02bb\u02bb\u02bb\u02bc \u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u027a\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02b8\u02b9 \u02ac\u02b2 \u02bd\u02a5 \u029f\u02a0\u0290\u0290\u027c\u0267\u0270\u0278\u027d\u0286\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u02af\u021e\u021f\u021f\u0218\u0218\u02be \u02a8\u02a8 \u02b0 \u0280 \u02b6\u02b6\u0272\u02b3\u02bb\u01d8\u01d8\u02bf\u02bf \u02b1\u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02b8\u02b8 \u02b2\u02b2 \u02bd\u02bd \u02a5 \u029f\u02a0\u0290\u02a5\u027c\u027c\u0299\u0278\u027d\u0286\u0286 \u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u021e\u02c0\u021f\u021f\u0218\u02be\u02ba \u02a8 \u02b0 \u02c1\u02b6\u02bb\u02bb\u0272\u02b3\u02b5\u01d8\u01d8 \u02b1\u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c2\u02c3 \u02ac\u02b2 \u02bd\u02bd \u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0267\u0270\u0271\u027d\u0286\u0286\u027f\u027f \u0296\u029a\u029a \u02ae\u02ae \u02a2 \u02c0\u021f\u021f\u0218\u0218\u02ba \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02bb \u0272\u02b3\u02b5\u01d8\u01d8 \u02c5\u02c6 \u02b1\u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3 \u02ac\u02b2 \u02bd\u02bd \u02a5\u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0270\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2\u02a2 \u02c0\u02c0\u021f\u021f\u0218\u02be \u02a8 \u02b0 \u02c1\u02c1\u02c4\u02c4 \u02b3\u02b4\u02b5\u01d8\u01d8 \u02c6\u02c6 \u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5\u02a5 \u02c7\u02c7 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0299\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u029a \u02ae\u02ae \u02a2 \u02c0\u021f\u021f\u0218\u02be \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02c4 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6 \u02b1\u02b1\u02b1\u02b1 ",
" \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5\u02c7\u02c7 \u029f\u02a0\u0290\u0290\u027c\u0267\u0270\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u029a\u029a \u02ae\u02ae \u02c8\u02c8\u02c8\u02c8\u02c8 \u02c0\u021f\u021f\u0218 \u02a8 \u02b0 \u02c1\u02c1\u02c1\u02c4\u02c4 \u0272\u02b4\u02b5\u01d8 \u02c6 \u02b1\u02b1\u02b1\u02b1",
"\u02c9\u02c9 \u029c\u029c\u027a\u0282\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5 \u029f\u02a0\u0290\u0290\u027c\u027c\u0267\u0278\u027d\u027e\u0286\u0279\u027f \u0296\u029a \u02ae \u02c8\u02c8 \u02c8\u02c8 \u02c0\u021f\u021f\u0218\u02ba \u02a8\u02a8\u02a8\u02a8\u02a8\u02a8\u02a8 \u02b0 \u02c1\u02c1\u02ca\u02c4\u02cb \u0272\u02b3\u02b5\u02b5\u01d8 \u02c6 \u02b1",
" \u02c9\u029c\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3 \u02b2 \u02bd\u02bd \u02a5\u02a5 \u029f\u02a0\u0290\u02a5\u027c\u0267\u0299\u0271\u027d\u0286\u0286\u0279\u027f \u0296\u0296\u029a \u02ae\u02cc \u02c8\u02c8\u02c8 \u02c8 \u02c0\u021f\u02be\u02be \u02a8\u02a8\u02a8\u02a8\u02a8\u02c1\u02c1\u02c1\u02ca\u02ca \u02cb\u02cb \u0272\u02b4\u02b4 \u01d8 \u02c6 ",
" \u029c\u029c\u027a\u027a\u0282\u0282\u029d\u02b7 \u02c3\u02c3\u02b2\u02b2 \u02bd\u02bd \u02a5\u02a5\u02a5\u029f\u02a0\u0290\u02a5\u027c\u0267\u0270\u0271\u027e\u0286\u0286\u027f\u027f \u0296\u0296 \u02cd\u02cd \u02ce\u02ce\u02c8\u02c8 \u02c8 \u02c0\u02c0\u02be\u02cf \u02d0\u02d0\u02c1\u02ca\u02ca \u02d1\u02cb\u02d2\u02d2 \u0272\u02b3\u02b5 \u01d8 \u02c6\u02c6 ",
" \u029c\u029c\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c3\u02c3\u02ac\u02b2 \u02bd\u02bd \u029f\u0290\u0290\u02a5\u027c\u0267\u0299\u0271\u027d\u0286\u0286\u027f\u027f \u0296\u02d3 \u02cd \u02ce \u02c8 \u02c8\u02d4\u02d4\u02be \u02d0\u02d0\u02d5\u02d5 \u02d1\u02d1\u02d1 \u02cb \u02d2 \u0272\u02b4\u02b5\u01d8\u01d8 \u02c6\u02c6 ",
"\u029c\u029c\u027a\u0282\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd\u02bd \u02a0\u0290\u0290\u027c\u027c\u02d6\u0270\u0271\u027e\u0286\u0279\u027f\u027f \u0296\u02d7\u02d3 \u02cd \u02c8\u02c8 \u02c8\u02c8\u02c8\u02c0\u02c0\u02be\u02ba \u02d0\u02d0\u02ca\u02ca\u02d8 \u02cb\u02d2\u02d2 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6 ",
"\u029c\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3\u02ac\u02b2 \u02bd\u02bd \u02a0\u0290\u0290\u027c\u027c\u02d6\u0278\u027d\u027e\u0286\u0279\u027f\u027f \u0296\u0296\u02d3 \u02d9\u02d9\u02cd \u02c8\u02c8\u02c8 \u02da\u02c0\u02c0\u02be \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb\u02cb\u02d2\u02d2 \u0272\u02b4\u02b5\u01d8 \u02c6 ",
"\u027a\u0282\u0282\u0282\u029d\u02b7 \u02c3\u02c3\u02b2 \u02bd\u02bd \u02a5\u02a0\u0290\u0290\u027c\u027c\u02d6\u02db\u02dc\u027e\u0286\u0279\u027f \u0296\u02d3 \u02d9\u02d9\u02cd \u02da\u02c0\u02be\u02be \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb\u02cb\u02d2 \u02b3\u02b5\u02b5\u01d8 \u02c6 ",
"\u027a\u0282\u0282\u029d\u02b7\u02b7 \u02c3\u02c3\u02ac\u02b2 \u02bd \u02a5\u02a5\u02a0\u02a0\u0290\u02dd\u027c\u02de\u02df\u02dc\u02e0\u0286\u0279\u027f \u0296\u0296\u02d3 \u02d9\u02d9 \u02cd \u02da\u02c0\u02c0\u02be\u02ba \u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb \u02d2 \u02b4\u02b5 \u01d8 \u02c6\u02c6 ",
"\u0282\u0282\u029d\u02b7\u02b7 \u02c2\u02c3\u02b2\u02b2 \u02bd \u02a5\u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02db\u02df\u02e0\u02e1\u02e2\u027f\u027f \u0296\u0296\u02d3 \u02d9 \u02cd\u02cd \u02da\u02c0\u02c0\u02be\u02ba\u02ba\u02d0\u02d0\u02ca\u02ca \u02d8 \u02cb \u02d2 \u02b3\u02b3\u02b5\u01d8\u01d8 \u02c6\u02c6 ",
"\u0282\u029d\u029d\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02bd \u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02db\u02df\u02e0\u02e2\u02e2\u027f\u027f \u0296\u0296\u02d3 \u02d9 \u02cd \u02da\u02da\u02c0\u02c0\u02be\u02be\u02d0\u02d0\u02ca\u02ca\u02e3\u02e3\u02e4 \u02d8 \u02cb \u02d2 \u02b3\u02b4\u02e5\u01d8\u01d8 ",
"\u0282\u029d\u02b7 \u02c3\u02c3\u02b2 \u02bd\u02bd \u02a5 \u02a0\u0290\u0290\u02dd\u027c\u02df\u02dc\u02e0\u02e2 \u027f\u027f \u0296\u0296\u02d3 \u02d9\u02d9 \u02cd \u02da\u02da\u02c0\u02cf\u02e6\u02d0\u02e7\u02ca \u02e4\u02e4\u02e4\u02d8\u02d8\u02d8\u02d8\u02d8 \u02cb\u02cb\u02e8\u02d2 \u02b3\u02b4\u02b5\u01d8 ",
"\u029d\u02b7 \u02c3\u02c3\u02ac \u02bd\u02bd \u02a5\u02a0\u0290\u02dd\u02dd\u027c\u02dc\u02df\u02e2\u02e2 \u027f\u027f \u0296\u02e9\u0296 \u02d9\u02d9 \u02cd \u02ea \u02da\u02c0\u02c0\u02e6\u02cf\u02e7\u02ca \u02d8\u02d8\u02d8\u02d8\u02d8\u02d8\u02d8\u02cb\u02cb\u02e8\u02d2 \u02eb\u02b4\u02ec\u01d8 ",
"\u02b7\u02b7 \u02c2\u02c3\u02b2\u02b2 \u02bd\u02bd \u02a5\u02a5\u02dd\u02dd\u027c \u02dc\u02e1\u02e1 \u027f\u027f \u0296\u02e9\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea\u02ea \u02da\u02ed\u02ed\u02cf\u02ee\u02ca \u02d8\u02cb\u02e8\u02e8\u02d2 \u02b3\u02b5\u02e5\u01d8 ",
"\u02b7 \u02c2\u02c3\u02ac\u02b2 \u02dd\u027c\u027c \u02e0\u02e1 \u027f\u027f \u02e9\u02e9\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ef\u02ed\u02ed\u02ed\u02cf\u02cf\u02f0 \u02f1\u02cb\u02e8\u02d2\u02d2 \u02b3\u02eb\u02ec\u02ec\u01d8 ",
" \u02c3\u02ac\u02b2 \u02dd\u027c\u027c \u02e0\u02f2 \u027f\u027f\u0296\u0296\u02d3 \u02d9 \u02cd\u02cd \u02ea \u02ef\u02ef\u02f3\u02f4\u02f4\u02da\u02f0\u02f0\u02f0\u02f0 \u02f1 \u02cb\u02e8\u02d2\u02d2 \u02f5\u02f5 \u02b3\u02eb\u02b5\u01d8\u01d8 ",
" \u02c3\u02c3\u02ac \u02dd\u027c\u02f6\u02f2\u02e0 \u027f\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ef\u02ef\u02f4\u02f4\u02f7\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0 \u02f1 \u02cb\u02cb\u02e8\u02d2\u02d2\u02f5\u02f5 \u02eb\u02b4\u02ec\u01d8\u01d8 ",
" \u02c2\u02c3\u02b2 \u02dd\u02dd\u027c\u02f6\u02f9\u02f2\u027f\u027f\u0296\u0296\u0296 \u02d9\u02d9 \u02cd \u02ea \u02fa\u02ef\u02ef\u02f4 \u02f7\u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fb\u02f0 \u02fc\u02e8\u02e8\u02f5\u02f5 \u02b3\u02b4\u02e5\u01d8\u01d8 ",
"\u02c2\u02c3\u02ac\u02b2 \u02dd\u02dd\u027c\u02f6\u02f9\u02fd\u02fe\u02fe\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02ff\u02fa\u02ef\u02f4\u02f4 \u02f7\u02f8\u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fb\u02fb\u02f0\u02f0\u02f0\u02f0\u02f0\u02f0\u02fc\u02e8\u02e8\u02d2 \u02b3\u02b3\u02b5\u02e5\u01d8\u01d8 ",
"\u02c3\u02b2\u02b2 \u02dd\u027c\u027c\u02f9\u02f9\u02fd\u02fe\u0296\u0296\u02d3 \u02d9\u02d9 \u02cd\u02cd \u02ea \u02fa\u02fa\u02fa\u02ef\u02f4 \u02f7\u02f7\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02fb\u02f8\u02f8\u02f0\u02f0\u02f0\u02f0\u02f0\u02fc\u02f0\u02e8\u02e8\u02d2 \u02b3\u02b3\u02b5\u02e5\u01d8 ",
"\u02ac\u02b2 \u02dd\u027c \u02f9\u02f9\u02fd\u02fe\u0296\u0296 \u02d9 \u02cd\u02cd \u02ff \u02f4\u02f4 \u02f7\u02f7\u02f7\u02f7\u02f8\u02f7\u02f7\u02f7\u02f7\u02f7\u02fb\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f8\u02f0\u02f0\u02fc\u02f0\u02f0\u02e8\u02d2 \u02b3\u02b4\u02b5 \u01d8 ",
"\u02b2 \u02dd\u02dd\u027c \u02fd\u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f8\u02fc\u02f0\u02f0\u02f0\u02d2\u02d2 \u02b3\u02b4\u02b5 \u01d8 ",
"\u02b2 \u02dd\u02dd\u027c \u02fd\u02fd\u02fe\u0296\u02d3 \u02cd \u02fc\u02f8\u02f0\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b5\u02b5\u01d8\u01d8 ",
" \u02dd\u027c\u027c \u02fd\u02fd\u0296\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b3\u02b5\u02b5\u01d8\u01d8 ",
" \u02dd\u02dd\u027c \u02fd\u02fd\u0296\u0296 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5\u02b5\u01d8 ",
" \u02dd\u02dd\u027c \u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 ",
" \u02dd\u027c \u02fd\u02fe\u0296\u02d3 \u02cd\u02cd \u02f8\u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 ",
" \u02dd \u02fd\u02fd\u02fe\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3 \u02b5\u01d8\u01d8 ",
" \u02fd\u02fd\u0296\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5\u02b5\u01d8 ",
" \u02fd\u02fd\u0296\u0296\u02d3 \u02f8\u02f0\u02f0\u02f0\u02d2 \u02b3\u02b4\u02b5 \u01d8 "
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View file

@ -1,6 +1,9 @@
<Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-image="../../data/images/checker.jpg"> <Map srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" background-image="../../data/images/checker.jpg">
<Style name="ellipse" image-filters="hsla(0x.5;.5x1;0x.5;0x1)"> <Style name="ellipse"
direct-image-filters=" scale-hsla(0,1,0,1,0,1,0,.5)"
image-filters="scale-hsla(.1,.9,.5,1,.5,1,.2,1)"
>
<Rule> <Rule>
<MarkersSymbolizer <MarkersSymbolizer
width="240" width="240"

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" background-color="#dfd8c9">
<Style name="marking" filter-mode="first">
<Rule>
<Filter>([class] = 'railways')</Filter>
<LineSymbolizer stroke="#ffffff" stroke-width="1.8" stroke-dasharray="5, 5" />
</Rule>
</Style>
<Style name="fill" filter-mode="first">
<Rule>
<Filter>([class] = 'minorroads')</Filter>
<LineSymbolizer stroke-width="2.5" stroke="#ffffff" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'mainroads')</Filter>
<LineSymbolizer stroke-width="4" stroke="#ff9999" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'motorways')</Filter>
<LineSymbolizer stroke-width="6" stroke="#ff6666" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'railways')</Filter>
<LineSymbolizer stroke-width="3" stroke="#333333" stroke-linecap="round" />
</Rule>
</Style>
<Style name="bridge" filter-mode="first">
<Rule>
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
<LineSymbolizer stroke-width="6" stroke="#ffffff" />
</Rule>
</Style>
<Style name="casing" filter-mode="first">
<Rule>
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
<LineSymbolizer stroke-width="8" stroke="#333333" />
</Rule>
<Rule>
<Filter>([class] = 'minorroads')</Filter>
<LineSymbolizer stroke-width="3" stroke="#a69269" />
</Rule>
<Rule>
<Filter>([class] = 'mainroads')</Filter>
<LineSymbolizer stroke-width="5" stroke="#ff0000" />
</Rule>
<Rule>
<Filter>([class] = 'motorways')</Filter>
<LineSymbolizer stroke-width="8" stroke="#990000" />
</Rule>
</Style>
<Layer name="layer"
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
group-by="z"
>
<StyleName>casing</StyleName>
<StyleName>bridge</StyleName>
<StyleName>fill</StyleName>
<StyleName>marking</StyleName>
<Datasource>
<Parameter name="file">../data/grouped-rendering.sqlite</Parameter>
<Parameter name="table">(SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z
FROM roads ORDER BY z_order) AS road</Parameter>
<Parameter name="type">sqlite</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" background-color="#dfd8c9">
<Style name="marking" filter-mode="first">
<Rule>
<Filter>([class] = 'railways')</Filter>
<LineSymbolizer stroke="#ffffff" stroke-width="1.8" stroke-dasharray="5, 5" />
</Rule>
</Style>
<Style name="fill" filter-mode="first">
<Rule>
<Filter>([class] = 'minorroads')</Filter>
<LineSymbolizer stroke-width="2.5" stroke="#ffffff" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'mainroads')</Filter>
<LineSymbolizer stroke-width="4" stroke="#ff9999" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'motorways')</Filter>
<LineSymbolizer stroke-width="6" stroke="#ff6666" stroke-linecap="round" />
</Rule>
<Rule>
<Filter>([class] = 'railways')</Filter>
<LineSymbolizer stroke-width="3" stroke="#333333" stroke-linecap="round" />
</Rule>
</Style>
<Style name="bridge" filter-mode="first">
<Rule>
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
<LineSymbolizer stroke-width="6" stroke="#ffffff" />
</Rule>
</Style>
<Style name="casing" filter-mode="first">
<Rule>
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
<LineSymbolizer stroke-width="8" stroke="#333333" />
</Rule>
<Rule>
<Filter>([class] = 'minorroads')</Filter>
<LineSymbolizer stroke-width="3" stroke="#a69269" />
</Rule>
<Rule>
<Filter>([class] = 'mainroads')</Filter>
<LineSymbolizer stroke-width="5" stroke="#ff0000" />
</Rule>
<Rule>
<Filter>([class] = 'motorways')</Filter>
<LineSymbolizer stroke-width="8" stroke="#990000" />
</Rule>
</Style>
<Layer name="layer"
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
<StyleName>casing</StyleName>
<StyleName>bridge</StyleName>
<StyleName>fill</StyleName>
<StyleName>marking</StyleName>
<Datasource>
<Parameter name="file">../data/grouped-rendering.sqlite</Parameter>
<Parameter name="table">(SELECT fid, geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z
FROM roads ORDER BY z_order) AS road</Parameter>
<Parameter name="type">sqlite</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -102,7 +102,7 @@ files = {
'marker-on-line-spacing-eq-width-overlap': {'sizes':[(600,400)]}, 'marker-on-line-spacing-eq-width-overlap': {'sizes':[(600,400)]},
'marker_line_placement_on_points':{}, 'marker_line_placement_on_points':{},
'marker-with-background-image': {'sizes':[(600,400),(400,600),(257,256)]}, 'marker-with-background-image': {'sizes':[(600,400),(400,600),(257,256)]},
#'marker-with-background-image-and-hsla-transform': {'sizes':[(600,400),(400,600),(257,256)]}, 'marker-with-background-image-and-hsla-transform': {'sizes':[(600,400),(400,600),(257,256)]},
'marker-on-hex-grid': {'sizes':[(600,400),(400,600),(257,256)]}, 'marker-on-hex-grid': {'sizes':[(600,400),(400,600),(257,256)]},
'whole-centroid': {'sizes':[(600,400)], 'whole-centroid': {'sizes':[(600,400)],
'bbox': mapnik.Box2d(736908, 4390316, 2060771, 5942346)}, 'bbox': mapnik.Box2d(736908, 4390316, 2060771, 5942346)},
@ -140,13 +140,22 @@ files = {
'bbox':mapnik.Box2d(-13267022.12540147,4598451.621636203,-13247454.246160466,4618019.500877209) 'bbox':mapnik.Box2d(-13267022.12540147,4598451.621636203,-13247454.246160466,4618019.500877209)
}, },
'tiff-reprojection-1': {'sizes':[(250,250)]}, 'tiff-reprojection-1': {'sizes':[(250,250)]},
'tiff-reprojection-2': {'sizes':[(250,250)]},
# disabled since fixing is not actionable: https://github.com/mapnik/mapnik/issues/1913
#'tiff-reprojection-2': {'sizes':[(250,250)]},
# https://github.com/mapnik/mapnik/issues/1520 # https://github.com/mapnik/mapnik/issues/1520
# commented because these are not critical failures # commented because these are not critical failures
#'tiff-alpha-raster': {'sizes':[(600,400)]}, #'tiff-alpha-raster': {'sizes':[(600,400)]},
#'tiff-alpha-broken-assoc-alpha-raster': {'sizes':[(600,400)]}, #'tiff-alpha-broken-assoc-alpha-raster': {'sizes':[(600,400)]},
#'tiff-nodata-edge-raster': {'sizes':[(600,400)]}, #'tiff-nodata-edge-raster': {'sizes':[(600,400)]},
#'tiff-opaque-edge-raster': {'sizes':[(256,256)]}, #'tiff-opaque-edge-raster': {'sizes':[(256,256)]},
'road-casings-grouped-rendering': {'sizes':[(600,600)],
'bbox':mapnik.Box2d(1477001.12245,6890242.37746,1480004.49012,6892244.62256)
},
'road-casings-non-grouped-rendering': {'sizes':[(600,600)],
'bbox':mapnik.Box2d(1477001.12245,6890242.37746,1480004.49012,6892244.62256)
}
} }
class Reporting: class Reporting: