diff options
Diffstat (limited to 'addons')
381 files changed, 9831 insertions, 1411 deletions
diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 5c8d27e11cb..bb9fcaa0dbd 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -13,6 +13,7 @@ This module provides the core of the OpenERP Web Client. 'auto_install': True, 'post_load': 'wsgi_postload', 'js' : [ + "static/lib/es5-shim/es5-shim.min.js", "static/lib/datejs/globalization/en-US.js", "static/lib/datejs/core.js", "static/lib/datejs/parser.js", @@ -26,6 +27,7 @@ This module provides the core of the OpenERP Web Client. "static/lib/spinjs/spin.js", "static/lib/jquery.autosize/jquery.autosize.js", "static/lib/jquery.blockUI/jquery.blockUI.js", + "static/lib/jquery.hotkeys/jquery.hotkeys.js", "static/lib/jquery.placeholder/jquery.placeholder.js", "static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js", "static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js", @@ -63,6 +65,7 @@ This module provides the core of the OpenERP Web Client. "static/lib/jquery.ui.notify/css/ui.notify.css", "static/lib/jquery.tipsy/tipsy.css", "static/lib/jquery.textext/jquery.textext.css", + "static/lib/fontawesome/css/font-awesome.css", "static/src/css/base.css", "static/src/css/data_export.css", "static/lib/cleditor/jquery.cleditor.css", diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 29cbd8960bb..5ed0c8326f4 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -527,28 +527,42 @@ class Home(http.Controller): @http.route('/', type='http', auth="none") def index(self, s_action=None, db=None, debug=False, **kw): + query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True)) + redirect = '/web' + '?' + urllib.urlencode(query) + return redirect_with_hash(redirect) + + @http.route('/web', type='http', auth="none") + def web_client(self, s_action=None, db=None, debug=False, **kw): debug = debug != False - if db is not None: - lst = http.db_list(True) - if db in lst and db != request.session.db: - request.session.logout() - request.session.db = db - if db != request.session.db: + lst = http.db_list(True) + if db not in lst: + db = None + guessed_db = http.db_monodb(request.httprequest) + if guessed_db is None and len(lst) > 0: + guessed_db = lst[0] + + def redirect(db): query = dict(urlparse.parse_qsl(request.httprequest.query_string, keep_blank_values=True)) - query.update({'db': request.session.db}) + query.update({'db': db}) redirect = request.httprequest.path + '?' + urllib.urlencode(query) return redirect_with_hash(redirect) - - db = request.session.db - js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=db, debug=debug)) - css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=db, debug=debug)) + if db is None and guessed_db is not None: + return redirect(guessed_db) + + if db is not None and db != guessed_db: + request.session.logout() + request.session.db = db + guessed_db = db + + js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=guessed_db, debug=debug)) + css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=guessed_db, debug=debug)) r = html_template % { 'js': js, 'css': css, - 'modules': simplejson.dumps(module_boot(db=db)), + 'modules': simplejson.dumps(module_boot(db=guessed_db)), 'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));' } return request.make_response(r, {'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8'}) @@ -729,7 +743,7 @@ class Database(http.Controller): def get_list(self): # TODO change js to avoid calling this method if in monodb mode try: - return db_list() + return http.db_list() except openerp.exceptions.AccessDenied: monodb = db_monodb() if monodb: @@ -852,11 +866,6 @@ class Session(http.Controller): return {'error': _('The old password you provided is incorrect, your password was not changed.'), 'title': _('Change Password')} return {'error': _('Error, password not changed !'), 'title': _('Change Password')} - @http.route('/web/session/sc_list', type='json', auth="user") - def sc_list(self): - return request.session.model('ir.ui.view_sc').get_sc( - request.session.uid, "ir.ui.menu", request.context) - @http.route('/web/session/get_lang_list', type='json', auth="none") def get_lang_list(self): try: @@ -1002,13 +1011,6 @@ class Menu(http.Controller): """ return request.session.model('ir.ui.menu').get_needaction_data(menu_ids, request.context) - @http.route('/web/menu/action', type='json', auth="user") - def action(self, menu_id): - # still used by web_shortcut - actions = load_actions_from_ir_values('action', 'tree_but_open', - [('ir.ui.menu', menu_id)], False) - return {"action": actions} - class DataSet(http.Controller): @http.route('/web/dataset/search_read', type='json', auth="user") @@ -1078,7 +1080,7 @@ class DataSet(http.Controller): return records if method.startswith('_'): - raise Exception("Access denied") + raise Exception("Access Denied: Underscore prefixed methods cannot be remotely called") return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) @@ -1683,8 +1685,6 @@ class Reports(http.Controller): if 'ids' in action['datas']: report_ids = action['datas'].pop('ids') report_data.update(action['datas']) - if not report_ids: - raise ValueError("action['datas']['ids'] and context['active_ids'] are undefined") report_id = report_srv.report( request.session.db, request.session.uid, request.session.password, diff --git a/addons/web/doc/index.rst b/addons/web/doc/index.rst index 650c12f55ec..35cd3b23afa 100644 --- a/addons/web/doc/index.rst +++ b/addons/web/doc/index.rst @@ -3,8 +3,12 @@ You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to OpenERP Web's documentation! -======================================= +OpenERP Web Reference Documentation +=================================== + +See also the `OpenERP Web Training`_. + +.. _OpenERP Web Training: https://doc.openerp.com/trunk/training/ Basics ------ diff --git a/addons/web/http.py b/addons/web/http.py index ccd1125fa22..7bad66cb7c4 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -21,6 +21,7 @@ import urlparse import uuid import errno import re +import warnings import babel.core import simplejson @@ -35,7 +36,7 @@ import urllib import urllib2 import openerp -import openerp.service.security as security +from openerp.service import security, model as service_model from openerp.tools import config import inspect @@ -177,8 +178,19 @@ class WebRequest(object): self.disable_db = True self.uid = None + @property + def debug(self): + return 'debug' in self.httprequest.args + + @contextlib.contextmanager + def registry_cr(self): + warnings.warn('please use request.registry and request.cr directly', DeprecationWarning) + yield (self.registry, self.cr) + def auth_method_user(): request.uid = request.session.uid + if not request.uid: + raise SessionExpiredException("Session expired") def auth_method_admin(): if not request.db: @@ -382,10 +394,10 @@ def jsonrequest(f): Use the ``route()`` decorator instead. """ f.combine = True - base = f.__name__ + base = f.__name__.lstrip('/') if f.__name__ == "index": base = "" - return route([base, os.path.join(base, "<path:_ignored_path>")], type="json", auth="user")(f) + return route([base, base + "/<path:_ignored_path>"], type="json", auth="user")(f) class HttpRequest(WebRequest): """ Regular GET/POST request @@ -395,21 +407,12 @@ class HttpRequest(WebRequest): def __init__(self, *args): super(HttpRequest, self).__init__(*args) params = dict(self.httprequest.args) - ex = set(["session_id"]) - for k in params.keys(): - if k in ex: - del params[k] params.update(self.httprequest.form) params.update(self.httprequest.files) + params.pop('session_id', None) self.params = params def dispatch(self): - akw = {} - for key, value in self.httprequest.args.iteritems(): - if isinstance(value, basestring) and len(value) < 1024: - akw[key] = value - else: - akw[key] = type(value) try: r = self._call_function(**self.params) except werkzeug.exceptions.HTTPException, e: @@ -460,10 +463,10 @@ def httprequest(f): Use the ``route()`` decorator instead. """ f.combine = True - base = f.__name__ + base = f.__name__.lstrip('/') if f.__name__ == "index": base = "" - return route([base, os.path.join(base, "<path:_ignored_path>")], type="http", auth="user")(f) + return route([base, base + "/<path:_ignored_path>"], type="http", auth="user")(f) #---------------------------------------------------------- # Local storage of requests @@ -472,18 +475,20 @@ from werkzeug.local import LocalStack _request_stack = LocalStack() -def set_request(request): - class with_obj(object): - def __enter__(self): - _request_stack.push(request) - def __exit__(self, *args): - _request_stack.pop() - return with_obj() +@contextlib.contextmanager +def set_request(req): + _request_stack.push(req) + try: + yield + finally: + _request_stack.pop() + + +request = _request_stack() """ A global proxy that always redirect to the current request object. """ -request = _request_stack() #---------------------------------------------------------- # Controller registration with a metaclass @@ -496,16 +501,13 @@ class ControllerType(type): def __init__(cls, name, bases, attrs): super(ControllerType, cls).__init__(name, bases, attrs) - # create wrappers for old-style methods with req as first argument - cls._methods_wrapper = {} + # flag old-style methods with req as first argument for k, v in attrs.items(): if inspect.isfunction(v): spec = inspect.getargspec(v) first_arg = spec.args[1] if len(spec.args) >= 2 else None if first_arg in ["req", "request"]: - def build_new(nv): - return lambda self, *args, **kwargs: nv(self, request, *args, **kwargs) - cls._methods_wrapper[k] = build_new(v) + v._first_arg_is_req = True # store the controller in the controllers list name_class = ("%s.%s" % (cls.__module__, cls.__name__), cls) @@ -514,7 +516,6 @@ class ControllerType(type): return # we want to know all modules that have controllers module = class_path[2] - controllers_per_module.setdefault(module, []) # but we only store controllers directly inheriting from Controller if not "Controller" in globals() or not Controller in bases: return @@ -523,12 +524,6 @@ class ControllerType(type): class Controller(object): __metaclass__ = ControllerType - def get_wrapped_method(self, name): - if name in self.__class__._methods_wrapper: - return functools.partial(self.__class__._methods_wrapper[name], self) - else: - return getattr(self, name) - ############################# # OpenERP Sessions # ############################# @@ -865,8 +860,7 @@ class Root(object): self.addons = {} self.statics = {} - self.db_routers = {} - self.db_routers_lock = threading.Lock() + self.no_db_router = None self.load_addons() @@ -915,10 +909,7 @@ class Root(object): db = request.db if db: - updated = openerp.modules.registry.RegistryManager.check_registry_signaling(db) - if updated: - with self.db_routers_lock: - del self.db_routers[db] + openerp.modules.registry.RegistryManager.check_registry_signaling(db) with set_request(request): self.find_handler() @@ -983,7 +974,7 @@ class Root(object): def _build_router(self, db): _logger.info("Generating routing configuration for database %s" % db) - routing_map = routing.Map() + routing_map = routing.Map(strict_slashes=False) def gen(modules, nodb_only): for module in modules: @@ -991,8 +982,8 @@ class Root(object): cls = v[1] subclasses = cls.__subclasses__() - subclasses = [c for c in subclasses if c.__module__.split(".")[:2] == ["openerp", "addons"] and \ - cls.__module__.split(".")[2] in modules] + subclasses = [c for c in subclasses if c.__module__.startswith('openerp.addons.') and + c.__module__.split(".")[2] in modules] if subclasses: name = "%s (extended by %s)" % (cls.__name__, ', '.join(sub.__name__ for sub in subclasses)) cls = type(name, tuple(reversed(subclasses)), {}) @@ -1001,17 +992,15 @@ class Root(object): members = inspect.getmembers(o) for mk, mv in members: if inspect.ismethod(mv) and getattr(mv, 'exposed', False) and \ - nodb_only == (getattr(mv, "auth", None) == "none"): - function = (o.get_wrapped_method(mk), mv) + nodb_only == (getattr(mv, "auth", "none") == "none"): for url in mv.routes: if getattr(mv, "combine", False): - url = os.path.join(o._cp_path, url) + url = o._cp_path.rstrip('/') + '/' + url.lstrip('/') if url.endswith("/") and len(url) > 1: url = url[: -1] - routing_map.add(routing.Rule(url, endpoint=function)) + routing_map.add(routing.Rule(url, endpoint=mv)) - modules_set = set(controllers_per_module.keys()) - modules_set -= set("web") + modules_set = set(controllers_per_module.keys()) - set(['web']) # building all none methods gen(["web"] + sorted(modules_set), True) if not db: @@ -1020,22 +1009,26 @@ class Root(object): registry = openerp.modules.registry.RegistryManager.get(db) with registry.cursor() as cr: m = registry.get('ir.module.module') - ids = m.search(cr, openerp.SUPERUSER_ID, [('state','=','installed')]) - installed = set([x['name'] for x in m.read(cr, 1, ids, ['name'])]) - modules_set = modules_set.intersection(set(installed)) - modules = ["web"] + sorted(modules_set) + ids = m.search(cr, openerp.SUPERUSER_ID, [('state', '=', 'installed'), ('name', '!=', 'web')]) + installed = set(x['name'] for x in m.read(cr, 1, ids, ['name'])) + modules_set = modules_set & installed + # building all other methods gen(["web"] + sorted(modules_set), False) return routing_map def get_db_router(self, db): - with self.db_routers_lock: - router = self.db_routers.get(db) + if db is None: + router = self.no_db_router + else: + router = getattr(openerp.modules.registry.RegistryManager.get(db), "werkzeug_http_router", None) if not router: router = self._build_router(db) - with self.db_routers_lock: - self.db_routers[db] = router + if db is None: + self.no_db_router = router + else: + openerp.modules.registry.RegistryManager.get(db).werkzeug_http_router = router return router def find_handler(self): @@ -1044,17 +1037,25 @@ class Root(object): """ path = request.httprequest.path urls = self.get_db_router(request.db).bind("") - matched, arguments = urls.match(path) + func, arguments = urls.match(path) arguments = dict([(k, v) for k, v in arguments.items() if not k.startswith("_ignored_")]) - func, original = matched + + @service_model.check + def checked_call(dbname, *a, **kw): + return func(*a, **kw) def nfunc(*args, **kwargs): kwargs.update(arguments) + if getattr(func, '_first_arg_is_req', False): + args = (request,) + args + + if request.db: + return checked_call(request.db, *args, **kwargs) return func(*args, **kwargs) request.func = nfunc - request.auth_method = getattr(original, "auth", "user") - request.func_request_type = original.exposed + request.auth_method = getattr(func, "auth", "user") + request.func_request_type = func.exposed root = None @@ -1084,17 +1085,14 @@ def db_monodb(httprequest=None): dbs = db_list(True, httprequest) - # 1 try the db already in the session + # try the db already in the session db_session = httprequest.session.db if db_session in dbs: return db_session - # 2 if there is only one db in the db filters, take it - if len(dbs) == 1: - return dbs[0] - - # 3 if there are multiple dbs, take the first one only if we can list them - if len(dbs) > 1 and config['list_db']: + # if dbfilters was specified when launching the server and there is + # only one possible db, we take that one + if openerp.tools.config['dbfilter'] != ".*" and len(dbs) == 1: return dbs[0] return None diff --git a/addons/web/i18n/ar.po b/addons/web/i18n/ar.po index eb9041c585e..77fbcf87db1 100644 --- a/addons/web/i18n/ar.po +++ b/addons/web/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -36,7 +36,7 @@ msgstr "قبل %d دقيقة/دقائق" #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...<br />Please be patient." -msgstr "" +msgstr "جار التحميل <br /> برجاء الانتظار" #. module: web #. openerp-web @@ -110,7 +110,7 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "about an hour ago" -msgstr "" +msgstr "منذ ساعة مضت" #. module: web #. openerp-web @@ -119,7 +119,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:234 #, python-format msgid "Backup Database" -msgstr "" +msgstr "نسخة قاعدة البيانات الاحتياطية" #. module: web #. openerp-web diff --git a/addons/web/i18n/bg.po b/addons/web/i18n/bg.po index 988b4e3a659..cfd4094bf8b 100644 --- a/addons/web/i18n/bg.po +++ b/addons/web/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bn.po b/addons/web/i18n/bn.po index bcfc65395af..3b33d0a9df0 100644 --- a/addons/web/i18n/bn.po +++ b/addons/web/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bs.po b/addons/web/i18n/bs.po index 8576e8affac..b00756011e9 100644 --- a/addons/web/i18n/bs.po +++ b/addons/web/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -36,14 +36,14 @@ msgstr "prije %d minuta" #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...<br />Please be patient." -msgstr "Još se učitava..." +msgstr "Još se učitava...<br />Molimo budite strpljivi." #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1999 #, python-format msgid "%(field)s %(operator)s \"%(value)s\"" -msgstr "" +msgstr "%(field)s %(operator)s \"%(value)s\"" #. module: web #. openerp-web @@ -59,7 +59,7 @@ msgstr "manje ili jednako od" #: code:addons/web/static/src/js/chrome.js:410 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "Molimo Vas da unesete prijašnju šifru" #. module: web #. openerp-web @@ -148,7 +148,7 @@ msgstr "Ovo je pregled fajla koji nismo mogli importovati:" #: code:addons/web/static/src/js/coresetup.js:591 #, python-format msgid "about a minute ago" -msgstr "" +msgstr "prije oko minut" #. module: web #. openerp-web @@ -161,14 +161,14 @@ msgstr "" #: code:addons/web/controllers/main.py:869 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "Ne možete ostaviti šifru praznu." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:732 #, python-format msgid "Invalid username or password" -msgstr "" +msgstr "Ne pravilno korisničko ime ili šifra" #. module: web #. openerp-web @@ -177,7 +177,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:278 #, python-format msgid "Master Password:" -msgstr "" +msgstr "Glavna šifra:" #. module: web #. openerp-web @@ -185,7 +185,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1402 #, python-format msgid "Select" -msgstr "" +msgstr "Odaberi" #. module: web #. openerp-web @@ -199,14 +199,14 @@ msgstr "Baza podataka uspješno obnovljena" #: code:addons/web/static/src/xml/base.xml:437 #, python-format msgid "Version" -msgstr "" +msgstr "Verzija" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:592 #, python-format msgid "Latest Modification Date:" -msgstr "" +msgstr "Zadnji datum modifikacije:" #. module: web #. openerp-web @@ -214,20 +214,22 @@ msgstr "" #, python-format msgid "M2O search fields do not currently handle multiple default values" msgstr "" +"M2O polja pretraživanja trenutno ne mogu upravljati sa više zadanih " +"vrijednosti" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "Widget tipa '%s' nije implementiran" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1626 #, python-format msgid "Share with all users" -msgstr "" +msgstr "Djeli sa svim korisnicima" #. module: web #. openerp-web @@ -235,21 +237,21 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:320 #, python-format msgid "Form" -msgstr "" +msgstr "Forma" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1352 #, python-format msgid "(no string)" -msgstr "" +msgstr "(nema stringa)" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:286 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' je ne pravilno vrijeme" #. module: web #. openerp-web @@ -263,77 +265,77 @@ msgstr "Ne važeći broj" #: code:addons/web/static/src/xml/base.xml:343 #, python-format msgid "New Password:" -msgstr "" +msgstr "Nova šifra:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:632 #, python-format msgid "Attachment :" -msgstr "" +msgstr "Zakačka:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1712 #, python-format msgid "Fields to export" -msgstr "" +msgstr "Polja za izvoz" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1350 #, python-format msgid "Undefined" -msgstr "" +msgstr "Nedefinisano" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5002 #, python-format msgid "File Upload" -msgstr "" +msgstr "Učitavanje fajla" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:597 #, python-format msgid "about a month ago" -msgstr "" +msgstr "prije mjesec dana" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1618 #, python-format msgid "Custom Filters" -msgstr "" +msgstr "Prilagođeni filteri" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1364 #, python-format msgid "Button Type:" -msgstr "" +msgstr "Tip dugmeta:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:441 #, python-format msgid "OpenERP SA Company" -msgstr "" +msgstr "OpenERP SA Kompanija" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1663 #, python-format msgid "Custom Filter" -msgstr "" +msgstr "Prilagođeni filter" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:177 #, python-format msgid "Duplicate Database" -msgstr "" +msgstr "Dupliciraj bazu" #. module: web #. openerp-web @@ -355,7 +357,7 @@ msgstr "Promijeni šifru" #: code:addons/web/static/src/js/view_form.js:3528 #, python-format msgid "View type '%s' is not supported in One2Many." -msgstr "" +msgstr "Tip pogleda '%s' nije podržan u One2Many." #. module: web #. openerp-web @@ -370,48 +372,48 @@ msgstr "Preuzimanje" #: code:addons/web/static/src/js/formats.js:270 #, python-format msgid "'%s' is not a correct datetime" -msgstr "" +msgstr "'%s' nije pravilno datum-vrijeme" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:432 #, python-format msgid "Group" -msgstr "" +msgstr "Grupa" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:949 #, python-format msgid "Unhandled widget" -msgstr "" +msgstr "Ne upravljan widget" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1004 #, python-format msgid "Selection:" -msgstr "" +msgstr "Izbor:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:881 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "Sljedeća polja nisu pravilna:" #. module: web #: code:addons/web/controllers/main.py:890 #, python-format msgid "Languages" -msgstr "" +msgstr "Jezici" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1298 #, python-format msgid "...Upload in progress..." -msgstr "" +msgstr "...Učitavanje u toku..." #. module: web #. openerp-web @@ -425,21 +427,21 @@ msgstr "Uvezi" #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Could not restore the database" -msgstr "" +msgstr "Ne može se vratiti baza podataka" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4982 #, python-format msgid "File upload" -msgstr "" +msgstr "Učitavanje fajla" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3925 #, python-format msgid "Action Button" -msgstr "" +msgstr "Dugme akcije" #. module: web #. openerp-web @@ -447,7 +449,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1493 #, python-format msgid "Manage Filters" -msgstr "" +msgstr "Uredi filtere" #. module: web #. openerp-web @@ -461,14 +463,14 @@ msgstr "sadrži" #: code:addons/web/static/src/js/coresetup.js:623 #, python-format msgid "Take a minute to get a coffee,<br />because it's loading..." -msgstr "" +msgstr "Uzmite minutu da odete po kafu,<br />jer se učitava..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:435 #, python-format msgid "Activate the developer mode" -msgstr "" +msgstr "Aktiviraj razvojni mod" #. module: web #. openerp-web @@ -482,63 +484,63 @@ msgstr "Punim (%d)" #: code:addons/web/static/src/js/search.js:1216 #, python-format msgid "GroupBy" -msgstr "" +msgstr "Grupiši po" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:699 #, python-format msgid "You must select at least one record." -msgstr "" +msgstr "Morate izabrati makar jedan zapis." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:557 #, python-format msgid "View Log (perm_read)" -msgstr "" +msgstr "Pregledaj Log (perm_read)" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1071 #, python-format msgid "Set Default" -msgstr "" +msgstr "Postavi zadano" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1000 #, python-format msgid "Relation:" -msgstr "" +msgstr "Relacija:" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:590 #, python-format msgid "less than a minute ago" -msgstr "" +msgstr "manje od minutu prije" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:873 #, python-format msgid "Condition:" -msgstr "" +msgstr "Uslov:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1709 #, python-format msgid "Unsupported operator %s in domain %s" -msgstr "" +msgstr "Ne podržana operacija %s u domenu %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:246 #, python-format msgid "'%s' is not a correct float" -msgstr "" +msgstr "'%s' nije pravilan decimalni broj" #. module: web #. openerp-web @@ -552,21 +554,21 @@ msgstr "Obnovljeno" #: code:addons/web/static/src/js/view_list.js:409 #, python-format msgid "%d-%d of %d" -msgstr "" +msgstr "%d-%d od %d" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2955 #, python-format msgid "Create and Edit..." -msgstr "" +msgstr "Kreiraj i Uredi..." #. module: web #. openerp-web #: code:addons/web/static/src/js/pyeval.js:736 #, python-format msgid "Unknown nonliteral type " -msgstr "" +msgstr "Ne poznat ne literalni tip " #. module: web #. openerp-web @@ -587,63 +589,63 @@ msgstr "nije" #: code:addons/web/static/src/xml/base.xml:572 #, python-format msgid "Print Workflow" -msgstr "" +msgstr "Štampaj radni tok" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:413 #, python-format msgid "Please confirm your new password" -msgstr "" +msgstr "Molimo potvrdite novu šifru" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1825 #, python-format msgid "UTF-8" -msgstr "" +msgstr "UTF‑8" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "For more information visit" -msgstr "" +msgstr "Za više informacija posjetite" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1880 #, python-format msgid "Add All Info..." -msgstr "" +msgstr "Dodaj sve podatke..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1701 #, python-format msgid "Export Formats" -msgstr "" +msgstr "Formati izvoza" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:996 #, python-format msgid "On change:" -msgstr "" +msgstr "Prilikom promjene:" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:939 #, python-format msgid "Model %s fields" -msgstr "" +msgstr "Polja %s modela" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:906 #, python-format msgid "Setting 'id' attribute on existing record %s" -msgstr "" +msgstr "Postavljanje 'id' atributa na postojećem zapisu %s" #. module: web #. openerp-web @@ -667,21 +669,21 @@ msgstr "veće od" #: code:addons/web/static/src/xml/base.xml:568 #, python-format msgid "View" -msgstr "" +msgstr "Pogled" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1492 #, python-format msgid "Save Filter" -msgstr "" +msgstr "Sačuvaj filter" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1372 #, python-format msgid "Action ID:" -msgstr "" +msgstr "ID Akcije:" #. module: web #. openerp-web @@ -689,55 +691,57 @@ msgstr "" #, python-format msgid "Your user's preference timezone does not match your browser timezone:" msgstr "" +"Vaša vremenska zona korisnika se ne slaže sa vremenskom zonom internet " +"pretraživača:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1237 #, python-format msgid "Field '%s' specified in view could not be found." -msgstr "" +msgstr "Polje '%s' specifirano u pogledu nije moglo biti pronađeno." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1777 #, python-format msgid "Saved exports:" -msgstr "" +msgstr "Sačuvani izvozi:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:338 #, python-format msgid "Old Password:" -msgstr "" +msgstr "Stara šifra:" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:113 #, python-format msgid "Bytes,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" -msgstr "" +msgstr "Bajtovi,Kb,Mb,Gb,Tb,Pb,Eb,Zb,Yb" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:503 #, python-format msgid "The database has been duplicated." -msgstr "" +msgstr "Baza podataka je bila duplicirana." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1643 #, python-format msgid "Apply" -msgstr "" +msgstr "Primjeni" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1414 #, python-format msgid "Save & New" -msgstr "" +msgstr "Sačuvaj i Novi" #. module: web #. openerp-web @@ -745,14 +749,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1253 #, python-format msgid "Save As" -msgstr "" +msgstr "Sačuvaj kao" #. module: web #. openerp-web #: code:addons/web/doc/module/static/src/xml/web_example.xml:3 #, python-format msgid "00:00:00" -msgstr "" +msgstr "00:00:00" #. module: web #. openerp-web @@ -766,21 +770,21 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:595 #, python-format msgid "a day ago" -msgstr "" +msgstr "dan prije" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1810 #, python-format msgid "Does your file have titles?" -msgstr "" +msgstr "Da li Vaš fajl sadrži naslove?" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:327 #, python-format msgid "Unlimited" -msgstr "" +msgstr "Neograničeno" #. module: web #. openerp-web @@ -791,13 +795,16 @@ msgid "" "\n" "Are you sure you want to leave this page ?" msgstr "" +"Upozorenje, zapis je bio izmjenjen, Vaše promjene će biti odbačene.\n" +"\n" +"Da li ste sigurni da želite napustiti ovu stranicu?" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2991 #, python-format msgid "Search: " -msgstr "" +msgstr "Pretraži: " #. module: web #. openerp-web @@ -811,28 +818,28 @@ msgstr "Tehnički prevod" #: code:addons/web/static/src/xml/base.xml:1818 #, python-format msgid "Delimiter:" -msgstr "" +msgstr "Razdvajač:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:484 #, python-format msgid "Browser's timezone" -msgstr "" +msgstr "Vremenska zona internet pretraživača" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1623 #, python-format msgid "Filter name" -msgstr "" +msgstr "Ime filtera" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1490 #, python-format msgid "-- Actions --" -msgstr "" +msgstr "-- Akcije --" #. module: web #. openerp-web @@ -842,49 +849,49 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1726 #, python-format msgid "Add" -msgstr "" +msgstr "Dodaj" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:558 #, python-format msgid "Toggle Form Layout Outline" -msgstr "" +msgstr "Uključi/Isključi raspored linija forme" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "OpenERP.com" -msgstr "" +msgstr "OpenERP.com" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2349 #, python-format msgid "Can't send email to invalid e-mail address" -msgstr "" +msgstr "Ne može se poslati email na ne pravilnu email adresu" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:658 #, python-format msgid "Add..." -msgstr "" +msgstr "Dodaj..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:424 #, python-format msgid "Preferences" -msgstr "" +msgstr "Postavke" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:435 #, python-format msgid "Wrong on change format: %s" -msgstr "" +msgstr "Pogrešan format pri izmjeni: %s" #. module: web #. openerp-web @@ -892,28 +899,28 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:203 #, python-format msgid "Drop Database" -msgstr "" +msgstr "Odbaci bazu podataka" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:488 #, python-format msgid "Click here to change your user's timezone." -msgstr "" +msgstr "Kliknite ovdje da izmjenite postavke korisničke vremenske zone." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:988 #, python-format msgid "Modifiers:" -msgstr "" +msgstr "Modifikatori:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:649 #, python-format msgid "Delete this attachment" -msgstr "" +msgstr "Obriši ovu zakačku" #. module: web #. openerp-web @@ -931,49 +938,49 @@ msgstr "Sačuvaj" #: code:addons/web/static/src/xml/base.xml:370 #, python-format msgid "More" -msgstr "" +msgstr "Više" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:73 #, python-format msgid "Username" -msgstr "" +msgstr "Korisničko ime" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:503 #, python-format msgid "Duplicating database" -msgstr "" +msgstr "Baza se duplicira" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:585 #, python-format msgid "Password has been changed successfully" -msgstr "" +msgstr "Šifra je bila uspješno promjenjena" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "Podatci forme ne mogu biti odbačeni" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Debug View#" -msgstr "" +msgstr "Debug pogled#" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:77 #, python-format msgid "Log in" -msgstr "" +msgstr "Prijavi se" #. module: web #. openerp-web @@ -982,7 +989,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1785 #, python-format msgid "Delete" -msgstr "" +msgstr "Obriši" #. module: web #. openerp-web @@ -994,6 +1001,10 @@ msgid "" "\n" "%s" msgstr "" +"Greška lokalne procjene\n" +"%s\n" +"\n" +"%s" #. module: web #. openerp-web @@ -1007,14 +1018,14 @@ msgstr "Nevažeće ime baze podataka" #: code:addons/web/static/src/xml/base.xml:1714 #, python-format msgid "Save fields list" -msgstr "" +msgstr "Sačuvaj listu polja" #. module: web #. openerp-web #: code:addons/web/doc/module/static/src/xml/web_example.xml:5 #, python-format msgid "Start" -msgstr "" +msgstr "Počni" #. module: web #. openerp-web @@ -1028,21 +1039,21 @@ msgstr "Pogledaj Log (%s)" #: code:addons/web/static/src/xml/base.xml:586 #, python-format msgid "Creation Date:" -msgstr "" +msgstr "Datum kreiranja:" #. module: web #: code:addons/web/controllers/main.py:833 #: code:addons/web/controllers/main.py:878 #, python-format msgid "Error, password not changed !" -msgstr "" +msgstr "Greška, šifra nije promjenjena !" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4981 #, python-format msgid "The selected file exceed the maximum file size of %s." -msgstr "" +msgstr "Odabrani fajl je prešao maksimalnu veličinu od %s." #. module: web #. openerp-web @@ -1056,14 +1067,14 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:585 #, python-format msgid "Changed Password" -msgstr "" +msgstr "Šifra je promijenjena" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1457 #, python-format msgid "Search" -msgstr "" +msgstr "Pretraži" #. module: web #. openerp-web @@ -1082,7 +1093,7 @@ msgstr "Otvori: " #: code:addons/web/static/src/xml/base.xml:327 #, python-format msgid "Backup" -msgstr "" +msgstr "Napravi rezervnu kopiju" #. module: web #. openerp-web @@ -1090,35 +1101,35 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:80 #, python-format msgid "'%s' is not a valid time" -msgstr "" +msgstr "'%s' nije pravilno vrijeme" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:278 #, python-format msgid "'%s' is not a correct date" -msgstr "" +msgstr "'%s' nije pravilan datum" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:955 #, python-format msgid "(nolabel)" -msgstr "" +msgstr "(nema naziva)" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:596 #, python-format msgid "%d days ago" -msgstr "" +msgstr "%d dan(a) prije" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1500 #, python-format msgid "(Any existing filter with the same name will be replaced)" -msgstr "" +msgstr "(Svaki postojeći filter sa istim imenom će biti zamjenjen)" #. module: web #. openerp-web @@ -1128,7 +1139,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1881 #, python-format msgid "Cancel" -msgstr "" +msgstr "Otkaži" #. module: web #. openerp-web @@ -1144,14 +1155,14 @@ msgstr "Učitavam..." #: code:addons/web/static/src/xml/base.xml:589 #, python-format msgid "Latest Modification by:" -msgstr "" +msgstr "Zadnji modificirao:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:492 #, python-format msgid "Timezone mismatch" -msgstr "" +msgstr "Ne slaganje vremenske zone" #. module: web #. openerp-web @@ -1165,21 +1176,21 @@ msgstr "Nepoznat operator %s na domeni %s" #: code:addons/web/static/src/js/view_form.js:427 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1803 #, python-format msgid "2. Check your file format" -msgstr "" +msgstr "Provjerite format fajla" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1739 #, python-format msgid "Name" -msgstr "" +msgstr "Ime" #. module: web #. openerp-web @@ -1189,13 +1200,15 @@ msgid "" "Select a .CSV file to import. If you need a sample of file to import,\n" " you should use the export tool with the \"Import Compatible\" option." msgstr "" +"Odaberite .CSV fajl za uvoz. Ako trebate prijedlog fajla za uvoz,\n" +" možete koristiti alat za izvoz sa opcijom \"Kompatibilno sa uvozom\"." #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:598 #, python-format msgid "%d months ago" -msgstr "" +msgstr "%d mjeseci prije" #. module: web #. openerp-web @@ -1203,20 +1216,20 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:326 #, python-format msgid "Drop" -msgstr "" +msgstr "Odbaci" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1491 #, python-format msgid "Add Advanced Filter" -msgstr "" +msgstr "Dodaj napredni filter" #. module: web #: code:addons/web/controllers/main.py:871 #, python-format msgid "The new password and its confirmation must be identical." -msgstr "" +msgstr "Nova šifra i njena potvrda moraju biti identične." #. module: web #. openerp-web @@ -1224,21 +1237,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:266 #, python-format msgid "Restore Database" -msgstr "" +msgstr "Vrati bazu podataka" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:702 #, python-format msgid "Login" -msgstr "" +msgstr "Prijava" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:442 #, python-format msgid "Licenced under the terms of" -msgstr "" +msgstr "Licencirano pod uslovima" #. module: web #. openerp-web @@ -1253,28 +1266,28 @@ msgstr "Vrati" #: code:addons/web/static/src/xml/base.xml:1695 #, python-format msgid "Export Type:" -msgstr "" +msgstr "Tip izvoza:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:428 #, python-format msgid "Log out" -msgstr "" +msgstr "Odjavi se" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1192 #, python-format msgid "Group by: %s" -msgstr "" +msgstr "Grupiši po: %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:154 #, python-format msgid "No data provided." -msgstr "" +msgstr "Nisu dati podatci." #. module: web #. openerp-web @@ -1303,70 +1316,70 @@ msgstr "Morate izabrati barem jedan zapis" #: code:addons/web/static/src/js/coresetup.js:621 #, python-format msgid "Don't leave yet,<br />it's still loading..." -msgstr "" +msgstr "Ne odlazite još,<br />učitava se..." #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:841 #, python-format msgid "Invalid Search" -msgstr "" +msgstr "Pogrešna pretraga" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:990 #, python-format msgid "Could not find id in dataset" -msgstr "" +msgstr "Nije moglo biti pronađeno u dataset-u" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1728 #, python-format msgid "Remove All" -msgstr "" +msgstr "Ukloni sve" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1368 #, python-format msgid "Method:" -msgstr "" +msgstr "Metoda:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1449 #, python-format msgid "%(page)d/%(page_count)d" -msgstr "" +msgstr "%(page)d/%(page_count)d" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:414 #, python-format msgid "The confirmation does not match the password" -msgstr "" +msgstr "Potvrda ne odgovara šifri" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:463 #, python-format msgid "Edit Company data" -msgstr "" +msgstr "Uredi podatke kompanije" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "Save As..." -msgstr "" +msgstr "Sačuvaj kao..." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5138 #, python-format msgid "Could not display the selected image." -msgstr "" +msgstr "Nije se mogla prikazati izabrana slika." #. module: web #. openerp-web @@ -1383,48 +1396,50 @@ msgid "" "For use if CSV files have titles on multiple lines, skips more than a single " "line during import" msgstr "" +"Za korištenje kada CSV fajl ima naslove na više linija, preskače se više od " +"jedne linije prilikom uvoza" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:414 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1795 #, python-format msgid "1. Import a .CSV file" -msgstr "" +msgstr "Uvezi .CSV fajl" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:702 #, python-format msgid "No database selected !" -msgstr "" +msgstr "Nije odabrana baza podataka !" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:184 #, python-format msgid "(%d records)" -msgstr "" +msgstr "(%d zapis(a))" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:992 #, python-format msgid "Change default:" -msgstr "" +msgstr "Promjeni zadano:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:189 #, python-format msgid "Original database name:" -msgstr "" +msgstr "Originalno ime baze" #. module: web #. openerp-web @@ -1441,14 +1456,14 @@ msgstr "je jednako" #: code:addons/web/static/src/js/views.js:1581 #, python-format msgid "Could not serialize XML" -msgstr "" +msgstr "Nije se mogao serijalizovati XML" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1637 #, python-format msgid "Advanced Search" -msgstr "" +msgstr "Napredna pretraga" #. module: web #. openerp-web @@ -1463,6 +1478,8 @@ msgstr "Potvrdi glavni password" #, python-format msgid "Maybe you should consider reloading the application by pressing F5..." msgstr "" +"Možda bi ste trebali razmotriti da ponovno učitate aplikaciju pritiskom na " +"F5..." #. module: web #. openerp-web @@ -1473,7 +1490,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1404 #, python-format msgid "Create" -msgstr "" +msgstr "Kreiraj" #. module: web #. openerp-web @@ -1487,14 +1504,14 @@ msgstr "Ne sarži" #: code:addons/web/static/src/xml/base.xml:1806 #, python-format msgid "Import Options" -msgstr "" +msgstr "Opcije uvoza" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3023 #, python-format msgid "Add %s" -msgstr "" +msgstr "Dodaj %s" #. module: web #. openerp-web @@ -1518,21 +1535,21 @@ msgstr "Zatvori" #, python-format msgid "" "You may not believe it,<br />but the application is actually loading..." -msgstr "" +msgstr "Možda nećete vjerovati,<br />ali aplikacija se zapravo učitava..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1800 #, python-format msgid "CSV File:" -msgstr "" +msgstr "CSV Fajl:" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1879 #, python-format msgid "Advanced" -msgstr "" +msgstr "Napredno" #. module: web #. openerp-web @@ -1545,49 +1562,49 @@ msgstr "Stablo" #: code:addons/web/controllers/main.py:793 #, python-format msgid "Could not drop database !" -msgstr "" +msgstr "Baza nije mogla biti odbačena !" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:231 #, python-format msgid "'%s' is not a correct integer" -msgstr "" +msgstr "'%s' nije pravilan cijeli broj" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:899 #, python-format msgid "All users" -msgstr "" +msgstr "Svi korisnici" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1671 #, python-format msgid "Unknown field %s in domain %s" -msgstr "" +msgstr "Ne poznato polje %s u domenu %s" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1546 #, python-format msgid "Node [%s] is not a JSONified XML node" -msgstr "" +msgstr "Čvor [%s] nije JSONificiran XML čvor" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1454 #, python-format msgid "Advanced Search..." -msgstr "" +msgstr "Napredna pretraga..." #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:521 #, python-format msgid "Dropping database" -msgstr "" +msgstr "Baza se odbacuje" #. module: web #. openerp-web @@ -1595,7 +1612,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:467 #, python-format msgid "Powered by" -msgstr "" +msgstr "Podržano od strane" #. module: web #. openerp-web @@ -1603,56 +1620,56 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:992 #, python-format msgid "Yes" -msgstr "" +msgstr "Da" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5002 #, python-format msgid "There was a problem while uploading your file" -msgstr "" +msgstr "Pojavio se problem prilikom učitavanja vašeg fajla" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:580 #, python-format msgid "XML ID:" -msgstr "" +msgstr "XML ID:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:976 #, python-format msgid "Size:" -msgstr "" +msgstr "Veličina:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1845 #, python-format msgid "--- Don't Import ---" -msgstr "" +msgstr "--- Ne uvozi ---" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1697 #, python-format msgid "Import-Compatible Export" -msgstr "" +msgstr "Izvoz kompatibilan sa uvozom" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:600 #, python-format msgid "%d years ago" -msgstr "" +msgstr "%d godina prije" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1050 #, python-format msgid "Unknown m2m command %s" -msgstr "" +msgstr "Ne poznata m2m komanda %s" #. module: web #. openerp-web @@ -1674,77 +1691,77 @@ msgstr "Naziv nove baze podataka:" #: code:addons/web/static/src/js/chrome.js:411 #, python-format msgid "Please enter your new password" -msgstr "" +msgstr "Molimo Vas da unesete vašu novu lozinku" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5017 #, python-format msgid "The field is empty, there's nothing to save !" -msgstr "" +msgstr "Polje je prazno, nema se šta sačuvati !" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:567 #, python-format msgid "Manage Views" -msgstr "" +msgstr "Upravljaj pogledima" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1822 #, python-format msgid "Encoding:" -msgstr "" +msgstr "Šifriranje:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1829 #, python-format msgid "Lines to skip" -msgstr "" +msgstr "Stavke za preskočiti" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2945 #, python-format msgid "Create \"<strong>%s</strong>\"" -msgstr "" +msgstr "Kreiraj \"<strong>%s</strong>\"" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:362 #, python-format msgid "Please select fields to save export list..." -msgstr "" +msgstr "Molimo da odaberete polja za čuvanje liste izvoza..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." -msgstr "" +msgstr "Autorsko pravo © 2004-TODAY OpenERP SA. Sva prava zadržana." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2379 #, python-format msgid "This resource is empty" -msgstr "" +msgstr "Ovaj resurs je prazan" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1710 #, python-format msgid "Available fields" -msgstr "" +msgstr "Dostupna polja" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1856 #, python-format msgid "The import failed due to:" -msgstr "" +msgstr "Uvoz nije uspio zbog:" #. module: web #. openerp-web @@ -1752,21 +1769,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:561 #, python-format msgid "JS Tests" -msgstr "" +msgstr "JS Testovi" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1771 #, python-format msgid "Save as:" -msgstr "" +msgstr "Sačuvaj kao:" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1024 #, python-format msgid "Filter on: %s" -msgstr "" +msgstr "Filtriraj po: %s" #. module: web #. openerp-web @@ -1774,35 +1791,35 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:3878 #, python-format msgid "Create: " -msgstr "" +msgstr "Kreiraj: " #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:562 #, python-format msgid "View Fields" -msgstr "" +msgstr "Pogledaj polja" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:348 #, python-format msgid "Confirm New Password:" -msgstr "" +msgstr "Potvrdite novu šifru:" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:587 #, python-format msgid "Do you really want to remove these records?" -msgstr "" +msgstr "Da li stvarno želite ukloniti ove zapise?" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:980 #, python-format msgid "Context:" -msgstr "" +msgstr "Kontekst:" #. module: web #. openerp-web @@ -1810,28 +1827,28 @@ msgstr "" #: code:addons/web/static/src/js/search.js:2143 #, python-format msgid "is" -msgstr "" +msgstr "je" #. module: web #. openerp-web #: code:addons/web/static/src/js/data_export.js:6 #, python-format msgid "Export Data" -msgstr "" +msgstr "Izvezi podatke" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:984 #, python-format msgid "Domain:" -msgstr "" +msgstr "Domen:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:856 #, python-format msgid "Default:" -msgstr "" +msgstr "Zadano:" #. module: web #. openerp-web @@ -1846,7 +1863,7 @@ msgstr "OpenERP" #: code:addons/web/doc/module/static/src/xml/web_example.xml:8 #, python-format msgid "Stop" -msgstr "" +msgstr "Zaustavi" #. module: web #. openerp-web @@ -1863,14 +1880,14 @@ msgstr "Baza podataka:" #: code:addons/web/static/src/xml/base.xml:1268 #, python-format msgid "Uploading ..." -msgstr "" +msgstr "Učitavanje ..." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1874 #, python-format msgid "Name:" -msgstr "" +msgstr "Ime:" #. module: web #. openerp-web @@ -1884,14 +1901,14 @@ msgstr "O programu" #: code:addons/web/static/src/xml/base.xml:1457 #, python-format msgid "Search Again" -msgstr "" +msgstr "Pretraži ponovno" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1481 #, python-format msgid "-- Filters --" -msgstr "" +msgstr "-- Filteri --" #. module: web #. openerp-web @@ -1900,14 +1917,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1260 #, python-format msgid "Clear" -msgstr "" +msgstr "Očisti" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1698 #, python-format msgid "Export all Data" -msgstr "" +msgstr "Izvezi sve podatke" #. module: web #. openerp-web @@ -1917,13 +1934,15 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" +"Grupiranje po polju '%s' nije moguće jer se to polje ne pojavljuje na " +"pogledu liste." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:559 #, python-format msgid "Set Defaults" -msgstr "" +msgstr "Postavi zadane vrijednosti" #. module: web #. openerp-web @@ -1935,41 +1954,45 @@ msgid "" " You can export all data or only the fields that can be " "reimported after modification." msgstr "" +"Ovaj čarobnjak će izvesti podatke koji odgovaraju trenutnim uslovima " +"pretrage u CSV fajl.\n" +" Možete izvesti sve podatke ili samo ona polja koja mogu biti " +"ponovno uvezena nakon modifikacije." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:320 #, python-format msgid "The record could not be found in the database." -msgstr "" +msgstr "Zapis nije mogao biti pronađen u bazi podataka." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1498 #, python-format msgid "Filter Name:" -msgstr "" +msgstr "Ime filtera:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:968 #, python-format msgid "Type:" -msgstr "" +msgstr "Tip:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:560 #, python-format msgid "Incorrect super-administrator password" -msgstr "" +msgstr "Ne pravilna šifra super-administratora" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:964 #, python-format msgid "Object:" -msgstr "" +msgstr "Objekt:" #. module: web #. openerp-web @@ -1977,14 +2000,14 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:343 #, python-format msgid "Loading" -msgstr "" +msgstr "Učitavanje" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:599 #, python-format msgid "about a year ago" -msgstr "" +msgstr "prije oko godinu dana" #. module: web #. openerp-web @@ -1994,7 +2017,7 @@ msgstr "" #: code:addons/web/static/src/js/search.js:2120 #, python-format msgid "is not equal to" -msgstr "" +msgstr "nije jednako" #. module: web #. openerp-web @@ -2004,13 +2027,15 @@ msgid "" "The type of the field '%s' must be a many2many field with a relation to " "'ir.attachment' model." msgstr "" +"Tip polja '%s' mora biti many2many polje sa relacijom na 'ir.attachment' " +"model." #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:594 #, python-format msgid "%d hours ago" -msgstr "" +msgstr "%d sati prije" #. module: web #. openerp-web @@ -2018,21 +2043,21 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:4464 #, python-format msgid "Add: " -msgstr "" +msgstr "Dodaj: " #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1879 #, python-format msgid "Quick Add" -msgstr "" +msgstr "Brzo dodaj" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1826 #, python-format msgid "Latin 1" -msgstr "" +msgstr "Latin 1" #. module: web #. openerp-web @@ -2052,7 +2077,7 @@ msgstr "Uredu" #: code:addons/web/static/src/js/views.js:1237 #, python-format msgid "Uploading..." -msgstr "" +msgstr "Učitavanje..." #. module: web #. openerp-web @@ -2066,7 +2091,7 @@ msgstr "Učitavam Demonstrativne podatke" #: code:addons/web/static/src/xml/base.xml:637 #, python-format msgid "Created by :" -msgstr "" +msgstr "Kreirao:" #. module: web #. openerp-web @@ -2074,7 +2099,7 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:26 #, python-format msgid "'%s' is not a valid datetime" -msgstr "" +msgstr "'%s' nije pravilno datum-vrijeme" #. module: web #. openerp-web @@ -2090,7 +2115,7 @@ msgstr "Datoteka:" #: code:addons/web/static/src/js/search.js:2122 #, python-format msgid "less than" -msgstr "" +msgstr "manje od" #. module: web #. openerp-web @@ -2105,7 +2130,7 @@ msgstr "Upozorenje" #: code:addons/web/static/src/xml/base.xml:569 #, python-format msgid "Edit SearchView" -msgstr "" +msgstr "Uredi pogled pretrage" #. module: web #. openerp-web @@ -2119,14 +2144,14 @@ msgstr "je istinito" #: code:addons/web/static/src/js/view_form.js:4030 #, python-format msgid "Add an item" -msgstr "" +msgstr "Dodaj stavku" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1621 #, python-format msgid "Save current filter" -msgstr "" +msgstr "Sačuvaj trenutni filter" #. module: web #. openerp-web @@ -2140,7 +2165,7 @@ msgstr "Portvrdi" #: code:addons/web/static/src/js/data_export.js:127 #, python-format msgid "Please enter save field list name" -msgstr "" +msgstr "Molimo unesite ime čuvanja liste polja" #. module: web #. openerp-web @@ -2154,14 +2179,14 @@ msgstr "Preuzimanje \"%s\"" #: code:addons/web/static/src/js/view_form.js:325 #, python-format msgid "New" -msgstr "" +msgstr "Novi" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1777 #, python-format msgid "Can't convert value %s to context" -msgstr "" +msgstr "Ne može se konvertovati vrijednost %s u kontekst" #. module: web #. openerp-web @@ -2169,7 +2194,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:563 #, python-format msgid "Fields View Get" -msgstr "" +msgstr "Dohvati polja pogleda" #. module: web #. openerp-web @@ -2185,21 +2210,21 @@ msgstr "Potvrdi password:" #: code:addons/web/static/src/js/search.js:2123 #, python-format msgid "greater or equal than" -msgstr "" +msgstr "veće ili jednako od" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1349 #, python-format msgid "Button" -msgstr "" +msgstr "Dugme" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:440 #, python-format msgid "OpenERP is a trademark of the" -msgstr "" +msgstr "OpenERP je prodajna marka" #. module: web #. openerp-web @@ -2227,48 +2252,48 @@ msgstr "je pogrešno" #: code:addons/web/static/src/xml/base.xml:426 #, python-format msgid "About OpenERP" -msgstr "" +msgstr "O OpenERP-u" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:301 #, python-format msgid "'%s' is not a correct date, datetime nor time" -msgstr "" +msgstr "'%s' nije pravilan datum, datum-vrijeme ili vrijeme" #. module: web #: code:addons/web/controllers/main.py:1307 #, python-format msgid "No content found for field '%s' on '%s:%s'" -msgstr "" +msgstr "Nije pronađen sadržaj polja '%s' na '%s:%s'" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:322 #, python-format msgid "Database Management" -msgstr "" +msgstr "Upravljanje bazama podataka" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:5138 #, python-format msgid "Image" -msgstr "" +msgstr "Slika" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:81 #, python-format msgid "Manage Databases" -msgstr "" +msgstr "Upravljaj bazama" #. module: web #. openerp-web #: code:addons/web/static/src/js/pyeval.js:770 #, python-format msgid "Evaluation Error" -msgstr "" +msgstr "Greška procjene" #. module: web #. openerp-web @@ -2287,21 +2312,21 @@ msgstr "ne važeći integer" #: code:addons/web/static/src/xml/base.xml:1648 #, python-format msgid "or" -msgstr "" +msgstr "ili" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1485 #, python-format msgid "No" -msgstr "" +msgstr "Ne" #. module: web #. openerp-web #: code:addons/web/static/src/js/formats.js:313 #, python-format msgid "'%s' is not convertible to date, datetime nor time" -msgstr "" +msgstr "'%s' nije konvertibilno u datum, datum-vrijeme ili vrijeme" #. module: web #. openerp-web @@ -2310,7 +2335,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:325 #, python-format msgid "Duplicate" -msgstr "" +msgstr "Dupliciraj" #. module: web #. openerp-web @@ -2319,21 +2344,21 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1419 #, python-format msgid "Discard" -msgstr "" +msgstr "Odbaci" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1642 #, python-format msgid "Add a condition" -msgstr "" +msgstr "Dodaj uslov" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:619 #, python-format msgid "Still loading..." -msgstr "" +msgstr "Još se učitava..." #. module: web #. openerp-web @@ -2341,13 +2366,14 @@ msgstr "" #, python-format msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" msgstr "" +"Ne pravilna vrijednost za polje %(fieldname)s: [%(value)s] je %(message)s" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:3926 #, python-format msgid "The o2m record must be saved before an action can be used" -msgstr "" +msgstr "o2m zapis mora biti sačuvan prije upotrebe neke akcije" #. module: web #. openerp-web @@ -2361,105 +2387,105 @@ msgstr "Spašeno" #: code:addons/web/static/src/xml/base.xml:1628 #, python-format msgid "Use by default" -msgstr "" +msgstr "Koristi kao zadano" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_list.js:1358 #, python-format msgid "%s (%d)" -msgstr "" +msgstr "%s (%d)" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:841 #, python-format msgid "triggered from search view" -msgstr "" +msgstr "aktivirano iz pogleda pretrage" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1079 #, python-format msgid "Filter" -msgstr "" +msgstr "Filter" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:972 #, python-format msgid "Widget:" -msgstr "" +msgstr "Widget:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:570 #, python-format msgid "Edit Action" -msgstr "" +msgstr "Uredi akciju" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:577 #, python-format msgid "ID:" -msgstr "" +msgstr "ID:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:892 #, python-format msgid "Only you" -msgstr "" +msgstr "Samo vi" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:571 #, python-format msgid "Edit Workflow" -msgstr "" +msgstr "Uredi radni tok" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1246 #, python-format msgid "Do you really want to delete this attachment ?" -msgstr "" +msgstr "Da li stvarno želite obrisati ovu zakačku ?" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:914 #, python-format msgid "Technical Translation" -msgstr "" +msgstr "Tehnički prevod" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:960 #, python-format msgid "Field:" -msgstr "" +msgstr "Polje:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:642 #, python-format msgid "Modified by :" -msgstr "" +msgstr "Modificirao:" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:521 #, python-format msgid "The database %s has been dropped" -msgstr "" +msgstr "Baza podataka %s je bila odbačena" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:482 #, python-format msgid "User's timezone" -msgstr "" +msgstr "Vremenska zona korisnika" #. module: web #. openerp-web @@ -2467,21 +2493,21 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:1276 #, python-format msgid "Client Error" -msgstr "" +msgstr "Greška klijenta" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:1073 #, python-format msgid "Print" -msgstr "" +msgstr "Štampaj" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1359 #, python-format msgid "Special:" -msgstr "" +msgstr "Specijalno:" #. module: web #: code:addons/web/controllers/main.py:877 @@ -2489,13 +2515,14 @@ msgstr "" msgid "" "The old password you provided is incorrect, your password was not changed." msgstr "" +"Stara šifra koju ste dali nije tačna, Vaša šifra neće biti promjenjena." #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:583 #, python-format msgid "Creation User:" -msgstr "" +msgstr "Korisnik kreiranja:" #. module: web #. openerp-web @@ -2509,14 +2536,14 @@ msgstr "Jeste li sigurni da želite izbrisati ovaj zapis?" #: code:addons/web/static/src/xml/base.xml:1413 #, python-format msgid "Save & Close" -msgstr "" +msgstr "Sačuvaj i Zatvori" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:2932 #, python-format msgid "Search More..." -msgstr "" +msgstr "Pretraži više..." #. module: web #. openerp-web @@ -2524,7 +2551,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:329 #, python-format msgid "Password" -msgstr "" +msgstr "Šifra" #. module: web #. openerp-web @@ -2540,14 +2567,14 @@ msgstr "Uređivanje" #: code:addons/web/static/src/xml/base.xml:1727 #, python-format msgid "Remove" -msgstr "" +msgstr "Ukloni" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1090 #, python-format msgid "Select date" -msgstr "" +msgstr "Odaberi datum" #. module: web #. openerp-web @@ -2555,42 +2582,42 @@ msgstr "" #: code:addons/web/static/src/js/search.js:1369 #, python-format msgid "Search %(field)s for: %(value)s" -msgstr "" +msgstr "Pretraži %(field)s za: %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1305 #, python-format msgid "Delete this file" -msgstr "" +msgstr "Obriši ovaj fajl" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:168 #, python-format msgid "Create Database" -msgstr "" +msgstr "Kreiraj bazu podataka" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:442 #, python-format msgid "GNU Affero General Public License" -msgstr "" +msgstr "GNU Affero General Public License" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1816 #, python-format msgid "Separator:" -msgstr "" +msgstr "Separator:" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:318 #, python-format msgid "Back to Login" -msgstr "" +msgstr "Vrati se na prijavu" #. module: web #. openerp-web @@ -2598,7 +2625,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1480 #, python-format msgid "Filters" -msgstr "" +msgstr "Filteri" #~ msgid "Send OpenERP Enterprise Report" #~ msgstr "Pošalji OpenERP Enterprise Izvještaj" diff --git a/addons/web/i18n/ca.po b/addons/web/i18n/ca.po index 5f01d27dc72..b6767afb0f6 100644 --- a/addons/web/i18n/ca.po +++ b/addons/web/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/cs.po b/addons/web/i18n/cs.po index d7c1dc997e2..13566df5824 100644 --- a/addons/web/i18n/cs.po +++ b/addons/web/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" "X-Poedit-Language: Czech\n" #. module: web diff --git a/addons/web/i18n/da.po b/addons/web/i18n/da.po index 3efc108c60c..56a1d357286 100644 --- a/addons/web/i18n/da.po +++ b/addons/web/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-05 04:44+0000\n" -"X-Generator: Launchpad (build 16758)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/de.po b/addons/web/i18n/de.po index a2281ab4b1a..93e14a69183 100644 --- a/addons/web/i18n/de.po +++ b/addons/web/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_AU.po b/addons/web/i18n/en_AU.po index 1e3a37162db..fa4e75923be 100644 --- a/addons/web/i18n/en_AU.po +++ b/addons/web/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_GB.po b/addons/web/i18n/en_GB.po index 7dfa6515d4e..0c5a2a74ec0 100644 --- a/addons/web/i18n/en_GB.po +++ b/addons/web/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -29,21 +29,21 @@ msgstr "Default language:" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d minutes ago" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...<br />Please be patient." -msgstr "" +msgstr "Still loading...<br />Please be patient." #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1999 #, python-format msgid "%(field)s %(operator)s \"%(value)s\"" -msgstr "" +msgstr "%(field)s %(operator)s \"%(value)s\"" #. module: web #. openerp-web @@ -59,7 +59,7 @@ msgstr "less than or equal to" #: code:addons/web/static/src/js/chrome.js:410 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "Please enter your previous password" #. module: web #. openerp-web @@ -75,28 +75,28 @@ msgstr "Master password:" #: code:addons/web/static/src/xml/base.xml:292 #, python-format msgid "Change Master Password" -msgstr "" +msgstr "Change Master Password" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:513 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "" +msgstr "Do you really want to delete the database: %s ?" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1502 #, python-format msgid "Search %(field)s at: %(value)s" -msgstr "" +msgstr "Search %(field)s at: %(value)s" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:559 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Access Denied" #. module: web #. openerp-web @@ -110,7 +110,7 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "about an hour ago" -msgstr "" +msgstr "about an hour ago" #. module: web #. openerp-web @@ -119,14 +119,14 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:234 #, python-format msgid "Backup Database" -msgstr "" +msgstr "Backup Database" #. module: web #. openerp-web #: code:addons/web/static/src/js/views.js:518 #, python-format msgid "%(view_type)s view" -msgstr "" +msgstr "%(view_type)s view" #. module: web #. openerp-web @@ -134,7 +134,7 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "" +msgstr "'%s' is not a valid date" #. module: web #. openerp-web @@ -148,7 +148,7 @@ msgstr "Here is a preview of the file we could not import:" #: code:addons/web/static/src/js/coresetup.js:591 #, python-format msgid "about a minute ago" -msgstr "" +msgstr "about a minute ago" #. module: web #. openerp-web @@ -161,7 +161,7 @@ msgstr "" #: code:addons/web/controllers/main.py:869 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "You cannot leave any password empty." #. module: web #. openerp-web @@ -213,14 +213,14 @@ msgstr "Last Modification Date:" #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "" +msgstr "M2O search fields do not currently handle multiple default values" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "Widget type '%s' is not implemented" #. module: web #. openerp-web @@ -249,7 +249,7 @@ msgstr "(no string)" #: code:addons/web/static/src/js/formats.js:286 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' is not a correct time" #. module: web #. openerp-web @@ -270,7 +270,7 @@ msgstr "New Password:" #: code:addons/web/static/src/xml/base.xml:632 #, python-format msgid "Attachment :" -msgstr "" +msgstr "Attachment :" #. module: web #. openerp-web @@ -298,7 +298,7 @@ msgstr "File Upload" #: code:addons/web/static/src/js/coresetup.js:597 #, python-format msgid "about a month ago" -msgstr "" +msgstr "about a month ago" #. module: web #. openerp-web @@ -959,7 +959,7 @@ msgstr "" #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "The form's data can not be discarded" #. module: web #. openerp-web diff --git a/addons/web/i18n/es.po b/addons/web/i18n/es.po index 34f60912f93..55288154645 100644 --- a/addons/web/i18n/es.po +++ b/addons/web/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CL.po b/addons/web/i18n/es_CL.po index fc481f3d3f3..386de09f35f 100644 --- a/addons/web/i18n/es_CL.po +++ b/addons/web/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CR.po b/addons/web/i18n/es_CR.po index fef6986e35d..20d2a5da09a 100644 --- a/addons/web/i18n/es_CR.po +++ b/addons/web/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "Language: es\n" #. module: web diff --git a/addons/web/i18n/es_DO.po b/addons/web/i18n/es_DO.po index 86bb3862f19..364d12517bd 100644 --- a/addons/web/i18n/es_DO.po +++ b/addons/web/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_EC.po b/addons/web/i18n/es_EC.po index 2689e3b0572..5181ea01047 100644 --- a/addons/web/i18n/es_EC.po +++ b/addons/web/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_MX.po b/addons/web/i18n/es_MX.po index 211d645ac6b..3eae32128ac 100644 --- a/addons/web/i18n/es_MX.po +++ b/addons/web/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/et.po b/addons/web/i18n/et.po index c8ada6f9e52..69758104a95 100644 --- a/addons/web/i18n/et.po +++ b/addons/web/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/eu.po b/addons/web/i18n/eu.po index ad981b78047..fff79dfd4be 100644 --- a/addons/web/i18n/eu.po +++ b/addons/web/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fa.po b/addons/web/i18n/fa.po index e2f8024867f..012a5ec7767 100644 --- a/addons/web/i18n/fa.po +++ b/addons/web/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fi.po b/addons/web/i18n/fi.po index ef20351be73..e176267b439 100644 --- a/addons/web/i18n/fi.po +++ b/addons/web/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po index 661ac102fe3..a37a779ba42 100644 --- a/addons/web/i18n/fr.po +++ b/addons/web/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr_CA.po b/addons/web/i18n/fr_CA.po index 086b1885aec..debc0d4354e 100644 --- a/addons/web/i18n/fr_CA.po +++ b/addons/web/i18n/fr_CA.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gl.po b/addons/web/i18n/gl.po index 3a8b37f7db7..7171e92e491 100644 --- a/addons/web/i18n/gl.po +++ b/addons/web/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gu.po b/addons/web/i18n/gu.po index 7fab254c9d5..e17601ad29c 100644 --- a/addons/web/i18n/gu.po +++ b/addons/web/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hi.po b/addons/web/i18n/hi.po index d10150e471b..38e4fe56386 100644 --- a/addons/web/i18n/hi.po +++ b/addons/web/i18n/hi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hr.po b/addons/web/i18n/hr.po index 08710210cde..0e2c87eb4fc 100644 --- a/addons/web/i18n/hr.po +++ b/addons/web/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hu.po b/addons/web/i18n/hu.po index 4a1fd98dac1..9ae94131c6b 100644 --- a/addons/web/i18n/hu.po +++ b/addons/web/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/id.po b/addons/web/i18n/id.po index 49e8cc77468..7371b20abe6 100644 --- a/addons/web/i18n/id.po +++ b/addons/web/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/it.po b/addons/web/i18n/it.po index eb04e78d915..2ba15f0f52e 100644 --- a/addons/web/i18n/it.po +++ b/addons/web/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ja.po b/addons/web/i18n/ja.po index 8b0f350a322..678febbe3c1 100644 --- a/addons/web/i18n/ja.po +++ b/addons/web/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ka.po b/addons/web/i18n/ka.po index 65084778ade..c6b59dcc055 100644 --- a/addons/web/i18n/ka.po +++ b/addons/web/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ko.po b/addons/web/i18n/ko.po index 8fefc62c832..602985545ec 100644 --- a/addons/web/i18n/ko.po +++ b/addons/web/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lo.po b/addons/web/i18n/lo.po index cfb3098e4cd..a02d3b0b12c 100644 --- a/addons/web/i18n/lo.po +++ b/addons/web/i18n/lo.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lt.po b/addons/web/i18n/lt.po index 20e4e0f1e8e..f99426a05ed 100644 --- a/addons/web/i18n/lt.po +++ b/addons/web/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lv.po b/addons/web/i18n/lv.po index 038e54572ad..18797599bb6 100644 --- a/addons/web/i18n/lv.po +++ b/addons/web/i18n/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/mk.po b/addons/web/i18n/mk.po index ddaa0502bf7..223f66d278a 100644 --- a/addons/web/i18n/mk.po +++ b/addons/web/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/mn.po b/addons/web/i18n/mn.po index 1a441ce0db5..2ea95fafe1d 100644 --- a/addons/web/i18n/mn.po +++ b/addons/web/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nb.po b/addons/web/i18n/nb.po index f091a4110d3..476a5401a0c 100644 --- a/addons/web/i18n/nb.po +++ b/addons/web/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -29,7 +29,7 @@ msgstr "Standardspråk:" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d minutter siden" #. module: web #. openerp-web @@ -75,7 +75,7 @@ msgstr "Hovedpassord" #: code:addons/web/static/src/xml/base.xml:292 #, python-format msgid "Change Master Password" -msgstr "" +msgstr "Endre hovedpassord" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl.po b/addons/web/i18n/nl.po index 4a8d2c99643..86a13deddf0 100644 --- a/addons/web/i18n/nl.po +++ b/addons/web/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-21 19:38+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl_BE.po b/addons/web/i18n/nl_BE.po index efc1059a186..19d0065a003 100644 --- a/addons/web/i18n/nl_BE.po +++ b/addons/web/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pl.po b/addons/web/i18n/pl.po index fb435909899..21e178c8a5c 100644 --- a/addons/web/i18n/pl.po +++ b/addons/web/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt.po b/addons/web/i18n/pt.po index 43af9b3df1a..6a1c3e499e4 100644 --- a/addons/web/i18n/pt.po +++ b/addons/web/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt_BR.po b/addons/web/i18n/pt_BR.po index eba73e98386..5090d3ed7a1 100644 --- a/addons/web/i18n/pt_BR.po +++ b/addons/web/i18n/pt_BR.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -214,7 +214,7 @@ msgstr "Data da Última Modificação:" #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "Campos de pesquisa M2O não aceitão múltiplos valores padrão" +msgstr "Campos de pesquisa M2O não aceitam múltiplos valores padrão" #. module: web #. openerp-web @@ -264,7 +264,7 @@ msgstr "não é um número válido" #: code:addons/web/static/src/xml/base.xml:343 #, python-format msgid "New Password:" -msgstr "Nova Senha" +msgstr "Nova Senha:" #. module: web #. openerp-web @@ -412,7 +412,7 @@ msgstr "Idiomas" #: code:addons/web/static/src/xml/base.xml:1298 #, python-format msgid "...Upload in progress..." -msgstr "... Upload em progresso ..." +msgstr "... Upload em andamento ..." #. module: web #. openerp-web @@ -483,7 +483,7 @@ msgstr "Carregando (%d)" #: code:addons/web/static/src/js/search.js:1216 #, python-format msgid "GroupBy" -msgstr "AgruparPor" +msgstr "Agrupar por" #. module: web #. openerp-web @@ -890,7 +890,7 @@ msgstr "Preferências" #: code:addons/web/static/src/js/view_form.js:435 #, python-format msgid "Wrong on change format: %s" -msgstr "Formato invalido para on change: %s" +msgstr "Formato inválido para on change: %s" #. module: web #. openerp-web @@ -1412,7 +1412,7 @@ msgstr "99+" #: code:addons/web/static/src/xml/base.xml:1795 #, python-format msgid "1. Import a .CSV file" -msgstr "Importar um arquivo CSV." +msgstr "Importar um arquivo .CSV" #. module: web #. openerp-web @@ -1934,7 +1934,7 @@ msgid "" "Grouping on field '%s' is not possible because that field does not appear in " "the list view." msgstr "" -"Agrupar por em campo '% s' não é possível porque o campo não aparece na " +"Agrupar por no campo '% s' não é possível porque o campo não aparece na " "visualização lista." #. module: web @@ -2344,7 +2344,7 @@ msgstr "Duplicar" #: code:addons/web/static/src/xml/base.xml:1419 #, python-format msgid "Discard" -msgstr "Desistir" +msgstr "Descartar" #. module: web #. openerp-web @@ -2435,7 +2435,7 @@ msgstr "ID:" #: code:addons/web/static/src/xml/base.xml:892 #, python-format msgid "Only you" -msgstr "Apenas eu" +msgstr "Somente eu" #. module: web #. openerp-web @@ -2588,7 +2588,7 @@ msgstr "Procurar %(field)s por: %(value)s" #: code:addons/web/static/src/xml/base.xml:1305 #, python-format msgid "Delete this file" -msgstr "Apagar esse arquivo" +msgstr "Excluir este arquivo" #. module: web #. openerp-web diff --git a/addons/web/i18n/ro.po b/addons/web/i18n/ro.po index f128136055b..714f69cc56d 100644 --- a/addons/web/i18n/ro.po +++ b/addons/web/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ru.po b/addons/web/i18n/ru.po index 0ece8fa7647..35e6a9cae6e 100644 --- a/addons/web/i18n/ru.po +++ b/addons/web/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sk.po b/addons/web/i18n/sk.po index 20189da93fa..75bf02324bc 100644 --- a/addons/web/i18n/sk.po +++ b/addons/web/i18n/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sl.po b/addons/web/i18n/sl.po index 993c9844123..3d8b824c56e 100644 --- a/addons/web/i18n/sl.po +++ b/addons/web/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sq.po b/addons/web/i18n/sq.po index fe83bfb2472..fea62cffd15 100644 --- a/addons/web/i18n/sq.po +++ b/addons/web/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:54+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sr@latin.po b/addons/web/i18n/sr@latin.po index 0318dfa0307..86360c1396b 100644 --- a/addons/web/i18n/sr@latin.po +++ b/addons/web/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sv.po b/addons/web/i18n/sv.po index cd7c635f50c..168ecb12c68 100644 --- a/addons/web/i18n/sv.po +++ b/addons/web/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -29,14 +29,14 @@ msgstr "Förvalt språk:" #: code:addons/web/static/src/js/coresetup.js:592 #, python-format msgid "%d minutes ago" -msgstr "" +msgstr "%d minuter sedan" #. module: web #. openerp-web #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...<br />Please be patient." -msgstr "" +msgstr "Laddar fortfarande...<br />Ha tålamod." #. module: web #. openerp-web @@ -59,7 +59,7 @@ msgstr "mindre eller lika med" #: code:addons/web/static/src/js/chrome.js:410 #, python-format msgid "Please enter your previous password" -msgstr "" +msgstr "Ange ditt tidigare lösenord" #. module: web #. openerp-web @@ -75,14 +75,14 @@ msgstr "Huvudlösenord" #: code:addons/web/static/src/xml/base.xml:292 #, python-format msgid "Change Master Password" -msgstr "" +msgstr "Ändra huvudlösenordet" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:513 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "" +msgstr "Vill du verkligen ta bort databasen: %s?" #. module: web #. openerp-web @@ -96,7 +96,7 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:559 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Åtkomst nekad" #. module: web #. openerp-web @@ -110,7 +110,7 @@ msgstr "" #: code:addons/web/static/src/js/coresetup.js:593 #, python-format msgid "about an hour ago" -msgstr "" +msgstr "ungefär en timme sedan" #. module: web #. openerp-web @@ -119,7 +119,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:234 #, python-format msgid "Backup Database" -msgstr "" +msgstr "Säkerhetskopiera databasen" #. module: web #. openerp-web @@ -134,7 +134,7 @@ msgstr "" #: code:addons/web/static/src/js/dates.js:53 #, python-format msgid "'%s' is not a valid date" -msgstr "" +msgstr "\"%s\" är inte ett giltigt datum" #. module: web #. openerp-web @@ -148,7 +148,7 @@ msgstr "Här är en förhandsgranskning av filen vi inte kunder importera:" #: code:addons/web/static/src/js/coresetup.js:591 #, python-format msgid "about a minute ago" -msgstr "" +msgstr "ungefär en minut sedan" #. module: web #. openerp-web @@ -161,7 +161,7 @@ msgstr "" #: code:addons/web/controllers/main.py:869 #, python-format msgid "You cannot leave any password empty." -msgstr "" +msgstr "Du kan inte ange ett tomt lösenord" #. module: web #. openerp-web @@ -213,14 +213,14 @@ msgstr "Senaste ändringsdatum:" #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "" +msgstr "M2O sökfält kan just nu inte hantera multipla standardvärden" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "" +msgstr "Widgettypen '%s' är inte implementerad" #. module: web #. openerp-web @@ -249,7 +249,7 @@ msgstr "(ingen sträng)" #: code:addons/web/static/src/js/formats.js:286 #, python-format msgid "'%s' is not a correct time" -msgstr "" +msgstr "'%s' är inte en korrekt tid" #. module: web #. openerp-web @@ -270,7 +270,7 @@ msgstr "Nytt lösenord:" #: code:addons/web/static/src/xml/base.xml:632 #, python-format msgid "Attachment :" -msgstr "" +msgstr "Bilaga:" #. module: web #. openerp-web @@ -298,7 +298,7 @@ msgstr "Filuppladdning" #: code:addons/web/static/src/js/coresetup.js:597 #, python-format msgid "about a month ago" -msgstr "" +msgstr "ungefär en månad sedan" #. module: web #. openerp-web @@ -370,7 +370,7 @@ msgstr "Hämta" #: code:addons/web/static/src/js/formats.js:270 #, python-format msgid "'%s' is not a correct datetime" -msgstr "" +msgstr "'%s' är inte korrekt datum/tid" #. module: web #. openerp-web @@ -398,20 +398,20 @@ msgstr "Val:" #: code:addons/web/static/src/js/view_form.js:881 #, python-format msgid "The following fields are invalid:" -msgstr "" +msgstr "Följande fält är inte giltiga:" #. module: web #: code:addons/web/controllers/main.py:890 #, python-format msgid "Languages" -msgstr "" +msgstr "Språk" #. module: web #. openerp-web #: code:addons/web/static/src/xml/base.xml:1298 #, python-format msgid "...Upload in progress..." -msgstr "" +msgstr "...Uppladdning pågår..." #. module: web #. openerp-web @@ -425,14 +425,14 @@ msgstr "Importera" #: code:addons/web/static/src/js/chrome.js:565 #, python-format msgid "Could not restore the database" -msgstr "" +msgstr "Kunde inte återskapa databasen" #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:4982 #, python-format msgid "File upload" -msgstr "" +msgstr "Filuppladdning" #. module: web #. openerp-web @@ -468,7 +468,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:435 #, python-format msgid "Activate the developer mode" -msgstr "" +msgstr "Aktivera utvecklarmod" #. module: web #. openerp-web @@ -489,7 +489,7 @@ msgstr "" #: code:addons/web/static/src/js/view_list.js:699 #, python-format msgid "You must select at least one record." -msgstr "" +msgstr "Du måste välja åtminstone en post" #. module: web #. openerp-web @@ -517,7 +517,7 @@ msgstr "Relation:" #: code:addons/web/static/src/js/coresetup.js:590 #, python-format msgid "less than a minute ago" -msgstr "" +msgstr "mindre än en minute sedan" #. module: web #. openerp-web @@ -559,7 +559,7 @@ msgstr "" #: code:addons/web/static/src/js/view_form.js:2955 #, python-format msgid "Create and Edit..." -msgstr "" +msgstr "Skapa och redigera..." #. module: web #. openerp-web @@ -587,14 +587,14 @@ msgstr "är inte" #: code:addons/web/static/src/xml/base.xml:572 #, python-format msgid "Print Workflow" -msgstr "" +msgstr "Skriv ut arbetsflöde" #. module: web #. openerp-web #: code:addons/web/static/src/js/chrome.js:413 #, python-format msgid "Please confirm your new password" -msgstr "" +msgstr "Var god konfirmera ditt nya lösenord" #. module: web #. openerp-web @@ -615,7 +615,7 @@ msgstr "För mer information besök" #: code:addons/web/static/src/xml/base.xml:1880 #, python-format msgid "Add All Info..." -msgstr "" +msgstr "Lägg till all info..." #. module: web #. openerp-web @@ -688,7 +688,7 @@ msgstr "Aktivitets ID:" #: code:addons/web/static/src/xml/base.xml:479 #, python-format msgid "Your user's preference timezone does not match your browser timezone:" -msgstr "" +msgstr "Ditt kontos inställda tidszon stämmer ej med webbläsarens tidszon." #. module: web #. openerp-web @@ -730,7 +730,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:1643 #, python-format msgid "Apply" -msgstr "" +msgstr "Verkställ" #. module: web #. openerp-web @@ -766,7 +766,7 @@ msgstr "E-postfel" #: code:addons/web/static/src/js/coresetup.js:595 #, python-format msgid "a day ago" -msgstr "" +msgstr "en dag sedan" #. module: web #. openerp-web @@ -959,7 +959,7 @@ msgstr "" #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "Formulärdata kan inte tas bort" #. module: web #. openerp-web @@ -1056,7 +1056,7 @@ msgstr "" #: code:addons/web/static/src/js/chrome.js:585 #, python-format msgid "Changed Password" -msgstr "" +msgstr "Ändrade lösenord" #. module: web #. openerp-web diff --git a/addons/web/i18n/th.po b/addons/web/i18n/th.po index 57ea48c34b1..42a64dae641 100644 --- a/addons/web/i18n/th.po +++ b/addons/web/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web @@ -82,7 +82,7 @@ msgstr "เปลี่ยนรหัสผ่านหลัก" #: code:addons/web/static/src/js/chrome.js:513 #, python-format msgid "Do you really want to delete the database: %s ?" -msgstr "ต้องการลบ ฐานข้อมูล: %s ?" +msgstr "คุณต้องการลบ ฐานข้อมูล: %s ?" #. module: web #. openerp-web @@ -141,7 +141,7 @@ msgstr "'%s' ไม่ถูกต้อง" #: code:addons/web/static/src/xml/base.xml:1858 #, python-format msgid "Here is a preview of the file we could not import:" -msgstr "" +msgstr "นี้คือตัวอย่างของแฟ้มที่เราไม่สามารถนำเข้าได้" #. module: web #. openerp-web @@ -291,7 +291,7 @@ msgstr "ไม่ได้กำหนด" #: code:addons/web/static/src/js/view_form.js:5002 #, python-format msgid "File Upload" -msgstr "อัพโหลดข้อมูล" +msgstr "อัพโหลดไฟล์" #. module: web #. openerp-web @@ -391,7 +391,7 @@ msgstr "วิดเจ็ต Unhandled" #: code:addons/web/static/src/xml/base.xml:1004 #, python-format msgid "Selection:" -msgstr "เลือก" +msgstr "การเลือก:" #. module: web #. openerp-web diff --git a/addons/web/i18n/tr.po b/addons/web/i18n/tr.po index 64a2fb91f36..b7f21e68930 100644 --- a/addons/web/i18n/tr.po +++ b/addons/web/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:45+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/uk.po b/addons/web/i18n/uk.po index 18f17f66786..280598c22ad 100644 --- a/addons/web/i18n/uk.po +++ b/addons/web/i18n/uk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/vi.po b/addons/web/i18n/vi.po index 51831ce098b..94150bf766c 100644 --- a/addons/web/i18n/vi.po +++ b/addons/web/i18n/vi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_CN.po b/addons/web/i18n/zh_CN.po index 1829371b6d4..4a4af8ded0e 100644 --- a/addons/web/i18n/zh_CN.po +++ b/addons/web/i18n/zh_CN.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-04 01:53+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\n" +"Last-Translator: 盈通 ccdos <ccdos@intoerp.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_TW.po b/addons/web/i18n/zh_TW.po index c947aa2ac8a..86fb38f395b 100644 --- a/addons/web/i18n/zh_TW.po +++ b/addons/web/i18n/zh_TW.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web #. openerp-web diff --git a/addons/web/static/lib/es5-shim/README.md b/addons/web/static/lib/es5-shim/README.md new file mode 100644 index 00000000000..abe7abe2857 --- /dev/null +++ b/addons/web/static/lib/es5-shim/README.md @@ -0,0 +1,155 @@ +`es5-shim.js` and `es5-shim.min.js` monkey-patch a JavaScript context to +contain all EcmaScript 5 methods that can be faithfully emulated with a +legacy JavaScript engine. + +`es5-sham.js` and `es5-sham.min.js` monkey-patch other ES5 methods as +closely as possible. For these methods, as closely as possible to ES5 +is not very close. Many of these shams are intended only to allow code +to be written to ES5 without causing run-time errors in older engines. +In many cases, this means that these shams cause many ES5 methods to +silently fail. Decide carefully whether this is what you want. + + +## Tests + +The tests are written with the Jasmine BDD test framework. +To run the tests, navigate to <root-folder>/tests/. + +In order to run against the shim-code, the tests attempt to kill the current +implementation of the missing methods. This happens in <root-folder>/tests/helpers/h-kill.js. +So in order to run the tests against the built-in methods, invalidate that file somehow +(comment-out, delete the file, delete the script-tag, etc.). + +## Shims + +### Complete tests ### + +* Array.prototype.every +* Array.prototype.filter +* Array.prototype.forEach +* Array.prototype.indexOf +* Array.prototype.lastIndexOf +* Array.prototype.map +* Array.prototype.some +* Array.prototype.reduce +* Array.prototype.reduceRight +* Array.isArray +* Date.now +* Date.prototype.toJSON +* Function.prototype.bind + * :warning: Caveat: the bound function's length is always 0. + * :warning: Caveat: the bound function has a prototype property. + * :warning: Caveat: bound functions do not try too hard to keep you + from manipulating their ``arguments`` and ``caller`` properties. + * :warning: Caveat: bound functions don't have checks in ``call`` and + ``apply`` to avoid executing as a constructor. +* Number.prototype.toFixed +* Object.keys +* String.prototype.split +* String.prototype.trim +* Date.parse (for ISO parsing) +* Date.prototype.toISOString + +## Shams + +* :warning: Object.create + + For the case of simply "begetting" an object that inherits + prototypically from another, this should work fine across legacy + engines. + + :warning: Object.create(null) will work only in browsers that + support prototype assignment. This creates an object that does not + have any properties inherited from Object.prototype. It will + silently fail otherwise. + + :warning: The second argument is passed to Object.defineProperties + which will probably fail either silently or with extreme predudice. + +* :warning: Object.getPrototypeOf + + This will return "undefined" in some cases. It uses `__proto__` if + it's available. Failing that, it uses constructor.prototype, which + depends on the constructor property of the object's prototype having + not been replaced. If your object was created like this, it won't + work: + + function Foo() { + } + Foo.prototype = {}; + + Because the prototype reassignment destroys the constructor + property. + + This will work for all objects that were created using + `Object.create` implemented with this library. + +* :warning: Object.getOwnPropertyNames + + This method uses Object.keys, so it will not be accurate on legacy + engines. + +* Object.isSealed + + Returns "false" in all legacy engines for all objects, which is + conveniently guaranteed to be accurate. + +* Object.isFrozen + + Returns "false" in all legacy engines for all objects, which is + conveniently guaranteed to be accurate. + +* Object.isExtensible + + Works like a charm, by trying very hard to extend the object then + redacting the extension. + +### May fail + +* :warning: Object.getOwnPropertyDescriptor + + The behavior of this shim does not conform to ES5. It should + probably not be used at this time, until its behavior has been + reviewed and been confirmed to be useful in legacy engines. + +* :warning: Object.defineProperty + + In the worst of circumstances, IE 8 provides a version of this + method that only works on DOM objects. This sham will not be + installed. The given version of `defineProperty` will throw an + exception if used on non-DOM objects. + + In slightly better circumstances, this method will silently fail to + set "writable", "enumerable", and "configurable" properties. + + Providing a getter or setter with "get" or "set" on a descriptor + will silently fail on engines that lack "__defineGetter__" and + "__defineSetter__", which include all versions of IE. + + https://github.com/kriskowal/es5-shim/issues#issue/5 + +* :warning: Object.defineProperties + + This uses the Object.defineProperty shim + +* Object.seal + + Silently fails on all legacy engines. This should be + fine unless you are depending on the safety and security + provisions of this method, which you cannot possibly + obtain in legacy engines. + +* Object.freeze + + Silently fails on all legacy engines. This should be + fine unless you are depending on the safety and security + provisions of this method, which you cannot possibly + obtain in legacy engines. + +* Object.preventExtensions + + Silently fails on all legacy engines. This should be + fine unless you are depending on the safety and security + provisions of this method, which you cannot possibly + obtain in legacy engines. + diff --git a/addons/web/static/lib/es5-shim/es5-shim.js b/addons/web/static/lib/es5-shim/es5-shim.js new file mode 100644 index 00000000000..4609ea2f77a --- /dev/null +++ b/addons/web/static/lib/es5-shim/es5-shim.js @@ -0,0 +1,1320 @@ +// Copyright 2009-2012 by contributors, MIT License +// vim: ts=4 sts=4 sw=4 expandtab + +// Module systems magic dance +(function (definition) { + // RequireJS + if (typeof define == "function") { + define(definition); + // YUI3 + } else if (typeof YUI == "function") { + YUI.add("es5", definition); + // CommonJS and <script> + } else { + definition(); + } +})(function () { + +/** + * Brings an environment as close to ECMAScript 5 compliance + * as is possible with the facilities of erstwhile engines. + * + * Annotated ES5: http://es5.github.com/ (specific links below) + * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf + * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/ + */ + +// +// Function +// ======== +// + +// ES-5 15.3.4.5 +// http://es5.github.com/#x15.3.4.5 + +function Empty() {} + +if (!Function.prototype.bind) { + Function.prototype.bind = function bind(that) { // .length is 1 + // 1. Let Target be the this value. + var target = this; + // 2. If IsCallable(Target) is false, throw a TypeError exception. + if (typeof target != "function") { + throw new TypeError("Function.prototype.bind called on incompatible " + target); + } + // 3. Let A be a new (possibly empty) internal list of all of the + // argument values provided after thisArg (arg1, arg2 etc), in order. + // XXX slicedArgs will stand in for "A" if used + var args = _Array_slice_.call(arguments, 1); // for normal call + // 4. Let F be a new native ECMAScript object. + // 11. Set the [[Prototype]] internal property of F to the standard + // built-in Function prototype object as specified in 15.3.3.1. + // 12. Set the [[Call]] internal property of F as described in + // 15.3.4.5.1. + // 13. Set the [[Construct]] internal property of F as described in + // 15.3.4.5.2. + // 14. Set the [[HasInstance]] internal property of F as described in + // 15.3.4.5.3. + var bound = function () { + + if (this instanceof bound) { + // 15.3.4.5.2 [[Construct]] + // When the [[Construct]] internal method of a function object, + // F that was created using the bind function is called with a + // list of arguments ExtraArgs, the following steps are taken: + // 1. Let target be the value of F's [[TargetFunction]] + // internal property. + // 2. If target has no [[Construct]] internal method, a + // TypeError exception is thrown. + // 3. Let boundArgs be the value of F's [[BoundArgs]] internal + // property. + // 4. Let args be a new list containing the same values as the + // list boundArgs in the same order followed by the same + // values as the list ExtraArgs in the same order. + // 5. Return the result of calling the [[Construct]] internal + // method of target providing args as the arguments. + + var result = target.apply( + this, + args.concat(_Array_slice_.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return this; + + } else { + // 15.3.4.5.1 [[Call]] + // When the [[Call]] internal method of a function object, F, + // which was created using the bind function is called with a + // this value and a list of arguments ExtraArgs, the following + // steps are taken: + // 1. Let boundArgs be the value of F's [[BoundArgs]] internal + // property. + // 2. Let boundThis be the value of F's [[BoundThis]] internal + // property. + // 3. Let target be the value of F's [[TargetFunction]] internal + // property. + // 4. Let args be a new list containing the same values as the + // list boundArgs in the same order followed by the same + // values as the list ExtraArgs in the same order. + // 5. Return the result of calling the [[Call]] internal method + // of target providing boundThis as the this value and + // providing args as the arguments. + + // equiv: target.call(this, ...boundArgs, ...args) + return target.apply( + that, + args.concat(_Array_slice_.call(arguments)) + ); + + } + + }; + if (target.prototype) { + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + // Clean up dangling references. + Empty.prototype = null; + } + // XXX bound.length is never writable, so don't even try + // + // 15. If the [[Class]] internal property of Target is "Function", then + // a. Let L be the length property of Target minus the length of A. + // b. Set the length own property of F to either 0 or L, whichever is + // larger. + // 16. Else set the length own property of F to 0. + // 17. Set the attributes of the length own property of F to the values + // specified in 15.3.5.1. + + // TODO + // 18. Set the [[Extensible]] internal property of F to true. + + // TODO + // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3). + // 20. Call the [[DefineOwnProperty]] internal method of F with + // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]: + // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and + // false. + // 21. Call the [[DefineOwnProperty]] internal method of F with + // arguments "arguments", PropertyDescriptor {[[Get]]: thrower, + // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false}, + // and false. + + // TODO + // NOTE Function objects created using Function.prototype.bind do not + // have a prototype property or the [[Code]], [[FormalParameters]], and + // [[Scope]] internal properties. + // XXX can't delete prototype in pure-js. + + // 22. Return F. + return bound; + }; +} + +// Shortcut to an often accessed properties, in order to avoid multiple +// dereference that costs universally. +// _Please note: Shortcuts are defined after `Function.prototype.bind` as we +// us it in defining shortcuts. +var call = Function.prototype.call; +var prototypeOfArray = Array.prototype; +var prototypeOfObject = Object.prototype; +var _Array_slice_ = prototypeOfArray.slice; +// Having a toString local variable name breaks in Opera so use _toString. +var _toString = call.bind(prototypeOfObject.toString); +var owns = call.bind(prototypeOfObject.hasOwnProperty); + +// If JS engine supports accessors creating shortcuts. +var defineGetter; +var defineSetter; +var lookupGetter; +var lookupSetter; +var supportsAccessors; +if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { + defineGetter = call.bind(prototypeOfObject.__defineGetter__); + defineSetter = call.bind(prototypeOfObject.__defineSetter__); + lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); + lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); +} + +// +// Array +// ===== +// + +// ES5 15.4.4.12 +// http://es5.github.com/#x15.4.4.12 +// Default value for second param +// [bugfix, ielt9, old browsers] +// IE < 9 bug: [1,2].splice(0).join("") == "" but should be "12" +if ([1,2].splice(0).length != 2) { + var array_splice = Array.prototype.splice; + + if (function() { // test IE < 9 to splice bug - see issue #138 + function makeArray(l) { + var a = []; + while (l--) { + a.unshift(l) + } + return a + } + + var array = [] + , lengthBefore + ; + + array.splice.bind(array, 0, 0).apply(null, makeArray(20)); + array.splice.bind(array, 0, 0).apply(null, makeArray(26)); + + lengthBefore = array.length; //20 + array.splice(5, 0, "XXX"); // add one element + + if (lengthBefore + 1 == array.length) { + return true;// has right splice implementation without bugs + } + // else { + // IE8 bug + // } + }()) {//IE 6/7 + Array.prototype.splice = function(start, deleteCount) { + if (!arguments.length) { + return []; + } else { + return array_splice.apply(this, [ + start === void 0 ? 0 : start, + deleteCount === void 0 ? (this.length - start) : deleteCount + ].concat(_Array_slice_.call(arguments, 2))) + } + }; + } + else {//IE8 + Array.prototype.splice = function(start, deleteCount) { + var result + , args = _Array_slice_.call(arguments, 2) + , addElementsCount = args.length + ; + + if (!arguments.length) { + return []; + } + + if (start === void 0) { // default + start = 0; + } + if (deleteCount === void 0) { // default + deleteCount = this.length - start; + } + + if (addElementsCount > 0) { + if (deleteCount <= 0) { + if (start == this.length) { // tiny optimisation #1 + this.push.apply(this, args); + return []; + } + + if (start == 0) { // tiny optimisation #2 + this.unshift.apply(this, args); + return []; + } + } + + // Array.prototype.splice implementation + result = _Array_slice_.call(this, start, start + deleteCount);// delete part + args.push.apply(args, _Array_slice_.call(this, start + deleteCount, this.length));// right part + args.unshift.apply(args, _Array_slice_.call(this, 0, start));// left part + + // delete all items from this array and replace it to 'left part' + _Array_slice_.call(arguments, 2) + 'right part' + args.unshift(0, this.length); + + array_splice.apply(this, args); + + return result; + } + + return array_splice.call(this, start, deleteCount); + } + + } +} + +// ES5 15.4.4.12 +// http://es5.github.com/#x15.4.4.13 +// Return len+argCount. +// [bugfix, ielt8] +// IE < 8 bug: [].unshift(0) == undefined but should be "1" +if ([].unshift(0) != 1) { + var array_unshift = Array.prototype.unshift; + Array.prototype.unshift = function() { + array_unshift.apply(this, arguments); + return this.length; + }; +} + +// ES5 15.4.3.2 +// http://es5.github.com/#x15.4.3.2 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray +if (!Array.isArray) { + Array.isArray = function isArray(obj) { + return _toString(obj) == "[object Array]"; + }; +} + +// The IsCallable() check in the Array functions +// has been replaced with a strict check on the +// internal class of the object to trap cases where +// the provided function was actually a regular +// expression literal, which in V8 and +// JavaScriptCore is a typeof "function". Only in +// V8 are regular expression literals permitted as +// reduce parameters, so it is desirable in the +// general case for the shim to match the more +// strict and common behavior of rejecting regular +// expressions. + +// ES5 15.4.4.18 +// http://es5.github.com/#x15.4.4.18 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach + +// Check failure of by-index access of string characters (IE < 9) +// and failure of `0 in boxedString` (Rhino) +var boxedString = Object("a"), + splitString = boxedString[0] != "a" || !(0 in boxedString); + +if (!Array.prototype.forEach) { + Array.prototype.forEach = function forEach(fun /*, thisp*/) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + thisp = arguments[1], + i = -1, + length = self.length >>> 0; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(); // TODO message + } + + while (++i < length) { + if (i in self) { + // Invoke the callback function with call, passing arguments: + // context, property value, property key, thisArg object + // context + fun.call(thisp, self[i], i, object); + } + } + }; +} + +// ES5 15.4.4.19 +// http://es5.github.com/#x15.4.4.19 +// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map +if (!Array.prototype.map) { + Array.prototype.map = function map(fun /*, thisp*/) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0, + result = Array(length), + thisp = arguments[1]; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + for (var i = 0; i < length; i++) { + if (i in self) + result[i] = fun.call(thisp, self[i], i, object); + } + return result; + }; +} + +// ES5 15.4.4.20 +// http://es5.github.com/#x15.4.4.20 +// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter +if (!Array.prototype.filter) { + Array.prototype.filter = function filter(fun /*, thisp */) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0, + result = [], + value, + thisp = arguments[1]; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + for (var i = 0; i < length; i++) { + if (i in self) { + value = self[i]; + if (fun.call(thisp, value, i, object)) { + result.push(value); + } + } + } + return result; + }; +} + +// ES5 15.4.4.16 +// http://es5.github.com/#x15.4.4.16 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every +if (!Array.prototype.every) { + Array.prototype.every = function every(fun /*, thisp */) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0, + thisp = arguments[1]; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + for (var i = 0; i < length; i++) { + if (i in self && !fun.call(thisp, self[i], i, object)) { + return false; + } + } + return true; + }; +} + +// ES5 15.4.4.17 +// http://es5.github.com/#x15.4.4.17 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some +if (!Array.prototype.some) { + Array.prototype.some = function some(fun /*, thisp */) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0, + thisp = arguments[1]; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + for (var i = 0; i < length; i++) { + if (i in self && fun.call(thisp, self[i], i, object)) { + return true; + } + } + return false; + }; +} + +// ES5 15.4.4.21 +// http://es5.github.com/#x15.4.4.21 +// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce +if (!Array.prototype.reduce) { + Array.prototype.reduce = function reduce(fun /*, initial*/) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + // no value to return if no initial value and an empty array + if (!length && arguments.length == 1) { + throw new TypeError("reduce of empty array with no initial value"); + } + + var i = 0; + var result; + if (arguments.length >= 2) { + result = arguments[1]; + } else { + do { + if (i in self) { + result = self[i++]; + break; + } + + // if array contains no values, no initial value to return + if (++i >= length) { + throw new TypeError("reduce of empty array with no initial value"); + } + } while (true); + } + + for (; i < length; i++) { + if (i in self) { + result = fun.call(void 0, result, self[i], i, object); + } + } + + return result; + }; +} + +// ES5 15.4.4.22 +// http://es5.github.com/#x15.4.4.22 +// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight +if (!Array.prototype.reduceRight) { + Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { + var object = toObject(this), + self = splitString && _toString(this) == "[object String]" ? + this.split("") : + object, + length = self.length >>> 0; + + // If no callback function or if callback is not a callable function + if (_toString(fun) != "[object Function]") { + throw new TypeError(fun + " is not a function"); + } + + // no value to return if no initial value, empty array + if (!length && arguments.length == 1) { + throw new TypeError("reduceRight of empty array with no initial value"); + } + + var result, i = length - 1; + if (arguments.length >= 2) { + result = arguments[1]; + } else { + do { + if (i in self) { + result = self[i--]; + break; + } + + // if array contains no values, no initial value to return + if (--i < 0) { + throw new TypeError("reduceRight of empty array with no initial value"); + } + } while (true); + } + + if (i < 0) { + return result; + } + + do { + if (i in this) { + result = fun.call(void 0, result, self[i], i, object); + } + } while (i--); + + return result; + }; +} + +// ES5 15.4.4.14 +// http://es5.github.com/#x15.4.4.14 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { + Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { + var self = splitString && _toString(this) == "[object String]" ? + this.split("") : + toObject(this), + length = self.length >>> 0; + + if (!length) { + return -1; + } + + var i = 0; + if (arguments.length > 1) { + i = toInteger(arguments[1]); + } + + // handle negative indices + i = i >= 0 ? i : Math.max(0, length + i); + for (; i < length; i++) { + if (i in self && self[i] === sought) { + return i; + } + } + return -1; + }; +} + +// ES5 15.4.4.15 +// http://es5.github.com/#x15.4.4.15 +// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf +if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { + Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { + var self = splitString && _toString(this) == "[object String]" ? + this.split("") : + toObject(this), + length = self.length >>> 0; + + if (!length) { + return -1; + } + var i = length - 1; + if (arguments.length > 1) { + i = Math.min(i, toInteger(arguments[1])); + } + // handle negative indices + i = i >= 0 ? i : length - Math.abs(i); + for (; i >= 0; i--) { + if (i in self && sought === self[i]) { + return i; + } + } + return -1; + }; +} + +// +// Object +// ====== +// + +// ES5 15.2.3.14 +// http://es5.github.com/#x15.2.3.14 +if (!Object.keys) { + // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation + var hasDontEnumBug = true, + dontEnums = [ + "toString", + "toLocaleString", + "valueOf", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "constructor" + ], + dontEnumsLength = dontEnums.length; + + for (var key in {"toString": null}) { + hasDontEnumBug = false; + } + + Object.keys = function keys(object) { + + if ( + (typeof object != "object" && typeof object != "function") || + object === null + ) { + throw new TypeError("Object.keys called on a non-object"); + } + + var keys = []; + for (var name in object) { + if (owns(object, name)) { + keys.push(name); + } + } + + if (hasDontEnumBug) { + for (var i = 0, ii = dontEnumsLength; i < ii; i++) { + var dontEnum = dontEnums[i]; + if (owns(object, dontEnum)) { + keys.push(dontEnum); + } + } + } + return keys; + }; + +} + +// +// Date +// ==== +// + +// ES5 15.9.5.43 +// http://es5.github.com/#x15.9.5.43 +// This function returns a String value represent the instance in time +// represented by this Date object. The format of the String is the Date Time +// string format defined in 15.9.1.15. All fields are present in the String. +// The time zone is always UTC, denoted by the suffix Z. If the time value of +// this object is not a finite Number a RangeError exception is thrown. +var negativeDate = -62198755200000, + negativeYearString = "-000001"; +if ( + !Date.prototype.toISOString || + (new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1) +) { + Date.prototype.toISOString = function toISOString() { + var result, length, value, year, month; + if (!isFinite(this)) { + throw new RangeError("Date.prototype.toISOString called on non-finite value."); + } + + year = this.getUTCFullYear(); + + month = this.getUTCMonth(); + // see https://github.com/kriskowal/es5-shim/issues/111 + year += Math.floor(month / 12); + month = (month % 12 + 12) % 12; + + // the date time string format is specified in 15.9.1.15. + result = [month + 1, this.getUTCDate(), + this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()]; + year = ( + (year < 0 ? "-" : (year > 9999 ? "+" : "")) + + ("00000" + Math.abs(year)) + .slice(0 <= year && year <= 9999 ? -4 : -6) + ); + + length = result.length; + while (length--) { + value = result[length]; + // pad months, days, hours, minutes, and seconds to have two + // digits. + if (value < 10) { + result[length] = "0" + value; + } + } + // pad milliseconds to have three digits. + return ( + year + "-" + result.slice(0, 2).join("-") + + "T" + result.slice(2).join(":") + "." + + ("000" + this.getUTCMilliseconds()).slice(-3) + "Z" + ); + }; +} + + +// ES5 15.9.5.44 +// http://es5.github.com/#x15.9.5.44 +// This function provides a String representation of a Date object for use by +// JSON.stringify (15.12.3). +var dateToJSONIsSupported = false; +try { + dateToJSONIsSupported = ( + Date.prototype.toJSON && + new Date(NaN).toJSON() === null && + new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1 && + Date.prototype.toJSON.call({ // generic + toISOString: function () { + return true; + } + }) + ); +} catch (e) { +} +if (!dateToJSONIsSupported) { + Date.prototype.toJSON = function toJSON(key) { + // When the toJSON method is called with argument key, the following + // steps are taken: + + // 1. Let O be the result of calling ToObject, giving it the this + // value as its argument. + // 2. Let tv be toPrimitive(O, hint Number). + var o = Object(this), + tv = toPrimitive(o), + toISO; + // 3. If tv is a Number and is not finite, return null. + if (typeof tv === "number" && !isFinite(tv)) { + return null; + } + // 4. Let toISO be the result of calling the [[Get]] internal method of + // O with argument "toISOString". + toISO = o.toISOString; + // 5. If IsCallable(toISO) is false, throw a TypeError exception. + if (typeof toISO != "function") { + throw new TypeError("toISOString property is not callable"); + } + // 6. Return the result of calling the [[Call]] internal method of + // toISO with O as the this value and an empty argument list. + return toISO.call(o); + + // NOTE 1 The argument is ignored. + + // NOTE 2 The toJSON function is intentionally generic; it does not + // require that its this value be a Date object. Therefore, it can be + // transferred to other kinds of objects for use as a method. However, + // it does require that any such object have a toISOString method. An + // object is free to use the argument key to filter its + // stringification. + }; +} + +// ES5 15.9.4.2 +// http://es5.github.com/#x15.9.4.2 +// based on work shared by Daniel Friesen (dantman) +// http://gist.github.com/303249 +if (!Date.parse || "Date.parse is buggy") { + // XXX global assignment won't work in embeddings that use + // an alternate object for the context. + Date = (function(NativeDate) { + + // Date.length === 7 + function Date(Y, M, D, h, m, s, ms) { + var length = arguments.length; + if (this instanceof NativeDate) { + var date = length == 1 && String(Y) === Y ? // isString(Y) + // We explicitly pass it through parse: + new NativeDate(Date.parse(Y)) : + // We have to manually make calls depending on argument + // length here + length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) : + length >= 6 ? new NativeDate(Y, M, D, h, m, s) : + length >= 5 ? new NativeDate(Y, M, D, h, m) : + length >= 4 ? new NativeDate(Y, M, D, h) : + length >= 3 ? new NativeDate(Y, M, D) : + length >= 2 ? new NativeDate(Y, M) : + length >= 1 ? new NativeDate(Y) : + new NativeDate(); + // Prevent mixups with unfixed Date object + date.constructor = Date; + return date; + } + return NativeDate.apply(this, arguments); + }; + + // 15.9.1.15 Date Time String Format. + var isoDateExpression = new RegExp("^" + + "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + + // 6-digit extended year + "(?:-(\\d{2})" + // optional month capture + "(?:-(\\d{2})" + // optional day capture + "(?:" + // capture hours:minutes:seconds.milliseconds + "T(\\d{2})" + // hours capture + ":(\\d{2})" + // minutes capture + "(?:" + // optional :seconds.milliseconds + ":(\\d{2})" + // seconds capture + "(?:(\\.\\d{1,}))?" + // milliseconds capture + ")?" + + "(" + // capture UTC offset component + "Z|" + // UTC capture + "(?:" + // offset specifier +/-hours:minutes + "([-+])" + // sign capture + "(\\d{2})" + // hours offset capture + ":(\\d{2})" + // minutes offset capture + ")" + + ")?)?)?)?" + + "$"); + + var months = [ + 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 + ]; + + function dayFromMonth(year, month) { + var t = month > 1 ? 1 : 0; + return ( + months[month] + + Math.floor((year - 1969 + t) / 4) - + Math.floor((year - 1901 + t) / 100) + + Math.floor((year - 1601 + t) / 400) + + 365 * (year - 1970) + ); + } + + function toUTC(t) { + return Number(new NativeDate(1970, 0, 1, 0, 0, 0, t)); + } + + // Copy any custom methods a 3rd party library may have added + for (var key in NativeDate) { + Date[key] = NativeDate[key]; + } + + // Copy "native" methods explicitly; they may be non-enumerable + Date.now = NativeDate.now; + Date.UTC = NativeDate.UTC; + Date.prototype = NativeDate.prototype; + Date.prototype.constructor = Date; + + // Upgrade Date.parse to handle simplified ISO 8601 strings + Date.parse = function parse(string) { + var match = isoDateExpression.exec(string); + if (match) { + // parse months, days, hours, minutes, seconds, and milliseconds + // provide default values if necessary + // parse the UTC offset component + var year = Number(match[1]), + month = Number(match[2] || 1) - 1, + day = Number(match[3] || 1) - 1, + hour = Number(match[4] || 0), + minute = Number(match[5] || 0), + second = Number(match[6] || 0), + millisecond = Math.floor(Number(match[7] || 0) * 1000), + // When time zone is missed, local offset should be used + // (ES 5.1 bug) + // see https://bugs.ecmascript.org/show_bug.cgi?id=112 + isLocalTime = Boolean(match[4] && !match[8]), + signOffset = match[9] === "-" ? 1 : -1, + hourOffset = Number(match[10] || 0), + minuteOffset = Number(match[11] || 0), + result; + if ( + hour < ( + minute > 0 || second > 0 || millisecond > 0 ? + 24 : 25 + ) && + minute < 60 && second < 60 && millisecond < 1000 && + month > -1 && month < 12 && hourOffset < 24 && + minuteOffset < 60 && // detect invalid offsets + day > -1 && + day < ( + dayFromMonth(year, month + 1) - + dayFromMonth(year, month) + ) + ) { + result = ( + (dayFromMonth(year, month) + day) * 24 + + hour + + hourOffset * signOffset + ) * 60; + result = ( + (result + minute + minuteOffset * signOffset) * 60 + + second + ) * 1000 + millisecond; + if (isLocalTime) { + result = toUTC(result); + } + if (-8.64e15 <= result && result <= 8.64e15) { + return result; + } + } + return NaN; + } + return NativeDate.parse.apply(this, arguments); + }; + + return Date; + })(Date); +} + +// ES5 15.9.4.4 +// http://es5.github.com/#x15.9.4.4 +if (!Date.now) { + Date.now = function now() { + return new Date().getTime(); + }; +} + + +// +// Number +// ====== +// + +// ES5.1 15.7.4.5 +// http://es5.github.com/#x15.7.4.5 +if (!Number.prototype.toFixed || (0.00008).toFixed(3) !== '0.000' || (0.9).toFixed(0) === '0' || (1.255).toFixed(2) !== '1.25' || (1000000000000000128).toFixed(0) !== "1000000000000000128") { + // Hide these variables and functions + (function () { + var base, size, data, i; + + base = 1e7; + size = 6; + data = [0, 0, 0, 0, 0, 0]; + + function multiply(n, c) { + var i = -1; + while (++i < size) { + c += n * data[i]; + data[i] = c % base; + c = Math.floor(c / base); + } + } + + function divide(n) { + var i = size, c = 0; + while (--i >= 0) { + c += data[i]; + data[i] = Math.floor(c / n); + c = (c % n) * base; + } + } + + function toString() { + var i = size; + var s = ''; + while (--i >= 0) { + if (s !== '' || i === 0 || data[i] !== 0) { + var t = String(data[i]); + if (s === '') { + s = t; + } else { + s += '0000000'.slice(0, 7 - t.length) + t; + } + } + } + return s; + } + + function pow(x, n, acc) { + return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc))); + } + + function log(x) { + var n = 0; + while (x >= 4096) { + n += 12; + x /= 4096; + } + while (x >= 2) { + n += 1; + x /= 2; + } + return n; + } + + Number.prototype.toFixed = function (fractionDigits) { + var f, x, s, m, e, z, j, k; + + // Test for NaN and round fractionDigits down + f = Number(fractionDigits); + f = f !== f ? 0 : Math.floor(f); + + if (f < 0 || f > 20) { + throw new RangeError("Number.toFixed called with invalid number of decimals"); + } + + x = Number(this); + + // Test for NaN + if (x !== x) { + return "NaN"; + } + + // If it is too big or small, return the string value of the number + if (x <= -1e21 || x >= 1e21) { + return String(x); + } + + s = ""; + + if (x < 0) { + s = "-"; + x = -x; + } + + m = "0"; + + if (x > 1e-21) { + // 1e-21 < x < 1e21 + // -70 < log2(x) < 70 + e = log(x * pow(2, 69, 1)) - 69; + z = (e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1)); + z *= 0x10000000000000; // Math.pow(2, 52); + e = 52 - e; + + // -18 < e < 122 + // x = z / 2 ^ e + if (e > 0) { + multiply(0, z); + j = f; + + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + + multiply(pow(10, j, 1), 0); + j = e - 1; + + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + + divide(1 << j); + multiply(1, 1); + divide(2); + m = toString(); + } else { + multiply(0, z); + multiply(1 << (-e), 0); + m = toString() + '0.00000000000000000000'.slice(2, 2 + f); + } + } + + if (f > 0) { + k = m.length; + + if (k <= f) { + m = s + '0.0000000000000000000'.slice(0, f - k + 2) + m; + } else { + m = s + m.slice(0, k - f) + '.' + m.slice(k - f); + } + } else { + m = s + m; + } + + return m; + } + }()); +} + + +// +// String +// ====== +// + + +// ES5 15.5.4.14 +// http://es5.github.com/#x15.5.4.14 + +// [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers] +// Many browsers do not split properly with regular expressions or they +// do not perform the split correctly under obscure conditions. +// See http://blog.stevenlevithan.com/archives/cross-browser-split +// I've tested in many browsers and this seems to cover the deviant ones: +// 'ab'.split(/(?:ab)*/) should be ["", ""], not [""] +// '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""] +// 'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not +// [undefined, "t", undefined, "e", ...] +// ''.split(/.?/) should be [], not [""] +// '.'.split(/()()/) should be ["."], not ["", "", "."] + +var string_split = String.prototype.split; +if ( + 'ab'.split(/(?:ab)*/).length !== 2 || + '.'.split(/(.?)(.?)/).length !== 4 || + 'tesst'.split(/(s)*/)[1] === "t" || + ''.split(/.?/).length || + '.'.split(/()()/).length > 1 +) { + (function () { + var compliantExecNpcg = /()??/.exec("")[1] === void 0; // NPCG: nonparticipating capturing group + + String.prototype.split = function (separator, limit) { + var string = this; + if (separator === void 0 && limit === 0) + return []; + + // If `separator` is not a regex, use native split + if (Object.prototype.toString.call(separator) !== "[object RegExp]") { + return string_split.apply(this, arguments); + } + + var output = [], + flags = (separator.ignoreCase ? "i" : "") + + (separator.multiline ? "m" : "") + + (separator.extended ? "x" : "") + // Proposed for ES6 + (separator.sticky ? "y" : ""), // Firefox 3+ + lastLastIndex = 0, + // Make `global` and avoid `lastIndex` issues by working with a copy + separator = new RegExp(separator.source, flags + "g"), + separator2, match, lastIndex, lastLength; + string += ""; // Type-convert + if (!compliantExecNpcg) { + // Doesn't need flags gy, but they don't hurt + separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags); + } + /* Values for `limit`, per the spec: + * If undefined: 4294967295 // Math.pow(2, 32) - 1 + * If 0, Infinity, or NaN: 0 + * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296; + * If negative number: 4294967296 - Math.floor(Math.abs(limit)) + * If other: Type-convert, then use the above rules + */ + limit = limit === void 0 ? + -1 >>> 0 : // Math.pow(2, 32) - 1 + limit >>> 0; // ToUint32(limit) + while (match = separator.exec(string)) { + // `separator.lastIndex` is not reliable cross-browser + lastIndex = match.index + match[0].length; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1) { + match[0].replace(separator2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === void 0) { + match[i] = void 0; + } + } + }); + } + if (match.length > 1 && match.index < string.length) { + Array.prototype.push.apply(output, match.slice(1)); + } + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= limit) { + break; + } + } + if (separator.lastIndex === match.index) { + separator.lastIndex++; // Avoid an infinite loop + } + } + if (lastLastIndex === string.length) { + if (lastLength || !separator.test("")) { + output.push(""); + } + } else { + output.push(string.slice(lastLastIndex)); + } + return output.length > limit ? output.slice(0, limit) : output; + }; + }()); + +// [bugfix, chrome] +// If separator is undefined, then the result array contains just one String, +// which is the this value (converted to a String). If limit is not undefined, +// then the output array is truncated so that it contains no more than limit +// elements. +// "0".split(undefined, 0) -> [] +} else if ("0".split(void 0, 0).length) { + String.prototype.split = function(separator, limit) { + if (separator === void 0 && limit === 0) return []; + return string_split.apply(this, arguments); + } +} + + +// ECMA-262, 3rd B.2.3 +// Note an ECMAScript standart, although ECMAScript 3rd Edition has a +// non-normative section suggesting uniform semantics and it should be +// normalized across all browsers +// [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE +if ("".substr && "0b".substr(-1) !== "b") { + var string_substr = String.prototype.substr; + /** + * Get the substring of a string + * @param {integer} start where to start the substring + * @param {integer} length how many characters to return + * @return {string} + */ + String.prototype.substr = function(start, length) { + return string_substr.call( + this, + start < 0 ? ((start = this.length + start) < 0 ? 0 : start) : start, + length + ); + } +} + +// ES5 15.5.4.20 +// http://es5.github.com/#x15.5.4.20 +var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + + "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + + "\u2029\uFEFF"; +if (!String.prototype.trim || ws.trim()) { + // http://blog.stevenlevithan.com/archives/faster-trim-javascript + // http://perfectionkills.com/whitespace-deviations/ + ws = "[" + ws + "]"; + var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), + trimEndRegexp = new RegExp(ws + ws + "*$"); + String.prototype.trim = function trim() { + if (this === void 0 || this === null) { + throw new TypeError("can't convert "+this+" to object"); + } + return String(this) + .replace(trimBeginRegexp, "") + .replace(trimEndRegexp, ""); + }; +} + +// +// Util +// ====== +// + +// ES5 9.4 +// http://es5.github.com/#x9.4 +// http://jsperf.com/to-integer + +function toInteger(n) { + n = +n; + if (n !== n) { // isNaN + n = 0; + } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + return n; +} + +function isPrimitive(input) { + var type = typeof input; + return ( + input === null || + type === "undefined" || + type === "boolean" || + type === "number" || + type === "string" + ); +} + +function toPrimitive(input) { + var val, valueOf, toString; + if (isPrimitive(input)) { + return input; + } + valueOf = input.valueOf; + if (typeof valueOf === "function") { + val = valueOf.call(input); + if (isPrimitive(val)) { + return val; + } + } + toString = input.toString; + if (typeof toString === "function") { + val = toString.call(input); + if (isPrimitive(val)) { + return val; + } + } + throw new TypeError(); +} + +// ES5 9.9 +// http://es5.github.com/#x9.9 +var toObject = function (o) { + if (o == null) { // this matches both null and undefined + throw new TypeError("can't convert "+o+" to object"); + } + return Object(o); +}; + +}); diff --git a/addons/web/static/lib/es5-shim/es5-shim.map b/addons/web/static/lib/es5-shim/es5-shim.map new file mode 100644 index 00000000000..3f56fe6e289 --- /dev/null +++ b/addons/web/static/lib/es5-shim/es5-shim.map @@ -0,0 +1 @@ +{"version":3,"sources":["es5-shim.js"],"names":["definition","define","YUI","add","Empty","Function","prototype","bind","that","target","this","TypeError","args","_Array_slice_","call","arguments","bound","result","apply","concat","Object","prototypeOfArray","Array","prototypeOfObject","slice","_toString","toString","owns","hasOwnProperty","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","splice","length","array_splice","makeArray","l","a","unshift","array","lengthBefore","start","deleteCount","addElementsCount","push","array_unshift","isArray","obj","boxedString","splitString","forEach","fun","object","toObject","self","split","thisp","i","map","filter","value","every","some","reduce","reduceRight","indexOf","sought","toInteger","Math","max","lastIndexOf","min","abs","keys","hasDontEnumBug","dontEnums","dontEnumsLength","key","name","ii","dontEnum","negativeDate","negativeYearString","Date","toISOString","year","month","isFinite","RangeError","getUTCFullYear","getUTCMonth","floor","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","join","getUTCMilliseconds","dateToJSONIsSupported","toJSON","NaN","e","o","tv","toPrimitive","toISO","parse","NativeDate","Y","M","D","h","m","s","ms","date","String","constructor","isoDateExpression","RegExp","months","dayFromMonth","t","now","UTC","string","match","exec","Number","day","hour","minute","second","millisecond","offset","signOffset","hourOffset","minuteOffset","getTime","toFixed","base","size","data","multiply","n","c","divide","pow","x","acc","log","fractionDigits","f","z","j","k","string_split","compliantExecNpcg","separator","limit","output","flags","ignoreCase","multiline","extended","sticky","lastLastIndex","source","separator2","lastIndex","lastLength","index","replace","test","substr","string_substr","ws","trim","trimBeginRegexp","trimEndRegexp","isPrimitive","input","type","val","valueOf"],"mappings":"CAIA,SAAWA,YAEP,SAAWC,SAAU,WAAY,CAC7BA,OAAOD,gBAEJ,UAAWE,MAAO,WAAY,CACjCA,IAAIC,IAAI,MAAOH,gBAEZ,CACHA,gBAEL,WAmBH,QAASI,UAET,IAAKC,SAASC,UAAUC,KAAM,CAC1BF,SAASC,UAAUC,KAAO,QAASA,MAAKC,MAEpC,GAAIC,QAASC,IAEb,UAAWD,SAAU,WAAY,CAC7B,KAAM,IAAIE,WAAU,kDAAoDF,QAK5E,GAAIG,MAAOC,cAAcC,KAAKC,UAAW,EAUzC,IAAIC,OAAQ,WAER,GAAIN,eAAgBM,OAAO,CAiBvB,GAAIC,QAASR,OAAOS,MAChBR,KACAE,KAAKO,OAAON,cAAcC,KAAKC,YAEnC,IAAIK,OAAOH,UAAYA,OAAQ,CAC3B,MAAOA,QAEX,MAAOP,UAEJ,CAoBH,MAAOD,QAAOS,MACVV,KACAI,KAAKO,OAAON,cAAcC,KAAKC,cAM3C,IAAGN,OAAOH,UAAW,CACjBF,MAAME,UAAYG,OAAOH,SACzBU,OAAMV,UAAY,GAAIF,MAEtBA,OAAME,UAAY,KAiCtB,MAAOU,QAQf,GAAIF,MAAOT,SAASC,UAAUQ,IAC9B,IAAIO,kBAAmBC,MAAMhB,SAC7B,IAAIiB,mBAAoBH,OAAOd,SAC/B,IAAIO,eAAgBQ,iBAAiBG,KAErC,IAAIC,WAAYX,KAAKP,KAAKgB,kBAAkBG,SAC5C,IAAIC,MAAOb,KAAKP,KAAKgB,kBAAkBK,eAGvC,IAAIC,aACJ,IAAIC,aACJ,IAAIC,aACJ,IAAIC,aACJ,IAAIC,kBACJ,IAAKA,kBAAoBN,KAAKJ,kBAAmB,oBAAsB,CACnEM,aAAef,KAAKP,KAAKgB,kBAAkBW,iBAC3CJ,cAAehB,KAAKP,KAAKgB,kBAAkBY,iBAC3CJ,cAAejB,KAAKP,KAAKgB,kBAAkBa,iBAC3CJ,cAAelB,KAAKP,KAAKgB,kBAAkBc,kBAa/C,IAAK,EAAE,GAAGC,OAAO,GAAGC,QAAU,EAAG,CAC7B,GAAIC,cAAelB,MAAMhB,UAAUgC,MAEnC,IAAG,WACC,QAASG,WAAUC,GACf,GAAIC,KACJ,OAAOD,IAAK,CACRC,EAAEC,QAAQF,GAEd,MAAOC,GAGX,GAAIE,UACEC,YAGND,OAAMP,OAAO/B,KAAKsC,MAAO,EAAG,GAAG3B,MAAM,KAAMuB,UAAU,IACrDI,OAAMP,OAAO/B,KAAKsC,MAAO,EAAG,GAAG3B,MAAM,KAAMuB,UAAU,IAErDK,cAAeD,MAAMN,MACrBM,OAAMP,OAAO,EAAG,EAAG,MAEnB,IAAGQ,aAAe,GAAKD,MAAMN,OAAQ,CACjC,MAAO,UAKV,CACDjB,MAAMhB,UAAUgC,OAAS,SAASS,MAAOC,aACrC,IAAKjC,UAAUwB,OAAQ,CACnB,aACG,CACH,MAAOC,cAAatB,MAAMR,MACtBqC,YAAe,GAAI,EAAIA,MACvBC,kBAAqB,GAAKtC,KAAK6B,OAASQ,MAASC,aACnD7B,OAAON,cAAcC,KAAKC,UAAW,WAI9C,CACDO,MAAMhB,UAAUgC,OAAS,SAASS,MAAOC,aACrC,GAAI/B,QACEL,KAAOC,cAAcC,KAAKC,UAAW,GACrCkC,iBAAmBrC,KAAK2B,MAG9B,KAAIxB,UAAUwB,OAAQ,CAClB,SAGJ,GAAGQ,YAAe,GAAG,CACjBA,MAAQ,EAEZ,GAAGC,kBAAqB,GAAG,CACvBA,YAActC,KAAK6B,OAASQ,MAGhC,GAAGE,iBAAmB,EAAG,CACrB,GAAGD,aAAe,EAAG,CACjB,GAAGD,OAASrC,KAAK6B,OAAQ,CACrB7B,KAAKwC,KAAKhC,MAAMR,KAAME,KACtB,UAGJ,GAAGmC,OAAS,EAAG,CACXrC,KAAKkC,QAAQ1B,MAAMR,KAAME,KACzB,WAKRK,OAASJ,cAAcC,KAAKJ,KAAMqC,MAAOA,MAAQC,YACjDpC,MAAKsC,KAAKhC,MAAMN,KAAMC,cAAcC,KAAKJ,KAAMqC,MAAQC,YAAatC,KAAK6B,QACzE3B,MAAKgC,QAAQ1B,MAAMN,KAAMC,cAAcC,KAAKJ,KAAM,EAAGqC,OAGrDnC,MAAKgC,QAAQ,EAAGlC,KAAK6B,OAErBC,cAAatB,MAAMR,KAAME,KAEzB,OAAOK,QAGX,MAAOuB,cAAa1B,KAAKJ,KAAMqC,MAAOC,eAWlD,MAAOJ,QAAQ,IAAM,EAAG,CACpB,GAAIO,eAAgB7B,MAAMhB,UAAUsC,OACpCtB,OAAMhB,UAAUsC,QAAU,WACtBO,cAAcjC,MAAMR,KAAMK,UAC1B,OAAOL,MAAK6B,QAOpB,IAAKjB,MAAM8B,QAAS,CAChB9B,MAAM8B,QAAU,QAASA,SAAQC,KAC7B,MAAO5B,WAAU4B,MAAQ,kBAsBjC,GAAIC,aAAclC,OAAO,KACrBmC,YAAcD,YAAY,IAAM,OAAS,IAAKA,aAElD,KAAKhC,MAAMhB,UAAUkD,QAAS,CAC1BlC,MAAMhB,UAAUkD,QAAU,QAASA,SAAQC,KACvC,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJI,MAAQ/C,UAAU,GAClBgD,GAAK,EACLxB,OAASqB,KAAKrB,SAAW,CAG7B,IAAId,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAGd,QAASoD,EAAIxB,OAAQ,CACjB,GAAIwB,IAAKH,MAAM,CAIXH,IAAI3C,KAAKgD,MAAOF,KAAKG,GAAIA,EAAGL,WAS5C,IAAKpC,MAAMhB,UAAU0D,IAAK,CACtB1C,MAAMhB,UAAU0D,IAAM,QAASA,KAAIP,KAC/B,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJnB,OAASqB,KAAKrB,SAAW,EACzBtB,OAASK,MAAMiB,QACfuB,MAAQ/C,UAAU,EAGtB,IAAIU,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAG9B,IAAK,GAAIM,GAAI,EAAGA,EAAIxB,OAAQwB,IAAK,CAC7B,GAAIA,IAAKH,MACL3C,OAAO8C,GAAKN,IAAI3C,KAAKgD,MAAOF,KAAKG,GAAIA,EAAGL,QAEhD,MAAOzC,SAOf,IAAKK,MAAMhB,UAAU2D,OAAQ,CACzB3C,MAAMhB,UAAU2D,OAAS,QAASA,QAAOR,KACrC,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACPH,OACRnB,OAASqB,KAAKrB,SAAW,EACzBtB,UACAiD,MACAJ,MAAQ/C,UAAU,EAGtB,IAAIU,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAG9B,IAAK,GAAIM,GAAI,EAAGA,EAAIxB,OAAQwB,IAAK,CAC7B,GAAIA,IAAKH,MAAM,CACXM,MAAQN,KAAKG,EACb,IAAIN,IAAI3C,KAAKgD,MAAOI,MAAOH,EAAGL,QAAS,CACnCzC,OAAOiC,KAAKgB,SAIxB,MAAOjD,SAOf,IAAKK,MAAMhB,UAAU6D,MAAO,CACxB7C,MAAMhB,UAAU6D,MAAQ,QAASA,OAAMV,KACnC,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJnB,OAASqB,KAAKrB,SAAW,EACzBuB,MAAQ/C,UAAU,EAGtB,IAAIU,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAG9B,IAAK,GAAIM,GAAI,EAAGA,EAAIxB,OAAQwB,IAAK,CAC7B,GAAIA,IAAKH,QAASH,IAAI3C,KAAKgD,MAAOF,KAAKG,GAAIA,EAAGL,QAAS,CACnD,MAAO,QAGf,MAAO,OAOf,IAAKpC,MAAMhB,UAAU8D,KAAM,CACvB9C,MAAMhB,UAAU8D,KAAO,QAASA,MAAKX,KACjC,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJnB,OAASqB,KAAKrB,SAAW,EACzBuB,MAAQ/C,UAAU,EAGtB,IAAIU,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAG9B,IAAK,GAAIM,GAAI,EAAGA,EAAIxB,OAAQwB,IAAK,CAC7B,GAAIA,IAAKH,OAAQH,IAAI3C,KAAKgD,MAAOF,KAAKG,GAAIA,EAAGL,QAAS,CAClD,MAAO,OAGf,MAAO,QAOf,IAAKpC,MAAMhB,UAAU+D,OAAQ,CACzB/C,MAAMhB,UAAU+D,OAAS,QAASA,QAAOZ,KACrC,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJnB,OAASqB,KAAKrB,SAAW,CAG7B,IAAId,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAI9B,IAAKlB,QAAUxB,UAAUwB,QAAU,EAAG,CAClC,KAAM,IAAI5B,WAAU,+CAGxB,GAAIoD,GAAI,CACR,IAAI9C,OACJ,IAAIF,UAAUwB,QAAU,EAAG,CACvBtB,OAASF,UAAU,OAChB,CACH,EAAG,CACC,GAAIgD,IAAKH,MAAM,CACX3C,OAAS2C,KAAKG,IACd,OAIJ,KAAMA,GAAKxB,OAAQ,CACf,KAAM,IAAI5B,WAAU,sDAEnB,MAGb,KAAOoD,EAAIxB,OAAQwB,IAAK,CACpB,GAAIA,IAAKH,MAAM,CACX3C,OAASwC,IAAI3C,SAAU,GAAGG,OAAQ2C,KAAKG,GAAIA,EAAGL,SAItD,MAAOzC,SAOf,IAAKK,MAAMhB,UAAUgE,YAAa,CAC9BhD,MAAMhB,UAAUgE,YAAc,QAASA,aAAYb,KAC/C,GAAIC,QAASC,SAASjD,MAClBkD,KAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXH,OACJnB,OAASqB,KAAKrB,SAAW,CAG7B,IAAId,UAAUgC,MAAQ,oBAAqB,CACvC,KAAM,IAAI9C,WAAU8C,IAAM,sBAI9B,IAAKlB,QAAUxB,UAAUwB,QAAU,EAAG,CAClC,KAAM,IAAI5B,WAAU,oDAGxB,GAAIM,QAAQ8C,EAAIxB,OAAS,CACzB,IAAIxB,UAAUwB,QAAU,EAAG,CACvBtB,OAASF,UAAU,OAChB,CACH,EAAG,CACC,GAAIgD,IAAKH,MAAM,CACX3C,OAAS2C,KAAKG,IACd,OAIJ,KAAMA,EAAI,EAAG,CACT,KAAM,IAAIpD,WAAU,2DAEnB,MAGb,GAAIoD,EAAI,EAAG,CACP,MAAO9C,QAGX,EAAG,CACC,GAAI8C,IAAKrD,MAAM,CACXO,OAASwC,IAAI3C,SAAU,GAAGG,OAAQ2C,KAAKG,GAAIA,EAAGL,eAE7CK,IAET,OAAO9C,SAOf,IAAKK,MAAMhB,UAAUiE,UAAa,EAAG,GAAGA,QAAQ,EAAG,KAAO,EAAI,CAC1DjD,MAAMhB,UAAUiE,QAAU,QAASA,SAAQC,QACvC,GAAIZ,MAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXF,SAASjD,MACb6B,OAASqB,KAAKrB,SAAW,CAE7B,KAAKA,OAAQ,CACT,OAAQ,EAGZ,GAAIwB,GAAI,CACR,IAAIhD,UAAUwB,OAAS,EAAG,CACtBwB,EAAIU,UAAU1D,UAAU,IAI5BgD,EAAIA,GAAK,EAAIA,EAAIW,KAAKC,IAAI,EAAGpC,OAASwB,EACtC,MAAOA,EAAIxB,OAAQwB,IAAK,CACpB,GAAIA,IAAKH,OAAQA,KAAKG,KAAOS,OAAQ,CACjC,MAAOT,IAGf,OAAQ,GAOhB,IAAKzC,MAAMhB,UAAUsE,cAAiB,EAAG,GAAGA,YAAY,GAAI,KAAO,EAAI,CACnEtD,MAAMhB,UAAUsE,YAAc,QAASA,aAAYJ,QAC/C,GAAIZ,MAAOL,aAAe9B,UAAUf,OAAS,kBACrCA,KAAKmD,MAAM,IACXF,SAASjD,MACb6B,OAASqB,KAAKrB,SAAW,CAE7B,KAAKA,OAAQ,CACT,OAAQ,EAEZ,GAAIwB,GAAIxB,OAAS,CACjB,IAAIxB,UAAUwB,OAAS,EAAG,CACtBwB,EAAIW,KAAKG,IAAId,EAAGU,UAAU1D,UAAU,KAGxCgD,EAAIA,GAAK,EAAIA,EAAIxB,OAASmC,KAAKI,IAAIf,EACnC,MAAOA,GAAK,EAAGA,IAAK,CAChB,GAAIA,IAAKH,OAAQY,SAAWZ,KAAKG,GAAI,CACjC,MAAOA,IAGf,OAAQ,GAWhB,IAAK3C,OAAO2D,KAAM,CAEd,GAAIC,gBAAiB,KACjBC,WACI,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEJC,gBAAkBD,UAAU1C,MAEhC,KAAK,GAAI4C,QAAQzD,SAAY,MAAO,CAChCsD,eAAiB,MAGrB5D,OAAO2D,KAAO,QAASA,MAAKrB,QAExB,SACYA,SAAU,gBAAmBA,SAAU,YAC/CA,SAAW,KACb,CACE,KAAM,IAAI/C,WAAU,sCAGxB,GAAIoE,QACJ,KAAK,GAAIK,QAAQ1B,QAAQ,CACrB,GAAI/B,KAAK+B,OAAQ0B,MAAO,CACpBL,KAAK7B,KAAKkC,OAIlB,GAAIJ,eAAgB,CAChB,IAAK,GAAIjB,GAAI,EAAGsB,GAAKH,gBAAiBnB,EAAIsB,GAAItB,IAAK,CAC/C,GAAIuB,UAAWL,UAAUlB,EACzB,IAAIpC,KAAK+B,OAAQ4B,UAAW,CACxBP,KAAK7B,KAAKoC,YAItB,MAAOP,OAiBf,GAAIQ,eAAgB,YAChBC,mBAAqB,SACzB,KACKC,KAAKnF,UAAUoF,aACf,GAAID,MAAKF,cAAcG,cAAcnB,QAAQiB,uBAAyB,EACzE,CACEC,KAAKnF,UAAUoF,YAAc,QAASA,eAClC,GAAIzE,QAAQsB,OAAQ2B,MAAOyB,KAAMC,KACjC,KAAKC,SAASnF,MAAO,CACjB,KAAM,IAAIoF,YAAW,0DAGzBH,KAAOjF,KAAKqF,gBAEZH,OAAQlF,KAAKsF,aAEbL,OAAQjB,KAAKuB,MAAML,MAAQ,GAC3BA,QAASA,MAAQ,GAAK,IAAM,EAG5B3E,SAAU2E,MAAQ,EAAGlF,KAAKwF,aACtBxF,KAAKyF,cAAezF,KAAK0F,gBAAiB1F,KAAK2F,gBACnDV,OACKA,KAAO,EAAI,IAAOA,KAAO,KAAO,IAAM,KACtC,QAAUjB,KAAKI,IAAIa,OACnBnE,MAAM,GAAKmE,MAAQA,MAAQ,MAAQ,GAAK,EAG7CpD,QAAStB,OAAOsB,MAChB,OAAOA,SAAU,CACb2B,MAAQjD,OAAOsB,OAGf,IAAI2B,MAAQ,GAAI,CACZjD,OAAOsB,QAAU,IAAM2B,OAI/B,MACIyB,MAAO,IAAM1E,OAAOO,MAAM,EAAG,GAAG8E,KAAK,KACrC,IAAMrF,OAAOO,MAAM,GAAG8E,KAAK,KAAO,KACjC,MAAQ5F,KAAK6F,sBAAsB/E,OAAO,GAAK,KAU5D,GAAIgF,uBAAwB,KAC5B,KACIA,sBACIf,KAAKnF,UAAUmG,QACf,GAAIhB,MAAKiB,KAAKD,WAAa,MAC3B,GAAIhB,MAAKF,cAAckB,SAASlC,QAAQiB,uBAAyB,GACjEC,KAAKnF,UAAUmG,OAAO3F,MAClB4E,YAAa,WACT,MAAO,SAIrB,MAAOiB,IAET,IAAKH,sBAAuB,CACxBf,KAAKnF,UAAUmG,OAAS,QAASA,QAAOtB,KAOpC,GAAIyB,GAAIxF,OAAOV,MACXmG,GAAKC,YAAYF,GACjBG,KAEJ,UAAWF,MAAO,WAAahB,SAASgB,IAAK,CACzC,MAAO,MAIXE,MAAQH,EAAElB,WAEV,UAAWqB,QAAS,WAAY,CAC5B,KAAM,IAAIpG,WAAU,wCAIxB,MAAOoG,OAAMjG,KAAK8F,IAiB1B,IAAKnB,KAAKuB,OAAS,sBAAuB,CAGtCvB,KAAO,SAAUwB,YAGb,QAASxB,MAAKyB,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,IAC5B,GAAIjF,QAASxB,UAAUwB,MACvB,IAAI7B,eAAgBuG,YAAY,CAC5B,GAAIQ,MAAOlF,QAAU,GAAKmF,OAAOR,KAAOA,EAEpC,GAAID,YAAWxB,KAAKuB,MAAME,IAG1B3E,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,IAC/CjF,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC5ChF,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,EAAGC,EAAGC,EAAGC,GACzC/E,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,EAAGC,EAAGC,GACtC9E,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,EAAGC,GACnC7E,QAAU,EAAI,GAAI0E,YAAWC,EAAGC,GAChC5E,QAAU,EAAI,GAAI0E,YAAWC,GACf,GAAID,WAEtBQ,MAAKE,YAAclC,IACnB,OAAOgC,MAEX,MAAOR,YAAW/F,MAAMR,KAAMK,WAIlC,GAAI6G,mBAAoB,GAAIC,QAAO,IAC/B,sBAEA,eACA,eACA,MACI,YACA,YACA,MACI,YACA,oBACJ,KACJ,IACI,KACA,MACI,SACA,WACA,YACJ,IACJ,WACJ,IAEA,IAAIC,SACA,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAG3D,SAASC,cAAapC,KAAMC,OACxB,GAAIoC,GAAIpC,MAAQ,EAAI,EAAI,CACxB,OACIkC,QAAOlC,OACPlB,KAAKuB,OAAON,KAAO,KAAOqC,GAAK,GAC/BtD,KAAKuB,OAAON,KAAO,KAAOqC,GAAK,KAC/BtD,KAAKuB,OAAON,KAAO,KAAOqC,GAAK,KAC/B,KAAOrC,KAAO,MAKtB,IAAK,GAAIR,OAAO8B,YAAY,CACxBxB,KAAKN,KAAO8B,WAAW9B,KAI3BM,KAAKwC,IAAMhB,WAAWgB,GACtBxC,MAAKyC,IAAMjB,WAAWiB,GACtBzC,MAAKnF,UAAY2G,WAAW3G,SAC5BmF,MAAKnF,UAAUqH,YAAclC,IAG7BA,MAAKuB,MAAQ,QAASA,OAAMmB,QACxB,GAAIC,OAAQR,kBAAkBS,KAAKF,OACnC,IAAIC,MAAO,CAIP,GAAIzC,MAAO2C,OAAOF,MAAM,IACpBxC,MAAQ0C,OAAOF,MAAM,IAAM,GAAK,EAChCG,IAAMD,OAAOF,MAAM,IAAM,GAAK,EAC9BI,KAAOF,OAAOF,MAAM,IAAM,GAC1BK,OAASH,OAAOF,MAAM,IAAM,GAC5BM,OAASJ,OAAOF,MAAM,IAAM,GAC5BO,YAAcjE,KAAKuB,MAAMqC,OAAOF,MAAM,IAAM,GAAK,KAIjDQ,QAAUR,MAAM,IAAMA,MAAM,GACxB,EAAIE,OAAO,GAAIrB,YAAW,KAAM,IACpC4B,WAAaT,MAAM,KAAO,IAAM,GAAK,EACrCU,WAAaR,OAAOF,MAAM,KAAO,GACjCW,aAAeT,OAAOF,MAAM,KAAO,GACnCnH,MACJ,IACIuH,MACIC,OAAS,GAAKC,OAAS,GAAKC,YAAc,EAC1C,GAAK,KAETF,OAAS,IAAMC,OAAS,IAAMC,YAAc,KAC5C/C,OAAS,GAAKA,MAAQ,IAAMkD,WAAa,IACzCC,aAAe,IACfR,KAAO,GACPA,IACIR,aAAapC,KAAMC,MAAQ,GAC3BmC,aAAapC,KAAMC,OAEzB,CACE3E,SACK8G,aAAapC,KAAMC,OAAS2C,KAAO,GACpCC,KACAM,WAAaD,YACb,EACJ5H,UACKA,OAASwH,OAASM,aAAeF,YAAc,GAChDH,QACA,IAAOC,YAAcC,MACzB,KAAK,QAAW3H,QAAUA,QAAU,OAAS,CACzC,MAAOA,SAGf,MAAOyF,KAEX,MAAOO,YAAWD,MAAM9F,MAAMR,KAAMK,WAGxC,OAAO0E,OACRA,MAKP,IAAKA,KAAKwC,IAAK,CACXxC,KAAKwC,IAAM,QAASA,OAChB,OAAO,GAAIxC,OAAOuD,WAY1B,IAAKV,OAAOhI,UAAU2I,SAAW,KAAUA,QAAQ,KAAO,SAAW,GAAMA,QAAQ,KAAO,KAAO,MAAQA,QAAQ,KAAO,QAAU,kBAAsBA,QAAQ,KAAO,sBAAuB,EAEzL,WACG,GAAIC,MAAMC,KAAMC,KAAMrF,CAEtBmF,MAAO,GACPC,MAAO,CACPC,OAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAEvB,SAASC,UAASC,EAAGC,GACjB,GAAIxF,IAAK,CACT,SAASA,EAAIoF,KAAM,CACfI,GAAKD,EAAIF,KAAKrF,EACdqF,MAAKrF,GAAKwF,EAAIL,IACdK,GAAI7E,KAAKuB,MAAMsD,EAAIL,OAI3B,QAASM,QAAOF,GACZ,GAAIvF,GAAIoF,KAAMI,EAAI,CAClB,SAASxF,GAAK,EAAG,CACbwF,GAAKH,KAAKrF,EACVqF,MAAKrF,GAAKW,KAAKuB,MAAMsD,EAAID,EACzBC,GAAKA,EAAID,EAAKJ,MAItB,QAASxH,YACL,GAAIqC,GAAIoF,IACR,IAAI5B,GAAI,EACR,SAASxD,GAAK,EAAG,CACb,GAAIwD,IAAM,IAAMxD,IAAM,GAAKqF,KAAKrF,KAAO,EAAG,CACtC,GAAIiE,GAAIN,OAAO0B,KAAKrF,GACpB,IAAIwD,IAAM,GAAI,CACVA,EAAIS,MACD,CACHT,GAAK,UAAU/F,MAAM,EAAG,EAAIwG,EAAEzF,QAAUyF,IAIpD,MAAOT,GAGX,QAASkC,KAAIC,EAAGJ,EAAGK,KACf,MAAQL,KAAM,EAAIK,IAAOL,EAAI,IAAM,EAAIG,IAAIC,EAAGJ,EAAI,EAAGK,IAAMD,GAAKD,IAAIC,EAAIA,EAAGJ,EAAI,EAAGK,KAGtF,QAASC,KAAIF,GACT,GAAIJ,GAAI,CACR,OAAOI,GAAK,KAAM,CACdJ,GAAK,EACLI,IAAK,KAET,MAAOA,GAAK,EAAG,CACXJ,GAAK,CACLI,IAAK,EAET,MAAOJ,GAGXhB,OAAOhI,UAAU2I,QAAU,SAAUY,gBACjC,GAAIC,GAAGJ,EAAGnC,EAAGD,EAAGX,EAAGoD,EAAGC,EAAGC,CAGzBH,GAAIxB,OAAOuB,eACXC,GAAIA,IAAMA,EAAI,EAAIpF,KAAKuB,MAAM6D,EAE7B,IAAIA,EAAI,GAAKA,EAAI,GAAI,CACjB,KAAM,IAAIhE,YAAW,yDAGzB4D,EAAIpB,OAAO5H,KAGX,IAAIgJ,IAAMA,EAAG,CACT,MAAO,MAIX,GAAIA,IAAM,MAAQA,GAAK,KAAM,CACzB,MAAOhC,QAAOgC,GAGlBnC,EAAI,EAEJ,IAAImC,EAAI,EAAG,CACPnC,EAAI,GACJmC,IAAKA,EAGTpC,EAAI,GAEJ,IAAIoC,EAAI,MAAO,CAGX/C,EAAIiD,IAAIF,EAAID,IAAI,EAAG,GAAI,IAAM,EAC7BM,GAAKpD,EAAI,EAAI+C,EAAID,IAAI,GAAI9C,EAAG,GAAK+C,EAAID,IAAI,EAAG9C,EAAG,EAC/CoD,IAAK,gBACLpD,GAAI,GAAKA,CAIT,IAAIA,EAAI,EAAG,CACP0C,SAAS,EAAGU,EACZC,GAAIF,CAEJ,OAAOE,GAAK,EAAG,CACXX,SAAS,IAAK,EACdW,IAAK,EAGTX,SAASI,IAAI,GAAIO,EAAG,GAAI,EACxBA,GAAIrD,EAAI,CAER,OAAOqD,GAAK,GAAI,CACZR,OAAO,GAAK,GACZQ,IAAK,GAGTR,OAAO,GAAKQ,EACZX,UAAS,EAAG,EACZG,QAAO,EACPlC,GAAI5F,eACD,CACH2H,SAAS,EAAGU,EACZV,UAAS,IAAO1C,EAAI,EACpBW,GAAI5F,WAAa,yBAAyBF,MAAM,EAAG,EAAIsI,IAI/D,GAAIA,EAAI,EAAG,CACPG,EAAI3C,EAAE/E,MAEN,IAAI0H,GAAKH,EAAG,CACRxC,EAAIC,EAAI,wBAAwB/F,MAAM,EAAGsI,EAAIG,EAAI,GAAK3C,MACnD,CACHA,EAAIC,EAAID,EAAE9F,MAAM,EAAGyI,EAAIH,GAAK,IAAMxC,EAAE9F,MAAMyI,EAAIH,QAE/C,CACHxC,EAAIC,EAAID,EAGZ,MAAOA,QA2BnB,GAAI4C,cAAexC,OAAOpH,UAAUuD,KACpC,IACI,KAAKA,MAAM,WAAWtB,SAAW,GACjC,IAAIsB,MAAM,YAAYtB,SAAW,GACjC,QAAQsB,MAAM,QAAQ,KAAO,KAC7B,GAAGA,MAAM,MAAMtB,SAAW,GAC1B,IAAIsB,MAAM,QAAQtB,OAAS,EAC7B,EACG,WACG,GAAI4H,mBAAoB,OAAO9B,KAAK,IAAI,SAAY,EAEpDX,QAAOpH,UAAUuD,MAAQ,SAAUuG,UAAWC,OAC1C,GAAIlC,QAASzH,IACb,IAAI0J,gBAAmB,IAAKC,QAAU,EAClC,QAGJ,IAAIjJ,OAAOd,UAAUoB,SAASZ,KAAKsJ,aAAe,kBAAmB,CACjE,MAAOF,cAAahJ,MAAMR,KAAMK,WAGpC,GAAIuJ,WACAC,OAASH,UAAUI,WAAa,IAAM,KAC7BJ,UAAUK,UAAa,IAAM,KAC7BL,UAAUM,SAAa,IAAM,KAC7BN,UAAUO,OAAa,IAAM,IACtCC,cAAgB,EAEhBR,UAAY,GAAIvC,QAAOuC,UAAUS,OAAQN,MAAQ,KACjDO,WAAY1C,MAAO2C,UAAWC,UAClC7C,SAAU,EACV,KAAKgC,kBAAmB,CAEpBW,WAAa,GAAIjD,QAAO,IAAMuC,UAAUS,OAAS,WAAYN,OASjEF,MAAQA,YAAe,IAClB,IAAM,EACPA,QAAU,CACd,OAAOjC,MAAQgC,UAAU/B,KAAKF,QAAS,CAEnC4C,UAAY3C,MAAM6C,MAAQ7C,MAAM,GAAG7F,MACnC,IAAIwI,UAAYH,cAAe,CAC3BN,OAAOpH,KAAKiF,OAAO3G,MAAMoJ,cAAexC,MAAM6C,OAG9C,KAAKd,mBAAqB/B,MAAM7F,OAAS,EAAG,CACxC6F,MAAM,GAAG8C,QAAQJ,WAAY,WACzB,IAAK,GAAI/G,GAAI,EAAGA,EAAIhD,UAAUwB,OAAS,EAAGwB,IAAK,CAC3C,GAAIhD,UAAUgD,SAAY,GAAG,CACzBqE,MAAMrE,OAAU,OAKhC,GAAIqE,MAAM7F,OAAS,GAAK6F,MAAM6C,MAAQ9C,OAAO5F,OAAQ,CACjDjB,MAAMhB,UAAU4C,KAAKhC,MAAMoJ,OAAQlC,MAAM5G,MAAM,IAEnDwJ,WAAa5C,MAAM,GAAG7F,MACtBqI,eAAgBG,SAChB,IAAIT,OAAO/H,QAAU8H,MAAO,CACxB,OAGR,GAAID,UAAUW,YAAc3C,MAAM6C,MAAO,CACrCb,UAAUW,aAGlB,GAAIH,gBAAkBzC,OAAO5F,OAAQ,CACjC,GAAIyI,aAAeZ,UAAUe,KAAK,IAAK,CACnCb,OAAOpH,KAAK,SAEb,CACHoH,OAAOpH,KAAKiF,OAAO3G,MAAMoJ,gBAE7B,MAAON,QAAO/H,OAAS8H,MAAQC,OAAO9I,MAAM,EAAG6I,OAASC,gBAU7D,IAAI,IAAIzG,UAAW,GAAG,GAAGtB,OAAQ,CACpCmF,OAAOpH,UAAUuD,MAAQ,SAASuG,UAAWC,OACzC,GAAID,gBAAmB,IAAKC,QAAU,EAAG,QACzC,OAAOH,cAAahJ,MAAMR,KAAMK,YAUxC,GAAG,GAAGqK,QAAU,KAAKA,QAAQ,KAAO,IAAK,CACrC,GAAIC,eAAgB3D,OAAOpH,UAAU8K,MAOrC1D,QAAOpH,UAAU8K,OAAS,SAASrI,MAAOR,QACtC,MAAO8I,eAAcvK,KACjBJ,KACAqC,MAAQ,GAAMA,MAAQrC,KAAK6B,OAASQ,OAAS,EAAI,EAAIA,MAASA,MAC9DR,SAOZ,GAAI+I,IAAK,oDACL,qEACA,cACJ,KAAK5D,OAAOpH,UAAUiL,MAAQD,GAAGC,OAAQ,CAGrCD,GAAK,IAAMA,GAAK,GAChB,IAAIE,iBAAkB,GAAI3D,QAAO,IAAMyD,GAAKA,GAAK,KAC7CG,cAAgB,GAAI5D,QAAOyD,GAAKA,GAAK,KACzC5D,QAAOpH,UAAUiL,KAAO,QAASA,QAC7B,GAAI7K,WAAc,IAAKA,OAAS,KAAM,CAClC,KAAM,IAAIC,WAAU,iBAAiBD,KAAK,cAE9C,MAAOgH,QAAOhH,MACTwK,QAAQM,gBAAiB,IACzBN,QAAQO,cAAe,KAapC,QAAShH,WAAU6E,GACfA,GAAKA,CACL,IAAIA,IAAMA,EAAG,CACTA,EAAI,MACD,IAAIA,IAAM,GAAKA,IAAO,EAAE,GAAMA,MAAQ,EAAE,GAAI,CAC/CA,GAAKA,EAAI,IAAM,GAAK5E,KAAKuB,MAAMvB,KAAKI,IAAIwE,IAE5C,MAAOA,GAGX,QAASoC,aAAYC,OACjB,GAAIC,YAAcD,MAClB,OACIA,SAAU,MACVC,OAAS,aACTA,OAAS,WACTA,OAAS,UACTA,OAAS,SAIjB,QAAS9E,aAAY6E,OACjB,GAAIE,KAAKC,QAASpK,QAClB,IAAIgK,YAAYC,OAAQ,CACpB,MAAOA,OAEXG,QAAUH,MAAMG,OAChB,UAAWA,WAAY,WAAY,CAC/BD,IAAMC,QAAQhL,KAAK6K,MACnB,IAAID,YAAYG,KAAM,CAClB,MAAOA,MAGfnK,SAAWiK,MAAMjK,QACjB,UAAWA,YAAa,WAAY,CAChCmK,IAAMnK,SAASZ,KAAK6K,MACpB,IAAID,YAAYG,KAAM,CAClB,MAAOA,MAGf,KAAM,IAAIlL,WAKd,GAAIgD,UAAW,SAAUiD,GACrB,GAAIA,GAAK,KAAM,CACX,KAAM,IAAIjG,WAAU,iBAAiBiG,EAAE,cAE3C,MAAOxF,QAAOwF"}
\ No newline at end of file diff --git a/addons/web/static/lib/es5-shim/es5-shim.min.js b/addons/web/static/lib/es5-shim/es5-shim.min.js new file mode 100644 index 00000000000..5d265c55a9b --- /dev/null +++ b/addons/web/static/lib/es5-shim/es5-shim.min.js @@ -0,0 +1,4 @@ +(function(definition){if(typeof define=="function"){define(definition)}else if(typeof YUI=="function"){YUI.add("es5",definition)}else{definition()}})(function(){function Empty(){}if(!Function.prototype.bind){Function.prototype.bind=function bind(that){var target=this;if(typeof target!="function"){throw new TypeError("Function.prototype.bind called on incompatible "+target)}var args=_Array_slice_.call(arguments,1);var bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(_Array_slice_.call(arguments)));if(Object(result)===result){return result}return this}else{return target.apply(that,args.concat(_Array_slice_.call(arguments)))}};if(target.prototype){Empty.prototype=target.prototype;bound.prototype=new Empty;Empty.prototype=null}return bound}}var call=Function.prototype.call;var prototypeOfArray=Array.prototype;var prototypeOfObject=Object.prototype;var _Array_slice_=prototypeOfArray.slice;var _toString=call.bind(prototypeOfObject.toString);var owns=call.bind(prototypeOfObject.hasOwnProperty);var defineGetter;var defineSetter;var lookupGetter;var lookupSetter;var supportsAccessors;if(supportsAccessors=owns(prototypeOfObject,"__defineGetter__")){defineGetter=call.bind(prototypeOfObject.__defineGetter__);defineSetter=call.bind(prototypeOfObject.__defineSetter__);lookupGetter=call.bind(prototypeOfObject.__lookupGetter__);lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)}if([1,2].splice(0).length!=2){var array_splice=Array.prototype.splice;if(function(){function makeArray(l){var a=[];while(l--){a.unshift(l)}return a}var array=[],lengthBefore;array.splice.bind(array,0,0).apply(null,makeArray(20));array.splice.bind(array,0,0).apply(null,makeArray(26));lengthBefore=array.length;array.splice(5,0,"XXX");if(lengthBefore+1==array.length){return true}}()){Array.prototype.splice=function(start,deleteCount){if(!arguments.length){return[]}else{return array_splice.apply(this,[start===void 0?0:start,deleteCount===void 0?this.length-start:deleteCount].concat(_Array_slice_.call(arguments,2)))}}}else{Array.prototype.splice=function(start,deleteCount){var result,args=_Array_slice_.call(arguments,2),addElementsCount=args.length;if(!arguments.length){return[]}if(start===void 0){start=0}if(deleteCount===void 0){deleteCount=this.length-start}if(addElementsCount>0){if(deleteCount<=0){if(start==this.length){this.push.apply(this,args);return[]}if(start==0){this.unshift.apply(this,args);return[]}}result=_Array_slice_.call(this,start,start+deleteCount);args.push.apply(args,_Array_slice_.call(this,start+deleteCount,this.length));args.unshift.apply(args,_Array_slice_.call(this,0,start));args.unshift(0,this.length);array_splice.apply(this,args);return result}return array_splice.call(this,start,deleteCount)}}}if([].unshift(0)!=1){var array_unshift=Array.prototype.unshift;Array.prototype.unshift=function(){array_unshift.apply(this,arguments);return this.length}}if(!Array.isArray){Array.isArray=function isArray(obj){return _toString(obj)=="[object Array]"}}var boxedString=Object("a"),splitString=boxedString[0]!="a"||!(0 in boxedString);if(!Array.prototype.forEach){Array.prototype.forEach=function forEach(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(_toString(fun)!="[object Function]"){throw new TypeError}while(++i<length){if(i in self){fun.call(thisp,self[i],i,object)}}}}if(!Array.prototype.map){Array.prototype.map=function map(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}for(var i=0;i<length;i++){if(i in self)result[i]=fun.call(thisp,self[i],i,object)}return result}}if(!Array.prototype.filter){Array.prototype.filter=function filter(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0,result=[],value,thisp=arguments[1];if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}for(var i=0;i<length;i++){if(i in self){value=self[i];if(fun.call(thisp,value,i,object)){result.push(value)}}}return result}}if(!Array.prototype.every){Array.prototype.every=function every(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}for(var i=0;i<length;i++){if(i in self&&!fun.call(thisp,self[i],i,object)){return false}}return true}}if(!Array.prototype.some){Array.prototype.some=function some(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}for(var i=0;i<length;i++){if(i in self&&fun.call(thisp,self[i],i,object)){return true}}return false}}if(!Array.prototype.reduce){Array.prototype.reduce=function reduce(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0;if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}if(!length&&arguments.length==1){throw new TypeError("reduce of empty array with no initial value")}var i=0;var result;if(arguments.length>=2){result=arguments[1]}else{do{if(i in self){result=self[i++];break}if(++i>=length){throw new TypeError("reduce of empty array with no initial value")}}while(true)}for(;i<length;i++){if(i in self){result=fun.call(void 0,result,self[i],i,object)}}return result}}if(!Array.prototype.reduceRight){Array.prototype.reduceRight=function reduceRight(fun){var object=toObject(this),self=splitString&&_toString(this)=="[object String]"?this.split(""):object,length=self.length>>>0;if(_toString(fun)!="[object Function]"){throw new TypeError(fun+" is not a function")}if(!length&&arguments.length==1){throw new TypeError("reduceRight of empty array with no initial value")}var result,i=length-1;if(arguments.length>=2){result=arguments[1]}else{do{if(i in self){result=self[i--];break}if(--i<0){throw new TypeError("reduceRight of empty array with no initial value")}}while(true)}if(i<0){return result}do{if(i in this){result=fun.call(void 0,result,self[i],i,object)}}while(i--);return result}}if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1){Array.prototype.indexOf=function indexOf(sought){var self=splitString&&_toString(this)=="[object String]"?this.split(""):toObject(this),length=self.length>>>0;if(!length){return-1}var i=0;if(arguments.length>1){i=toInteger(arguments[1])}i=i>=0?i:Math.max(0,length+i);for(;i<length;i++){if(i in self&&self[i]===sought){return i}}return-1}}if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1){Array.prototype.lastIndexOf=function lastIndexOf(sought){var self=splitString&&_toString(this)=="[object String]"?this.split(""):toObject(this),length=self.length>>>0;if(!length){return-1}var i=length-1;if(arguments.length>1){i=Math.min(i,toInteger(arguments[1]))}i=i>=0?i:length-Math.abs(i);for(;i>=0;i--){if(i in self&&sought===self[i]){return i}}return-1}}if(!Object.keys){var hasDontEnumBug=true,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null}){hasDontEnumBug=false}Object.keys=function keys(object){if(typeof object!="object"&&typeof object!="function"||object===null){throw new TypeError("Object.keys called on a non-object")}var keys=[];for(var name in object){if(owns(object,name)){keys.push(name)}}if(hasDontEnumBug){for(var i=0,ii=dontEnumsLength;i<ii;i++){var dontEnum=dontEnums[i];if(owns(object,dontEnum)){keys.push(dontEnum)}}}return keys}}var negativeDate=-621987552e5,negativeYearString="-000001";if(!Date.prototype.toISOString||new Date(negativeDate).toISOString().indexOf(negativeYearString)===-1){Date.prototype.toISOString=function toISOString(){var result,length,value,year,month;if(!isFinite(this)){throw new RangeError("Date.prototype.toISOString called on non-finite value.")}year=this.getUTCFullYear();month=this.getUTCMonth();year+=Math.floor(month/12);month=(month%12+12)%12;result=[month+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()];year=(year<0?"-":year>9999?"+":"")+("00000"+Math.abs(year)).slice(0<=year&&year<=9999?-4:-6);length=result.length;while(length--){value=result[length];if(value<10){result[length]="0"+value}}return year+"-"+result.slice(0,2).join("-")+"T"+result.slice(2).join(":")+"."+("000"+this.getUTCMilliseconds()).slice(-3)+"Z"}}var dateToJSONIsSupported=false;try{dateToJSONIsSupported=Date.prototype.toJSON&&new Date(NaN).toJSON()===null&&new Date(negativeDate).toJSON().indexOf(negativeYearString)!==-1&&Date.prototype.toJSON.call({toISOString:function(){return true}})}catch(e){}if(!dateToJSONIsSupported){Date.prototype.toJSON=function toJSON(key){var o=Object(this),tv=toPrimitive(o),toISO;if(typeof tv==="number"&&!isFinite(tv)){return null}toISO=o.toISOString;if(typeof toISO!="function"){throw new TypeError("toISOString property is not callable")}return toISO.call(o)}}if(!Date.parse||"Date.parse is buggy"){Date=function(NativeDate){function Date(Y,M,D,h,m,s,ms){var length=arguments.length;if(this instanceof NativeDate){var date=length==1&&String(Y)===Y?new NativeDate(Date.parse(Y)):length>=7?new NativeDate(Y,M,D,h,m,s,ms):length>=6?new NativeDate(Y,M,D,h,m,s):length>=5?new NativeDate(Y,M,D,h,m):length>=4?new NativeDate(Y,M,D,h):length>=3?new NativeDate(Y,M,D):length>=2?new NativeDate(Y,M):length>=1?new NativeDate(Y):new NativeDate;date.constructor=Date;return date}return NativeDate.apply(this,arguments)}var isoDateExpression=new RegExp("^"+"(\\d{4}|[+-]\\d{6})"+"(?:-(\\d{2})"+"(?:-(\\d{2})"+"(?:"+"T(\\d{2})"+":(\\d{2})"+"(?:"+":(\\d{2})"+"(?:(\\.\\d{1,}))?"+")?"+"("+"Z|"+"(?:"+"([-+])"+"(\\d{2})"+":(\\d{2})"+")"+")?)?)?)?"+"$");var months=[0,31,59,90,120,151,181,212,243,273,304,334,365];function dayFromMonth(year,month){var t=month>1?1:0;return months[month]+Math.floor((year-1969+t)/4)-Math.floor((year-1901+t)/100)+Math.floor((year-1601+t)/400)+365*(year-1970)}for(var key in NativeDate){Date[key]=NativeDate[key]}Date.now=NativeDate.now;Date.UTC=NativeDate.UTC;Date.prototype=NativeDate.prototype;Date.prototype.constructor=Date;Date.parse=function parse(string){var match=isoDateExpression.exec(string);if(match){var year=Number(match[1]),month=Number(match[2]||1)-1,day=Number(match[3]||1)-1,hour=Number(match[4]||0),minute=Number(match[5]||0),second=Number(match[6]||0),millisecond=Math.floor(Number(match[7]||0)*1e3),offset=!match[4]||match[8]?0:Number(new NativeDate(1970,0)),signOffset=match[9]==="-"?1:-1,hourOffset=Number(match[10]||0),minuteOffset=Number(match[11]||0),result;if(hour<(minute>0||second>0||millisecond>0?24:25)&&minute<60&&second<60&&millisecond<1e3&&month>-1&&month<12&&hourOffset<24&&minuteOffset<60&&day>-1&&day<dayFromMonth(year,month+1)-dayFromMonth(year,month)){result=((dayFromMonth(year,month)+day)*24+hour+hourOffset*signOffset)*60;result=((result+minute+minuteOffset*signOffset)*60+second)*1e3+millisecond+offset;if(-864e13<=result&&result<=864e13){return result}}return NaN}return NativeDate.parse.apply(this,arguments)};return Date}(Date)}if(!Date.now){Date.now=function now(){return(new Date).getTime()}}if(!Number.prototype.toFixed||8e-5.toFixed(3)!=="0.000"||.9.toFixed(0)==="0"||1.255.toFixed(2)!=="1.25"||0xde0b6b3a7640080.toFixed(0)!=="1000000000000000128"){(function(){var base,size,data,i;base=1e7;size=6;data=[0,0,0,0,0,0];function multiply(n,c){var i=-1;while(++i<size){c+=n*data[i];data[i]=c%base;c=Math.floor(c/base)}}function divide(n){var i=size,c=0;while(--i>=0){c+=data[i];data[i]=Math.floor(c/n);c=c%n*base}}function toString(){var i=size;var s="";while(--i>=0){if(s!==""||i===0||data[i]!==0){var t=String(data[i]);if(s===""){s=t}else{s+="0000000".slice(0,7-t.length)+t}}}return s}function pow(x,n,acc){return n===0?acc:n%2===1?pow(x,n-1,acc*x):pow(x*x,n/2,acc)}function log(x){var n=0;while(x>=4096){n+=12;x/=4096}while(x>=2){n+=1;x/=2}return n}Number.prototype.toFixed=function(fractionDigits){var f,x,s,m,e,z,j,k;f=Number(fractionDigits);f=f!==f?0:Math.floor(f);if(f<0||f>20){throw new RangeError("Number.toFixed called with invalid number of decimals")}x=Number(this);if(x!==x){return"NaN"}if(x<=-1e21||x>=1e21){return String(x)}s="";if(x<0){s="-";x=-x}m="0";if(x>1e-21){e=log(x*pow(2,69,1))-69;z=e<0?x*pow(2,-e,1):x/pow(2,e,1);z*=4503599627370496;e=52-e;if(e>0){multiply(0,z);j=f;while(j>=7){multiply(1e7,0);j-=7}multiply(pow(10,j,1),0);j=e-1;while(j>=23){divide(1<<23);j-=23}divide(1<<j);multiply(1,1);divide(2);m=toString()}else{multiply(0,z);multiply(1<<-e,0);m=toString()+"0.00000000000000000000".slice(2,2+f)}}if(f>0){k=m.length;if(k<=f){m=s+"0.0000000000000000000".slice(0,f-k+2)+m}else{m=s+m.slice(0,k-f)+"."+m.slice(k-f)}}else{m=s+m}return m}})()}var string_split=String.prototype.split;if("ab".split(/(?:ab)*/).length!==2||".".split(/(.?)(.?)/).length!==4||"tesst".split(/(s)*/)[1]==="t"||"".split(/.?/).length===0||".".split(/()()/).length>1){(function(){var compliantExecNpcg=/()??/.exec("")[1]===void 0;String.prototype.split=function(separator,limit){var string=this;if(separator===void 0&&limit===0)return[];if(Object.prototype.toString.call(separator)!=="[object RegExp]"){return string_split.apply(this,arguments)}var output=[],flags=(separator.ignoreCase?"i":"")+(separator.multiline?"m":"")+(separator.extended?"x":"")+(separator.sticky?"y":""),lastLastIndex=0,separator=new RegExp(separator.source,flags+"g"),separator2,match,lastIndex,lastLength;string+="";if(!compliantExecNpcg){separator2=new RegExp("^"+separator.source+"$(?!\\s)",flags)}limit=limit===void 0?-1>>>0:limit>>>0;while(match=separator.exec(string)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(string.slice(lastLastIndex,match.index));if(!compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i<arguments.length-2;i++){if(arguments[i]===void 0){match[i]=void 0}}})}if(match.length>1&&match.index<string.length){Array.prototype.push.apply(output,match.slice(1))}lastLength=match[0].length;lastLastIndex=lastIndex;if(output.length>=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===string.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(string.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output}})()}else if("0".split(void 0,0).length){String.prototype.split=function(separator,limit){if(separator===void 0&&limit===0)return[];return string_split.apply(this,arguments)}}if("".substr&&"0b".substr(-1)!=="b"){var string_substr=String.prototype.substr;String.prototype.substr=function(start,length){return string_substr.call(this,start<0?(start=this.length+start)<0?0:start:start,length)}}var ws=" \n\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003"+"\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028"+"\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=new RegExp("^"+ws+ws+"*"),trimEndRegexp=new RegExp(ws+ws+"*$");String.prototype.trim=function trim(){if(this===void 0||this===null){throw new TypeError("can't convert "+this+" to object")}return String(this).replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}function toInteger(n){n=+n;if(n!==n){n=0}else if(n!==0&&n!==1/0&&n!==-(1/0)){n=(n>0||-1)*Math.floor(Math.abs(n))}return n}function isPrimitive(input){var type=typeof input;return input===null||type==="undefined"||type==="boolean"||type==="number"||type==="string"}function toPrimitive(input){var val,valueOf,toString;if(isPrimitive(input)){return input}valueOf=input.valueOf;if(typeof valueOf==="function"){val=valueOf.call(input);if(isPrimitive(val)){return val}}toString=input.toString;if(typeof toString==="function"){val=toString.call(input);if(isPrimitive(val)){return val}}throw new TypeError}var toObject=function(o){if(o==null){throw new TypeError("can't convert "+o+" to object")}return Object(o)}}); +/* +//@ sourceMappingURL=es5-shim.map +*/
\ No newline at end of file diff --git a/addons/web/static/lib/es5-shim/package.json b/addons/web/static/lib/es5-shim/package.json new file mode 100644 index 00000000000..82c863f4b22 --- /dev/null +++ b/addons/web/static/lib/es5-shim/package.json @@ -0,0 +1,34 @@ +{ + "name": "es5-shim", + "version": "2.1.0", + "description": "ES5 as implementable on previous engines", + "homepage": "http://github.com/kriskowal/es5-shim/", + "contributors": [ + "Kris Kowal <kris@cixar.com> (http://github.com/kriskowal/)", + "Sami Samhuri <sami.samhuri@gmail.com> (http://samhuri.net/)", + "Florian Schäfer <florian.schaefer@gmail.com> (http://github.com/fschaefer)", + "Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com)", + "Kit Cambridge <kitcambridge@gmail.com> (http://kitcambridge.github.com)" + ], + "bugs": { + "mail": "kris@cixar.com", + "url": "http://github.com/kriskowal/es5-shim/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/kriskowal/es5-shim/raw/master/LICENSE" + } + ], + "main": "es5-shim.js", + "repository": { + "type": "git", + "url": "http://github.com/kriskowal/es5-shim.git" + }, + "scripts": { + "minify": "uglifyjs es5-shim.js --source-map=es5-shim.map -b ascii_only=true,beautify=false > es5-shim.min.js; uglifyjs es5-sham.js --source-map=es5-sham.map -b ascii_only=true,beautify=false > es5-sham.min.js" + }, + "engines": { + "node": ">=0.2.0" + } +} diff --git a/addons/web/static/lib/fontawesome/css/font-awesome.css b/addons/web/static/lib/fontawesome/css/font-awesome.css new file mode 100644 index 00000000000..7ede1828a78 --- /dev/null +++ b/addons/web/static/lib/fontawesome/css/font-awesome.css @@ -0,0 +1,1479 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.2.1'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; +} +/* increased font size for icon-large */ +[class^="icon-"].icon-fixed-width, +[class*=" icon-"].icon-fixed-width { + display: inline-block; + width: 1.1428571428571428em; + text-align: right; + padding-right: 0.2857142857142857em; +} +[class^="icon-"].icon-fixed-width.icon-large, +[class*=" icon-"].icon-fixed-width.icon-large { + width: 1.4285714285714286em; +} +.icons-ul { + margin-left: 2.142857142857143em; + list-style-type: none; +} +.icons-ul > li { + position: relative; +} +.icons-ul .icon-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + text-align: center; + line-height: inherit; +} +[class^="icon-"].hide, +[class*=" icon-"].hide { + display: none; +} +.icon-muted { + color: #eeeeee; +} +.icon-light { + color: #ffffff; +} +.icon-dark { + color: #333333; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.icon-5x { + font-size: 5em; +} +.icon-5x.icon-border { + border-width: 5px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +/* keeps Bootstrap styles with and without icons the same */ +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +/* Fixes alignment in nav lists */ +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + line-height: inherit; +} +/* EXTRAS + * -------------------------- */ +/* Stacked and layered icon */ +.icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: -35%; +} +.icon-stack [class^="icon-"], +.icon-stack [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: 1em; + line-height: inherit; + *line-height: 2em; +} +.icon-stack .icon-stack-base { + font-size: 2em; + *line-height: 1em; +} +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +/* Prevent stack and spinners from being taken inline when inside a link */ +a .icon-stack, +a .icon-spin { + display: inline-block; + text-decoration: none; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/* ensure rotation occurs inside anchor tags */ +a .icon-rotate-90:before, +a .icon-rotate-180:before, +a .icon-rotate-270:before, +a .icon-flip-horizontal:before, +a .icon-flip-vertical:before { + display: inline-block; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope-alt:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-power-off:before, +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-gear:before, +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file-alt:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-rotate-right:before, +.icon-repeat:before { + content: "\f01e"; +} +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-mail-forward:before, +.icon-share-alt:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-gears:before, +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up-alt:before { + content: "\f087"; +} +.icon-thumbs-down-alt:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-unchecked:before, +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paperclip:before, +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-rotate-left:before, +.icon-undo:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-text-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-mail-reply:before, +.icon-reply:before { + content: "\f112"; +} +.icon-github-alt:before { + content: "\f113"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +.icon-expand-alt:before { + content: "\f116"; +} +.icon-collapse-alt:before { + content: "\f117"; +} +.icon-smile:before { + content: "\f118"; +} +.icon-frown:before { + content: "\f119"; +} +.icon-meh:before { + content: "\f11a"; +} +.icon-gamepad:before { + content: "\f11b"; +} +.icon-keyboard:before { + content: "\f11c"; +} +.icon-flag-alt:before { + content: "\f11d"; +} +.icon-flag-checkered:before { + content: "\f11e"; +} +.icon-terminal:before { + content: "\f120"; +} +.icon-code:before { + content: "\f121"; +} +.icon-reply-all:before { + content: "\f122"; +} +.icon-mail-reply-all:before { + content: "\f122"; +} +.icon-star-half-full:before, +.icon-star-half-empty:before { + content: "\f123"; +} +.icon-location-arrow:before { + content: "\f124"; +} +.icon-crop:before { + content: "\f125"; +} +.icon-code-fork:before { + content: "\f126"; +} +.icon-unlink:before { + content: "\f127"; +} +.icon-question:before { + content: "\f128"; +} +.icon-info:before { + content: "\f129"; +} +.icon-exclamation:before { + content: "\f12a"; +} +.icon-superscript:before { + content: "\f12b"; +} +.icon-subscript:before { + content: "\f12c"; +} +.icon-eraser:before { + content: "\f12d"; +} +.icon-puzzle-piece:before { + content: "\f12e"; +} +.icon-microphone:before { + content: "\f130"; +} +.icon-microphone-off:before { + content: "\f131"; +} +.icon-shield:before { + content: "\f132"; +} +.icon-calendar-empty:before { + content: "\f133"; +} +.icon-fire-extinguisher:before { + content: "\f134"; +} +.icon-rocket:before { + content: "\f135"; +} +.icon-maxcdn:before { + content: "\f136"; +} +.icon-chevron-sign-left:before { + content: "\f137"; +} +.icon-chevron-sign-right:before { + content: "\f138"; +} +.icon-chevron-sign-up:before { + content: "\f139"; +} +.icon-chevron-sign-down:before { + content: "\f13a"; +} +.icon-html5:before { + content: "\f13b"; +} +.icon-css3:before { + content: "\f13c"; +} +.icon-anchor:before { + content: "\f13d"; +} +.icon-unlock-alt:before { + content: "\f13e"; +} +.icon-bullseye:before { + content: "\f140"; +} +.icon-ellipsis-horizontal:before { + content: "\f141"; +} +.icon-ellipsis-vertical:before { + content: "\f142"; +} +.icon-rss-sign:before { + content: "\f143"; +} +.icon-play-sign:before { + content: "\f144"; +} +.icon-ticket:before { + content: "\f145"; +} +.icon-minus-sign-alt:before { + content: "\f146"; +} +.icon-check-minus:before { + content: "\f147"; +} +.icon-level-up:before { + content: "\f148"; +} +.icon-level-down:before { + content: "\f149"; +} +.icon-check-sign:before { + content: "\f14a"; +} +.icon-edit-sign:before { + content: "\f14b"; +} +.icon-external-link-sign:before { + content: "\f14c"; +} +.icon-share-sign:before { + content: "\f14d"; +} +.icon-compass:before { + content: "\f14e"; +} +.icon-collapse:before { + content: "\f150"; +} +.icon-collapse-top:before { + content: "\f151"; +} +.icon-expand:before { + content: "\f152"; +} +.icon-euro:before, +.icon-eur:before { + content: "\f153"; +} +.icon-gbp:before { + content: "\f154"; +} +.icon-dollar:before, +.icon-usd:before { + content: "\f155"; +} +.icon-rupee:before, +.icon-inr:before { + content: "\f156"; +} +.icon-yen:before, +.icon-jpy:before { + content: "\f157"; +} +.icon-renminbi:before, +.icon-cny:before { + content: "\f158"; +} +.icon-won:before, +.icon-krw:before { + content: "\f159"; +} +.icon-bitcoin:before, +.icon-btc:before { + content: "\f15a"; +} +.icon-file:before { + content: "\f15b"; +} +.icon-file-text:before { + content: "\f15c"; +} +.icon-sort-by-alphabet:before { + content: "\f15d"; +} +.icon-sort-by-alphabet-alt:before { + content: "\f15e"; +} +.icon-sort-by-attributes:before { + content: "\f160"; +} +.icon-sort-by-attributes-alt:before { + content: "\f161"; +} +.icon-sort-by-order:before { + content: "\f162"; +} +.icon-sort-by-order-alt:before { + content: "\f163"; +} +.icon-thumbs-up:before { + content: "\f164"; +} +.icon-thumbs-down:before { + content: "\f165"; +} +.icon-youtube-sign:before { + content: "\f166"; +} +.icon-youtube:before { + content: "\f167"; +} +.icon-xing:before { + content: "\f168"; +} +.icon-xing-sign:before { + content: "\f169"; +} +.icon-youtube-play:before { + content: "\f16a"; +} +.icon-dropbox:before { + content: "\f16b"; +} +.icon-stackexchange:before { + content: "\f16c"; +} +.icon-instagram:before { + content: "\f16d"; +} +.icon-flickr:before { + content: "\f16e"; +} +.icon-adn:before { + content: "\f170"; +} +.icon-bitbucket:before { + content: "\f171"; +} +.icon-bitbucket-sign:before { + content: "\f172"; +} +.icon-tumblr:before { + content: "\f173"; +} +.icon-tumblr-sign:before { + content: "\f174"; +} +.icon-long-arrow-down:before { + content: "\f175"; +} +.icon-long-arrow-up:before { + content: "\f176"; +} +.icon-long-arrow-left:before { + content: "\f177"; +} +.icon-long-arrow-right:before { + content: "\f178"; +} +.icon-apple:before { + content: "\f179"; +} +.icon-windows:before { + content: "\f17a"; +} +.icon-android:before { + content: "\f17b"; +} +.icon-linux:before { + content: "\f17c"; +} +.icon-dribbble:before { + content: "\f17d"; +} +.icon-skype:before { + content: "\f17e"; +} +.icon-foursquare:before { + content: "\f180"; +} +.icon-trello:before { + content: "\f181"; +} +.icon-female:before { + content: "\f182"; +} +.icon-male:before { + content: "\f183"; +} +.icon-gittip:before { + content: "\f184"; +} +.icon-sun:before { + content: "\f185"; +} +.icon-moon:before { + content: "\f186"; +} +.icon-archive:before { + content: "\f187"; +} +.icon-bug:before { + content: "\f188"; +} +.icon-vk:before { + content: "\f189"; +} +.icon-weibo:before { + content: "\f18a"; +} +.icon-renren:before { + content: "\f18b"; +} diff --git a/addons/web/static/lib/fontawesome/font/FontAwesome.otf b/addons/web/static/lib/fontawesome/font/FontAwesome.otf Binary files differnew file mode 100644 index 00000000000..70125459f7d --- /dev/null +++ b/addons/web/static/lib/fontawesome/font/FontAwesome.otf diff --git a/addons/web/static/lib/fontawesome/font/fontawesome-webfont.eot b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.eot Binary files differnew file mode 100755 index 00000000000..0662cb96bfb --- /dev/null +++ b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.eot diff --git a/addons/web/static/lib/fontawesome/font/fontawesome-webfont.svg b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.svg new file mode 100755 index 00000000000..2edb4ec34cb --- /dev/null +++ b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.svg @@ -0,0 +1,399 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="fontawesomeregular" horiz-adv-x="1536" > +<font-face units-per-em="1792" ascent="1536" descent="-256" /> +<missing-glyph horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="	" horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="¨" horiz-adv-x="1792" /> +<glyph unicode="©" horiz-adv-x="1792" /> +<glyph unicode="®" horiz-adv-x="1792" /> +<glyph unicode="´" horiz-adv-x="1792" /> +<glyph unicode="Æ" horiz-adv-x="1792" /> +<glyph unicode=" " horiz-adv-x="768" /> +<glyph unicode=" " /> +<glyph unicode=" " horiz-adv-x="768" /> +<glyph unicode=" " /> +<glyph unicode=" " horiz-adv-x="512" /> +<glyph unicode=" " horiz-adv-x="384" /> +<glyph unicode=" " horiz-adv-x="256" /> +<glyph unicode=" " horiz-adv-x="256" /> +<glyph unicode=" " horiz-adv-x="192" /> +<glyph unicode=" " horiz-adv-x="307" /> +<glyph unicode=" " horiz-adv-x="85" /> +<glyph unicode=" " horiz-adv-x="307" /> +<glyph unicode=" " horiz-adv-x="384" /> +<glyph unicode="™" horiz-adv-x="1792" /> +<glyph unicode="∞" horiz-adv-x="1792" /> +<glyph unicode="≠" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> +<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> +<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> +<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280zM768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z " /> +<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> +<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> +<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> +<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> +<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> +<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> +<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> +<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q73 -1 153.5 -2t119 -1.5t52.5 -0.5l29 2q-32 95 -92 241q-53 132 -92 211zM21 -128h-21l2 79q22 7 80 18q89 16 110 31q20 16 48 68l237 616l280 724h75h53l11 -21l205 -480q103 -242 124 -297q39 -102 96 -235q26 -58 65 -164q24 -67 65 -149 q22 -49 35 -57q22 -19 69 -23q47 -6 103 -27q6 -39 6 -57q0 -14 -1 -26q-80 0 -192 8q-93 8 -189 8q-79 0 -135 -2l-200 -11l-58 -2q0 45 4 78l131 28q56 13 68 23q12 12 12 27t-6 32l-47 114l-92 228l-450 2q-29 -65 -104 -274q-23 -64 -23 -84q0 -31 17 -43 q26 -21 103 -32q3 0 13.5 -2t30 -5t40.5 -6q1 -28 1 -58q0 -17 -2 -27q-66 0 -349 20l-48 -8q-81 -14 -167 -14z" /> +<glyph unicode="" horiz-adv-x="1408" d="M555 15q76 -32 140 -32q131 0 216 41t122 113q38 70 38 181q0 114 -41 180q-58 94 -141 126q-80 32 -247 32q-74 0 -101 -10v-144l-1 -173l3 -270q0 -15 12 -44zM541 761q43 -7 109 -7q175 0 264 65t89 224q0 112 -85 187q-84 75 -255 75q-52 0 -130 -13q0 -44 2 -77 q7 -122 6 -279l-1 -98q0 -43 1 -77zM0 -128l2 94q45 9 68 12q77 12 123 31q17 27 21 51q9 66 9 194l-2 497q-5 256 -9 404q-1 87 -11 109q-1 4 -12 12q-18 12 -69 15q-30 2 -114 13l-4 83l260 6l380 13l45 1q5 0 14 0.5t14 0.5q1 0 21.5 -0.5t40.5 -0.5h74q88 0 191 -27 q43 -13 96 -39q57 -29 102 -76q44 -47 65 -104t21 -122q0 -70 -32 -128t-95 -105q-26 -20 -150 -77q177 -41 267 -146q92 -106 92 -236q0 -76 -29 -161q-21 -62 -71 -117q-66 -72 -140 -108q-73 -36 -203 -60q-82 -15 -198 -11l-197 4q-84 2 -298 -11q-33 -3 -272 -11z" /> +<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q4 1 77 20q76 19 116 39q29 37 41 101l27 139l56 268l12 64q8 44 17 84.5t16 67t12.5 46.5t9 30.5t3.5 11.5l29 157l16 63l22 135l8 50v38q-41 22 -144 28q-28 2 -38 4l19 103l317 -14q39 -2 73 -2q66 0 214 9q33 2 68 4.5t36 2.5q-2 -19 -6 -38 q-7 -29 -13 -51q-55 -19 -109 -31q-64 -16 -101 -31q-12 -31 -24 -88q-9 -44 -13 -82q-44 -199 -66 -306l-61 -311l-38 -158l-43 -235l-12 -45q-2 -7 1 -27q64 -15 119 -21q36 -5 66 -10q-1 -29 -7 -58q-7 -31 -9 -41q-18 0 -23 -1q-24 -2 -42 -2q-9 0 -28 3q-19 4 -145 17 l-198 2q-41 1 -174 -11q-74 -7 -98 -9z" /> +<glyph unicode="" horiz-adv-x="1792" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l215 -1h293l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -42.5 2t-103.5 -1t-111 -1 q-34 0 -67 -5q-10 -97 -8 -136l1 -152v-332l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-88 0 -233 -14q-48 -4 -70 -4q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q8 192 6 433l-5 428q-1 62 -0.5 118.5t0.5 102.5t-2 57t-6 15q-6 5 -14 6q-38 6 -148 6q-43 0 -100 -13.5t-73 -24.5q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1744 128q33 0 42 -18.5t-11 -44.5 l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80z" /> +<glyph unicode="" d="M81 1407l54 -27q20 -5 211 -5h130l19 3l115 1l446 -1h318l34 -2q14 -1 28 7t21 16l7 8l42 1q15 0 28 -1v-104.5t1 -131.5l1 -100l-1 -58q0 -32 -4 -51q-39 -15 -68 -18q-25 43 -54 128q-8 24 -15.5 62.5t-11.5 65.5t-6 29q-13 15 -27 19q-7 2 -58.5 2t-138.5 -1t-128 -1 q-94 0 -127 -5q-10 -97 -8 -136l1 -152v52l3 -359l-1 -147q-1 -46 11 -85q49 -25 89 -32q2 0 18 -5t44 -13t43 -12q30 -8 50 -18q5 -45 5 -50q0 -10 -3 -29q-14 -1 -34 -1q-110 0 -187 10q-72 8 -238 8q-82 0 -233 -13q-45 -5 -70 -5q-2 22 -2 26l-1 26v9q21 33 79 49 q139 38 159 50q9 21 12 56q6 137 6 433l-5 44q0 265 -2 278q-2 11 -6 15q-6 5 -14 6q-38 6 -148 6q-50 0 -168.5 -14t-132.5 -24q-13 -9 -22 -33t-22 -75t-24 -84q-6 -19 -19.5 -32t-20.5 -13q-44 27 -56 44v297v86zM1505 113q26 -20 26 -49t-26 -49l-162 -126 q-26 -20 -44.5 -11t-18.5 42v80h-1024v-80q0 -33 -18.5 -42t-44.5 11l-162 126q-26 20 -26 49t26 49l162 126q26 20 44.5 11t18.5 -42v-80h1024v80q0 33 18.5 42t44.5 -11z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> +<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> +<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> +<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> +<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> +<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> +<glyph unicode="" horiz-adv-x="1152" d="M742 -37l-652 651q-37 37 -37 90.5t37 90.5l652 651q37 37 90.5 37t90.5 -37l75 -75q37 -37 37 -90.5t-37 -90.5l-486 -486l486 -485q37 -38 37 -91t-37 -90l-75 -75q-37 -37 -90.5 -37t-90.5 37z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1099 704q0 -52 -37 -91l-652 -651q-37 -37 -90 -37t-90 37l-76 75q-37 39 -37 91q0 53 37 90l486 486l-486 485q-37 39 -37 91q0 53 37 90l76 75q36 38 90 38t90 -38l652 -651q37 -37 37 -90z" /> +<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> +<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> +<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> +<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> +<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> +<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> +<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 320q0 -53 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-486 485l-486 -485q-36 -38 -90 -38t-90 38l-75 75q-38 36 -38 90q0 53 38 91l651 651q37 37 90 37q52 0 91 -37l650 -651q38 -38 38 -91z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1611 832q0 -53 -37 -90l-651 -651q-38 -38 -91 -38q-54 0 -90 38l-651 651q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l486 -486l486 486q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> +<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1920" d="M512 512v-384h-256v384h256zM896 1024v-896h-256v896h256zM1280 768v-640h-256v640h256zM1664 1152v-1024h-256v1024h256zM1792 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5z M1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1307 618l23 219h-198v109q0 49 15.5 68.5t71.5 19.5h110v219h-175q-152 0 -218 -72t-66 -213v-131h-131v-219h131v-635h262v635h175zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> +<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> +<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> +<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> +<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> +<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> +<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> +<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> +<glyph unicode="" horiz-adv-x="768" d="M511 980h257l-30 -284h-227v-824h-341v824h-170v284h170v171q0 182 86 275.5t283 93.5h227v-284h-142q-39 0 -62.5 -6.5t-34 -23.5t-13.5 -34.5t-3 -49.5v-142z" /> +<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> +<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> +<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM1664 128q0 -52 -38 -90t-90 -38 h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" /> +<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> +<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> +<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> +<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> +<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> +<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> +<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> +<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> +<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> +<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> +<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> +<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> +<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="" d="M678 -57q0 -38 -10 -71h-380q-95 0 -171.5 56.5t-103.5 147.5q24 45 69 77.5t100 49.5t107 24t107 7q32 0 49 -2q6 -4 30.5 -21t33 -23t31 -23t32 -25.5t27.5 -25.5t26.5 -29.5t21 -30.5t17.5 -34.5t9.5 -36t4.5 -40.5zM385 294q-234 -7 -385 -85v433q103 -118 273 -118 q32 0 70 5q-21 -61 -21 -86q0 -67 63 -149zM558 805q0 -100 -43.5 -160.5t-140.5 -60.5q-51 0 -97 26t-78 67.5t-56 93.5t-35.5 104t-11.5 99q0 96 51.5 165t144.5 69q66 0 119 -41t84 -104t47 -130t16 -128zM1536 896v-736q0 -119 -84.5 -203.5t-203.5 -84.5h-468 q39 73 39 157q0 66 -22 122.5t-55.5 93t-72 71t-72 59.5t-55.5 54.5t-22 59.5q0 36 23 68t56 61.5t65.5 64.5t55.5 93t23 131t-26.5 145.5t-75.5 118.5q-6 6 -14 11t-12.5 7.5t-10 9.5t-10.5 17h135l135 64h-437q-138 0 -244.5 -38.5t-182.5 -133.5q0 126 81 213t207 87h960 q119 0 203.5 -84.5t84.5 -203.5v-96h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" /> +<glyph unicode="" horiz-adv-x="1664" d="M876 71q0 21 -4.5 40.5t-9.5 36t-17.5 34.5t-21 30.5t-26.5 29.5t-27.5 25.5t-32 25.5t-31 23t-33 23t-30.5 21q-17 2 -50 2q-54 0 -106 -7t-108 -25t-98 -46t-69 -75t-27 -107q0 -68 35.5 -121.5t93 -84t120.5 -45.5t127 -15q59 0 112.5 12.5t100.5 39t74.5 73.5 t27.5 110zM756 933q0 60 -16.5 127.5t-47 130.5t-84 104t-119.5 41q-93 0 -144 -69t-51 -165q0 -47 11.5 -99t35.5 -104t56 -93.5t78 -67.5t97 -26q97 0 140.5 60.5t43.5 160.5zM625 1408h437l-135 -79h-135q71 -45 110 -126t39 -169q0 -74 -23 -131.5t-56 -92.5t-66 -64.5 t-56 -61t-23 -67.5q0 -26 16.5 -51t43 -48t58.5 -48t64 -55.5t58.5 -66t43 -85t16.5 -106.5q0 -160 -140 -282q-152 -131 -420 -131q-59 0 -119.5 10t-122 33.5t-108.5 58t-77 89t-30 121.5q0 61 37 135q32 64 96 110.5t145 71t155 36t150 13.5q-64 83 -64 149q0 12 2 23.5 t5 19.5t8 21.5t7 21.5q-40 -5 -70 -5q-149 0 -255.5 98t-106.5 246q0 140 95 250.5t234 141.5q94 20 187 20zM1664 1152v-128h-256v-256h-128v256h-256v128h256v256h128v-256h256z" /> +<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> +<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> +<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> +<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> +<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> +<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> +<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> +<glyph unicode="" horiz-adv-x="1664" d="M848 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1664 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q190 161 287 397.5t97 498.5 q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1024 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1024 608v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM128 0h1024v768h-416q-40 0 -68 28t-28 68v416h-512v-1280z M768 896h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1280 864v-896q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h640q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> +<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> +<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> +<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" /> +<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> +<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> +<glyph unicode="" horiz-adv-x="1152" d="M896 608v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h224q14 0 23 -9t9 -23zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28 t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68zM1152 928v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704q93 0 158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" horiz-adv-x="1152" d="M928 1152q93 0 158.5 -65.5t65.5 -158.5v-704q0 -92 -65.5 -158t-158.5 -66h-704q-93 0 -158.5 66t-65.5 158v704q0 93 65.5 158.5t158.5 65.5h704zM1024 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 -28t-28 -68v-704q0 -40 28 -68t68 -28h704q40 0 68 28t28 68z M864 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576z" /> +<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> +<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> +<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> +<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> +<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> +<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> +<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> +<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1708 881l-188 -881h-304l181 849q4 21 1 43q-4 20 -16 35q-10 14 -28 24q-18 9 -40 9h-197l-205 -960h-303l204 960h-304l-205 -960h-304l272 1280h1139q157 0 245 -118q86 -116 52 -281z" /> +<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> +<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> +<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> +<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> +<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> +<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> +<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> +<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1664 352v-32q0 -132 -94 -226t-226 -94h-128q-132 0 -226 94t-94 226v480h-224q-2 -102 -14.5 -190.5t-30.5 -156t-48.5 -126.5t-57 -99.5t-67.5 -77.5t-69.5 -58.5t-74 -44t-69 -32t-65.5 -25.5q-4 -2 -32 -13q-8 -2 -12 -2q-22 0 -30 20l-71 178q-5 13 0 25t17 17 q7 3 20 7.5t18 6.5q31 12 46.5 18.5t44.5 20t45.5 26t42 32.5t40.5 42.5t34.5 53.5t30.5 68.5t22.5 83.5t17 103t6.5 123h-256q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h1216q14 0 23 -9t9 -23v-160q0 -14 -9 -23t-23 -9h-224v-512q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v64q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1280 1376v-160q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h960q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1024 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1024 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1280 768v-800q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28 t-28 68v1344q0 40 28 68t68 28h544v-544q0 -40 28 -68t68 -28h544zM1277 896h-509v509q82 -15 132 -65l312 -312q50 -50 65 -132z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> +<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> +<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> +<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> +<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> +<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> +<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> +<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> +<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> +<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> +<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> +<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> +<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> +<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> +<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M390 1408h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170v217q91 30 155 84q64 55 103 132q39 78 54 196z " /> +<glyph unicode="" d="M1123 127v181q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> +<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> +<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> +<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> +<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> +<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> +<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1483 512l-587 -587q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128t53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41 l619 619l2 -3q53 -53 53 -128t-53 -128zM1406 1138l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15v0q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36t14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15z" /> +<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> +<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> +<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> +<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> +<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> +<glyph unicode="" horiz-adv-x="1920" d="M805 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM453 1176v-344q0 -179 -89.5 -326t-234.5 -217q-129 152 -129 351q0 200 129.5 352t323.5 184zM958 991q-128 -152 -128 -351q0 -201 128 -351q-145 70 -234.5 218t-89.5 328 v341q196 -33 324 -185zM1638 163q-122 -67 -261 -67q-141 0 -261 67q98 61 167 149t94 191q25 -103 94 -191t167 -149zM1286 1176v-344q0 -179 -91 -326t-237 -217v0q133 154 133 351q0 195 -133 351q129 151 328 185zM1920 640q0 -201 -129 -351q-145 70 -234.5 218 t-89.5 328v341q194 -32 323.5 -184t129.5 -352z" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +<glyph unicode="" horiz-adv-x="1792" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/addons/web/static/lib/fontawesome/font/fontawesome-webfont.ttf b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.ttf Binary files differnew file mode 100755 index 00000000000..d3659246915 --- /dev/null +++ b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.ttf diff --git a/addons/web/static/lib/fontawesome/font/fontawesome-webfont.woff b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.woff Binary files differnew file mode 100755 index 00000000000..b9bd17e158d --- /dev/null +++ b/addons/web/static/lib/fontawesome/font/fontawesome-webfont.woff diff --git a/addons/web/static/lib/jquery.hotkeys/README.md b/addons/web/static/lib/jquery.hotkeys/README.md new file mode 100644 index 00000000000..22873d6a723 --- /dev/null +++ b/addons/web/static/lib/jquery.hotkeys/README.md @@ -0,0 +1,45 @@ +#About +**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination. + +This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys) + +The syntax is as follows: + + $(expression).bind(types, keys, handler); + $(expression).unbind(types, handler); + + $(document).bind('keydown', 'ctrl+a', fn); + + // e.g. replace '$' sign with 'EUR' + $('input.foo').bind('keyup', '$', function(){ + this.value = this.value.replace('$', 'EUR'); + }); + +## Types +Supported types are `'keydown'`, `'keyup'` and `'keypress'` + +## Notes + +If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift + +Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing. + +## jQuery Compatibility + +Works with jQuery 1.4.2 and newer. + +It known to be working with all the major browsers on all available platforms (Win/Mac/Linux) + + * IE 6/7/8 + * FF 1.5/2/3 + * Opera-9 + * Safari-3 + * Chrome-0.2 + +### Addendum + +Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler. + +Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all. + +*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.* diff --git a/addons/web/static/lib/jquery.hotkeys/jquery.hotkeys.js b/addons/web/static/lib/jquery.hotkeys/jquery.hotkeys.js new file mode 100644 index 00000000000..fbd71c71ec7 --- /dev/null +++ b/addons/web/static/lib/jquery.hotkeys/jquery.hotkeys.js @@ -0,0 +1,99 @@ +/* + * jQuery Hotkeys Plugin + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Based upon the plugin by Tzury Bar Yochay: + * http://github.com/tzuryby/hotkeys + * + * Original idea by: + * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ +*/ + +(function(jQuery){ + + jQuery.hotkeys = { + version: "0.8", + + specialKeys: { + 8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause", + 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", + 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del", + 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", + 104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/", + 112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8", + 120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 191: "/", 224: "meta" + }, + + shiftNums: { + "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&", + "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<", + ".": ">", "/": "?", "\\": "|" + } + }; + + function keyHandler( handleObj ) { + // Only care when a possible input has been specified + if ( typeof handleObj.data !== "string" ) { + return; + } + + var origHandler = handleObj.handler, + keys = handleObj.data.toLowerCase().split(" "); + + handleObj.handler = function( event ) { + // Don't fire in text-accepting inputs that we didn't directly bind to + if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) || + event.target.type === "text") ) { + return; + } + + // Keypress represents characters, not special keys + var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ], + character = String.fromCharCode( event.which ).toLowerCase(), + key, modif = "", possible = {}; + + // check combinations (alt|ctrl|shift+anything) + if ( event.altKey && special !== "alt" ) { + modif += "alt+"; + } + + if ( event.ctrlKey && special !== "ctrl" ) { + modif += "ctrl+"; + } + + // TODO: Need to make sure this works consistently across platforms + if ( event.metaKey && !event.ctrlKey && special !== "meta" ) { + modif += "meta+"; + } + + if ( event.shiftKey && special !== "shift" ) { + modif += "shift+"; + } + + if ( special ) { + possible[ modif + special ] = true; + + } else { + possible[ modif + character ] = true; + possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true; + + // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" + if ( modif === "shift+" ) { + possible[ jQuery.hotkeys.shiftNums[ character ] ] = true; + } + } + + for ( var i = 0, l = keys.length; i < l; i++ ) { + if ( possible[ keys[i] ] ) { + return origHandler.apply( this, arguments ); + } + } + }; + } + + jQuery.each([ "keydown", "keyup", "keypress" ], function() { + jQuery.event.special[ this ] = { add: keyHandler }; + }); + +})( jQuery );
\ No newline at end of file diff --git a/addons/web/static/lib/qweb/qweb2.js b/addons/web/static/lib/qweb/qweb2.js index 52e975322e5..4512b749682 100644 --- a/addons/web/static/lib/qweb/qweb2.js +++ b/addons/web/static/lib/qweb/qweb2.js @@ -226,10 +226,27 @@ QWeb2.Engine = (function() { } QWeb2.tools.extend(Engine.prototype, { - add_template : function(template) { + /** + * Add a template to the engine + * + * @param {String|Document} template Template as string or url or DOM Document + * @param {Function} [callback] Called when the template is loaded, force async request + */ + add_template : function(template, callback) { + var self = this; this.templates_resources.push(template); if (template.constructor === String) { - template = this.load_xml(template); + return this.load_xml(template, function (err, xDoc) { + if (err) { + if (callback) { + return callback(err); + } else { + throw err; + } + } + self.add_template(xDoc, callback); + }); + template = this.load_xml(template, callback); } var ec = (template.documentElement && template.documentElement.childNodes) || template.childNodes || []; for (var i = 0; i < ec.length; i++) { @@ -262,35 +279,56 @@ QWeb2.Engine = (function() { } } } + if (callback) { + callback(null, template); + } return true; }, - load_xml : function(s) { + load_xml : function(s, callback) { + var self = this; + var async = !!callback; s = this.tools.trim(s); if (s.charAt(0) === '<') { - return this.load_xml_string(s); + var tpl = this.load_xml_string(s); + if (callback) { + callback(null, tpl); + } + return tpl; } else { var req = this.get_xhr(); - if (req) { - // TODO: third parameter is async : https://developer.mozilla.org/en/XMLHttpRequest#open() - // do an on_ready in QWeb2{} that could be passed to add_template - if (this.debug) { - s += '?debug=' + (new Date()).getTime(); // TODO fme: do it properly in case there's already url parameters - } - req.open('GET', s, false); - req.send(null); - var xDoc = req.responseXML; - if (xDoc) { - if (!xDoc.documentElement) { - throw new Error("QWeb2: This xml document has no root document : " + xDoc.responseText); - } - if (xDoc.documentElement.nodeName == "parsererror") { - return this.tools.exception(xDoc.documentElement.childNodes[0].nodeValue); + if (this.debug) { + s += '?debug=' + (new Date()).getTime(); // TODO fme: do it properly in case there's already url parameters + } + req.open('GET', s, async); + if (async) { + req.onreadystatechange = function() { + if (req.readyState == 4) { + if (req.status == 200) { + callback(null, self._parse_from_request(req)); + } else { + callback(new Error("Can't load template, http status " + req.status)); + } } - return xDoc; - } else { - return this.load_xml_string(req.responseText); - } + }; + } + req.send(null); + if (!async) { + return this._parse_from_request(req); + } + } + }, + _parse_from_request: function(req) { + var xDoc = req.responseXML; + if (xDoc) { + if (!xDoc.documentElement) { + throw new Error("QWeb2: This xml document has no root document : " + xDoc.responseText); } + if (xDoc.documentElement.nodeName == "parsererror") { + throw new Error("QWeb2: Could not parse document :" + xDoc.documentElement.childNodes[0].nodeValue); + } + return xDoc; + } else { + return this.load_xml_string(req.responseText); } }, load_xml_string : function(s) { @@ -298,17 +336,15 @@ QWeb2.Engine = (function() { var dp = new DOMParser(); var r = dp.parseFromString(s, "text/xml"); if (r.body && r.body.firstChild && r.body.firstChild.nodeName == 'parsererror') { - return this.tools.exception(r.body.innerText); + throw new Error("QWeb2: Could not parse document :" + r.body.innerText); } return r; } var xDoc; try { - // new ActiveXObject("Msxml2.DOMDocument.4.0"); xDoc = new ActiveXObject("MSXML2.DOMDocument"); } catch (e) { - return this.tools.exception( - "Could not find a DOM Parser: " + e.message); + throw new Error("Could not find a DOM Parser: " + e.message); } xDoc.async = false; xDoc.preserveWhiteSpace = true; @@ -325,7 +361,7 @@ QWeb2.Engine = (function() { try { return new ActiveXObject('MSXML2.XMLHTTP.3.0'); } catch (e) { - return null; + throw new Error("Could not get XHR"); } }, compile : function(node) { diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 97bbb2b207c..87e129bb211 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -700,10 +700,8 @@ .openerp .oe_dropdown_menu { display: none; position: absolute; - top: 26px; z-index: 3; margin: 0; - padding: 0; border: 1px solid #afafb6; background: white; padding: 4px 0; @@ -1116,7 +1114,7 @@ border-color: #999999; border-color: rgba(0, 0, 0, 0.2); border-style: solid; - border-width: 0 1px 1px; + border-width: 0 2px 1px; -moz-border-radius: 0 0 6px 6px; -webkit-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; @@ -1455,7 +1453,7 @@ display: table-row; height: inherit; } -.openerp .oe_view_manager .oe_view_manager_view_kanban { +.openerp .oe_view_manager .oe_view_manager_view_kanban:not(:empty) { height: inherit; } .openerp .oe_view_manager table.oe_view_manager_header { @@ -2736,31 +2734,20 @@ -o-transform: rotate(45deg); transform: rotate(45deg); } -.openerp ul.oe_form_status .oe_folded .label, .openerp ul.oe_form_status_clickable .oe_folded .label { - padding-bottom: 8px; -} -.openerp ul.oe_form_status .oe_folded ul, .openerp ul.oe_form_status_clickable .oe_folded ul { - position: absolute; - border-top: 1px solid #cacaca; - float: none; - top: 30px; - right: 0; +.openerp ul.oe_form_status ul.oe_dropdown_menu, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu { display: none; + padding: 0; + min-width: 0; } -.openerp ul.oe_form_status .oe_folded ul li, .openerp ul.oe_form_status_clickable .oe_folded ul li { - margin: 0; - border-left: 1px solid #cacaca; +.openerp ul.oe_form_status ul.oe_dropdown_menu.oe_opened, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu.oe_opened { display: block; } -.openerp ul.oe_form_status .oe_folded ul li.label, .openerp ul.oe_form_status_clickable .oe_folded ul li.label { - border: 0; - padding-left: 24px; -} -.openerp ul.oe_form_status .oe_folded ul li:last-child, .openerp ul.oe_form_status_clickable .oe_folded ul li:last-child { - border-bottom: 1px solid #cacaca; +.openerp ul.oe_form_status ul.oe_dropdown_menu li, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu li { + margin: 0; + width: 100%; } -.openerp ul.oe_form_status .oe_folded:hover ul, .openerp ul.oe_form_status_clickable .oe_folded:hover ul { - display: block; +.openerp ul.oe_form_status ul.oe_dropdown_menu li span.label, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu li span.label { + padding-left: 14px; } .openerp ul.oe_form_status li.oe_active, .openerp ul.oe_form_status_clickable li.oe_active { background-color: #5382b9; @@ -3211,9 +3198,6 @@ } @-moz-document url-prefix() { - .openerp .oe_view_manager .oe_view_manager_switch li { - line-height: 21px; - } .openerp .oe_searchview .oe_searchview_search { top: -1px; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index e41a182407d..e8eab4544a6 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -606,10 +606,8 @@ $sheet-padding: 16px .oe_dropdown_menu display: none position: absolute - top: 26px z-index: 3 margin: 0 - padding: 0 border: 1px solid $tag-border background: white padding: 4px 0 @@ -914,7 +912,7 @@ $sheet-padding: 16px border-color: #999 border-color: rgba(0, 0, 0, 0.2) border-style: solid - border-width: 0 1px 1px + border-width: 0 2px 1px @include radius(0 0 6px 6px) @include background-clip() li @@ -1171,7 +1169,7 @@ $sheet-padding: 16px .oe_view_manager_body display: table-row height: inherit - .oe_view_manager_view_kanban + .oe_view_manager_view_kanban:not(:empty) height: inherit table.oe_view_manager_header @@ -2174,27 +2172,18 @@ $sheet-padding: 16px @include skew-gradient(#fcfcfc, #dedede) @include radius(3px) @include transform(rotate(45deg)) - .oe_folded - .label - padding-bottom: 8px - ul - position: absolute - border-top: 1px solid #cacaca - float: none - top: 30px - right: 0 - display: none - li - margin: 0 - border-left: 1px solid #cacaca - display: block - li.label - border: 0 - padding-left: 24px - li:last-child - border-bottom: 1px solid #cacaca - &:hover ul + ul.oe_dropdown_menu + display: none + padding: 0 + min-width: 0 + &.oe_opened display: block + li + margin: 0 + width: 100% + span.label + padding-left: 14px + li.oe_active @include vertical-gradient(#729fcf, #3465a4) > .arrow span @@ -2532,8 +2521,6 @@ $sheet-padding: 16px // }}} @-moz-document url-prefix() .openerp - .oe_view_manager .oe_view_manager_switch li - line-height: 21px .oe_searchview .oe_searchview_search top: -1px .oe_form_field_many2one .oe_m2o_cm_button diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 55ab5ec073d..0cdffb0d6b0 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -534,7 +534,7 @@ instance.web.DatabaseManager = instance.web.Widget.extend({ 'login': 'admin', 'password': form_obj['create_admin_pwd'], 'login_successful': function() { - var url = '/?db=' + form_obj['db_name']; + var url = '/web?db=' + form_obj['db_name']; if (self.session.debug) { url += '&debug'; } @@ -805,10 +805,11 @@ instance.web.redirect = function(url, wait) { var load = function() { var old = "" + window.location; - if (old === url) { - window.location.reload(); - } else { - window.location = url; + var old_no_hash = old.split("#")[0]; + var url_no_hash = url.split("#")[0]; + location.assign(url); + if (old_no_hash === url_no_hash) { + location.reload(true); } }; @@ -1246,6 +1247,7 @@ instance.web.Client = instance.web.Widget.extend({ this.$el.on('click', '.oe_dropdown_toggle', function(ev) { ev.preventDefault(); var $toggle = $(this); + var doc_width = $(document).width(); var $menu = $toggle.siblings('.oe_dropdown_menu'); $menu = $menu.size() >= 1 ? $menu : $toggle.find('.oe_dropdown_menu'); var state = $menu.is('.oe_opened'); @@ -1254,7 +1256,6 @@ instance.web.Client = instance.web.Widget.extend({ $toggle.add($menu).toggleClass('oe_opened', !state); if (!state) { // Move $menu if outside window's edge - var doc_width = $(document).width(); var offset = $menu.offset(); var menu_width = $menu.width(); var x = doc_width - offset.left - menu_width - 2; diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 8c69f86c47e..37a217a8664 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -11,31 +11,6 @@ if (typeof(console) === "undefined") { }); } -// shim provided by mozilla for function.bind -if (!Function.prototype.bind) { - Function.prototype.bind = function (oThis) { - if (typeof this !== "function") { - // closest thing possible to the ECMAScript 5 internal IsCallable function - throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); - } - - var aArgs = Array.prototype.slice.call(arguments, 1), - fToBind = this, - fNOP = function () {}, - fBound = function () { - return fToBind.apply(this instanceof fNOP && oThis - ? this - : oThis, - aArgs.concat(Array.prototype.slice.call(arguments))); - }; - - fNOP.prototype = this.prototype; - fBound.prototype = new fNOP(); - - return fBound; - }; -} - var instance = openerp; openerp.web.core = {}; diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js index f642f0a334d..2725e18ea6e 100644 --- a/addons/web/static/src/js/data_export.js +++ b/addons/web/static/src/js/data_export.js @@ -62,8 +62,21 @@ instance.web.DataExport = instance.web.Dialog.extend({ }); }).change(); + var got_domain = this.getParent().get_active_domain().then(function (domain) { + if (domain === undefined) { + self.ids_to_export = self.getParent().get_selected_ids(); + self.domain = self.dataset.domain; + } + else { + self.ids_to_export = false; + self.domain = domain; + } + self.on_show_domain(); + }); + return $.when( got_fields, + got_domain, this.rpc('/web/export/formats', {}).done(this.do_setup_export_formats), this.show_exports_list()); }, @@ -196,6 +209,9 @@ instance.web.DataExport = instance.web.Dialog.extend({ self.showcontent(record.id); } }, + on_show_domain: function() { + this.$el.find('tr').first().find('td').append(QWeb.render('ExportTreeView-Domain', {'record': this})); + }, on_show_data: function(result, after) { var self = this; @@ -384,27 +400,17 @@ instance.web.DataExport = instance.web.Dialog.extend({ var export_format = this.$el.find("#export_format").val(); - this.getParent().get_active_domain().then(function (domain) { - if (domain === undefined) { - var ids_to_export = self.getParent().get_selected_ids(); - var domain = self.dataset.domain; - } - else { - var ids_to_export = false; - var domain = domain; - } - instance.web.blockUI(); - self.session.get_file({ - url: '/web/export/' + export_format, - data: {data: JSON.stringify({ - model: self.dataset.model, - fields: exported_fields, - ids: ids_to_export, - domain: domain, - import_compat: !!self.$el.find("#import_compat").val(), - })}, - complete: instance.web.unblockUI, - }); + instance.web.blockUI(); + this.session.get_file({ + url: '/web/export/' + export_format, + data: {data: JSON.stringify({ + model: this.dataset.model, + fields: exported_fields, + ids: this.ids_to_export, + domain: this.domain, + import_compat: !!this.$el.find("#import_compat").val(), + })}, + complete: instance.web.unblockUI, }); }, close: function() { diff --git a/addons/web/static/src/js/openerpframework.js b/addons/web/static/src/js/openerpframework.js index 027452b42fb..ab10d304b30 100644 --- a/addons/web/static/src/js/openerpframework.js +++ b/addons/web/static/src/js/openerpframework.js @@ -138,6 +138,7 @@ var openerp = {}; throw new Error("You can only instanciate objects with the 'new' operator"); } // All construction is actually done in the init method + this._super = null; if (!initializing && this.init) { var ret = this.init.apply(this, arguments); if (ret) { return ret; } @@ -385,6 +386,14 @@ var Events = openerp.Class.extend({ } }); +/** + Mixin containing an event system. Events are also registered by specifying the target object + (the object which will receive the event when it is raised). Both the event-emitting object + and the target object store or reference to each other. This is used to correctly remove all + reference to the event handler when any of the object is destroyed (when the destroy() method + from ParentedMixin is called). Removing those references is necessary to avoid memory leak + and phantom events (events which are raised and sent to a previously destroyed object). +*/ openerp.EventDispatcherMixin = _.extend({}, openerp.ParentedMixin, { __eventDispatcherMixin: true, init: function() { @@ -808,7 +817,7 @@ var genericJsonRpc = function(fct_name, params, fct) { return result.result; } }, function() { - console.error("JsonRPC communication error", _.toArray(arguments)); + //console.error("JsonRPC communication error", _.toArray(arguments)); var def = $.Deferred(); return def.reject.apply(def, ["communication"].concat(_.toArray(arguments))); }); @@ -890,11 +899,29 @@ openerp.jsonpRpc = function(url, fct_name, params, settings) { }); // append the iframe to the DOM (will trigger the first load) $form.after($iframe); + if (settings.timeout) { + realSetTimeout(function() { + deferred.reject({}); + }, settings.timeout); + } return deferred; } }); }; +var realSetTimeout = function(fct, millis) { + var finished = new Date().getTime() + millis; + var wait = function() { + var current = new Date().getTime(); + if (current < finished) { + setTimeout(wait, finished - current); + } else { + fct(); + } + }; + setTimeout(wait, millis); +}; + openerp.Session = openerp.Class.extend(openerp.PropertiesMixin, { triggers: { 'request': 'Request sent', diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 6241fe6da28..e086678c937 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1547,7 +1547,7 @@ instance.web.search.ManyToOneField = instance.web.search.CharField.extend({ context: context }).then(function (results) { if (_.isEmpty(results)) { return null; } - return [{label: _.escape(self.attrs.string)}].concat( + return [{label: self.attrs.string}].concat( _(results).map(function (result) { return { label: _.escape(result[1]), diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 324896112cc..7a0890bdcfa 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3664,7 +3664,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ _.extend(view.options, { addable: null, selectable: self.multi_selection, - sortable: false, + sortable: true, import_enabled: false, deletable: true }); @@ -5475,7 +5475,7 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ }); this.get_selection(); if (this.options.clickable) { - this.$el.on('click','li:not(.oe_folded)',this.on_click_stage); + this.$el.on('click','li[data-id]',this.on_click_stage); } if (this.$el.parent().is('header')) { this.$el.after('<div class="oe_clear"/>'); @@ -5629,6 +5629,131 @@ instance.web.form.FieldMonetary = instance.web.form.FieldFloat.extend({ }, }); +/* + This type of field display a list of checkboxes. It works only with m2ms. This field will display one checkbox for each + record existing in the model targeted by the relation, according to the given domain if one is specified. Checked records + will be added to the relation. +*/ +instance.web.form.FieldMany2ManyCheckBoxes = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, { + className: "oe_form_many2many_checkboxes", + init: function() { + this._super.apply(this, arguments); + this.set("value", {}); + this.set("records", []); + this.field_manager.on("view_content_has_changed", this, function() { + var domain = new openerp.web.CompoundDomain(this.build_domain()).eval(); + if (! _.isEqual(domain, this.get("domain"))) { + this.set("domain", domain); + } + }); + this.records_orderer = new instance.web.DropMisordered(); + }, + initialize_field: function() { + instance.web.form.ReinitializeFieldMixin.initialize_field.call(this) + this.on("change:domain", this, this.query_records); + this.set("domain", new openerp.web.CompoundDomain(this.build_domain()).eval()); + this.on("change:records", this, this.render_value); + }, + query_records: function() { + var self = this; + var model = new openerp.Model(openerp.session, this.field.relation); + this.records_orderer.add(model.call("search", [this.get("domain")], {"context": this.build_context()}).then(function(record_ids) { + return model.call("name_get", [record_ids] , {"context": self.build_context()}); + })).then(function(res) { + self.set("records", res); + }); + }, + render_value: function() { + this.$().html(QWeb.render("FieldMany2ManyCheckBoxes", {widget: this, selected: this.get("value")})); + var inputs = this.$("input"); + inputs.change(_.bind(this.from_dom, this)); + if (this.get("effective_readonly")) + inputs.attr("disabled", "true"); + }, + from_dom: function() { + var new_value = {}; + this.$("input").each(function() { + var elem = $(this); + new_value[elem.data("record-id")] = elem.attr("checked") ? true : undefined; + }); + if (! _.isEqual(new_value, this.get("value"))) + this.internal_set_value(new_value); + }, + set_value: function(value) { + value = value || []; + if (value.length >= 1 && value[0] instanceof Array) { + value = value[0][2]; + } + var formatted = {}; + _.each(value, function(el) { + formatted[JSON.stringify(el)] = true; + }); + this._super(formatted); + }, + get_value: function() { + var value = _.filter(_.keys(this.get("value")), function(el) { + return this.get("value")[el]; + }, this); + value = _.map(value, function(el) { + return JSON.parse(el); + }); + return [commands.replace_with(value)]; + }, +}); + +/** + This field can be applied on many2many and one2many. It is a read-only field that will display a single link whose name is + "<number of linked records> <label of the field>". When the link is clicked, it will redirect to another act_window + action on the model of the relation and show only the linked records. + + Widget options: + + * views: The views to display in the act_window action. Must be a list of tuples whose first element is the id of the view + to display (or False to take the default one) and the second element is the type of the view. Defaults to + [[false, "tree"], [false, "form"]] . +*/ +instance.web.form.X2ManyCounter = instance.web.form.AbstractField.extend(instance.web.form.ReinitializeFieldMixin, { + className: "oe_form_x2many_counter", + init: function() { + this._super.apply(this, arguments); + this.set("value", []); + _.defaults(this.options, { + "views": [[false, "tree"], [false, "form"]], + }); + }, + render_value: function() { + var text = _.str.sprintf("%d %s", this.val().length, this.string); + this.$().html(QWeb.render("X2ManyCounter", {text: text})); + this.$("a").click(_.bind(this.go_to, this)); + }, + go_to: function() { + return this.view.recursive_save().then(_.bind(function() { + var val = this.val(); + var context = {}; + if (this.field.type === "one2many") { + context["default_" + this.field.relation_field] = this.view.datarecord.id; + } + var domain = [["id", "in", val]]; + return this.do_action({ + type: 'ir.actions.act_window', + name: this.string, + res_model: this.field.relation, + views: this.options.views, + target: 'current', + context: context, + domain: domain, + }); + }, this)); + }, + val: function() { + var value = this.get("value") || []; + if (value.length >= 1 && value[0] instanceof Array) { + value = value[0][2]; + } + return value; + } +}); + /** * Registry of form fields, called by :js:`instance.web.FormView`. * @@ -5664,6 +5789,8 @@ instance.web.form.widgets = new instance.web.Registry({ 'many2many_binary': 'instance.web.form.FieldMany2ManyBinaryMultiFiles', 'statusbar': 'instance.web.form.FieldStatus', 'monetary': 'instance.web.form.FieldMonetary', + 'many2many_checkboxes': 'instance.web.form.FieldMany2ManyCheckBoxes', + 'x2many_counter': 'instance.web.form.X2ManyCounter', }); /** diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index f9ec22bf712..ba7c58b3820 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -508,10 +508,15 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi var reloaded = $.Deferred(); this.$el.find('.oe_list_content').append( this.groups.render(function () { - if ((self.dataset.index === null || self.dataset.index === undefined) && self.records.length || - self.dataset.index >= self.records.length) { + // Keep '=='. This is not a mistake, this is a wanted behaviour to match null & undefined + if (self.dataset.index == null) { + if (self.records.length) { self.dataset.index = 0; + } + } else if (self.dataset.index >= self.records.length) { + self.dataset.index = 0; } + self.compute_aggregates(); reloaded.resolve(); })); @@ -802,9 +807,11 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi }, /** * Calculate the active domain of the list view. This should be done only - * if the header checkbox has been checked. + * if the header checkbox has been checked. This is done by evaluating the + * search results, and then adding the dataset domain (i.e. action domain). */ get_active_domain: function () { + var self = this; if (this.$('.oe_list_record_selector').prop('checked')) { var search_view = this.getParent().searchview; var search_data = search_view.build_search_data(); @@ -813,7 +820,8 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi contexts: search_data.contexts, group_by_seq: search_data.groupbys || [] }).then(function (results) { - return results.domain; + var domain = self.dataset.domain.concat(results.domain || []); + return domain }); } else { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ee87237d045..46241435fcf 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1228,9 +1228,9 @@ </li> </t> <t t-if="widget.selection.folded.length"> - <li t-att-class="value_folded ? 'oe_active oe_folded' : 'oe_folded'"> - <span class="label"> ... </span> - <ul> + <li> + <span class="label oe_dropdown_toggle oe_dropdown_arrow">More</span> + <ul class="oe_dropdown_menu"> <t t-foreach="widget.selection.folded" t-as="i"> <li t-att-class="i[0] === widget.get('value') ? 'oe_active' : ''" t-att-data-id="i[0]"> <span class="label"><t t-esc="i[1]"/></span> @@ -1775,6 +1775,14 @@ </td> </tr> </table> +<t t-name="ExportTreeView-Domain"> + <t t-if="! record.ids_to_export"> + <p><strong>Please pay attention that all records matching your search filter will be exported. Not only the selected ids.</strong></p> + </t> + <t t-if="record.ids_to_export"> + <p><strong>Please note that only the selected ids will be exported.</strong></p> + </t> +</t> <table t-name="ExportTreeView-Secondary" id="field-tree-structure" class="oe_export_fields_selector_export" cellspacing="0" cellpadding="0"> @@ -1934,4 +1942,20 @@ </t> </t> </t> +<t t-name="FieldMany2ManyCheckBoxes"> + <t t-foreach="widget.get('records')" t-as="record"> + <div> + <t t-if="selected[record[0]]"> + <input type="checkbox" t-att-data-record-id="JSON.stringify(record[0])" checked="true"/> + </t> + <t t-if="! selected[record[0]]"> + <input type="checkbox" t-att-data-record-id="JSON.stringify(record[0])"/> + </t> + <t t-esc="record[1]"/> + </div> + </t> +</t> +<t t-name="X2ManyCounter"> + <a href="javascript:void(0)"><t t-esc="text"/></a> +</t> </templates> diff --git a/addons/web/static/test/jsonrpc.js b/addons/web/static/test/jsonrpc.js index a8b901d3b1c..46b7ceeac6e 100644 --- a/addons/web/static/test/jsonrpc.js +++ b/addons/web/static/test/jsonrpc.js @@ -111,27 +111,54 @@ function (test) { notEqual(result, origin_tmp, "Values in the different sessions should be different"); }); });*/ + test('timeout-jsonrpc', {asserts: 1}, function () { + var session = new openerp.Session(); + return session.rpc("/gen_session_id", {}, {timeout: 1}).then(function() { + ok(false, "the request incorrectly succeeded"); + return $.when(); + }, function(a, e) { + e.preventDefault(); + ok(true, "the request correctly failed"); + return $.when(); + }); + }); + test('timeout-jsonprpc', {asserts: 1}, function () { + var session = new openerp.Session(); + session.origin_server = false; + return session.rpc("/gen_session_id", {}, {timeout: 1}).then(function() { + ok(false, "the request incorrectly succeeded"); + return $.when(); + }, function(a, e) { + e.preventDefault(); + ok(true, "the request correctly failed"); + return $.when(); + }); + }); + // desactivated because the phantomjs runner crash + /*test('timeout-jsonprpc2', {asserts: 1}, function () { + var session = new openerp.Session(); + session.origin_server = false; + return session.rpc("/gen_session_id", {}, {force2step: true, timeout: 1}).then(function() { + ok(false, "the request incorrectly succeeded"); + return $.when(); + }, function(a, e) { + e.preventDefault(); + ok(true, "the request correctly failed"); + return $.when(); + }); + });*/ }); - -// desactivated because I can't manage to make these work in the runbot -/* var login = "admin"; var password = "admin"; -var db = null; ropenerp.testing.section('jsonrpc-auth', { - setup: function() { - var session = new openerp.Session(); - return session.session_reload().then(function() { - db = session.db; - ok(db, "db must be valid"); - }); - }, + rpc: "rpc", }, function (test) { - test('basic-auth', {asserts: 4}, function () { - var session = new openerp.Session(); + test('basic-auth', {asserts: 3}, function () { + var db = ropenerp.session.db; + var session = new openerp.Session(null, null, {override_session: true}); equal(session.uid, undefined, "uid is expected to be undefined"); return session.session_authenticate(db, login, password).then(function() { equal(session.uid, 1, "Admin's uid must be 1"); @@ -145,14 +172,16 @@ function (test) { }); }); }); - test('share-sessions', {asserts: 7}, function () { - var session = new openerp.Session(); + test('share-sessions', {asserts: 6}, function () { + var db = ropenerp.session.db; + var session = new openerp.Session(null, null, {override_session: true}); var session2; return session.session_authenticate(db, login, password).then(function() { equal(session.uid, 1, "Admin's uid must be 1"); session2 = new openerp.Session(null, null, {session_id: session.session_id}); equal(session2.uid, undefined, "uid should be undefined"); equal(session2.override_session, true, "overwrite_session should be true"); + console.log("session_id", session.session_id); return session2.session_reload(); }).then(function() { equal(session2.uid, session.uid); @@ -167,8 +196,9 @@ function (test) { }); }); }); - test('models', {asserts: 3}, function () { - var session = new openerp.Session(); + test('models', {asserts: 2}, function () { + var db = ropenerp.session.db; + var session = new openerp.Session(null, null, {override_session: true}); return session.session_authenticate(db, login, password).then(function() { return session.model("res.users").call("search_read", {fields: ["login"], domain: [["id", "=", 1]]}); }).then(function(result) { @@ -176,6 +206,6 @@ function (test) { equal(result[0].login, "admin", "Must have admin's login"); }); }); -});*/ +}); })(); diff --git a/addons/web/tests/common.py b/addons/web/tests/common.py new file mode 100644 index 00000000000..f95bbbd42e1 --- /dev/null +++ b/addons/web/tests/common.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +import unittest2 + +import mock + +from openerp.addons.web import http + +class MockRequestCase(unittest2.TestCase): + def setUp(self): + super(MockRequestCase, self).setUp() + self.tmp_req = http.set_request(mock.Mock()) + self.tmp_req.__enter__() + + def tearDown(self): + self.tmp_req.__exit__(None, None, None) + super(MockRequestCase, self).tearDown() + diff --git a/addons/web/tests/qunitsuite/suite.py b/addons/web/tests/qunitsuite/suite.py index 7f0a0cb4976..3aed7b133f1 100644 --- a/addons/web/tests/qunitsuite/suite.py +++ b/addons/web/tests/qunitsuite/suite.py @@ -91,7 +91,7 @@ class QUnitSuite(unittest.TestSuite): return True elif event_name == 'qunit.moduleStart': - self._module = args[1].encode('utf-8') + self._module = args[1].encode('utf-8') if args[1] else '' elif event_name == 'qunit.moduleStop': self._test = None self._module = None diff --git a/addons/web/tests/test_dataset.py b/addons/web/tests/test_dataset.py index 98c2f95447c..f017e5f609a 100644 --- a/addons/web/tests/test_dataset.py +++ b/addons/web/tests/test_dataset.py @@ -1,21 +1,16 @@ # -*- coding: utf-8 -*- -import mock -import unittest2 +from . import common + import openerp.addons.web.controllers.main from openerp.addons.web.http import request as req -from openerp.addons.web.http import set_request -class TestDataSetController(unittest2.TestCase): +class TestDataSetController(common.MockRequestCase): def setUp(self): + super(TestDataSetController, self).setUp() self.dataset = openerp.addons.web.controllers.main.DataSet() - self.tmp_req = set_request(mock.Mock()) - self.tmp_req.__enter__() self.read = req.session.model().read self.search = req.session.model().search - def tearDown(self): - self.tmp_req.__exit__() - def test_empty_find(self): self.search.return_value = [] self.read.return_value = [] diff --git a/addons/web/tests/test_menu.py b/addons/web/tests/test_menu.py index 6c86efe2fc6..8e8f3900670 100644 --- a/addons/web/tests/test_menu.py +++ b/addons/web/tests/test_menu.py @@ -1,9 +1,12 @@ # -*- coding: utf-8 -*- import collections + import mock import unittest2 + from openerp.addons.web.http import request as req -from openerp.addons.web.http import set_request + +from . import common from ..controllers import main @@ -12,11 +15,10 @@ class Placeholder(object): for k, v in kwargs.iteritems(): setattr(self, k, v) -class LoadTest(unittest2.TestCase): +class LoadTest(common.MockRequestCase): def setUp(self): + super(LoadTest, self).setUp() self.menu = main.Menu() - self.tmp_req = set_request(mock.Mock()) - self.tmp_req.__enter__() # Have self.request.session.model() return a different mock object for # each model (but always the same mock for a given model name) @@ -31,9 +33,9 @@ class LoadTest(unittest2.TestCase): }] def tearDown(self): - self.tmp_req.__exit__() del self.MockMenus del self.menu + super(LoadTest, self).tearDown() def test_empty(self): self.MockMenus.search.return_value = [] diff --git a/addons/web_calendar/i18n/ar.po b/addons/web_calendar/i18n/ar.po index 7c162d8147c..4120f6a1fb5 100644 --- a/addons/web_calendar/i18n/ar.po +++ b/addons/web_calendar/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bg.po b/addons/web_calendar/i18n/bg.po index a4246b38560..e4fb2f32a59 100644 --- a/addons/web_calendar/i18n/bg.po +++ b/addons/web_calendar/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bn.po b/addons/web_calendar/i18n/bn.po index 03a9ec80bad..2e83d739a44 100644 --- a/addons/web_calendar/i18n/bn.po +++ b/addons/web_calendar/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bs.po b/addons/web_calendar/i18n/bs.po index b235bd87eba..4631ba071b4 100644 --- a/addons/web_calendar/i18n/bs.po +++ b/addons/web_calendar/i18n/bs.po @@ -14,57 +14,57 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:161 #, python-format msgid "New event" -msgstr "" +msgstr "Novi događaj" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:164 #, python-format msgid "Details" -msgstr "" +msgstr "Detalji" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:162 #, python-format msgid "Save" -msgstr "" +msgstr "Sačuvaj" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:109 #, python-format msgid "Calendar view has a 'date_delay' type != float" -msgstr "" +msgstr "Kalendarski pogled ima 'date_delay' tip != float" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:157 #, python-format msgid "Today" -msgstr "" +msgstr "Danas" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:159 #, python-format msgid "Week" -msgstr "" +msgstr "Sedmica" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:171 #, python-format msgid "Full day" -msgstr "" +msgstr "Cijeli dan" #. module: web_calendar #. openerp-web @@ -72,14 +72,14 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:182 #, python-format msgid "Description" -msgstr "" +msgstr "Opis" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:168 #, python-format msgid "Event will be deleted permanently, are you sure?" -msgstr "" +msgstr "Događaj će trajno biti obrisan, dali ste sigurni?" #. module: web_calendar #. openerp-web @@ -94,7 +94,7 @@ msgstr " " #: code:addons/web_calendar/static/src/js/calendar.js:181 #, python-format msgid "Date" -msgstr "" +msgstr "Datum" #. module: web_calendar #. openerp-web @@ -108,42 +108,42 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:158 #, python-format msgid "Day" -msgstr "" +msgstr "Dan" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:165 #, python-format msgid "Edit" -msgstr "" +msgstr "Uredi" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:177 #, python-format msgid "Enabled" -msgstr "" +msgstr "Omogućeno" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:174 #, python-format msgid "Do you want to edit the whole set of repeated events?" -msgstr "" +msgstr "Dali želite urediti cijeli set ponavljajućih događaja?" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:90 #, python-format msgid "Filter" -msgstr "" +msgstr "Filter" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:175 #, python-format msgid "Repeat event" -msgstr "" +msgstr "Ponovi događaj" #. module: web_calendar #. openerp-web @@ -151,35 +151,35 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:188 #, python-format msgid "Agenda" -msgstr "" +msgstr "Dnevni red" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:170 #, python-format msgid "Time period" -msgstr "" +msgstr "Vremenski period" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:166 #, python-format msgid "Delete" -msgstr "" +msgstr "Obriši" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:160 #, python-format msgid "Month" -msgstr "" +msgstr "Mjesec" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:176 #, python-format msgid "Disabled" -msgstr "" +msgstr "Onemogućeno" #. module: web_calendar #. openerp-web @@ -193,14 +193,14 @@ msgstr "" #: code:addons/web_calendar/static/src/js/calendar.js:185 #, python-format msgid "Year" -msgstr "" +msgstr "Godina" #. module: web_calendar #. openerp-web #: code:addons/web_calendar/static/src/js/calendar.js:163 #, python-format msgid "Cancel" -msgstr "" +msgstr "Otkaži" #. module: web_calendar #. openerp-web @@ -214,7 +214,7 @@ msgstr "Kalendar" #: code:addons/web_calendar/static/src/js/calendar.js:101 #, python-format msgid "Calendar view has not defined 'date_start' attribute." -msgstr "" +msgstr "Pogled kalendara nema definisan atribut 'date_start'." #~ msgid "Navigator" #~ msgstr "Navigator" diff --git a/addons/web_calendar/i18n/ca.po b/addons/web_calendar/i18n/ca.po index 2cb0a121182..77e885cf15a 100644 --- a/addons/web_calendar/i18n/ca.po +++ b/addons/web_calendar/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/cs.po b/addons/web_calendar/i18n/cs.po index 089e5096edc..932019f5e30 100644 --- a/addons/web_calendar/i18n/cs.po +++ b/addons/web_calendar/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "X-Poedit-Language: Czech\n" #. module: web_calendar diff --git a/addons/web_calendar/i18n/da.po b/addons/web_calendar/i18n/da.po index c2facb750fe..8b2e06c34a9 100644 --- a/addons/web_calendar/i18n/da.po +++ b/addons/web_calendar/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-05 04:44+0000\n" -"X-Generator: Launchpad (build 16758)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/de.po b/addons/web_calendar/i18n/de.po index 4b4c557fc50..69b3c3ed844 100644 --- a/addons/web_calendar/i18n/de.po +++ b/addons/web_calendar/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/en_AU.po b/addons/web_calendar/i18n/en_AU.po index 95636638a1b..bf874b55a41 100644 --- a/addons/web_calendar/i18n/en_AU.po +++ b/addons/web_calendar/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/en_GB.po b/addons/web_calendar/i18n/en_GB.po index 038b0268282..1ece65d1bc0 100644 --- a/addons/web_calendar/i18n/en_GB.po +++ b/addons/web_calendar/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web @@ -43,7 +43,7 @@ msgstr "Save" #: code:addons/web_calendar/static/src/js/calendar.js:109 #, python-format msgid "Calendar view has a 'date_delay' type != float" -msgstr "" +msgstr "Calendar view has a 'date_delay' type != float" #. module: web_calendar #. openerp-web @@ -214,7 +214,7 @@ msgstr "Calendar" #: code:addons/web_calendar/static/src/js/calendar.js:101 #, python-format msgid "Calendar view has not defined 'date_start' attribute." -msgstr "" +msgstr "Calendar view has not defined 'date_start' attribute." #~ msgid "Navigator" #~ msgstr "Navigator" diff --git a/addons/web_calendar/i18n/es.po b/addons/web_calendar/i18n/es.po index 592bb7354fa..42b6a14c1ac 100644 --- a/addons/web_calendar/i18n/es.po +++ b/addons/web_calendar/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_CL.po b/addons/web_calendar/i18n/es_CL.po index 8b102a8f82c..d9623f86ad3 100644 --- a/addons/web_calendar/i18n/es_CL.po +++ b/addons/web_calendar/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_CR.po b/addons/web_calendar/i18n/es_CR.po index f29d1ceeb99..b139ee169a0 100644 --- a/addons/web_calendar/i18n/es_CR.po +++ b/addons/web_calendar/i18n/es_CR.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "Language: es\n" #. module: web_calendar diff --git a/addons/web_calendar/i18n/es_DO.po b/addons/web_calendar/i18n/es_DO.po index cc995222d36..0e3cf16ad86 100644 --- a/addons/web_calendar/i18n/es_DO.po +++ b/addons/web_calendar/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_EC.po b/addons/web_calendar/i18n/es_EC.po index fedb02e0e8f..c602726e136 100644 --- a/addons/web_calendar/i18n/es_EC.po +++ b/addons/web_calendar/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_MX.po b/addons/web_calendar/i18n/es_MX.po index f0996ec3285..cfc1fe3111c 100644 --- a/addons/web_calendar/i18n/es_MX.po +++ b/addons/web_calendar/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/et.po b/addons/web_calendar/i18n/et.po index 0cc4bbac830..178f9b8dfc2 100644 --- a/addons/web_calendar/i18n/et.po +++ b/addons/web_calendar/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/eu.po b/addons/web_calendar/i18n/eu.po index 04ebeb6c74f..0379684ad24 100644 --- a/addons/web_calendar/i18n/eu.po +++ b/addons/web_calendar/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fa.po b/addons/web_calendar/i18n/fa.po index 59ecd768fee..55418d4d099 100644 --- a/addons/web_calendar/i18n/fa.po +++ b/addons/web_calendar/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fi.po b/addons/web_calendar/i18n/fi.po index 241ab72e8b7..44f66c8cb3b 100644 --- a/addons/web_calendar/i18n/fi.po +++ b/addons/web_calendar/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fr.po b/addons/web_calendar/i18n/fr.po index e759925e441..43e98d83779 100644 --- a/addons/web_calendar/i18n/fr.po +++ b/addons/web_calendar/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fr_CA.po b/addons/web_calendar/i18n/fr_CA.po index 352fa771fde..ef6be409cad 100644 --- a/addons/web_calendar/i18n/fr_CA.po +++ b/addons/web_calendar/i18n/fr_CA.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/gl.po b/addons/web_calendar/i18n/gl.po index 882ac6b46d4..ee03453831f 100644 --- a/addons/web_calendar/i18n/gl.po +++ b/addons/web_calendar/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/gu.po b/addons/web_calendar/i18n/gu.po index 76e7f30d02d..f2800dde2ab 100644 --- a/addons/web_calendar/i18n/gu.po +++ b/addons/web_calendar/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/hr.po b/addons/web_calendar/i18n/hr.po index 69d20f57bae..e323b4d880d 100644 --- a/addons/web_calendar/i18n/hr.po +++ b/addons/web_calendar/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/hu.po b/addons/web_calendar/i18n/hu.po index 3b00c0c666b..edb3fa3d01e 100644 --- a/addons/web_calendar/i18n/hu.po +++ b/addons/web_calendar/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/id.po b/addons/web_calendar/i18n/id.po index 32d6d6f8471..e9ed850a4cb 100644 --- a/addons/web_calendar/i18n/id.po +++ b/addons/web_calendar/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/it.po b/addons/web_calendar/i18n/it.po index 37ec0cd4cfe..9519f60b8f3 100644 --- a/addons/web_calendar/i18n/it.po +++ b/addons/web_calendar/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ja.po b/addons/web_calendar/i18n/ja.po index 267b239d3d5..762c7204b93 100644 --- a/addons/web_calendar/i18n/ja.po +++ b/addons/web_calendar/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ka.po b/addons/web_calendar/i18n/ka.po index c3cddb3b2f3..a7faee20c6b 100644 --- a/addons/web_calendar/i18n/ka.po +++ b/addons/web_calendar/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ko.po b/addons/web_calendar/i18n/ko.po index 281e3ef955c..1afbc3b4411 100644 --- a/addons/web_calendar/i18n/ko.po +++ b/addons/web_calendar/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/lt.po b/addons/web_calendar/i18n/lt.po index df0817a8789..a7d9316248c 100644 --- a/addons/web_calendar/i18n/lt.po +++ b/addons/web_calendar/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/mk.po b/addons/web_calendar/i18n/mk.po index 6f112a647bd..ebaea4e4847 100644 --- a/addons/web_calendar/i18n/mk.po +++ b/addons/web_calendar/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/mn.po b/addons/web_calendar/i18n/mn.po index d10d791c857..41d4e915a8c 100644 --- a/addons/web_calendar/i18n/mn.po +++ b/addons/web_calendar/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nb.po b/addons/web_calendar/i18n/nb.po index d1371cd5220..fd4f8b6a7e7 100644 --- a/addons/web_calendar/i18n/nb.po +++ b/addons/web_calendar/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nl.po b/addons/web_calendar/i18n/nl.po index 23cf975b43b..0a40e61b107 100644 --- a/addons/web_calendar/i18n/nl.po +++ b/addons/web_calendar/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-05 07:55+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nl_BE.po b/addons/web_calendar/i18n/nl_BE.po index e99d29c08b4..341871b0a71 100644 --- a/addons/web_calendar/i18n/nl_BE.po +++ b/addons/web_calendar/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pl.po b/addons/web_calendar/i18n/pl.po index 9b18046fd00..0871a79dcc8 100644 --- a/addons/web_calendar/i18n/pl.po +++ b/addons/web_calendar/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pt.po b/addons/web_calendar/i18n/pt.po index f4a524d1d67..a49afc16461 100644 --- a/addons/web_calendar/i18n/pt.po +++ b/addons/web_calendar/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pt_BR.po b/addons/web_calendar/i18n/pt_BR.po index e0d415cfce3..60f0dbd0df9 100644 --- a/addons/web_calendar/i18n/pt_BR.po +++ b/addons/web_calendar/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ro.po b/addons/web_calendar/i18n/ro.po index beb9caee54c..69126d26c72 100644 --- a/addons/web_calendar/i18n/ro.po +++ b/addons/web_calendar/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ru.po b/addons/web_calendar/i18n/ru.po index 5cec06bdff3..b96a74960a5 100644 --- a/addons/web_calendar/i18n/ru.po +++ b/addons/web_calendar/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sk.po b/addons/web_calendar/i18n/sk.po index 28a1d8b9c5c..7d4e0dff0a5 100644 --- a/addons/web_calendar/i18n/sk.po +++ b/addons/web_calendar/i18n/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sl.po b/addons/web_calendar/i18n/sl.po index 26c774b18d8..b5f77efa2b8 100644 --- a/addons/web_calendar/i18n/sl.po +++ b/addons/web_calendar/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sq.po b/addons/web_calendar/i18n/sq.po index 10fcac53e84..efdd2a9d3c5 100644 --- a/addons/web_calendar/i18n/sq.po +++ b/addons/web_calendar/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sr@latin.po b/addons/web_calendar/i18n/sr@latin.po index 738969ff95f..aa5edbce33b 100644 --- a/addons/web_calendar/i18n/sr@latin.po +++ b/addons/web_calendar/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sv.po b/addons/web_calendar/i18n/sv.po index deeb0621629..18ad830d60f 100644 --- a/addons/web_calendar/i18n/sv.po +++ b/addons/web_calendar/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web @@ -43,7 +43,7 @@ msgstr "Spara" #: code:addons/web_calendar/static/src/js/calendar.js:109 #, python-format msgid "Calendar view has a 'date_delay' type != float" -msgstr "" +msgstr "Kalendervyn har en 'datum försenad' typ != float" #. module: web_calendar #. openerp-web @@ -214,7 +214,7 @@ msgstr "Kalender" #: code:addons/web_calendar/static/src/js/calendar.js:101 #, python-format msgid "Calendar view has not defined 'date_start' attribute." -msgstr "" +msgstr "Kalendervyn har inte definierat 'Startdatum' attributet" #~ msgid "Navigator" #~ msgstr "Navigering" diff --git a/addons/web_calendar/i18n/th.po b/addons/web_calendar/i18n/th.po index 2f06d1360e4..4ad1b314f93 100644 --- a/addons/web_calendar/i18n/th.po +++ b/addons/web_calendar/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/tr.po b/addons/web_calendar/i18n/tr.po index 60bad30663f..50ae9915b5a 100644 --- a/addons/web_calendar/i18n/tr.po +++ b/addons/web_calendar/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/uk.po b/addons/web_calendar/i18n/uk.po index 4ad02609517..2b220efea2b 100644 --- a/addons/web_calendar/i18n/uk.po +++ b/addons/web_calendar/i18n/uk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/zh_CN.po b/addons/web_calendar/i18n/zh_CN.po index 019b652a7a4..8d1c773b8d8 100644 --- a/addons/web_calendar/i18n/zh_CN.po +++ b/addons/web_calendar/i18n/zh_CN.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-01 14:56+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\n" +"Last-Translator: 盈通 ccdos <ccdos@intoerp.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/zh_TW.po b/addons/web_calendar/i18n/zh_TW.po new file mode 100644 index 00000000000..8f66f06c63b --- /dev/null +++ b/addons/web_calendar/i18n/zh_TW.po @@ -0,0 +1,217 @@ +# Chinese (Traditional) translation for openerp-web +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-09-27 09:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:161 +#, python-format +msgid "New event" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:164 +#, python-format +msgid "Details" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:162 +#, python-format +msgid "Save" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:109 +#, python-format +msgid "Calendar view has a 'date_delay' type != float" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:157 +#, python-format +msgid "Today" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:159 +#, python-format +msgid "Week" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:171 +#, python-format +msgid "Full day" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:169 +#: code:addons/web_calendar/static/src/js/calendar.js:182 +#, python-format +msgid "Description" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:168 +#, python-format +msgid "Event will be deleted permanently, are you sure?" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/xml/web_calendar.xml:8 +#: code:addons/web_calendar/static/src/xml/web_calendar.xml:9 +#, python-format +msgid " " +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:181 +#, python-format +msgid "Date" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:470 +#, python-format +msgid "Edit: " +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:158 +#, python-format +msgid "Day" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:165 +#, python-format +msgid "Edit" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:177 +#, python-format +msgid "Enabled" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:174 +#, python-format +msgid "Do you want to edit the whole set of repeated events?" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:90 +#, python-format +msgid "Filter" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:175 +#, python-format +msgid "Repeat event" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:180 +#: code:addons/web_calendar/static/src/js/calendar.js:188 +#, python-format +msgid "Agenda" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:170 +#, python-format +msgid "Time period" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:166 +#, python-format +msgid "Delete" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:160 +#, python-format +msgid "Month" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:176 +#, python-format +msgid "Disabled" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:435 +#, python-format +msgid "Create: " +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:185 +#, python-format +msgid "Year" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:163 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:36 +#, python-format +msgid "Calendar" +msgstr "" + +#. module: web_calendar +#. openerp-web +#: code:addons/web_calendar/static/src/js/calendar.js:101 +#, python-format +msgid "Calendar view has not defined 'date_start' attribute." +msgstr "" diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index a0945836fd6..1219b9a85b4 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -407,7 +407,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ '&', [this.date_start, '<', A], [this.date_stop, '>', B]); domain.unshift("|", "|"); } - domain.concat(this.last_search[0].slice(0)) + domain = domain.concat(this.last_search[0].slice(0)); return domain; }, do_show: function () { diff --git a/addons/web_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py index c598a7e4652..5dd625b80c0 100644 --- a/addons/web_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -1,9 +1,8 @@ import openerp -class DiagramView(openerp.addons.web.controllers.main.View): - _cp_path = "/web_diagram/diagram" +class DiagramView(openerp.addons.web.http.Controller): - @openerp.addons.web.http.jsonrequest + @openerp.addons.web.http.route('/web_diagram/diagram/get_diagram_info', type='json', auth='user') def get_diagram_info(self, req, id, model, node, connector, src_node, des_node, label, **kw): diff --git a/addons/web_diagram/i18n/ar.po b/addons/web_diagram/i18n/ar.po index eb24bf7ea1d..ca29b1c5524 100644 --- a/addons/web_diagram/i18n/ar.po +++ b/addons/web_diagram/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bg.po b/addons/web_diagram/i18n/bg.po index 3da657741eb..8d42f39a01f 100644 --- a/addons/web_diagram/i18n/bg.po +++ b/addons/web_diagram/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bn.po b/addons/web_diagram/i18n/bn.po index 0a7d5a1a75f..ea3bc8a64f3 100644 --- a/addons/web_diagram/i18n/bn.po +++ b/addons/web_diagram/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bs.po b/addons/web_diagram/i18n/bs.po index 9ef09ab05bf..fe6403df02a 100644 --- a/addons/web_diagram/i18n/bs.po +++ b/addons/web_diagram/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web @@ -34,7 +34,11 @@ msgid "" "It will also delete all connected transitions.\n" "\n" "Are you sure ?" -msgstr "Brisanje ovog čvora je nepovratno" +msgstr "" +"Brisanje ovog čvora je nepovratno.\n" +"Također će obrisati sve povezane prelaze.\n" +"\n" +"Dali ste sigurni?" #. module: web_diagram #. openerp-web @@ -71,7 +75,7 @@ msgstr "Aktivnost" #: code:addons/web_diagram/static/src/js/diagram.js:420 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web_diagram #. openerp-web @@ -79,7 +83,7 @@ msgstr "" #: code:addons/web_diagram/static/src/js/diagram.js:335 #, python-format msgid "Create:" -msgstr "Kreiraj" +msgstr "Kreiraj:" #. module: web_diagram #. openerp-web @@ -96,4 +100,7 @@ msgid "" "Deleting this transition cannot be undone.\n" "\n" "Are you sure ?" -msgstr "Brisanje ove tranzicije je nepovratno" +msgstr "" +"Brisanje ove tranzicije je nepovratno.\n" +"\n" +"Dali ste sigurni?" diff --git a/addons/web_diagram/i18n/ca.po b/addons/web_diagram/i18n/ca.po index 7e05849ed80..2ae27f49b02 100644 --- a/addons/web_diagram/i18n/ca.po +++ b/addons/web_diagram/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/cs.po b/addons/web_diagram/i18n/cs.po index 48eab24092b..77367b6807e 100644 --- a/addons/web_diagram/i18n/cs.po +++ b/addons/web_diagram/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "X-Poedit-Language: Czech\n" #. module: web_diagram diff --git a/addons/web_diagram/i18n/da.po b/addons/web_diagram/i18n/da.po index 7844a2a289e..0622a60196a 100644 --- a/addons/web_diagram/i18n/da.po +++ b/addons/web_diagram/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-05 04:44+0000\n" -"X-Generator: Launchpad (build 16758)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/de.po b/addons/web_diagram/i18n/de.po index 9e230dbe96f..76629fb28b7 100644 --- a/addons/web_diagram/i18n/de.po +++ b/addons/web_diagram/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/en_AU.po b/addons/web_diagram/i18n/en_AU.po index f4f359e0636..8fdbf65c9c7 100644 --- a/addons/web_diagram/i18n/en_AU.po +++ b/addons/web_diagram/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/en_GB.po b/addons/web_diagram/i18n/en_GB.po index 56ceef846b1..72cb9b95ba2 100644 --- a/addons/web_diagram/i18n/en_GB.po +++ b/addons/web_diagram/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web @@ -75,7 +75,7 @@ msgstr "Activity" #: code:addons/web_diagram/static/src/js/diagram.js:420 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es.po b/addons/web_diagram/i18n/es.po index 8ffd7f50dcc..d225dfc623c 100644 --- a/addons/web_diagram/i18n/es.po +++ b/addons/web_diagram/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_CL.po b/addons/web_diagram/i18n/es_CL.po index 00393ad1fe8..924770f5ce0 100644 --- a/addons/web_diagram/i18n/es_CL.po +++ b/addons/web_diagram/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_CR.po b/addons/web_diagram/i18n/es_CR.po index 087edd0296d..7ee31086e15 100644 --- a/addons/web_diagram/i18n/es_CR.po +++ b/addons/web_diagram/i18n/es_CR.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "Language: es\n" #. module: web_diagram diff --git a/addons/web_diagram/i18n/es_DO.po b/addons/web_diagram/i18n/es_DO.po index f02c4a2886f..70ef595e90f 100644 --- a/addons/web_diagram/i18n/es_DO.po +++ b/addons/web_diagram/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_EC.po b/addons/web_diagram/i18n/es_EC.po index 594a320ed8d..90f54f20fb0 100644 --- a/addons/web_diagram/i18n/es_EC.po +++ b/addons/web_diagram/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_MX.po b/addons/web_diagram/i18n/es_MX.po index 904ff6793d4..db9383fc125 100644 --- a/addons/web_diagram/i18n/es_MX.po +++ b/addons/web_diagram/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/et.po b/addons/web_diagram/i18n/et.po index eb618b79dd7..afe6cb7280e 100644 --- a/addons/web_diagram/i18n/et.po +++ b/addons/web_diagram/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fa.po b/addons/web_diagram/i18n/fa.po index 5be6bb13982..d55afa596a6 100644 --- a/addons/web_diagram/i18n/fa.po +++ b/addons/web_diagram/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fi.po b/addons/web_diagram/i18n/fi.po index c9ea4bc90c6..2f52177697a 100644 --- a/addons/web_diagram/i18n/fi.po +++ b/addons/web_diagram/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fr.po b/addons/web_diagram/i18n/fr.po index ffc0423518e..3dbac1337c8 100644 --- a/addons/web_diagram/i18n/fr.po +++ b/addons/web_diagram/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/gl.po b/addons/web_diagram/i18n/gl.po index 3cab0a4c976..8cd5d665c95 100644 --- a/addons/web_diagram/i18n/gl.po +++ b/addons/web_diagram/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/gu.po b/addons/web_diagram/i18n/gu.po index 00ac0b3abb3..abf9c2327ed 100644 --- a/addons/web_diagram/i18n/gu.po +++ b/addons/web_diagram/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/hr.po b/addons/web_diagram/i18n/hr.po index 912987942d3..c8a3cb9b726 100644 --- a/addons/web_diagram/i18n/hr.po +++ b/addons/web_diagram/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/hu.po b/addons/web_diagram/i18n/hu.po index 30332a5a3b5..04627da41aa 100644 --- a/addons/web_diagram/i18n/hu.po +++ b/addons/web_diagram/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/id.po b/addons/web_diagram/i18n/id.po index 06f639f2883..c7acbdd3160 100644 --- a/addons/web_diagram/i18n/id.po +++ b/addons/web_diagram/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/it.po b/addons/web_diagram/i18n/it.po index 4c85daa23a3..e4926fc6d20 100644 --- a/addons/web_diagram/i18n/it.po +++ b/addons/web_diagram/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ja.po b/addons/web_diagram/i18n/ja.po index f3bdb5f27db..841459b9535 100644 --- a/addons/web_diagram/i18n/ja.po +++ b/addons/web_diagram/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ka.po b/addons/web_diagram/i18n/ka.po index d8883ed4f7c..33dd4044e94 100644 --- a/addons/web_diagram/i18n/ka.po +++ b/addons/web_diagram/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ko.po b/addons/web_diagram/i18n/ko.po index b7391be6a35..0d83d610393 100644 --- a/addons/web_diagram/i18n/ko.po +++ b/addons/web_diagram/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/lt.po b/addons/web_diagram/i18n/lt.po index 8564d592351..022ca74c137 100644 --- a/addons/web_diagram/i18n/lt.po +++ b/addons/web_diagram/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/mk.po b/addons/web_diagram/i18n/mk.po index 9799a83f7d7..c4e70c18224 100644 --- a/addons/web_diagram/i18n/mk.po +++ b/addons/web_diagram/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/mn.po b/addons/web_diagram/i18n/mn.po index aa4e4fee8af..73c44ebd831 100644 --- a/addons/web_diagram/i18n/mn.po +++ b/addons/web_diagram/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nb.po b/addons/web_diagram/i18n/nb.po index a0d0174b18f..53bff6e9d21 100644 --- a/addons/web_diagram/i18n/nb.po +++ b/addons/web_diagram/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nl.po b/addons/web_diagram/i18n/nl.po index 418b7d414e1..b94fe582ea1 100644 --- a/addons/web_diagram/i18n/nl.po +++ b/addons/web_diagram/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-11-25 07:04+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nl_BE.po b/addons/web_diagram/i18n/nl_BE.po index dd6c2af4fdf..7cb3c89ca64 100644 --- a/addons/web_diagram/i18n/nl_BE.po +++ b/addons/web_diagram/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pl.po b/addons/web_diagram/i18n/pl.po index 226004019fc..f31aa1cedbe 100644 --- a/addons/web_diagram/i18n/pl.po +++ b/addons/web_diagram/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pt.po b/addons/web_diagram/i18n/pt.po index db02c95feb5..bd7378aa342 100644 --- a/addons/web_diagram/i18n/pt.po +++ b/addons/web_diagram/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pt_BR.po b/addons/web_diagram/i18n/pt_BR.po index 103880c16e5..d75de3d3a0e 100644 --- a/addons/web_diagram/i18n/pt_BR.po +++ b/addons/web_diagram/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ro.po b/addons/web_diagram/i18n/ro.po index a2d6efe6804..3175f3cc9b6 100644 --- a/addons/web_diagram/i18n/ro.po +++ b/addons/web_diagram/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ru.po b/addons/web_diagram/i18n/ru.po index ba07bfd67ca..e322cfc87ae 100644 --- a/addons/web_diagram/i18n/ru.po +++ b/addons/web_diagram/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sl.po b/addons/web_diagram/i18n/sl.po index 1dba3d48358..56ce6a72889 100644 --- a/addons/web_diagram/i18n/sl.po +++ b/addons/web_diagram/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sq.po b/addons/web_diagram/i18n/sq.po index 4fa76fccc24..9f0c21497be 100644 --- a/addons/web_diagram/i18n/sq.po +++ b/addons/web_diagram/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sr@latin.po b/addons/web_diagram/i18n/sr@latin.po index 0e50be0f3dd..717114dc9cb 100644 --- a/addons/web_diagram/i18n/sr@latin.po +++ b/addons/web_diagram/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sv.po b/addons/web_diagram/i18n/sv.po index 14072652093..e601e563b09 100644 --- a/addons/web_diagram/i18n/sv.po +++ b/addons/web_diagram/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web @@ -75,7 +75,7 @@ msgstr "Aktivitet" #: code:addons/web_diagram/static/src/js/diagram.js:420 #, python-format msgid "%d / %d" -msgstr "" +msgstr "%d / %d" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/th.po b/addons/web_diagram/i18n/th.po index 4be3da8d991..4294e312f13 100644 --- a/addons/web_diagram/i18n/th.po +++ b/addons/web_diagram/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/tr.po b/addons/web_diagram/i18n/tr.po index 7ac9d802b3e..3e8e7f3733d 100644 --- a/addons/web_diagram/i18n/tr.po +++ b/addons/web_diagram/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/zh_CN.po b/addons/web_diagram/i18n/zh_CN.po index 8c2a33946f3..8d384b9cd35 100644 --- a/addons/web_diagram/i18n/zh_CN.po +++ b/addons/web_diagram/i18n/zh_CN.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-11-29 15:16+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\n" +"Last-Translator: 盈通 ccdos <ccdos@intoerp.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/zh_TW.po b/addons/web_diagram/i18n/zh_TW.po index b575de75737..78d665136c8 100644 --- a/addons/web_diagram/i18n/zh_TW.po +++ b/addons/web_diagram/i18n/zh_TW.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_gantt/i18n/ar.po b/addons/web_gantt/i18n/ar.po index 87f7d2f4e61..53adc55cbf8 100644 --- a/addons/web_gantt/i18n/ar.po +++ b/addons/web_gantt/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bg.po b/addons/web_gantt/i18n/bg.po index 1edc358f9ce..3155473e6b7 100644 --- a/addons/web_gantt/i18n/bg.po +++ b/addons/web_gantt/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bn.po b/addons/web_gantt/i18n/bn.po index ccfd295084d..c917f15fc0f 100644 --- a/addons/web_gantt/i18n/bn.po +++ b/addons/web_gantt/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bs.po b/addons/web_gantt/i18n/bs.po index 270e56f546c..e574809d2e7 100644 --- a/addons/web_gantt/i18n/bs.po +++ b/addons/web_gantt/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ca.po b/addons/web_gantt/i18n/ca.po index cdfb55ea105..0b14bea9f6a 100644 --- a/addons/web_gantt/i18n/ca.po +++ b/addons/web_gantt/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/cs.po b/addons/web_gantt/i18n/cs.po index 831a5fa7892..d2e235e689c 100644 --- a/addons/web_gantt/i18n/cs.po +++ b/addons/web_gantt/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" "X-Poedit-Language: Czech\n" #. module: web_gantt diff --git a/addons/web_gantt/i18n/da.po b/addons/web_gantt/i18n/da.po index 7725a9d1aa9..d3659c3d6eb 100644 --- a/addons/web_gantt/i18n/da.po +++ b/addons/web_gantt/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/de.po b/addons/web_gantt/i18n/de.po index e8b648b9ce9..4c8dcebe2d9 100644 --- a/addons/web_gantt/i18n/de.po +++ b/addons/web_gantt/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/en_AU.po b/addons/web_gantt/i18n/en_AU.po index 32b748b34a0..9c6a6cc1476 100644 --- a/addons/web_gantt/i18n/en_AU.po +++ b/addons/web_gantt/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/en_GB.po b/addons/web_gantt/i18n/en_GB.po index fdddde01403..b5ec92ac7b1 100644 --- a/addons/web_gantt/i18n/en_GB.po +++ b/addons/web_gantt/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es.po b/addons/web_gantt/i18n/es.po index 3962c1bbb4e..f25d58a9f44 100644 --- a/addons/web_gantt/i18n/es.po +++ b/addons/web_gantt/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_CL.po b/addons/web_gantt/i18n/es_CL.po index 618934fdfd3..fe85ba2b2ab 100644 --- a/addons/web_gantt/i18n/es_CL.po +++ b/addons/web_gantt/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_CR.po b/addons/web_gantt/i18n/es_CR.po index 2ecd1ccfce0..9ed86ae00fc 100644 --- a/addons/web_gantt/i18n/es_CR.po +++ b/addons/web_gantt/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_DO.po b/addons/web_gantt/i18n/es_DO.po index 71452a90422..688b6a38802 100644 --- a/addons/web_gantt/i18n/es_DO.po +++ b/addons/web_gantt/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_EC.po b/addons/web_gantt/i18n/es_EC.po index 670e5e3e9e4..5015e9a812a 100644 --- a/addons/web_gantt/i18n/es_EC.po +++ b/addons/web_gantt/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_MX.po b/addons/web_gantt/i18n/es_MX.po index df85159ec8a..f3bb5e36c21 100644 --- a/addons/web_gantt/i18n/es_MX.po +++ b/addons/web_gantt/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/et.po b/addons/web_gantt/i18n/et.po index 732a236660e..45fa61f2e85 100644 --- a/addons/web_gantt/i18n/et.po +++ b/addons/web_gantt/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fa.po b/addons/web_gantt/i18n/fa.po index 7f8c540b3af..3e674a68e30 100644 --- a/addons/web_gantt/i18n/fa.po +++ b/addons/web_gantt/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fi.po b/addons/web_gantt/i18n/fi.po index 7f0438d2fb3..3cd3af90d6e 100644 --- a/addons/web_gantt/i18n/fi.po +++ b/addons/web_gantt/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fr.po b/addons/web_gantt/i18n/fr.po index 1fdd9bd9cd4..f491773d66e 100644 --- a/addons/web_gantt/i18n/fr.po +++ b/addons/web_gantt/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/gl.po b/addons/web_gantt/i18n/gl.po index 8c482ee3196..80ba47e03db 100644 --- a/addons/web_gantt/i18n/gl.po +++ b/addons/web_gantt/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/gu.po b/addons/web_gantt/i18n/gu.po index 1081fe344de..c26ad99740a 100644 --- a/addons/web_gantt/i18n/gu.po +++ b/addons/web_gantt/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/hr.po b/addons/web_gantt/i18n/hr.po index 265757767d3..4560f666738 100644 --- a/addons/web_gantt/i18n/hr.po +++ b/addons/web_gantt/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/hu.po b/addons/web_gantt/i18n/hu.po index 6073535d31f..9366d5b5b19 100644 --- a/addons/web_gantt/i18n/hu.po +++ b/addons/web_gantt/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/it.po b/addons/web_gantt/i18n/it.po index 4a249625fb1..2252b28aced 100644 --- a/addons/web_gantt/i18n/it.po +++ b/addons/web_gantt/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ja.po b/addons/web_gantt/i18n/ja.po index d42e227c930..ff699406cb7 100644 --- a/addons/web_gantt/i18n/ja.po +++ b/addons/web_gantt/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ka.po b/addons/web_gantt/i18n/ka.po index 9c903f7871b..0adde9ae84d 100644 --- a/addons/web_gantt/i18n/ka.po +++ b/addons/web_gantt/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ko.po b/addons/web_gantt/i18n/ko.po index 3721e0d932b..22eff20d5ea 100644 --- a/addons/web_gantt/i18n/ko.po +++ b/addons/web_gantt/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/lo.po b/addons/web_gantt/i18n/lo.po index c44949f745e..572c362a856 100644 --- a/addons/web_gantt/i18n/lo.po +++ b/addons/web_gantt/i18n/lo.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/lt.po b/addons/web_gantt/i18n/lt.po index 345dc7149ad..c02a683bca4 100644 --- a/addons/web_gantt/i18n/lt.po +++ b/addons/web_gantt/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/mk.po b/addons/web_gantt/i18n/mk.po index efd68a5b856..0a43e221c20 100644 --- a/addons/web_gantt/i18n/mk.po +++ b/addons/web_gantt/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/mn.po b/addons/web_gantt/i18n/mn.po index c3db07c6840..22f07c65929 100644 --- a/addons/web_gantt/i18n/mn.po +++ b/addons/web_gantt/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nb.po b/addons/web_gantt/i18n/nb.po index c3614bcc05c..1f6318f3d8a 100644 --- a/addons/web_gantt/i18n/nb.po +++ b/addons/web_gantt/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nl.po b/addons/web_gantt/i18n/nl.po index 0810961e7ae..84989184a1f 100644 --- a/addons/web_gantt/i18n/nl.po +++ b/addons/web_gantt/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-11-25 07:10+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nl_BE.po b/addons/web_gantt/i18n/nl_BE.po index f5d79ecf96e..7848fabf75f 100644 --- a/addons/web_gantt/i18n/nl_BE.po +++ b/addons/web_gantt/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pl.po b/addons/web_gantt/i18n/pl.po index d219765c333..059f66c2433 100644 --- a/addons/web_gantt/i18n/pl.po +++ b/addons/web_gantt/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pt.po b/addons/web_gantt/i18n/pt.po index c500fd33934..32a7e49934f 100644 --- a/addons/web_gantt/i18n/pt.po +++ b/addons/web_gantt/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pt_BR.po b/addons/web_gantt/i18n/pt_BR.po index e4afa1306b5..18793a80f0a 100644 --- a/addons/web_gantt/i18n/pt_BR.po +++ b/addons/web_gantt/i18n/pt_BR.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ro.po b/addons/web_gantt/i18n/ro.po index 2286511957b..24ced223867 100644 --- a/addons/web_gantt/i18n/ro.po +++ b/addons/web_gantt/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ru.po b/addons/web_gantt/i18n/ru.po index 5fbbdd434bf..44dbc1c3302 100644 --- a/addons/web_gantt/i18n/ru.po +++ b/addons/web_gantt/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sl.po b/addons/web_gantt/i18n/sl.po index eb922f04cde..5a9b43bbd74 100644 --- a/addons/web_gantt/i18n/sl.po +++ b/addons/web_gantt/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sq.po b/addons/web_gantt/i18n/sq.po index 1bd6fd1aa43..69ec34dffe9 100644 --- a/addons/web_gantt/i18n/sq.po +++ b/addons/web_gantt/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sr@latin.po b/addons/web_gantt/i18n/sr@latin.po index bea9d70ac70..0a061f84cbc 100644 --- a/addons/web_gantt/i18n/sr@latin.po +++ b/addons/web_gantt/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sv.po b/addons/web_gantt/i18n/sv.po index 481ce922570..bad567fbbbc 100644 --- a/addons/web_gantt/i18n/sv.po +++ b/addons/web_gantt/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/th.po b/addons/web_gantt/i18n/th.po index 87255a667c0..566f205c8d4 100644 --- a/addons/web_gantt/i18n/th.po +++ b/addons/web_gantt/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/tr.po b/addons/web_gantt/i18n/tr.po index 141f1ae13cc..55504cbbefd 100644 --- a/addons/web_gantt/i18n/tr.po +++ b/addons/web_gantt/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/zh_CN.po b/addons/web_gantt/i18n/zh_CN.po index 31ac80b4e28..816191f8511 100644 --- a/addons/web_gantt/i18n/zh_CN.po +++ b/addons/web_gantt/i18n/zh_CN.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_graph/i18n/ar.po b/addons/web_graph/i18n/ar.po index d4f73dfda2f..e3c3982dc23 100644 --- a/addons/web_graph/i18n/ar.po +++ b/addons/web_graph/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bg.po b/addons/web_graph/i18n/bg.po index 42a8fd2009c..817ff59fa43 100644 --- a/addons/web_graph/i18n/bg.po +++ b/addons/web_graph/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bn.po b/addons/web_graph/i18n/bn.po index 004f35cf4b3..a26ac389a2d 100644 --- a/addons/web_graph/i18n/bn.po +++ b/addons/web_graph/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bs.po b/addons/web_graph/i18n/bs.po index 43a45aaf7c7..081ca21c775 100644 --- a/addons/web_graph/i18n/bs.po +++ b/addons/web_graph/i18n/bs.po @@ -14,22 +14,22 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:12 #, python-format msgid "Bars" -msgstr "" +msgstr "Šipke" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:33 #, python-format msgid "Show Data" -msgstr "" +msgstr "Prikaži podatke" #. module: web_graph #. openerp-web @@ -43,95 +43,95 @@ msgstr "Graf" #: code:addons/web_graph/static/src/xml/web_graph.xml:25 #, python-format msgid "Inside" -msgstr "" +msgstr "Unutar" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "í" -msgstr "" +msgstr "í" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:11 #, python-format msgid "Pie" -msgstr "" +msgstr "Pita" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:28 #, python-format msgid "Actions" -msgstr "" +msgstr "Akcije" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:7 #, python-format msgid "Graph Mode" -msgstr "" +msgstr "Grafički mod" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:18 #, python-format msgid "Radar" -msgstr "" +msgstr "Radar" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:34 #, python-format msgid "Download as PNG" -msgstr "" +msgstr "Skini kao PNG" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:26 #, python-format msgid "Top" -msgstr "" +msgstr "Vrh" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:24 #, python-format msgid "Hidden" -msgstr "" +msgstr "Skriveno" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "Graph Options" -msgstr "" +msgstr "Opcije grafa" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:14 #, python-format msgid "Lines" -msgstr "" +msgstr "Linije" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:20 #, python-format msgid "Legend" -msgstr "" +msgstr "Legenda" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:32 #, python-format msgid "Switch Axis" -msgstr "" +msgstr "Zamjeni ose" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:15 #, python-format msgid "Areas" -msgstr "" +msgstr "Površine" diff --git a/addons/web_graph/i18n/ca.po b/addons/web_graph/i18n/ca.po index 99026f92843..511e0d76e59 100644 --- a/addons/web_graph/i18n/ca.po +++ b/addons/web_graph/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/cs.po b/addons/web_graph/i18n/cs.po index 29e9ea4455d..3e8c2192a52 100644 --- a/addons/web_graph/i18n/cs.po +++ b/addons/web_graph/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/da.po b/addons/web_graph/i18n/da.po index 43c116b45a4..cbdd80d42c5 100644 --- a/addons/web_graph/i18n/da.po +++ b/addons/web_graph/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-05 04:44+0000\n" -"X-Generator: Launchpad (build 16758)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/de.po b/addons/web_graph/i18n/de.po index 97f73bb439c..7238e499b01 100644 --- a/addons/web_graph/i18n/de.po +++ b/addons/web_graph/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/en_AU.po b/addons/web_graph/i18n/en_AU.po index 25e1a7be2b5..a0042208da3 100644 --- a/addons/web_graph/i18n/en_AU.po +++ b/addons/web_graph/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/en_GB.po b/addons/web_graph/i18n/en_GB.po index 3eaa2fbc9cd..ec3784c7557 100644 --- a/addons/web_graph/i18n/en_GB.po +++ b/addons/web_graph/i18n/en_GB.po @@ -14,22 +14,22 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:12 #, python-format msgid "Bars" -msgstr "" +msgstr "Bars" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:33 #, python-format msgid "Show Data" -msgstr "" +msgstr "Show Data" #. module: web_graph #. openerp-web @@ -43,95 +43,95 @@ msgstr "Graph" #: code:addons/web_graph/static/src/xml/web_graph.xml:25 #, python-format msgid "Inside" -msgstr "" +msgstr "Inside" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "í" -msgstr "" +msgstr "í" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:11 #, python-format msgid "Pie" -msgstr "" +msgstr "Pie" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:28 #, python-format msgid "Actions" -msgstr "" +msgstr "Actions" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:7 #, python-format msgid "Graph Mode" -msgstr "" +msgstr "Graph Mode" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:18 #, python-format msgid "Radar" -msgstr "" +msgstr "Radar" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:34 #, python-format msgid "Download as PNG" -msgstr "" +msgstr "Download as PNG" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:26 #, python-format msgid "Top" -msgstr "" +msgstr "Top" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:24 #, python-format msgid "Hidden" -msgstr "" +msgstr "Hidden" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:3 #, python-format msgid "Graph Options" -msgstr "" +msgstr "Graph Options" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:14 #, python-format msgid "Lines" -msgstr "" +msgstr "Lines" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:20 #, python-format msgid "Legend" -msgstr "" +msgstr "Legend" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:32 #, python-format msgid "Switch Axis" -msgstr "" +msgstr "Switch Axis" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:15 #, python-format msgid "Areas" -msgstr "" +msgstr "Areas" diff --git a/addons/web_graph/i18n/es.po b/addons/web_graph/i18n/es.po index 2f51d157e8c..aea985a1f51 100644 --- a/addons/web_graph/i18n/es.po +++ b/addons/web_graph/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_CL.po b/addons/web_graph/i18n/es_CL.po index 839e6929110..3cdaa9c80c7 100644 --- a/addons/web_graph/i18n/es_CL.po +++ b/addons/web_graph/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_CR.po b/addons/web_graph/i18n/es_CR.po index 7f2a105475b..aca1e09f815 100644 --- a/addons/web_graph/i18n/es_CR.po +++ b/addons/web_graph/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_DO.po b/addons/web_graph/i18n/es_DO.po index 34df7ea49c3..74d34ef1eea 100644 --- a/addons/web_graph/i18n/es_DO.po +++ b/addons/web_graph/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_EC.po b/addons/web_graph/i18n/es_EC.po index 2cf76590c27..8132e4975e2 100644 --- a/addons/web_graph/i18n/es_EC.po +++ b/addons/web_graph/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_MX.po b/addons/web_graph/i18n/es_MX.po index 0758bd06f43..3d67ece9ed4 100644 --- a/addons/web_graph/i18n/es_MX.po +++ b/addons/web_graph/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/et.po b/addons/web_graph/i18n/et.po index a35aa0fd586..9753e8d0d52 100644 --- a/addons/web_graph/i18n/et.po +++ b/addons/web_graph/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fa.po b/addons/web_graph/i18n/fa.po index ad5e7071b5c..3344da57a6c 100644 --- a/addons/web_graph/i18n/fa.po +++ b/addons/web_graph/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fi.po b/addons/web_graph/i18n/fi.po index 3ec6aa20a01..8bf753ad1bb 100644 --- a/addons/web_graph/i18n/fi.po +++ b/addons/web_graph/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fr.po b/addons/web_graph/i18n/fr.po index 13e189497f3..f2d17cb1a22 100644 --- a/addons/web_graph/i18n/fr.po +++ b/addons/web_graph/i18n/fr.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fr_CA.po b/addons/web_graph/i18n/fr_CA.po index c6af09e7fd3..b49d9069123 100644 --- a/addons/web_graph/i18n/fr_CA.po +++ b/addons/web_graph/i18n/fr_CA.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/gl.po b/addons/web_graph/i18n/gl.po index 4b7734320a1..ccc49f15c32 100644 --- a/addons/web_graph/i18n/gl.po +++ b/addons/web_graph/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/gu.po b/addons/web_graph/i18n/gu.po index 507440420e6..1130734c466 100644 --- a/addons/web_graph/i18n/gu.po +++ b/addons/web_graph/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/hr.po b/addons/web_graph/i18n/hr.po index 1d071f343cb..bf09655e415 100644 --- a/addons/web_graph/i18n/hr.po +++ b/addons/web_graph/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/hu.po b/addons/web_graph/i18n/hu.po index f0c094c862f..7fd190b4d07 100644 --- a/addons/web_graph/i18n/hu.po +++ b/addons/web_graph/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/it.po b/addons/web_graph/i18n/it.po index e9ec8d54756..6fdbb5ca907 100644 --- a/addons/web_graph/i18n/it.po +++ b/addons/web_graph/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ja.po b/addons/web_graph/i18n/ja.po index 857b6ae2e41..2c4fc09b0ca 100644 --- a/addons/web_graph/i18n/ja.po +++ b/addons/web_graph/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ka.po b/addons/web_graph/i18n/ka.po index e6ae40ce4d6..874348ad011 100644 --- a/addons/web_graph/i18n/ka.po +++ b/addons/web_graph/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ko.po b/addons/web_graph/i18n/ko.po index 75e74d33c23..f687dbcb78c 100644 --- a/addons/web_graph/i18n/ko.po +++ b/addons/web_graph/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/lt.po b/addons/web_graph/i18n/lt.po index 2587f79f2c4..c6bce0af0b3 100644 --- a/addons/web_graph/i18n/lt.po +++ b/addons/web_graph/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/mk.po b/addons/web_graph/i18n/mk.po index f4fa8c606c2..35ff3a50eca 100644 --- a/addons/web_graph/i18n/mk.po +++ b/addons/web_graph/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/mn.po b/addons/web_graph/i18n/mn.po index 74bb9f3bc49..d5ab58a61fb 100644 --- a/addons/web_graph/i18n/mn.po +++ b/addons/web_graph/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nb.po b/addons/web_graph/i18n/nb.po index fec711e9290..ee1df9ac0e5 100644 --- a/addons/web_graph/i18n/nb.po +++ b/addons/web_graph/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nl.po b/addons/web_graph/i18n/nl.po index a49a49e053f..febaa8807c4 100644 --- a/addons/web_graph/i18n/nl.po +++ b/addons/web_graph/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-11-25 07:04+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nl_BE.po b/addons/web_graph/i18n/nl_BE.po index a20da382ea5..6c614e8e939 100644 --- a/addons/web_graph/i18n/nl_BE.po +++ b/addons/web_graph/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pl.po b/addons/web_graph/i18n/pl.po index 6b4c6c08be7..b5ee36ce3f7 100644 --- a/addons/web_graph/i18n/pl.po +++ b/addons/web_graph/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pt.po b/addons/web_graph/i18n/pt.po index c6ed95d86bd..45dab7e5352 100644 --- a/addons/web_graph/i18n/pt.po +++ b/addons/web_graph/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pt_BR.po b/addons/web_graph/i18n/pt_BR.po index b8361a403b8..347d1037f9a 100644 --- a/addons/web_graph/i18n/pt_BR.po +++ b/addons/web_graph/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ro.po b/addons/web_graph/i18n/ro.po index cbcfbaf8019..6b3eaa1391e 100644 --- a/addons/web_graph/i18n/ro.po +++ b/addons/web_graph/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ru.po b/addons/web_graph/i18n/ru.po index f1a0efa27ef..27e645292f5 100644 --- a/addons/web_graph/i18n/ru.po +++ b/addons/web_graph/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sl.po b/addons/web_graph/i18n/sl.po index 116937e2ca7..7b8e7f06db4 100644 --- a/addons/web_graph/i18n/sl.po +++ b/addons/web_graph/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sq.po b/addons/web_graph/i18n/sq.po index c4100f3750f..0bc3aa106de 100644 --- a/addons/web_graph/i18n/sq.po +++ b/addons/web_graph/i18n/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:55+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sr@latin.po b/addons/web_graph/i18n/sr@latin.po index 4230171cac9..19cf6f5be75 100644 --- a/addons/web_graph/i18n/sr@latin.po +++ b/addons/web_graph/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sv.po b/addons/web_graph/i18n/sv.po index 4cf13d34687..5f6aec30252 100644 --- a/addons/web_graph/i18n/sv.po +++ b/addons/web_graph/i18n/sv.po @@ -14,22 +14,22 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:12 #, python-format msgid "Bars" -msgstr "" +msgstr "Staplar" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:33 #, python-format msgid "Show Data" -msgstr "" +msgstr "Visa data" #. module: web_graph #. openerp-web @@ -43,7 +43,7 @@ msgstr "Diagram" #: code:addons/web_graph/static/src/xml/web_graph.xml:25 #, python-format msgid "Inside" -msgstr "" +msgstr "Inuti" #. module: web_graph #. openerp-web @@ -57,42 +57,42 @@ msgstr "" #: code:addons/web_graph/static/src/xml/web_graph.xml:11 #, python-format msgid "Pie" -msgstr "" +msgstr "Tårta" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:28 #, python-format msgid "Actions" -msgstr "" +msgstr "Åtgärder" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:7 #, python-format msgid "Graph Mode" -msgstr "" +msgstr "Grafisk mod" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:18 #, python-format msgid "Radar" -msgstr "" +msgstr "Radar" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:34 #, python-format msgid "Download as PNG" -msgstr "" +msgstr "Hämta som PNG" #. module: web_graph #. openerp-web #: code:addons/web_graph/static/src/xml/web_graph.xml:26 #, python-format msgid "Top" -msgstr "" +msgstr "Överst" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/th.po b/addons/web_graph/i18n/th.po index ab9c36f1003..993451b8935 100644 --- a/addons/web_graph/i18n/th.po +++ b/addons/web_graph/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/tr.po b/addons/web_graph/i18n/tr.po index 91f56013311..0f10cd9d8ae 100644 --- a/addons/web_graph/i18n/tr.po +++ b/addons/web_graph/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/zh_CN.po b/addons/web_graph/i18n/zh_CN.po index e84f01901ea..a02d94eb520 100644 --- a/addons/web_graph/i18n/zh_CN.po +++ b/addons/web_graph/i18n/zh_CN.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_kanban/i18n/ar.po b/addons/web_kanban/i18n/ar.po index 9a8d807e84a..c1a7f072a91 100644 --- a/addons/web_kanban/i18n/ar.po +++ b/addons/web_kanban/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bg.po b/addons/web_kanban/i18n/bg.po index f308f964365..e3baab1785b 100644 --- a/addons/web_kanban/i18n/bg.po +++ b/addons/web_kanban/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bn.po b/addons/web_kanban/i18n/bn.po index a882bb0e6a5..7c1c9c20c11 100644 --- a/addons/web_kanban/i18n/bn.po +++ b/addons/web_kanban/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bs.po b/addons/web_kanban/i18n/bs.po index 1cfdd4a904e..848d0717192 100644 --- a/addons/web_kanban/i18n/bs.po +++ b/addons/web_kanban/i18n/bs.po @@ -14,15 +14,15 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:689 #, python-format msgid "Edit column" -msgstr "" +msgstr "Uredi kolonu" #. module: web_kanban #. openerp-web @@ -36,7 +36,7 @@ msgstr "" #: code:addons/web_kanban/static/src/js/kanban.js:10 #, python-format msgid "Kanban" -msgstr "" +msgstr "Kanban" #. module: web_kanban #. openerp-web @@ -50,35 +50,35 @@ msgstr "Nedefinisano" #: code:addons/web_kanban/static/src/js/kanban.js:708 #, python-format msgid "Are you sure to remove this column ?" -msgstr "" +msgstr "Dali ste sigurni da želite ukloniti ovu kolonu?" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:47 #, python-format msgid "Edit" -msgstr "" +msgstr "Uredi" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:192 #, python-format msgid "Add column" -msgstr "" +msgstr "Dodaj kolonu" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:1085 #, python-format msgid "Create: " -msgstr "" +msgstr "Kreiraj: " #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:24 #, python-format msgid "Add a new column" -msgstr "" +msgstr "Dodaj novu kolonu" #. module: web_kanban #. openerp-web @@ -86,21 +86,21 @@ msgstr "" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:45 #, python-format msgid "Fold" -msgstr "" +msgstr "Skupi" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:98 #, python-format msgid "Add" -msgstr "" +msgstr "Dodaj" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:35 #, python-format msgid "Quick create" -msgstr "" +msgstr "Brzo kreiraj" #. module: web_kanban #. openerp-web @@ -114,7 +114,7 @@ msgstr "Jeste li sigurni da želite izbrisati zapis?" #: code:addons/web_kanban/static/src/js/kanban.js:680 #, python-format msgid "Unfold" -msgstr "" +msgstr "Raširi" #. module: web_kanban #. openerp-web @@ -128,7 +128,7 @@ msgstr "Prikaži više" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:99 #, python-format msgid "Cancel" -msgstr "" +msgstr "Otkaži" #. module: web_kanban #. openerp-web @@ -143,7 +143,7 @@ msgstr "Preostalo" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:98 #, python-format msgid "or" -msgstr "" +msgstr "ili" #. module: web_kanban #. openerp-web @@ -151,14 +151,14 @@ msgstr "" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:55 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:48 #, python-format msgid "Delete" -msgstr "" +msgstr "Obriši" #~ msgid "Create" #~ msgstr "Kreiraj" diff --git a/addons/web_kanban/i18n/ca.po b/addons/web_kanban/i18n/ca.po index 9f213d8d870..88b1cd9b233 100644 --- a/addons/web_kanban/i18n/ca.po +++ b/addons/web_kanban/i18n/ca.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/cs.po b/addons/web_kanban/i18n/cs.po index 47935b16d15..92c7604b341 100644 --- a/addons/web_kanban/i18n/cs.po +++ b/addons/web_kanban/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" "X-Poedit-Language: Czech\n" #. module: web_kanban diff --git a/addons/web_kanban/i18n/da.po b/addons/web_kanban/i18n/da.po index f05caf0ab21..6c887ab0a50 100644 --- a/addons/web_kanban/i18n/da.po +++ b/addons/web_kanban/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/de.po b/addons/web_kanban/i18n/de.po index 7bca2ae5a45..18f2287c2ca 100644 --- a/addons/web_kanban/i18n/de.po +++ b/addons/web_kanban/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/en_AU.po b/addons/web_kanban/i18n/en_AU.po index 5584f3768c4..72e21251f1b 100644 --- a/addons/web_kanban/i18n/en_AU.po +++ b/addons/web_kanban/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/en_GB.po b/addons/web_kanban/i18n/en_GB.po index 35b05b54812..21dc540b224 100644 --- a/addons/web_kanban/i18n/en_GB.po +++ b/addons/web_kanban/i18n/en_GB.po @@ -14,15 +14,15 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:689 #, python-format msgid "Edit column" -msgstr "" +msgstr "Edit column" #. module: web_kanban #. openerp-web @@ -50,35 +50,35 @@ msgstr "Undefined" #: code:addons/web_kanban/static/src/js/kanban.js:708 #, python-format msgid "Are you sure to remove this column ?" -msgstr "" +msgstr "Are you sure to remove this column ?" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:47 #, python-format msgid "Edit" -msgstr "" +msgstr "Edit" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:192 #, python-format msgid "Add column" -msgstr "" +msgstr "Add column" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/js/kanban.js:1085 #, python-format msgid "Create: " -msgstr "" +msgstr "Create: " #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:24 #, python-format msgid "Add a new column" -msgstr "" +msgstr "Add a new column" #. module: web_kanban #. openerp-web @@ -86,21 +86,21 @@ msgstr "" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:45 #, python-format msgid "Fold" -msgstr "" +msgstr "Fold" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:98 #, python-format msgid "Add" -msgstr "" +msgstr "Add" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:35 #, python-format msgid "Quick create" -msgstr "" +msgstr "Quick create" #. module: web_kanban #. openerp-web @@ -114,7 +114,7 @@ msgstr "Are you sure you want to delete this record ?" #: code:addons/web_kanban/static/src/js/kanban.js:680 #, python-format msgid "Unfold" -msgstr "" +msgstr "Unfold" #. module: web_kanban #. openerp-web @@ -128,7 +128,7 @@ msgstr "Show more... (" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:99 #, python-format msgid "Cancel" -msgstr "" +msgstr "Cancel" #. module: web_kanban #. openerp-web @@ -143,7 +143,7 @@ msgstr "remaining)" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:98 #, python-format msgid "or" -msgstr "" +msgstr "or" #. module: web_kanban #. openerp-web @@ -151,14 +151,14 @@ msgstr "" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:55 #, python-format msgid "99+" -msgstr "" +msgstr "99+" #. module: web_kanban #. openerp-web #: code:addons/web_kanban/static/src/xml/web_kanban.xml:48 #, python-format msgid "Delete" -msgstr "" +msgstr "Delete" #~ msgid "</tr><tr>" #~ msgstr "</tr><tr>" diff --git a/addons/web_kanban/i18n/es.po b/addons/web_kanban/i18n/es.po index cda06227eed..ab0d2507fdf 100644 --- a/addons/web_kanban/i18n/es.po +++ b/addons/web_kanban/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_CL.po b/addons/web_kanban/i18n/es_CL.po index b9d8fb1f8f4..ff65dfadfe3 100644 --- a/addons/web_kanban/i18n/es_CL.po +++ b/addons/web_kanban/i18n/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_CR.po b/addons/web_kanban/i18n/es_CR.po index 112b4ba1cfd..5757f0ce0b4 100644 --- a/addons/web_kanban/i18n/es_CR.po +++ b/addons/web_kanban/i18n/es_CR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_DO.po b/addons/web_kanban/i18n/es_DO.po index 8cdc02b9158..62fcecb6a14 100644 --- a/addons/web_kanban/i18n/es_DO.po +++ b/addons/web_kanban/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_EC.po b/addons/web_kanban/i18n/es_EC.po index 9ae2c565b68..751e30efb4d 100644 --- a/addons/web_kanban/i18n/es_EC.po +++ b/addons/web_kanban/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_MX.po b/addons/web_kanban/i18n/es_MX.po index 63b80f8fbeb..5fcc71aec98 100644 --- a/addons/web_kanban/i18n/es_MX.po +++ b/addons/web_kanban/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/et.po b/addons/web_kanban/i18n/et.po index 4d56c02e779..f4f1b487f7f 100644 --- a/addons/web_kanban/i18n/et.po +++ b/addons/web_kanban/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fa.po b/addons/web_kanban/i18n/fa.po index 74dbb5183f7..c5a1d99114f 100644 --- a/addons/web_kanban/i18n/fa.po +++ b/addons/web_kanban/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fi.po b/addons/web_kanban/i18n/fi.po index 54647e1e924..cb46a1a5c24 100644 --- a/addons/web_kanban/i18n/fi.po +++ b/addons/web_kanban/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fr.po b/addons/web_kanban/i18n/fr.po index 0d42f526456..737df04bcb4 100644 --- a/addons/web_kanban/i18n/fr.po +++ b/addons/web_kanban/i18n/fr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fr_CA.po b/addons/web_kanban/i18n/fr_CA.po index ea3bdf3c1d2..621024586a7 100644 --- a/addons/web_kanban/i18n/fr_CA.po +++ b/addons/web_kanban/i18n/fr_CA.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/gl.po b/addons/web_kanban/i18n/gl.po index 13cfe984825..73ae24b5c76 100644 --- a/addons/web_kanban/i18n/gl.po +++ b/addons/web_kanban/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/gu.po b/addons/web_kanban/i18n/gu.po index 524294faef8..6b8ac49e368 100644 --- a/addons/web_kanban/i18n/gu.po +++ b/addons/web_kanban/i18n/gu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/hr.po b/addons/web_kanban/i18n/hr.po index 22ae167cf1b..cbfe9181eec 100644 --- a/addons/web_kanban/i18n/hr.po +++ b/addons/web_kanban/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/hu.po b/addons/web_kanban/i18n/hu.po index 304a8274643..b6a502ee714 100644 --- a/addons/web_kanban/i18n/hu.po +++ b/addons/web_kanban/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/it.po b/addons/web_kanban/i18n/it.po index 201aedc19fc..3de8c207175 100644 --- a/addons/web_kanban/i18n/it.po +++ b/addons/web_kanban/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ja.po b/addons/web_kanban/i18n/ja.po index b7349b818f7..a2af5f8a435 100644 --- a/addons/web_kanban/i18n/ja.po +++ b/addons/web_kanban/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ka.po b/addons/web_kanban/i18n/ka.po index 5c456dfe75b..d6a0c0bc1cb 100644 --- a/addons/web_kanban/i18n/ka.po +++ b/addons/web_kanban/i18n/ka.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ko.po b/addons/web_kanban/i18n/ko.po index 2bc3fbf98ef..5d9885c8082 100644 --- a/addons/web_kanban/i18n/ko.po +++ b/addons/web_kanban/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/lt.po b/addons/web_kanban/i18n/lt.po index ef3283baf83..e19ed10dd6c 100644 --- a/addons/web_kanban/i18n/lt.po +++ b/addons/web_kanban/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/mk.po b/addons/web_kanban/i18n/mk.po index 8b7627b7252..420c9b8a0ff 100644 --- a/addons/web_kanban/i18n/mk.po +++ b/addons/web_kanban/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/mn.po b/addons/web_kanban/i18n/mn.po index 2fcf1953293..e6dde579c9b 100644 --- a/addons/web_kanban/i18n/mn.po +++ b/addons/web_kanban/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nb.po b/addons/web_kanban/i18n/nb.po index 37039377cce..846e73d2569 100644 --- a/addons/web_kanban/i18n/nb.po +++ b/addons/web_kanban/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nl.po b/addons/web_kanban/i18n/nl.po index 99356210d67..c63997c7c31 100644 --- a/addons/web_kanban/i18n/nl.po +++ b/addons/web_kanban/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-05 07:53+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nl_BE.po b/addons/web_kanban/i18n/nl_BE.po index 9c97e1c234b..5fd12d94042 100644 --- a/addons/web_kanban/i18n/nl_BE.po +++ b/addons/web_kanban/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pl.po b/addons/web_kanban/i18n/pl.po index 7f67e44fc16..7d96ea29456 100644 --- a/addons/web_kanban/i18n/pl.po +++ b/addons/web_kanban/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pt.po b/addons/web_kanban/i18n/pt.po index d5429321119..dd9fd77716c 100644 --- a/addons/web_kanban/i18n/pt.po +++ b/addons/web_kanban/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pt_BR.po b/addons/web_kanban/i18n/pt_BR.po index c913979a141..38dfda57ed4 100644 --- a/addons/web_kanban/i18n/pt_BR.po +++ b/addons/web_kanban/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web @@ -107,7 +107,7 @@ msgstr "Criar rapidamente" #: code:addons/web_kanban/static/src/js/kanban.js:921 #, python-format msgid "Are you sure you want to delete this record ?" -msgstr "Você tem certeza que quer excluir este registro ?" +msgstr "Você tem certeza que quer excluir este registro?" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ro.po b/addons/web_kanban/i18n/ro.po index 3a817f0e611..16a9a101c5a 100644 --- a/addons/web_kanban/i18n/ro.po +++ b/addons/web_kanban/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ru.po b/addons/web_kanban/i18n/ru.po index e6efcf7028e..36cf3db7a05 100644 --- a/addons/web_kanban/i18n/ru.po +++ b/addons/web_kanban/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sl.po b/addons/web_kanban/i18n/sl.po index fd423275403..d84ef8bebb4 100644 --- a/addons/web_kanban/i18n/sl.po +++ b/addons/web_kanban/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sr@latin.po b/addons/web_kanban/i18n/sr@latin.po index 9fcdfc171e7..a78c0dc66a0 100644 --- a/addons/web_kanban/i18n/sr@latin.po +++ b/addons/web_kanban/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sv.po b/addons/web_kanban/i18n/sv.po index 4015f96191a..2870ef78ba1 100644 --- a/addons/web_kanban/i18n/sv.po +++ b/addons/web_kanban/i18n/sv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/th.po b/addons/web_kanban/i18n/th.po index 2190f1fa152..6b62160cbac 100644 --- a/addons/web_kanban/i18n/th.po +++ b/addons/web_kanban/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/tr.po b/addons/web_kanban/i18n/tr.po index 358e9a3318f..8ad6707f649 100644 --- a/addons/web_kanban/i18n/tr.po +++ b/addons/web_kanban/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/zh_CN.po b/addons/web_kanban/i18n/zh_CN.po index 3e9baac3fc0..6238cd9fb41 100644 --- a/addons/web_kanban/i18n/zh_CN.po +++ b/addons/web_kanban/i18n/zh_CN.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-01 14:51+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\n" +"Last-Translator: 盈通 ccdos <ccdos@intoerp.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/zh_TW.po b/addons/web_kanban/i18n/zh_TW.po index a535c3603d1..db433c9aa23 100644 --- a/addons/web_kanban/i18n/zh_TW.po +++ b/addons/web_kanban/i18n/zh_TW.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 6f5bf241e17..731fab430b9 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -5,7 +5,6 @@ } .openerp .oe_kanban_view .oe_view_nocontent { position: relative; - z-index: 1; max-width: none; height: 100%; } @@ -91,9 +90,6 @@ .openerp .oe_kanban_view .oe_kanban_groups { height: inherit; } -.openerp .oe_kanban_view.oe_kanban_ungrouped .oe_kanban_groups { - width: 100%; -} .openerp .oe_kanban_view.oe_kanban_grouped_by_m2o .oe_kanban_group_title { cursor: move; } diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index de06990ebb7..dfca3b09d50 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -53,7 +53,6 @@ height: inherit .oe_view_nocontent position: relative - z-index: 1 max-width: none height: 100% .oe_view_nocontent_content @@ -118,8 +117,6 @@ // KanbanGroups {{{ .oe_kanban_groups height: inherit - &.oe_kanban_ungrouped .oe_kanban_groups - width: 100% &.oe_kanban_grouped_by_m2o .oe_kanban_group_title cursor: move .oe_kanban_header diff --git a/addons/web_kanban_gauge/__init__.py b/addons/web_kanban_gauge/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/addons/web_kanban_gauge/__init__.py diff --git a/addons/web_kanban_gauge/__openerp__.py b/addons/web_kanban_gauge/__openerp__.py new file mode 100644 index 00000000000..fd4c2cfba66 --- /dev/null +++ b/addons/web_kanban_gauge/__openerp__.py @@ -0,0 +1,18 @@ +{ + 'name': 'Gauge Widget for Kanban', + 'category': 'Hidden', + 'description': """ +This widget allows to display gauges using justgage library. +""", + 'version': '1.0', + 'depends': ['web_kanban'], + 'js': [ + 'static/lib/justgage/justgage.js', + 'static/src/js/kanban_gauge.js' + ], + 'css': [ + ], + 'qweb': [ + ], + 'auto_install': False, +} diff --git a/addons/web_kanban_gauge/doc/changelog.rst b/addons/web_kanban_gauge/doc/changelog.rst new file mode 100644 index 00000000000..5b3e8fb6857 --- /dev/null +++ b/addons/web_kanban_gauge/doc/changelog.rst @@ -0,0 +1,10 @@ +.. _changelog: + +Changelog +========= + +`trunk (saas-2)` +---------------- + + - Module ``web_kanban_gauge`` created. It comes from the refactoring of + custom kanban widgets used in other modules, now standardized. diff --git a/addons/web_kanban_gauge/doc/index.rst b/addons/web_kanban_gauge/doc/index.rst new file mode 100644 index 00000000000..5c5740853d4 --- /dev/null +++ b/addons/web_kanban_gauge/doc/index.rst @@ -0,0 +1,10 @@ +Gauge for Kanban module documentation +====================================== + +Changelog +''''''''' + +.. toctree:: + :maxdepth: 1 + + changelog.rst diff --git a/addons/web_kanban_gauge/static/lib/justgage/justgage.js b/addons/web_kanban_gauge/static/lib/justgage/justgage.js new file mode 100644 index 00000000000..24540beb293 --- /dev/null +++ b/addons/web_kanban_gauge/static/lib/justgage/justgage.js @@ -0,0 +1,946 @@ +/**
+ * JustGage - this is work-in-progress, unreleased, unofficial code, so it might not work top-notch :)
+ * Check http://www.justgage.com for official releases
+ * Licensed under MIT.
+ * @author Bojan Djuricic (@Toorshia)
+ *
+ * LATEST UPDATES
+
+ * -----------------------------
+ * April 18, 2013.
+ * -----------------------------
+ * parentNode - use this instead of id, to attach gauge to node which is outside of DOM tree - https://github.com/toorshia/justgage/issues/48
+ * width - force gauge width
+ * height - force gauge height
+
+ * -----------------------------
+ * April 17, 2013.
+ * -----------------------------
+ * fix - https://github.com/toorshia/justgage/issues/49
+
+ * -----------------------------
+ * April 01, 2013.
+ * -----------------------------
+ * fix - https://github.com/toorshia/justgage/issues/46
+
+ * -----------------------------
+ * March 26, 2013.
+ * -----------------------------
+ * customSectors - define specific color for value range (0-10 : red, 10-30 : blue etc.)
+
+ * -----------------------------
+ * March 23, 2013.
+ * -----------------------------
+ * counter - option to animate value in counting fashion
+ * fix - https://github.com/toorshia/justgage/issues/45
+
+ * -----------------------------
+ * March 13, 2013.
+ * -----------------------------
+ * refresh method - added optional 'max' parameter to use when you need to update max value
+
+ * -----------------------------
+ * February 26, 2013.
+ * -----------------------------
+ * decimals - option to define/limit number of decimals when not using humanFriendly or customRenderer to display value
+ * fixed a missing parameters bug when calling generateShadow() for IE < 9
+
+ * -----------------------------
+ * December 31, 2012.
+ * -----------------------------
+ * fixed text y-position for hidden divs - workaround for Raphael <tspan> 'dy' bug - https://github.com/DmitryBaranovskiy/raphael/issues/491
+ * 'show' parameters, like showMinMax are now 'hide' because I am lame developer - please update these in your setups
+ * Min and Max labels are now auto-off when in donut mode
+ * Start angle in donut mode is now 90
+ * donutStartAngle - option to define start angle for donut
+
+ * -----------------------------
+ * November 25, 2012.
+ * -----------------------------
+ * Option to define custom rendering function for displayed value
+
+ * -----------------------------
+ * November 19, 2012.
+ * -----------------------------
+ * Config.value is now updated after gauge refresh
+
+ * -----------------------------
+ * November 13, 2012.
+ * -----------------------------
+ * Donut display mode added
+ * Option to hide value label
+ * Option to enable responsive gauge size
+ * Removed default title attribute
+ * Option to accept min and max defined as string values
+ * Option to configure value symbol
+ * Fixed bad aspect ratio calculations
+ * Option to configure minimum font size for all texts
+ * Option to show shorthand big numbers (human friendly)
+ */
+
+ JustGage = function(config) {
+
+ // if (!config.id) {alert("Missing id parameter for gauge!"); return false;}
+ // if (!document.getElementById(config.id)) {alert("No element with id: \""+config.id+"\" found!"); return false;}
+
+ var obj = this;
+
+ // configurable parameters
+ obj.config =
+ {
+ // id : string
+ // this is container element id
+ id : config.id,
+
+ // parentNode : node object
+ // this is container element
+ parentNode : (config.parentNode) ? config.parentNode : null,
+
+ // width : int
+ // gauge width
+ width : (config.width) ? config.width : null,
+
+ // height : int
+ // gauge height
+ height : (config.height) ? config.height : null,
+
+ // title : string
+ // gauge title
+ title : (config.title) ? config.title : "",
+
+ // titleFontColor : string
+ // color of gauge title
+ titleFontColor : (config.titleFontColor) ? config.titleFontColor : "#999999",
+
+ // value : int
+ // value gauge is showing
+ value : (config.value) ? config.value : 0,
+
+ // valueFontColor : string
+ // color of label showing current value
+ valueFontColor : (config.valueFontColor) ? config.valueFontColor : "#010101",
+
+ // symbol : string
+ // special symbol to show next to value
+ symbol : (config.symbol) ? config.symbol : "",
+
+ // min : int
+ // min value
+ min : (config.min !== undefined) ? parseFloat(config.min) : 0,
+
+ // max : int
+ // max value
+ max : (config.max !== undefined) ? parseFloat(config.max) : 100,
+
+ // humanFriendlyDecimal : int
+ // number of decimal places for our human friendly number to contain
+ humanFriendlyDecimal : (config.humanFriendlyDecimal) ? config.humanFriendlyDecimal : 0,
+
+ // textRenderer: func
+ // function applied before rendering text
+ textRenderer : (config.textRenderer) ? config.textRenderer : null,
+
+ // gaugeWidthScale : float
+ // width of the gauge element
+ gaugeWidthScale : (config.gaugeWidthScale) ? config.gaugeWidthScale : 1.0,
+
+ // gaugeColor : string
+ // background color of gauge element
+ gaugeColor : (config.gaugeColor) ? config.gaugeColor : "#edebeb",
+
+ // label : string
+ // text to show below value
+ label : (config.label) ? config.label : "",
+
+ // labelFontColor : string
+ // color of label showing label under value
+ labelFontColor : (config.labelFontColor) ? config.labelFontColor : "#b3b3b3",
+
+ // shadowOpacity : int
+ // 0 ~ 1
+ shadowOpacity : (config.shadowOpacity) ? config.shadowOpacity : 0.2,
+
+ // shadowSize: int
+ // inner shadow size
+ shadowSize : (config.shadowSize) ? config.shadowSize : 5,
+
+ // shadowVerticalOffset : int
+ // how much shadow is offset from top
+ shadowVerticalOffset : (config.shadowVerticalOffset) ? config.shadowVerticalOffset : 3,
+
+ // levelColors : string[]
+ // colors of indicator, from lower to upper, in RGB format
+ levelColors : (config.levelColors) ? config.levelColors : [
+ "#a9d70b",
+ "#f9c802",
+ "#ff0000"
+ ],
+
+ // startAnimationTime : int
+ // length of initial animation
+ startAnimationTime : (config.startAnimationTime) ? config.startAnimationTime : 700,
+
+ // startAnimationType : string
+ // type of initial animation (linear, >, <, <>, bounce)
+ startAnimationType : (config.startAnimationType) ? config.startAnimationType : ">",
+
+ // refreshAnimationTime : int
+ // length of refresh animation
+ refreshAnimationTime : (config.refreshAnimationTime) ? config.refreshAnimationTime : 700,
+
+ // refreshAnimationType : string
+ // type of refresh animation (linear, >, <, <>, bounce)
+ refreshAnimationType : (config.refreshAnimationType) ? config.refreshAnimationType : ">",
+
+ // donutStartAngle : int
+ // angle to start from when in donut mode
+ donutStartAngle : (config.donutStartAngle) ? config.donutStartAngle : 90,
+
+ // valueMinFontSize : int
+ // absolute minimum font size for the value
+ valueMinFontSize : config.valueMinFontSize || 16,
+
+ // titleMinFontSize
+ // absolute minimum font size for the title
+ titleMinFontSize : config.titleMinFontSize || 10,
+
+ // labelMinFontSize
+ // absolute minimum font size for the label
+ labelMinFontSize : config.labelMinFontSize || 10,
+
+ // minLabelMinFontSize
+ // absolute minimum font size for the minimum label
+ minLabelMinFontSize : config.minLabelMinFontSize || 10,
+
+ // maxLabelMinFontSize
+ // absolute minimum font size for the maximum label
+ maxLabelMinFontSize : config.maxLabelMinFontSize || 10,
+
+ // hideValue : bool
+ // hide value text
+ hideValue : (config.hideValue) ? config.hideValue : false,
+
+ // hideMinMax : bool
+ // hide min and max values
+ hideMinMax : (config.hideMinMax) ? config.hideMinMax : false,
+
+ // hideInnerShadow : bool
+ // hide inner shadow
+ hideInnerShadow : (config.hideInnerShadow) ? config.hideInnerShadow : false,
+
+ // humanFriendly : bool
+ // convert large numbers for min, max, value to human friendly (e.g. 1234567 -> 1.23M)
+ humanFriendly : (config.humanFriendly) ? config.humanFriendly : false,
+
+ // noGradient : bool
+ // whether to use gradual color change for value, or sector-based
+ noGradient : (config.noGradient) ? config.noGradient : false,
+
+ // donut : bool
+ // show full donut gauge
+ donut : (config.donut) ? config.donut : false,
+
+ // relativeGaugeSize : bool
+ // whether gauge size should follow changes in container element size
+ relativeGaugeSize : (config.relativeGaugeSize) ? config.relativeGaugeSize : false,
+
+ // counter : bool
+ // animate level number change
+ counter : (config.counter) ? config.counter : false,
+
+ // decimals : int
+ // number of digits after floating point
+ decimals : (config.decimals) ? config.decimals : 0,
+
+ // customSectors : [] of objects
+ // number of digits after floating point
+ customSectors : (config.customSectors) ? config.customSectors : []
+ };
+
+ // variables
+ var
+ canvasW,
+ canvasH,
+ widgetW,
+ widgetH,
+ aspect,
+ dx,
+ dy,
+ titleFontSize,
+ titleX,
+ titleY,
+ valueFontSize,
+ valueX,
+ valueY,
+ labelFontSize,
+ labelX,
+ labelY,
+ minFontSize,
+ minX,
+ minY,
+ maxFontSize,
+ maxX,
+ maxY;
+
+ // overflow values
+ if (obj.config.value > obj.config.max) obj.config.value = obj.config.max;
+ if (obj.config.value < obj.config.min) obj.config.value = obj.config.min;
+ obj.originalValue = config.value;
+
+ // create canvas
+ if (obj.config.id !== null && (document.getElementById(obj.config.id)) !== null) {
+ obj.canvas = Raphael(obj.config.id, "100%", "100%");
+ } else if (obj.config.parentNode !== null) {
+ obj.canvas = Raphael(obj.config.parentNode, "100%", "100%");
+ }
+
+ if (obj.config.relativeGaugeSize === true) {
+ obj.canvas.setViewBox(0, 0, 200, 150, true);
+ }
+
+ // canvas dimensions
+ if (obj.config.relativeGaugeSize === true) {
+ canvasW = 200;
+ canvasH = 150;
+ } else if (obj.config.width !== null && obj.config.height !== null) {
+ canvasW = obj.config.width;
+ canvasH = obj.config.height;
+ } else if (obj.config.parentNode !== null) {
+ obj.canvas.setViewBox(0, 0, 200, 150, true);
+ canvasW = 200;
+ canvasH = 150;
+ } else {
+ canvasW = getStyle(document.getElementById(obj.config.id), "width").slice(0, -2) * 1;
+ canvasH = getStyle(document.getElementById(obj.config.id), "height").slice(0, -2) * 1;
+ }
+
+ // widget dimensions
+ if (obj.config.donut === true) {
+
+ // DONUT *******************************
+
+ // width more than height
+ if(canvasW > canvasH) {
+ widgetH = canvasH;
+ widgetW = widgetH;
+ // width less than height
+ } else if (canvasW < canvasH) {
+ widgetW = canvasW;
+ widgetH = widgetW;
+ // if height don't fit, rescale both
+ if(widgetH > canvasH) {
+ aspect = widgetH / canvasH;
+ widgetH = widgetH / aspect;
+ widgetW = widgetH / aspect;
+ }
+ // equal
+ } else {
+ widgetW = canvasW;
+ widgetH = widgetW;
+ }
+
+ // delta
+ dx = (canvasW - widgetW)/2;
+ dy = (canvasH - widgetH)/2;
+
+ // title
+ titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10;
+ titleX = dx + widgetW / 2;
+ titleY = dy + widgetH / 11;
+
+ // value
+ valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18;
+ valueX = dx + widgetW / 2;
+ if(obj.config.label !== '') {
+ valueY = dy + widgetH / 1.85;
+ } else {
+ valueY = dy + widgetH / 1.7;
+ }
+
+ // label
+ labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+ labelX = dx + widgetW / 2;
+ labelY = valueY + labelFontSize;
+
+ // min
+ minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+ minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
+ minY = labelY;
+
+ // max
+ maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10;
+ maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
+ maxY = labelY;
+
+ } else {
+ // HALF *******************************
+
+ // width more than height
+ if(canvasW > canvasH) {
+ widgetH = canvasH;
+ widgetW = widgetH * 1.25;
+ //if width doesn't fit, rescale both
+ if(widgetW > canvasW) {
+ aspect = widgetW / canvasW;
+ widgetW = widgetW / aspect;
+ widgetH = widgetH / aspect;
+ }
+ // width less than height
+ } else if (canvasW < canvasH) {
+ widgetW = canvasW;
+ widgetH = widgetW / 1.25;
+ // if height don't fit, rescale both
+ if(widgetH > canvasH) {
+ aspect = widgetH / canvasH;
+ widgetH = widgetH / aspect;
+ widgetW = widgetH / aspect;
+ }
+ // equal
+ } else {
+ widgetW = canvasW;
+ widgetH = widgetW * 0.75;
+ }
+
+ // delta
+ dx = (canvasW - widgetW)/2;
+ dy = (canvasH - widgetH)/2;
+
+ // title
+ titleFontSize = ((widgetH / 8) > obj.config.titleMinFontSize) ? (widgetH / 10) : obj.config.titleMinFontSize;
+ titleX = dx + widgetW / 2;
+ titleY = dy + widgetH / 6.4;
+
+ // value
+ valueFontSize = ((widgetH / 6.5) > obj.config.valueMinFontSize) ? (widgetH / 6.5) : obj.config.valueMinFontSize;
+ valueX = dx + widgetW / 2;
+ valueY = dy + widgetH / 1.275;
+
+ // label
+ labelFontSize = ((widgetH / 16) > obj.config.labelMinFontSize) ? (widgetH / 16) : obj.config.labelMinFontSize;
+ labelX = dx + widgetW / 2;
+ labelY = valueY + valueFontSize / 2 + 5;
+
+ // min
+ minFontSize = ((widgetH / 16) > obj.config.minLabelMinFontSize) ? (widgetH / 16) : obj.config.minLabelMinFontSize;
+ minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
+ minY = labelY;
+
+ // max
+ maxFontSize = ((widgetH / 16) > obj.config.maxLabelMinFontSize) ? (widgetH / 16) : obj.config.maxLabelMinFontSize;
+ maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2 ;
+ maxY = labelY;
+ }
+
+ // parameters
+ obj.params = {
+ canvasW : canvasW,
+ canvasH : canvasH,
+ widgetW : widgetW,
+ widgetH : widgetH,
+ dx : dx,
+ dy : dy,
+ titleFontSize : titleFontSize,
+ titleX : titleX,
+ titleY : titleY,
+ valueFontSize : valueFontSize,
+ valueX : valueX,
+ valueY : valueY,
+ labelFontSize : labelFontSize,
+ labelX : labelX,
+ labelY : labelY,
+ minFontSize : minFontSize,
+ minX : minX,
+ minY : minY,
+ maxFontSize : maxFontSize,
+ maxX : maxX,
+ maxY : maxY
+ };
+
+ // var clear
+ canvasW, canvasH, widgetW, widgetH, aspect, dx, dy, titleFontSize, titleX, titleY, valueFontSize, valueX, valueY, labelFontSize, labelX, labelY, minFontSize, minX, minY, maxFontSize, maxX, maxY = null
+
+ // pki - custom attribute for generating gauge paths
+ obj.canvas.customAttributes.pki = function (value, min, max, w, h, dx, dy, gws, donut) {
+
+ var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path;
+
+ if (donut) {
+ alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI;
+ Ro = w / 2 - w / 7;
+ Ri = Ro - w / 6.666666666666667 * gws;
+
+ Cx = w / 2 + dx;
+ Cy = h / 1.95 + dy;
+
+ Xo = w / 2 + dx + Ro * Math.cos(alpha);
+ Yo = h - (h - Cy) + 0 - Ro * Math.sin(alpha);
+ Xi = w / 2 + dx + Ri * Math.cos(alpha);
+ Yi = h - (h - Cy) + 0 - Ri * Math.sin(alpha);
+
+ path += "M" + (Cx - Ri) + "," + Cy + " ";
+ path += "L" + (Cx - Ro) + "," + Cy + " ";
+ if (value > ((max - min) / 2)) {
+ path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " ";
+ }
+ path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
+ path += "L" + Xi + "," + Yi + " ";
+ if (value > ((max - min) / 2)) {
+ path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " ";
+ }
+ path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
+ path += "Z ";
+
+ return { path: path };
+
+ } else {
+ alpha = (1 - (value - min) / (max - min)) * Math.PI;
+ Ro = w / 2 - w / 10;
+ Ri = Ro - w / 6.666666666666667 * gws;
+
+ Cx = w / 2 + dx;
+ Cy = h / 1.25 + dy;
+
+ Xo = w / 2 + dx + Ro * Math.cos(alpha);
+ Yo = h - (h - Cy) + 0 - Ro * Math.sin(alpha);
+ Xi = w / 2 + dx + Ri * Math.cos(alpha);
+ Yi = h - (h - Cy) + 0 - Ri * Math.sin(alpha);
+
+ path += "M" + (Cx - Ri) + "," + Cy + " ";
+ path += "L" + (Cx - Ro) + "," + Cy + " ";
+ path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " ";
+ path += "L" + Xi + "," + Yi + " ";
+ path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " ";
+ path += "Z ";
+
+ return { path: path };
+ }
+
+ // var clear
+ alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path = null;
+ };
+
+ // gauge
+ obj.gauge = obj.canvas.path().attr({
+ "stroke": "none",
+ "fill": obj.config.gaugeColor,
+ pki: [
+ obj.config.max,
+ obj.config.min,
+ obj.config.max,
+ obj.params.widgetW,
+ obj.params.widgetH,
+ obj.params.dx,
+ obj.params.dy,
+ obj.config.gaugeWidthScale,
+ obj.config.donut
+ ]
+ });
+
+ // level
+ obj.level = obj.canvas.path().attr({
+ "stroke": "none",
+ "fill": getColor(obj.config.value, (obj.config.value - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors),
+ pki: [
+ obj.config.min,
+ obj.config.min,
+ obj.config.max,
+ obj.params.widgetW,
+ obj.params.widgetH,
+ obj.params.dx,
+ obj.params.dy,
+ obj.config.gaugeWidthScale,
+ obj.config.donut
+ ]
+ });
+ if(obj.config.donut) {
+ obj.level.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW/2 + obj.params.dx) + ", " + (obj.params.widgetH/1.95 + obj.params.dy));
+ }
+
+ // title
+ obj.txtTitle = obj.canvas.text(obj.params.titleX, obj.params.titleY, obj.config.title);
+ obj.txtTitle.attr({
+ "font-size":obj.params.titleFontSize,
+ "font-weight":"bold",
+ "font-family":"Arial",
+ "fill":obj.config.titleFontColor,
+ "fill-opacity":"1"
+ });
+ setDy(obj.txtTitle, obj.params.titleFontSize, obj.params.titleY);
+
+ // value
+ obj.txtValue = obj.canvas.text(obj.params.valueX, obj.params.valueY, 0);
+ obj.txtValue.attr({
+ "font-size":obj.params.valueFontSize,
+ "font-weight":"bold",
+ "font-family":"Arial",
+ "fill":obj.config.valueFontColor,
+ "fill-opacity":"0"
+ });
+ setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+
+ // label
+ obj.txtLabel = obj.canvas.text(obj.params.labelX, obj.params.labelY, obj.config.label);
+ obj.txtLabel.attr({
+ "font-size":obj.params.labelFontSize,
+ "font-weight":"normal",
+ "font-family":"Arial",
+ "fill":obj.config.labelFontColor,
+ "fill-opacity":"0"
+ });
+ setDy(obj.txtLabel, obj.params.labelFontSize, obj.params.labelY);
+
+ // min
+ obj.txtMinimum = obj.config.min;
+ if( obj.config.humanFriendly ) obj.txtMinimum = humanFriendlyNumber( obj.config.min, obj.config.humanFriendlyDecimal );
+ obj.txtMin = obj.canvas.text(obj.params.minX, obj.params.minY, obj.txtMinimum);
+ obj.txtMin.attr({
+ "font-size":obj.params.minFontSize,
+ "font-weight":"normal",
+ "font-family":"Arial",
+ "fill":obj.config.labelFontColor,
+ "fill-opacity": (obj.config.hideMinMax || obj.config.donut)? "0" : "1"
+ });
+ setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY);
+
+ // max
+ obj.txtMaximum = obj.config.max;
+ if( obj.config.humanFriendly ) obj.txtMaximum = humanFriendlyNumber( obj.config.max, obj.config.humanFriendlyDecimal );
+ obj.txtMax = obj.canvas.text(obj.params.maxX, obj.params.maxY, obj.txtMaximum);
+ obj.txtMax.attr({
+ "font-size":obj.params.maxFontSize,
+ "font-weight":"normal",
+ "font-family":"Arial",
+ "fill":obj.config.labelFontColor,
+ "fill-opacity": (obj.config.hideMinMax || obj.config.donut)? "0" : "1"
+ });
+ setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
+
+ var defs = obj.canvas.canvas.childNodes[1];
+ var svg = "http://www.w3.org/2000/svg";
+
+ if (ie < 9) {
+ onCreateElementNsReady(function() {
+ obj.generateShadow(svg, defs);
+ });
+ } else {
+ obj.generateShadow(svg, defs);
+ }
+
+ // var clear
+ defs, svg = null;
+
+ // set value to display
+ if(obj.config.textRenderer) {
+ obj.originalValue = obj.config.textRenderer(obj.originalValue);
+ } else if(obj.config.humanFriendly) {
+ obj.originalValue = humanFriendlyNumber( obj.originalValue, obj.config.humanFriendlyDecimal ) + obj.config.symbol;
+ } else {
+ obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol;
+ }
+
+ if(obj.config.counter === true) {
+ //on each animation frame
+ eve.on("raphael.anim.frame." + (obj.level.id), function() {
+ var currentValue = obj.level.attr("pki");
+ if(obj.config.textRenderer) {
+ obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue[0])));
+ } else if(obj.config.humanFriendly) {
+ obj.txtValue.attr("text", humanFriendlyNumber( Math.floor(currentValue[0]), obj.config.humanFriendlyDecimal ) + obj.config.symbol);
+ } else {
+ obj.txtValue.attr("text", (currentValue[0] * 1).toFixed(obj.config.decimals) + obj.config.symbol);
+ }
+ setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+ currentValue = null;
+ });
+ //on animation end
+ eve.on("raphael.anim.finish." + (obj.level.id), function() {
+ obj.txtValue.attr({"text" : obj.originalValue});
+ setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+ });
+ } else {
+ //on animation start
+ eve.on("raphael.anim.start." + (obj.level.id), function() {
+ obj.txtValue.attr({"text" : obj.originalValue});
+ setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+ });
+ }
+
+ // animate gauge level, value & label
+ obj.level.animate({
+ pki: [
+ obj.config.value,
+ obj.config.min,
+ obj.config.max,
+ obj.params.widgetW,
+ obj.params.widgetH,
+ obj.params.dx,
+ obj.params.dy,
+ obj.config.gaugeWidthScale,
+ obj.config.donut
+ ]
+ }, obj.config.startAnimationTime, obj.config.startAnimationType);
+ obj.txtValue.animate({"fill-opacity":(obj.config.hideValue)?"0":"1"}, obj.config.startAnimationTime, obj.config.startAnimationType);
+ obj.txtLabel.animate({"fill-opacity":"1"}, obj.config.startAnimationTime, obj.config.startAnimationType);
+};
+
+/** Refresh gauge level */
+JustGage.prototype.refresh = function(val, max) {
+
+ var obj = this;
+ var displayVal, color, max = max || null;
+
+ // set new max
+ if(max !== null) {
+ obj.config.max = max;
+
+ obj.txtMaximum = obj.config.max;
+ if( obj.config.humanFriendly ) obj.txtMaximum = humanFriendlyNumber( obj.config.max, obj.config.humanFriendlyDecimal );
+ obj.txtMax.attr({"text" : obj.txtMaximum});
+ setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY);
+ }
+
+ // overflow values
+ displayVal = val;
+ if ((val * 1) > (obj.config.max * 1)) {val = (obj.config.max * 1);}
+ if ((val * 1) < (obj.config.min * 1)) {val = (obj.config.min * 1);}
+
+ color = getColor(val, (val - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors);
+
+ if(obj.config.textRenderer) {
+ displayVal = obj.config.textRenderer(displayVal);
+ } else if( obj.config.humanFriendly ) {
+ displayVal = humanFriendlyNumber( displayVal, obj.config.humanFriendlyDecimal ) + obj.config.symbol;
+ } else {
+ displayVal = (displayVal * 1).toFixed(obj.config.decimals) + obj.config.symbol;
+ }
+ obj.originalValue = displayVal;
+ obj.config.value = val * 1;
+
+ if(!obj.config.counter) {
+ obj.txtValue.attr({"text":displayVal});
+ setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY);
+ }
+
+ obj.level.animate({
+ pki: [
+ obj.config.value,
+ obj.config.min,
+ obj.config.max,
+ obj.params.widgetW,
+ obj.params.widgetH,
+ obj.params.dx,
+ obj.params.dy,
+ obj.config.gaugeWidthScale,
+ obj.config.donut
+ ],
+ "fill":color
+ }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType);
+
+ // var clear
+ obj, displayVal, color, max = null;
+};
+
+/** Generate shadow */
+JustGage.prototype.generateShadow = function(svg, defs) {
+
+ var obj = this;
+ var gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3;
+
+ // FILTER
+ gaussFilter = document.createElementNS(svg,"filter");
+ gaussFilter.setAttribute("id","inner-shadow");
+ defs.appendChild(gaussFilter);
+
+ // offset
+ feOffset = document.createElementNS(svg,"feOffset");
+ feOffset.setAttribute("dx", 0);
+ feOffset.setAttribute("dy", obj.config.shadowVerticalOffset);
+ gaussFilter.appendChild(feOffset);
+
+ // blur
+ feGaussianBlur = document.createElementNS(svg,"feGaussianBlur");
+ feGaussianBlur.setAttribute("result","offset-blur");
+ feGaussianBlur.setAttribute("stdDeviation", obj.config.shadowSize);
+ gaussFilter.appendChild(feGaussianBlur);
+
+ // composite 1
+ feComposite1 = document.createElementNS(svg,"feComposite");
+ feComposite1.setAttribute("operator","out");
+ feComposite1.setAttribute("in", "SourceGraphic");
+ feComposite1.setAttribute("in2","offset-blur");
+ feComposite1.setAttribute("result","inverse");
+ gaussFilter.appendChild(feComposite1);
+
+ // flood
+ feFlood = document.createElementNS(svg,"feFlood");
+ feFlood.setAttribute("flood-color","black");
+ feFlood.setAttribute("flood-opacity", obj.config.shadowOpacity);
+ feFlood.setAttribute("result","color");
+ gaussFilter.appendChild(feFlood);
+
+ // composite 2
+ feComposite2 = document.createElementNS(svg,"feComposite");
+ feComposite2.setAttribute("operator","in");
+ feComposite2.setAttribute("in", "color");
+ feComposite2.setAttribute("in2","inverse");
+ feComposite2.setAttribute("result","shadow");
+ gaussFilter.appendChild(feComposite2);
+
+ // composite 3
+ feComposite3 = document.createElementNS(svg,"feComposite");
+ feComposite3.setAttribute("operator","over");
+ feComposite3.setAttribute("in", "shadow");
+ feComposite3.setAttribute("in2","SourceGraphic");
+ gaussFilter.appendChild(feComposite3);
+
+ // set shadow
+ if (!obj.config.hideInnerShadow) {
+ obj.canvas.canvas.childNodes[2].setAttribute("filter", "url(#inner-shadow)");
+ obj.canvas.canvas.childNodes[3].setAttribute("filter", "url(#inner-shadow)");
+ }
+
+ // var clear
+ gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3 = null;
+
+};
+
+/** Get color for value */
+function getColor(val, pct, col, noGradient, custSec) {
+
+ var no, inc, colors, percentage, rval, gval, bval, lower, upper, range, rangePct, pctLower, pctUpper, color;
+ var noGradient = noGradient || custSec.length > 0;
+
+ if(custSec.length > 0) {
+ for(var i = 0; i < custSec.length; i++) {
+ if(val > custSec[i].lo && val <= custSec[i].hi) {
+ return custSec[i].color;
+ }
+ }
+ }
+
+ no = col.length;
+ if (no === 1) return col[0];
+ inc = (noGradient) ? (1 / no) : (1 / (no - 1));
+ colors = [];
+ for (var i = 0; i < col.length; i++) {
+ percentage = (noGradient) ? (inc * (i + 1)) : (inc * i);
+ rval = parseInt((cutHex(col[i])).substring(0,2),16);
+ gval = parseInt((cutHex(col[i])).substring(2,4),16);
+ bval = parseInt((cutHex(col[i])).substring(4,6),16);
+ colors[i] = { pct: percentage, color: { r: rval, g: gval, b: bval } };
+ }
+
+ if(pct === 0) {
+ return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')';
+ }
+
+ for (var j = 0; j < colors.length; j++) {
+ if (pct <= colors[j].pct) {
+ if (noGradient) {
+ return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')';
+ } else {
+ lower = colors[j - 1];
+ upper = colors[j];
+ range = upper.pct - lower.pct;
+ rangePct = (pct - lower.pct) / range;
+ pctLower = 1 - rangePct;
+ pctUpper = rangePct;
+ color = {
+ r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
+ g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
+ b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
+ };
+ return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
+ }
+ }
+ }
+
+}
+
+/** Fix Raphael display:none tspan dy attribute bug */
+function setDy(elem, fontSize, txtYpos) {
+ if (!ie || ie > 9) {
+ elem.node.firstChild.attributes.dy.value = 0;
+ }
+}
+
+/** Random integer */
+function getRandomInt (min, max) {
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+/** Cut hex */
+function cutHex(str) {
+ return (str.charAt(0)=="#") ? str.substring(1,7):str;
+}
+
+/** Human friendly number suffix - From: http://stackoverflow.com/questions/2692323/code-golf-friendly-number-abbreviator */
+function humanFriendlyNumber( n, d ) {
+ var p, d2, i, s;
+
+ p = Math.pow;
+ d2 = p(10, d);
+ i = 7;
+ while( i ) {
+ s = p(10,i--*3);
+ if( s <= n ) {
+ n = Math.round(n*d2/s)/d2+"KMGTPE"[i];
+ }
+ }
+ return n;
+}
+
+/** Get style */
+function getStyle(oElm, strCssRule){
+ var strValue = "";
+ if(document.defaultView && document.defaultView.getComputedStyle){
+ strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
+ }
+ else if(oElm.currentStyle){
+ strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
+ return p1.toUpperCase();
+ });
+ strValue = oElm.currentStyle[strCssRule];
+ }
+ return strValue;
+}
+
+/** Create Element NS Ready */
+function onCreateElementNsReady(func) {
+ if (document.createElementNS !== undefined) {
+ func();
+ } else {
+ setTimeout(function() { onCreateElementNsReady(func); }, 100);
+ }
+}
+
+/** Get IE version */
+// ----------------------------------------------------------
+// A short snippet for detecting versions of IE in JavaScript
+// without resorting to user-agent sniffing
+// ----------------------------------------------------------
+// If you're not in IE (or IE version is less than 5) then:
+// ie === undefined
+// If you're in IE (>=5) then you can determine which version:
+// ie === 7; // IE7
+// Thus, to detect IE:
+// if (ie) {}
+// And to detect the version:
+// ie === 6 // IE6
+// ie > 7 // IE8, IE9 ...
+// ie < 9 // Anything less than IE9
+// ----------------------------------------------------------
+// UPDATE: Now using Live NodeList idea from @jdalton
+var ie = (function(){
+
+ var undef,
+ v = 3,
+ div = document.createElement('div'),
+ all = div.getElementsByTagName('i');
+
+ while (
+ div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+ all[0]
+ );
+ return v > 4 ? v : undef;
+}());
\ No newline at end of file diff --git a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js new file mode 100644 index 00000000000..cb2faf6874b --- /dev/null +++ b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js @@ -0,0 +1,119 @@ +openerp.web_kanban_gauge = function (instance) { + +/** + * Kanban widgets: GaugeWidget + * + */ + +instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ + className: "oe_gauge", + start: function() { + var self = this; + var parent = this.getParent(); + var max = 100; + if (this.options.max_field) { + max = this.getParent().record[this.options.max_field].raw_value; + } + var label = this.options.label || ""; + if (this.options.label_field) { + label = this.getParent().record[this.options.label_field].raw_value; + } + var val = this.field.value; + var value = _.isArray(val) && val.length ? val[val.length-1]['value'] : val; + var title = this.$node.html() || this.field.string; + // var unique_id = _.uniqueId("JustGage"); + + this.$el.empty() + .attr('style', this.$node.attr('style') + ';position:relative; display:inline-block;'); + + this.gage = new JustGage({ + parentNode: this.$el[0], + // id: unique_id, + value: value, + title: title, + min: 0, + max: max, + relativeGaugeSize: true, + humanFriendly: true, + titleFontColor: '#333333', + valueFontColor: '#333333', + labelFontColor: '#000', + label: label, + levelColors: [ + "#ff0000", + "#f9c802", + "#a9d70b" + ], + }); + this.gage.refresh(value, max); + + var flag_open = false; + if (this.options.action_change) { + var $svg = this.$el.find('svg'); + var css = { + 'text-align': 'center', + 'position': 'absolute', + 'width': this.$el.outerWidth() + 'px', + 'top': (this.$el.outerHeight()/2-5) + 'px' + }; + + this.$el.click(function (event) { + event.stopPropagation(); + flag_open = false; + if (!parent.view.is_action_enabled('edit')) { + return; + } + if (!self.$el.find(".oe_justgage_edit").size()) { + $div = $('<div class="oe_justgage_edit" style="z-index:1"/>'); + $div.css(css); + $input = $('<input/>').val(value); + $input.css({ + 'text-align': 'center', + 'margin': 'auto', + 'width': ($svg.outerWidth()-40) + 'px' + }); + $div.append($input); + self.$el.prepend($div) + $input.focus() + .keydown(function (event) { + event.stopPropagation(); + if (event.keyCode == 13 || event.keyCode == 9) { + if ($input.val() != value) { + parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { + parent.do_reload(); + }); + } else { + $div.remove(); + } + } + }) + .click(function (event) { + event.stopPropagation(); + flag_open = false; + }) + .blur(function (event) { + if(!flag_open) { + self.$el.find(".oe_justgage_edit").remove(); + } else { + flag_open = false; + setTimeout(function () {$input.focus();}, 0); + } + }); + } + }).mousedown(function () { + flag_open = true; + }); + + if (!+value) { + $svg.fadeTo(0, 0.3); + $div = $('<div/>').text(_t("Click to change value")); + $div.css(css); + this.$el.append($div); + } + } + }, +}); + +instance.web_kanban.fields_registry.add("gauge", "instance.web_kanban.GaugeWidget"); + +} diff --git a/addons/web_kanban_sparkline/__init__.py b/addons/web_kanban_sparkline/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/addons/web_kanban_sparkline/__init__.py diff --git a/addons/web_kanban_sparkline/__openerp__.py b/addons/web_kanban_sparkline/__openerp__.py new file mode 100644 index 00000000000..3fb4e13b4f7 --- /dev/null +++ b/addons/web_kanban_sparkline/__openerp__.py @@ -0,0 +1,18 @@ +{ + 'name': 'Sparkline Widget for Kanban', + 'category': 'Hidden', + 'description': """ +This widget allows to display sparklines using jquery.sparkline library. +""", + 'version': '1.0', + 'depends': ['web_kanban'], + 'js': [ + "static/lib/jquery.sparkline/jquery.sparkline.js", + 'static/src/js/kanban_sparkline.js' + ], + 'css': [ + ], + 'qweb': [ + ], + 'auto_install': False, +} diff --git a/addons/web_kanban_sparkline/doc/changelog.rst b/addons/web_kanban_sparkline/doc/changelog.rst new file mode 100644 index 00000000000..4c920a005ff --- /dev/null +++ b/addons/web_kanban_sparkline/doc/changelog.rst @@ -0,0 +1,10 @@ +.. _changelog: + +Changelog +========= + +`trunk (saas-2)` +---------------- + + - Module ``web_kanban_sparkline`` created. It comes from the refactoring of + custom kanban widgets used in other modules, now standardized. diff --git a/addons/web_kanban_sparkline/doc/index.rst b/addons/web_kanban_sparkline/doc/index.rst new file mode 100644 index 00000000000..869a323c62f --- /dev/null +++ b/addons/web_kanban_sparkline/doc/index.rst @@ -0,0 +1,10 @@ +Sparkline for Kanban module documentation +========================================= + +Changelog +''''''''' + +.. toctree:: + :maxdepth: 1 + + changelog.rst diff --git a/addons/web_kanban_sparkline/static/lib/jquery.sparkline/jquery.sparkline.js b/addons/web_kanban_sparkline/static/lib/jquery.sparkline/jquery.sparkline.js new file mode 100644 index 00000000000..43b24c080a6 --- /dev/null +++ b/addons/web_kanban_sparkline/static/lib/jquery.sparkline/jquery.sparkline.js @@ -0,0 +1,3054 @@ +/** +* +* jquery.sparkline.js +* +* v2.1.2 +* (c) Splunk, Inc +* Contact: Gareth Watts (gareth@splunk.com) +* http://omnipotent.net/jquery.sparkline/ +* +* Generates inline sparkline charts from data supplied either to the method +* or inline in HTML +* +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag +* (Firefox 2.0+, Safari, Opera, etc) +* +* License: New BSD License +* +* Copyright (c) 2012, Splunk Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* * Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* * Neither the name of Splunk Inc nor the names of its contributors may +* be used to endorse or promote products derived from this software without +* specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* +* Usage: +* $(selector).sparkline(values, options) +* +* If values is undefined or set to 'html' then the data values are read from the specified tag: +* <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p> +* $('.sparkline').sparkline(); +* There must be no spaces in the enclosed data set +* +* Otherwise values must be an array of numbers or null values +* <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p> +* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) +* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) +* +* Values can also be specified in an HTML comment, or as a values attribute: +* <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p> +* <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p> +* $('.sparkline').sparkline(); +* +* For line charts, x values can also be specified: +* <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p> +* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) +* +* By default, options should be passed in as teh second argument to the sparkline function: +* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) +* +* Options can also be set by passing them on the tag itself. This feature is disabled by default though +* as there's a slight performance overhead: +* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) +* <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p> +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix) +* +* Supported options: +* lineColor - Color of the line used for the chart +* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart +* width - Width of the chart - Defaults to 3 times the number of values in pixels +* height - Height of the chart - Defaults to the height of the containing element +* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied +* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied +* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax +* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied +* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied +* composite - If true then don't erase any existing chart attached to the tag, but draw +* another chart over the top - Note that width and height are ignored if an +* existing chart is detected. +* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' +* enableTagOptions - Whether to check tags for sparkline options +* tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' +* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a +* hidden dom element, avoding a browser reflow +* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, +* making the plugin perform much like it did in 1.x +* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) +* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled +* defaults to false (highlights enabled) +* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase +* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body +* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied +* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis +* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis +* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip +* callback is given arguments of (sparkline, options, fields) +* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title +* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) +* to control the format of the tooltip +* tooltipPrefix - A string to prepend to each field displayed in a tooltip +* tooltipSuffix - A string to append to each field displayed in a tooltip +* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) +* tooltipValueLookups - An object or range map to map field values to tooltip strings +* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") +* numberFormatter - Optional callback for formatting numbers in tooltips +* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," +* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." +* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 +* +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' +* line - Line chart. Options: +* spotColor - Set to '' to not end each line in a circular spot +* minSpotColor - If set, color of spot at minimum value +* maxSpotColor - If set, color of spot at maximum value +* spotRadius - Radius in pixels +* lineWidth - Width of line in pixels +* normalRangeMin +* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" +* or expected range of values +* normalRangeColor - Color to use for the above bar +* drawNormalOnTop - Draw the normal range above the chart fill color if true +* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart +* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable +* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable +* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map +* +* bar - Bar chart. Options: +* barColor - Color of bars for postive values +* negBarColor - Color of bars for negative values +* zeroColor - Color of bars with zero values +* nullColor - Color of bars with null values - Defaults to omitting the bar entirely +* barWidth - Width of bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* barSpacing - Gap between bars in pixels +* zeroAxis - Centers the y-axis around zero if true +* +* tristate - Charts values of win (>0), lose (<0) or draw (=0) +* posBarColor - Color of win values +* negBarColor - Color of lose values +* zeroBarColor - Color of draw values +* barWidth - Width of bars in pixels +* barSpacing - Gap between bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* +* discrete - Options: +* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height +* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor +* thresholdColor +* +* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... +* options: +* targetColor - The color of the vertical target marker +* targetWidth - The width of the target marker in pixels +* performanceColor - The color of the performance measure horizontal bar +* rangeColors - Colors to use for each qualitative range background color +* +* pie - Pie chart. Options: +* sliceColors - An array of colors to use for pie slices +* offset - Angle in degrees to offset the first slice - Try -90 or +90 +* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) +* borderColor - Color to use for the pie chart border - Defaults to #000 +* +* box - Box plot. Options: +* raw - Set to true to supply pre-computed plot points as values +* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier +* When set to false you can supply any number of values and the box plot will +* be computed for you. Default is false. +* showOutliers - Set to true (default) to display outliers as circles +* outlierIQR - Interquartile range used to determine outliers. Default 1.5 +* boxLineColor - Outline color of the box +* boxFillColor - Fill color for the box +* whiskerColor - Line color used for whiskers +* outlierLineColor - Outline color of outlier circles +* outlierFillColor - Fill color of the outlier circles +* spotRadius - Radius of outlier circles +* medianColor - Line color of the median line +* target - Draw a target cross hair at the supplied value (default undefined) +* +* +* +* Examples: +* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); +* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); +* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): +* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); +* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); +* $('#pie').sparkline([1,1,2], { type:'pie' }); +*/ + +/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */ + +(function(document, Math, undefined) { // performance/minified-size optimization +(function(factory) { + if(typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (jQuery && !jQuery.fn.sparkline) { + factory(jQuery); + } +} +(function($) { + 'use strict'; + + var UNSET_OPTION = {}, + getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, + remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap, + MouseHandler, Tooltip, barHighlightMixin, + line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles, + VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0; + + /** + * Default configuration settings + */ + getDefaults = function () { + return { + // Settings common to most/all chart types + common: { + type: 'line', + lineColor: '#00f', + fillColor: '#cdf', + defaultPixelsPerValue: 3, + width: 'auto', + height: 'auto', + composite: false, + tagValuesAttribute: 'values', + tagOptionsPrefix: 'spark', + enableTagOptions: false, + enableHighlight: true, + highlightLighten: 1.4, + tooltipSkipNull: true, + tooltipPrefix: '', + tooltipSuffix: '', + disableHiddenCheck: false, + numberFormatter: false, + numberDigitGroupCount: 3, + numberDigitGroupSep: ',', + numberDecimalMark: '.', + disableTooltips: false, + disableInteraction: false + }, + // Defaults for line charts + line: { + spotColor: '#f80', + highlightSpotColor: '#5f5', + highlightLineColor: '#f22', + spotRadius: 1.5, + minSpotColor: '#f80', + maxSpotColor: '#f80', + lineWidth: 1, + normalRangeMin: undefined, + normalRangeMax: undefined, + normalRangeColor: '#ccc', + drawNormalOnTop: false, + chartRangeMin: undefined, + chartRangeMax: undefined, + chartRangeMinX: undefined, + chartRangeMaxX: undefined, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{prefix}}{{y}}{{suffix}}') + }, + // Defaults for bar charts + bar: { + barColor: '#3366cc', + negBarColor: '#f44', + stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + zeroColor: undefined, + nullColor: undefined, + zeroAxis: true, + barWidth: 4, + barSpacing: 1, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + colorMap: undefined, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{prefix}}{{value}}{{suffix}}') + }, + // Defaults for tristate charts + tristate: { + barWidth: 4, + barSpacing: 1, + posBarColor: '#6f6', + negBarColor: '#f44', + zeroBarColor: '#999', + colorMap: {}, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{value:map}}'), + tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } } + }, + // Defaults for discrete charts + discrete: { + lineHeight: 'auto', + thresholdColor: undefined, + thresholdValue: 0, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}') + }, + // Defaults for bullet charts + bullet: { + targetColor: '#f33', + targetWidth: 3, // width of the target bar in pixels + performanceColor: '#33f', + rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'], + base: undefined, // set this to a number to change the base start number + tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'), + tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} } + }, + // Defaults for pie charts + pie: { + offset: 0, + sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + borderWidth: 0, + borderColor: '#000', + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{value}} ({{percent.1}}%)') + }, + // Defaults for box plots + box: { + raw: false, + boxLineColor: '#000', + boxFillColor: '#cdf', + whiskerColor: '#000', + outlierLineColor: '#333', + outlierFillColor: '#fff', + medianColor: '#f00', + showOutliers: true, + outlierIQR: 1.5, + spotRadius: 1.5, + target: undefined, + targetColor: '#4a2', + chartRangeMax: undefined, + chartRangeMin: undefined, + tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'), + tooltipFormatFieldlistKey: 'field', + tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median', + uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier', + lw: 'Left Whisker', rw: 'Right Whisker'} } + } + }; + }; + + // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname + defaultStyles = '.jqstooltip { ' + + 'position: absolute;' + + 'left: 0px;' + + 'top: 0px;' + + 'visibility: hidden;' + + 'background: rgb(0, 0, 0) transparent;' + + 'background-color: rgba(0,0,0,0.6);' + + 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' + + '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + 'white-space: nowrap;' + + 'padding: 5px;' + + 'border: 1px solid white;' + + 'z-index: 10000;' + + '}' + + '.jqsfield { ' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + '}'; + + /** + * Utilities + */ + + createClass = function (/* [baseclass, [mixin, ...]], definition */) { + var Class, args; + Class = function () { + this.init.apply(this, arguments); + }; + if (arguments.length > 1) { + if (arguments[0]) { + Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]); + Class._super = arguments[0].prototype; + } else { + Class.prototype = arguments[arguments.length - 1]; + } + if (arguments.length > 2) { + args = Array.prototype.slice.call(arguments, 1, -1); + args.unshift(Class.prototype); + $.extend.apply($, args); + } + } else { + Class.prototype = arguments[0]; + } + Class.prototype.cls = Class; + return Class; + }; + + /** + * Wraps a format string for tooltips + * {{x}} + * {{x.2} + * {{x:months}} + */ + $.SPFormatClass = SPFormat = createClass({ + fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g, + precre: /(\w+)\.(\d+)/, + + init: function (format, fclass) { + this.format = format; + this.fclass = fclass; + }, + + render: function (fieldset, lookups, options) { + var self = this, + fields = fieldset, + match, token, lookupkey, fieldvalue, prec; + return this.format.replace(this.fre, function () { + var lookup; + token = arguments[1]; + lookupkey = arguments[3]; + match = self.precre.exec(token); + if (match) { + prec = match[2]; + token = match[1]; + } else { + prec = false; + } + fieldvalue = fields[token]; + if (fieldvalue === undefined) { + return ''; + } + if (lookupkey && lookups && lookups[lookupkey]) { + lookup = lookups[lookupkey]; + if (lookup.get) { // RangeMap + return lookups[lookupkey].get(fieldvalue) || fieldvalue; + } else { + return lookups[lookupkey][fieldvalue] || fieldvalue; + } + } + if (isNumber(fieldvalue)) { + if (options.get('numberFormatter')) { + fieldvalue = options.get('numberFormatter')(fieldvalue); + } else { + fieldvalue = formatNumber(fieldvalue, prec, + options.get('numberDigitGroupCount'), + options.get('numberDigitGroupSep'), + options.get('numberDecimalMark')); + } + } + return fieldvalue; + }); + } + }); + + // convience method to avoid needing the new operator + $.spformat = function(format, fclass) { + return new SPFormat(format, fclass); + }; + + clipval = function (val, min, max) { + if (val < min) { + return min; + } + if (val > max) { + return max; + } + return val; + }; + + quartile = function (values, q) { + var vl; + if (q === 2) { + vl = Math.floor(values.length / 2); + return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2; + } else { + if (values.length % 2 ) { // odd + vl = (values.length * q + q) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + } else { //even + vl = (values.length * q + 2) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + + } + } + }; + + normalizeValue = function (val) { + var nf; + switch (val) { + case 'undefined': + val = undefined; + break; + case 'null': + val = null; + break; + case 'true': + val = true; + break; + case 'false': + val = false; + break; + default: + nf = parseFloat(val); + if (val == nf) { + val = nf; + } + } + return val; + }; + + normalizeValues = function (vals) { + var i, result = []; + for (i = vals.length; i--;) { + result[i] = normalizeValue(vals[i]); + } + return result; + }; + + remove = function (vals, filter) { + var i, vl, result = []; + for (i = 0, vl = vals.length; i < vl; i++) { + if (vals[i] !== filter) { + result.push(vals[i]); + } + } + return result; + }; + + isNumber = function (num) { + return !isNaN(parseFloat(num)) && isFinite(num); + }; + + formatNumber = function (num, prec, groupsize, groupsep, decsep) { + var p, i; + num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split(''); + p = (p = $.inArray('.', num)) < 0 ? num.length : p; + if (p < num.length) { + num[p] = decsep; + } + for (i = p - groupsize; i > 0; i -= groupsize) { + num.splice(i, 0, groupsep); + } + return num.join(''); + }; + + // determine if all values of an array match a value + // returns true if the array is empty + all = function (val, arr, ignoreNull) { + var i; + for (i = arr.length; i--; ) { + if (ignoreNull && arr[i] === null) continue; + if (arr[i] !== val) { + return false; + } + } + return true; + }; + + // sums the numeric values in an array, ignoring other values + sum = function (vals) { + var total = 0, i; + for (i = vals.length; i--;) { + total += typeof vals[i] === 'number' ? vals[i] : 0; + } + return total; + }; + + ensureArray = function (val) { + return $.isArray(val) ? val : [val]; + }; + + // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/ + addCSS = function(css) { + var tag; + //if ('\v' == 'v') /* ie only */ { + if (document.createStyleSheet) { + document.createStyleSheet().cssText = css; + } else { + tag = document.createElement('style'); + tag.type = 'text/css'; + document.getElementsByTagName('head')[0].appendChild(tag); + tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css; + } + }; + + // Provide a cross-browser interface to a few simple drawing primitives + $.fn.simpledraw = function (width, height, useExisting, interact) { + var target, mhandler; + if (useExisting && (target = this.data('_jqs_vcanvas'))) { + return target; + } + + if ($.fn.sparkline.canvas === false) { + // We've already determined that neither Canvas nor VML are available + return false; + + } else if ($.fn.sparkline.canvas === undefined) { + // No function defined yet -- need to see if we support Canvas or VML + var el = document.createElement('canvas'); + if (!!(el.getContext && el.getContext('2d'))) { + // Canvas is available + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_canvas(width, height, target, interact); + }; + } else if (document.namespaces && !document.namespaces.v) { + // VML is available + document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML'); + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_vml(width, height, target); + }; + } else { + // Neither Canvas nor VML are available + $.fn.sparkline.canvas = false; + return false; + } + } + + if (width === undefined) { + width = $(this).innerWidth(); + } + if (height === undefined) { + height = $(this).innerHeight(); + } + + target = $.fn.sparkline.canvas(width, height, this, interact); + + mhandler = $(this).data('_jqs_mhandler'); + if (mhandler) { + mhandler.registerCanvas(target); + } + return target; + }; + + $.fn.cleardraw = function () { + var target = this.data('_jqs_vcanvas'); + if (target) { + target.reset(); + } + }; + + $.RangeMapClass = RangeMap = createClass({ + init: function (map) { + var key, range, rangelist = []; + for (key in map) { + if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) { + range = key.split(':'); + range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]); + range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]); + range[2] = map[key]; + rangelist.push(range); + } + } + this.map = map; + this.rangelist = rangelist || false; + }, + + get: function (value) { + var rangelist = this.rangelist, + i, range, result; + if ((result = this.map[value]) !== undefined) { + return result; + } + if (rangelist) { + for (i = rangelist.length; i--;) { + range = rangelist[i]; + if (range[0] <= value && range[1] >= value) { + return range[2]; + } + } + } + return undefined; + } + }); + + // Convenience function + $.range_map = function(map) { + return new RangeMap(map); + }; + + MouseHandler = createClass({ + init: function (el, options) { + var $el = $(el); + this.$el = $el; + this.options = options; + this.currentPageX = 0; + this.currentPageY = 0; + this.el = el; + this.splist = []; + this.tooltip = null; + this.over = false; + this.displayTooltips = !options.get('disableTooltips'); + this.highlightEnabled = !options.get('disableHighlight'); + }, + + registerSparkline: function (sp) { + this.splist.push(sp); + if (this.over) { + this.updateDisplay(); + } + }, + + registerCanvas: function (canvas) { + var $canvas = $(canvas.canvas); + this.canvas = canvas; + this.$canvas = $canvas; + $canvas.mouseenter($.proxy(this.mouseenter, this)); + $canvas.mouseleave($.proxy(this.mouseleave, this)); + $canvas.click($.proxy(this.mouseclick, this)); + }, + + reset: function (removeTooltip) { + this.splist = []; + if (this.tooltip && removeTooltip) { + this.tooltip.remove(); + this.tooltip = undefined; + } + }, + + mouseclick: function (e) { + var clickEvent = $.Event('sparklineClick'); + clickEvent.originalEvent = e; + clickEvent.sparklines = this.splist; + this.$el.trigger(clickEvent); + }, + + mouseenter: function (e) { + $(document.body).unbind('mousemove.jqs'); + $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this)); + this.over = true; + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (!this.tooltip && this.displayTooltips) { + this.tooltip = new Tooltip(this.options); + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + mouseleave: function () { + $(document.body).unbind('mousemove.jqs'); + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + sp, i; + this.over = false; + this.currentEl = null; + + if (this.tooltip) { + this.tooltip.remove(); + this.tooltip = null; + } + + for (i = 0; i < spcount; i++) { + sp = splist[i]; + if (sp.clearRegionHighlight()) { + needsRefresh = true; + } + } + + if (needsRefresh) { + this.canvas.render(); + } + }, + + mousemove: function (e) { + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (this.tooltip) { + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + updateDisplay: function () { + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + offset = this.$canvas.offset(), + localX = this.currentPageX - offset.left, + localY = this.currentPageY - offset.top, + tooltiphtml, sp, i, result, changeEvent; + if (!this.over) { + return; + } + for (i = 0; i < spcount; i++) { + sp = splist[i]; + result = sp.setRegionHighlight(this.currentEl, localX, localY); + if (result) { + needsRefresh = true; + } + } + if (needsRefresh) { + changeEvent = $.Event('sparklineRegionChange'); + changeEvent.sparklines = this.splist; + this.$el.trigger(changeEvent); + if (this.tooltip) { + tooltiphtml = ''; + for (i = 0; i < spcount; i++) { + sp = splist[i]; + tooltiphtml += sp.getCurrentRegionTooltip(); + } + this.tooltip.setContent(tooltiphtml); + } + if (!this.disableHighlight) { + this.canvas.render(); + } + } + if (result === null) { + this.mouseleave(); + } + } + }); + + + Tooltip = createClass({ + sizeStyle: 'position: static !important;' + + 'display: block !important;' + + 'visibility: hidden !important;' + + 'float: left !important;', + + init: function (options) { + var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'), + sizetipStyle = this.sizeStyle, + offset; + this.container = options.get('tooltipContainer') || document.body; + this.tooltipOffsetX = options.get('tooltipOffsetX', 10); + this.tooltipOffsetY = options.get('tooltipOffsetY', 12); + // remove any previous lingering tooltip + $('#jqssizetip').remove(); + $('#jqstooltip').remove(); + this.sizetip = $('<div/>', { + id: 'jqssizetip', + style: sizetipStyle, + 'class': tooltipClassname + }); + this.tooltip = $('<div/>', { + id: 'jqstooltip', + 'class': tooltipClassname + }).appendTo(this.container); + // account for the container's location + offset = this.tooltip.offset(); + this.offsetLeft = offset.left; + this.offsetTop = offset.top; + this.hidden = true; + $(window).unbind('resize.jqs scroll.jqs'); + $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this)); + this.updateWindowDims(); + }, + + updateWindowDims: function () { + this.scrollTop = $(window).scrollTop(); + this.scrollLeft = $(window).scrollLeft(); + this.scrollRight = this.scrollLeft + $(window).width(); + this.updatePosition(); + }, + + getSize: function (content) { + this.sizetip.html(content).appendTo(this.container); + this.width = this.sizetip.width() + 1; + this.height = this.sizetip.height(); + this.sizetip.remove(); + }, + + setContent: function (content) { + if (!content) { + this.tooltip.css('visibility', 'hidden'); + this.hidden = true; + return; + } + this.getSize(content); + this.tooltip.html(content) + .css({ + 'width': this.width, + 'height': this.height, + 'visibility': 'visible' + }); + if (this.hidden) { + this.hidden = false; + this.updatePosition(); + } + }, + + updatePosition: function (x, y) { + if (x === undefined) { + if (this.mousex === undefined) { + return; + } + x = this.mousex - this.offsetLeft; + y = this.mousey - this.offsetTop; + + } else { + this.mousex = x = x - this.offsetLeft; + this.mousey = y = y - this.offsetTop; + } + if (!this.height || !this.width || this.hidden) { + return; + } + + y -= this.height + this.tooltipOffsetY; + x += this.tooltipOffsetX; + + if (y < this.scrollTop) { + y = this.scrollTop; + } + if (x < this.scrollLeft) { + x = this.scrollLeft; + } else if (x + this.width > this.scrollRight) { + x = this.scrollRight - this.width; + } + + this.tooltip.css({ + 'left': x, + 'top': y + }); + }, + + remove: function () { + this.tooltip.remove(); + this.sizetip.remove(); + this.sizetip = this.tooltip = undefined; + $(window).unbind('resize.jqs scroll.jqs'); + } + }); + + initStyles = function() { + addCSS(defaultStyles); + }; + + $(initStyles); + + pending = []; + $.fn.sparkline = function (userValues, userOptions) { + return this.each(function () { + var options = new $.fn.sparkline.options(this, userOptions), + $this = $(this), + render, i; + render = function () { + var values, width, height, tmp, mhandler, sp, vals; + if (userValues === 'html' || userValues === undefined) { + vals = this.getAttribute(options.get('tagValuesAttribute')); + if (vals === undefined || vals === null) { + vals = $this.html(); + } + values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(','); + } else { + values = userValues; + } + + width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width'); + if (options.get('height') === 'auto') { + if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) { + // must be a better way to get the line height + tmp = document.createElement('span'); + tmp.innerHTML = 'a'; + $this.html(tmp); + height = $(tmp).innerHeight() || $(tmp).height(); + $(tmp).remove(); + tmp = null; + } + } else { + height = options.get('height'); + } + + if (!options.get('disableInteraction')) { + mhandler = $.data(this, '_jqs_mhandler'); + if (!mhandler) { + mhandler = new MouseHandler(this, options); + $.data(this, '_jqs_mhandler', mhandler); + } else if (!options.get('composite')) { + mhandler.reset(); + } + } else { + mhandler = false; + } + + if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) { + if (!$.data(this, '_jqs_errnotify')) { + alert('Attempted to attach a composite sparkline to an element with no existing sparkline'); + $.data(this, '_jqs_errnotify', true); + } + return; + } + + sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height); + + sp.render(); + + if (mhandler) { + mhandler.registerSparkline(sp); + } + }; + if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) { + if (!options.get('composite') && $.data(this, '_jqs_pending')) { + // remove any existing references to the element + for (i = pending.length; i; i--) { + if (pending[i - 1][0] == this) { + pending.splice(i - 1, 1); + } + } + } + pending.push([this, render]); + $.data(this, '_jqs_pending', true); + } else { + render.call(this); + } + }); + }; + + $.fn.sparkline.defaults = getDefaults(); + + + $.sparkline_display_visible = function () { + var el, i, pl; + var done = []; + for (i = 0, pl = pending.length; i < pl; i++) { + el = pending[i][0]; + if ($(el).is(':visible') && !$(el).parents().is(':hidden')) { + pending[i][1].call(el); + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) { + // element has been inserted and removed from the DOM + // If it was not yet inserted into the dom then the .data request + // will return true. + // removing from the dom causes the data to be removed. + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } + } + for (i = done.length; i; i--) { + pending.splice(done[i - 1], 1); + } + }; + + + /** + * User option handler + */ + $.fn.sparkline.options = createClass({ + init: function (tag, userOptions) { + var extendedOptions, defaults, base, tagOptionType; + this.userOptions = userOptions = userOptions || {}; + this.tag = tag; + this.tagValCache = {}; + defaults = $.fn.sparkline.defaults; + base = defaults.common; + this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix); + + tagOptionType = this.getTagSetting('type'); + if (tagOptionType === UNSET_OPTION) { + extendedOptions = defaults[userOptions.type || base.type]; + } else { + extendedOptions = defaults[tagOptionType]; + } + this.mergedOptions = $.extend({}, base, extendedOptions, userOptions); + }, + + + getTagSetting: function (key) { + var prefix = this.tagOptionsPrefix, + val, i, pairs, keyval; + if (prefix === false || prefix === undefined) { + return UNSET_OPTION; + } + if (this.tagValCache.hasOwnProperty(key)) { + val = this.tagValCache.key; + } else { + val = this.tag.getAttribute(prefix + key); + if (val === undefined || val === null) { + val = UNSET_OPTION; + } else if (val.substr(0, 1) === '[') { + val = val.substr(1, val.length - 2).split(','); + for (i = val.length; i--;) { + val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, '')); + } + } else if (val.substr(0, 1) === '{') { + pairs = val.substr(1, val.length - 2).split(','); + val = {}; + for (i = pairs.length; i--;) { + keyval = pairs[i].split(':', 2); + val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, '')); + } + } else { + val = normalizeValue(val); + } + this.tagValCache.key = val; + } + return val; + }, + + get: function (key, defaultval) { + var tagOption = this.getTagSetting(key), + result; + if (tagOption !== UNSET_OPTION) { + return tagOption; + } + return (result = this.mergedOptions[key]) === undefined ? defaultval : result; + } + }); + + + $.fn.sparkline._base = createClass({ + disabled: false, + + init: function (el, values, options, width, height) { + this.el = el; + this.$el = $(el); + this.values = values; + this.options = options; + this.width = width; + this.height = height; + this.currentRegion = undefined; + }, + + /** + * Setup the canvas + */ + initTarget: function () { + var interactive = !this.options.get('disableInteraction'); + if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) { + this.disabled = true; + } else { + this.canvasWidth = this.target.pixelWidth; + this.canvasHeight = this.target.pixelHeight; + } + }, + + /** + * Actually render the chart to the canvas + */ + render: function () { + if (this.disabled) { + this.el.innerHTML = ''; + return false; + } + return true; + }, + + /** + * Return a region id for a given x/y co-ordinate + */ + getRegion: function (x, y) { + }, + + /** + * Highlight an item based on the moused-over x,y co-ordinate + */ + setRegionHighlight: function (el, x, y) { + var currentRegion = this.currentRegion, + highlightEnabled = !this.options.get('disableHighlight'), + newRegion; + if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) { + return null; + } + newRegion = this.getRegion(el, x, y); + if (currentRegion !== newRegion) { + if (currentRegion !== undefined && highlightEnabled) { + this.removeHighlight(); + } + this.currentRegion = newRegion; + if (newRegion !== undefined && highlightEnabled) { + this.renderHighlight(); + } + return true; + } + return false; + }, + + /** + * Reset any currently highlighted item + */ + clearRegionHighlight: function () { + if (this.currentRegion !== undefined) { + this.removeHighlight(); + this.currentRegion = undefined; + return true; + } + return false; + }, + + renderHighlight: function () { + this.changeHighlight(true); + }, + + removeHighlight: function () { + this.changeHighlight(false); + }, + + changeHighlight: function (highlight) {}, + + /** + * Fetch the HTML to display as a tooltip + */ + getCurrentRegionTooltip: function () { + var options = this.options, + header = '', + entries = [], + fields, formats, formatlen, fclass, text, i, + showFields, showFieldsKey, newFields, fv, + formatter, format, fieldlen, j; + if (this.currentRegion === undefined) { + return ''; + } + fields = this.getCurrentRegionFields(); + formatter = options.get('tooltipFormatter'); + if (formatter) { + return formatter(this, options, fields); + } + if (options.get('tooltipChartTitle')) { + header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n'; + } + formats = this.options.get('tooltipFormat'); + if (!formats) { + return ''; + } + if (!$.isArray(formats)) { + formats = [formats]; + } + if (!$.isArray(fields)) { + fields = [fields]; + } + showFields = this.options.get('tooltipFormatFieldlist'); + showFieldsKey = this.options.get('tooltipFormatFieldlistKey'); + if (showFields && showFieldsKey) { + // user-selected ordering of fields + newFields = []; + for (i = fields.length; i--;) { + fv = fields[i][showFieldsKey]; + if ((j = $.inArray(fv, showFields)) != -1) { + newFields[j] = fields[i]; + } + } + fields = newFields; + } + formatlen = formats.length; + fieldlen = fields.length; + for (i = 0; i < formatlen; i++) { + format = formats[i]; + if (typeof format === 'string') { + format = new SPFormat(format); + } + fclass = format.fclass || 'jqsfield'; + for (j = 0; j < fieldlen; j++) { + if (!fields[j].isNull || !options.get('tooltipSkipNull')) { + $.extend(fields[j], { + prefix: options.get('tooltipPrefix'), + suffix: options.get('tooltipSuffix') + }); + text = format.render(fields[j], options.get('tooltipValueLookups'), options); + entries.push('<div class="' + fclass + '">' + text + '</div>'); + } + } + } + if (entries.length) { + return header + entries.join('\n'); + } + return ''; + }, + + getCurrentRegionFields: function () {}, + + calcHighlightColor: function (color, options) { + var highlightColor = options.get('highlightColor'), + lighten = options.get('highlightLighten'), + parse, mult, rgbnew, i; + if (highlightColor) { + return highlightColor; + } + if (lighten) { + // extract RGB values + parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color); + if (parse) { + rgbnew = []; + mult = color.length === 4 ? 16 : 1; + for (i = 0; i < 3; i++) { + rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255); + } + return 'rgb(' + rgbnew.join(',') + ')'; + } + + } + return color; + } + + }); + + barHighlightMixin = { + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + target = this.target, + shapeids = this.regionShapes[currentRegion], + newShapes; + // will be null if the region value was null + if (shapeids) { + newShapes = this.renderRegion(currentRegion, highlight); + if ($.isArray(newShapes) || $.isArray(shapeids)) { + target.replaceWithShapes(shapeids, newShapes); + this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) { + return newShape.id; + }); + } else { + target.replaceWithShape(shapeids, newShapes); + this.regionShapes[currentRegion] = newShapes.id; + } + } + }, + + render: function () { + var values = this.values, + target = this.target, + regionShapes = this.regionShapes, + shapes, ids, i, j; + + if (!this.cls._super.render.call(this)) { + return; + } + for (i = values.length; i--;) { + shapes = this.renderRegion(i); + if (shapes) { + if ($.isArray(shapes)) { + ids = []; + for (j = shapes.length; j--;) { + shapes[j].append(); + ids.push(shapes[j].id); + } + regionShapes[i] = ids; + } else { + shapes.append(); + regionShapes[i] = shapes.id; // store just the shapeid + } + } else { + // null value + regionShapes[i] = null; + } + } + target.render(); + } + }; + + /** + * Line charts + */ + $.fn.sparkline.line = line = createClass($.fn.sparkline._base, { + type: 'line', + + init: function (el, values, options, width, height) { + line._super.init.call(this, el, values, options, width, height); + this.vertices = []; + this.regionMap = []; + this.xvalues = []; + this.yvalues = []; + this.yminmax = []; + this.hightlightSpotId = null; + this.lastShapeId = null; + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var i, + regionMap = this.regionMap; // maps regions to value positions + for (i = regionMap.length; i--;) { + if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) { + return regionMap[i][2]; + } + } + return undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.yvalues[currentRegion] === null, + x: this.xvalues[currentRegion], + y: this.yvalues[currentRegion], + color: this.options.get('lineColor'), + fillColor: this.options.get('fillColor'), + offset: currentRegion + }; + }, + + renderHighlight: function () { + var currentRegion = this.currentRegion, + target = this.target, + vertex = this.vertices[currentRegion], + options = this.options, + spotRadius = options.get('spotRadius'), + highlightSpotColor = options.get('highlightSpotColor'), + highlightLineColor = options.get('highlightLineColor'), + highlightSpot, highlightLine; + + if (!vertex) { + return; + } + if (spotRadius && highlightSpotColor) { + highlightSpot = target.drawCircle(vertex[0], vertex[1], + spotRadius, undefined, highlightSpotColor); + this.highlightSpotId = highlightSpot.id; + target.insertAfterShape(this.lastShapeId, highlightSpot); + } + if (highlightLineColor) { + highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0], + this.canvasTop + this.canvasHeight, highlightLineColor); + this.highlightLineId = highlightLine.id; + target.insertAfterShape(this.lastShapeId, highlightLine); + } + }, + + removeHighlight: function () { + var target = this.target; + if (this.highlightSpotId) { + target.removeShapeId(this.highlightSpotId); + this.highlightSpotId = null; + } + if (this.highlightLineId) { + target.removeShapeId(this.highlightLineId); + this.highlightLineId = null; + } + }, + + scanValues: function () { + var values = this.values, + valcount = values.length, + xvalues = this.xvalues, + yvalues = this.yvalues, + yminmax = this.yminmax, + i, val, isStr, isArray, sp; + for (i = 0; i < valcount; i++) { + val = values[i]; + isStr = typeof(values[i]) === 'string'; + isArray = typeof(values[i]) === 'object' && values[i] instanceof Array; + sp = isStr && values[i].split(':'); + if (isStr && sp.length === 2) { // x:y + xvalues.push(Number(sp[0])); + yvalues.push(Number(sp[1])); + yminmax.push(Number(sp[1])); + } else if (isArray) { + xvalues.push(val[0]); + yvalues.push(val[1]); + yminmax.push(val[1]); + } else { + xvalues.push(i); + if (values[i] === null || values[i] === 'null') { + yvalues.push(null); + } else { + yvalues.push(Number(val)); + yminmax.push(Number(val)); + } + } + } + if (this.options.get('xvalues')) { + xvalues = this.options.get('xvalues'); + } + + this.maxy = this.maxyorg = Math.max.apply(Math, yminmax); + this.miny = this.minyorg = Math.min.apply(Math, yminmax); + + this.maxx = Math.max.apply(Math, xvalues); + this.minx = Math.min.apply(Math, xvalues); + + this.xvalues = xvalues; + this.yvalues = yvalues; + this.yminmax = yminmax; + + }, + + processRangeOptions: function () { + var options = this.options, + normalRangeMin = options.get('normalRangeMin'), + normalRangeMax = options.get('normalRangeMax'); + + if (normalRangeMin !== undefined) { + if (normalRangeMin < this.miny) { + this.miny = normalRangeMin; + } + if (normalRangeMax > this.maxy) { + this.maxy = normalRangeMax; + } + } + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) { + this.miny = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) { + this.maxy = options.get('chartRangeMax'); + } + if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) { + this.minx = options.get('chartRangeMinX'); + } + if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) { + this.maxx = options.get('chartRangeMaxX'); + } + + }, + + drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) { + var normalRangeMin = this.options.get('normalRangeMin'), + normalRangeMax = this.options.get('normalRangeMax'), + ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))), + height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey); + this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append(); + }, + + render: function () { + var options = this.options, + target = this.target, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + vertices = this.vertices, + spotRadius = options.get('spotRadius'), + regionMap = this.regionMap, + rangex, rangey, yvallast, + canvasTop, canvasLeft, + vertex, path, paths, x, y, xnext, xpos, xposnext, + last, next, yvalcount, lineShapes, fillShapes, plen, + valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i; + + if (!line._super.render.call(this)) { + return; + } + + this.scanValues(); + this.processRangeOptions(); + + xvalues = this.xvalues; + yvalues = this.yvalues; + + if (!this.yminmax.length || this.yvalues.length < 2) { + // empty or all null valuess + return; + } + + canvasTop = canvasLeft = 0; + + rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx; + rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny; + yvallast = this.yvalues.length - 1; + + if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) { + spotRadius = 0; + } + if (spotRadius) { + // adjust the canvas size as required so that spots will fit + hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction'); + if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) { + canvasHeight -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) { + canvasHeight -= Math.ceil(spotRadius); + canvasTop += Math.ceil(spotRadius); + } + if (hlSpotsEnabled || + ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) { + canvasLeft += Math.ceil(spotRadius); + canvasWidth -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('spotColor') || + (options.get('minSpotColor') || options.get('maxSpotColor') && + (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) { + canvasWidth -= Math.ceil(spotRadius); + } + } + + + canvasHeight--; + + if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + path = []; + paths = [path]; + last = next = null; + yvalcount = yvalues.length; + for (i = 0; i < yvalcount; i++) { + x = xvalues[i]; + xnext = xvalues[i + 1]; + y = yvalues[i]; + xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)); + xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth; + next = xpos + ((xposnext - xpos) / 2); + regionMap[i] = [last || 0, next, i]; + last = next; + if (y === null) { + if (i) { + if (yvalues[i - 1] !== null) { + path = []; + paths.push(path); + } + vertices.push(null); + } + } else { + if (y < this.miny) { + y = this.miny; + } + if (y > this.maxy) { + y = this.maxy; + } + if (!path.length) { + // previous value was null + path.push([xpos, canvasTop + canvasHeight]); + } + vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))]; + path.push(vertex); + vertices.push(vertex); + } + } + + lineShapes = []; + fillShapes = []; + plen = paths.length; + for (i = 0; i < plen; i++) { + path = paths[i]; + if (path.length) { + if (options.get('fillColor')) { + path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]); + fillShapes.push(path.slice(0)); + path.pop(); + } + // if there's only a single point in this path, then we want to display it + // as a vertical line which means we keep path[0] as is + if (path.length > 2) { + // else we want the first value + path[0] = [path[0][0], path[1][1]]; + } + lineShapes.push(path); + } + } + + // draw the fill first, then optionally the normal range, then the line on top of that + plen = fillShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(fillShapes[i], + options.get('fillColor'), options.get('fillColor')).append(); + } + + if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + plen = lineShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(lineShapes[i], options.get('lineColor'), undefined, + options.get('lineWidth')).append(); + } + + if (spotRadius && options.get('valueSpots')) { + valueSpots = options.get('valueSpots'); + if (valueSpots.get === undefined) { + valueSpots = new RangeMap(valueSpots); + } + for (i = 0; i < yvalcount; i++) { + color = valueSpots.get(yvalues[i]); + if (color) { + target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))), + spotRadius, undefined, + color).append(); + } + } + + } + if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) { + target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))), + spotRadius, undefined, + options.get('spotColor')).append(); + } + if (this.maxy !== this.minyorg) { + if (spotRadius && options.get('minSpotColor')) { + x = xvalues[$.inArray(this.minyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('minSpotColor')).append(); + } + if (spotRadius && options.get('maxSpotColor')) { + x = xvalues[$.inArray(this.maxyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('maxSpotColor')).append(); + } + } + + this.lastShapeId = target.getLastShapeId(); + this.canvasTop = canvasTop; + target.render(); + } + }); + + /** + * Bar charts + */ + $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'bar', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10), + chartRangeMin = options.get('chartRangeMin'), + chartRangeMax = options.get('chartRangeMax'), + chartRangeClip = options.get('chartRangeClip'), + stackMin = Infinity, + stackMax = -Infinity, + isStackString, groupMin, groupMax, stackRanges, + numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, + stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf; + bar._super.init.call(this, el, values, options, width, height); + + // scan values to determine whether to stack bars + for (i = 0, vlen = values.length; i < vlen; i++) { + val = values[i]; + isStackString = typeof(val) === 'string' && val.indexOf(':') > -1; + if (isStackString || $.isArray(val)) { + stacked = true; + if (isStackString) { + val = values[i] = normalizeValues(val.split(':')); + } + val = remove(val, null); // min/max will treat null as zero + groupMin = Math.min.apply(Math, val); + groupMax = Math.max.apply(Math, val); + if (groupMin < stackMin) { + stackMin = groupMin; + } + if (groupMax > stackMax) { + stackMax = groupMax; + } + } + } + + this.stacked = stacked; + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + this.initTarget(); + + if (chartRangeClip) { + clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin; + clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax; + } + + numValues = []; + stackRanges = stacked ? [] : numValues; + var stackTotals = []; + var stackRangesNeg = []; + for (i = 0, vlen = values.length; i < vlen; i++) { + if (stacked) { + vlist = values[i]; + values[i] = svals = []; + stackTotals[i] = 0; + stackRanges[i] = stackRangesNeg[i] = 0; + for (j = 0, slen = vlist.length; j < slen; j++) { + val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j]; + if (val !== null) { + if (val > 0) { + stackTotals[i] += val; + } + if (stackMin < 0 && stackMax > 0) { + if (val < 0) { + stackRangesNeg[i] += Math.abs(val); + } else { + stackRanges[i] += val; + } + } else { + stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin)); + } + numValues.push(val); + } + } + } else { + val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i]; + val = values[i] = normalizeValue(val); + if (val !== null) { + numValues.push(val); + } + } + } + this.max = max = Math.max.apply(Math, numValues); + this.min = min = Math.min.apply(Math, numValues); + this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max; + this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min; + + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) { + min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) { + max = options.get('chartRangeMax'); + } + + this.zeroAxis = zeroAxis = options.get('zeroAxis', true); + if (min <= 0 && max >= 0 && zeroAxis) { + xaxisOffset = 0; + } else if (zeroAxis == false) { + xaxisOffset = min; + } else if (min > 0) { + xaxisOffset = min; + } else { + xaxisOffset = max; + } + this.xaxisOffset = xaxisOffset; + + range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min; + + // as we plot zero/min values a single pixel line, we add a pixel to all other + // values - Reduce the effective canvas size to suit + this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1; + + if (min < xaxisOffset) { + yMaxCalc = (stacked && max >= 0) ? stackMax : max; + yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight; + if (yoffset !== Math.ceil(yoffset)) { + this.canvasHeightEf -= 2; + yoffset = Math.ceil(yoffset); + } + } else { + yoffset = this.canvasHeight; + } + this.yoffset = yoffset; + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + + this.range = range; + }, + + getRegion: function (el, x, y) { + var result = Math.floor(x / this.totalBarWidth); + return (result < 0 || result >= this.values.length) ? undefined : result; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion, + values = ensureArray(this.values[currentRegion]), + result = [], + value, i; + for (i = values.length; i--;) { + value = values[i]; + result.push({ + isNull: value === null, + value: value, + color: this.calcColor(i, value, currentRegion), + offset: currentRegion + }); + } + return result; + }, + + calcColor: function (stacknum, value, valuenum) { + var colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + options = this.options, + color, newColor; + if (this.stacked) { + color = options.get('stackedBarColor'); + } else { + color = (value < 0) ? options.get('negBarColor') : options.get('barColor'); + } + if (value === 0 && options.get('zeroColor') !== undefined) { + color = options.get('zeroColor'); + } + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } + return $.isArray(color) ? color[stacknum % color.length] : color; + }, + + /** + * Render bar(s) for a region + */ + renderRegion: function (valuenum, highlight) { + var vals = this.values[valuenum], + options = this.options, + xaxisOffset = this.xaxisOffset, + result = [], + range = this.range, + stacked = this.stacked, + target = this.target, + x = valuenum * this.totalBarWidth, + canvasHeightEf = this.canvasHeightEf, + yoffset = this.yoffset, + y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin; + + vals = $.isArray(vals) ? vals : [vals]; + valcount = vals.length; + val = vals[0]; + isNull = all(null, vals); + allMin = all(xaxisOffset, vals, true); + + if (isNull) { + if (options.get('nullColor')) { + color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options); + y = (yoffset > 0) ? yoffset - 1 : yoffset; + return target.drawRect(x, y, this.barWidth - 1, 0, color, color); + } else { + return undefined; + } + } + yoffsetNeg = yoffset; + for (i = 0; i < valcount; i++) { + val = vals[i]; + + if (stacked && val === xaxisOffset) { + if (!allMin || minPlotted) { + continue; + } + minPlotted = true; + } + + if (range > 0) { + height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1; + } else { + height = 1; + } + if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) { + y = yoffsetNeg; + yoffsetNeg += height; + } else { + y = yoffset - height; + yoffset -= height; + } + color = this.calcColor(i, val, valuenum); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color)); + } + if (result.length === 1) { + return result[0]; + } + return result; + } + }); + + /** + * Tristate charts + */ + $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'tristate', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10); + tristate._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.values = $.map(values, Number); + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.totalBarWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + color: this.calcColor(this.values[currentRegion], currentRegion), + offset: currentRegion + }; + }, + + calcColor: function (value, valuenum) { + var values = this.values, + options = this.options, + colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + color, newColor; + + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } else if (values[valuenum] < 0) { + color = options.get('negBarColor'); + } else if (values[valuenum] > 0) { + color = options.get('posBarColor'); + } else { + color = options.get('zeroBarColor'); + } + return color; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + target = this.target, + canvasHeight, height, halfHeight, + x, y, color; + + canvasHeight = target.pixelHeight; + halfHeight = Math.round(canvasHeight / 2); + + x = valuenum * this.totalBarWidth; + if (values[valuenum] < 0) { + y = halfHeight; + height = halfHeight - 1; + } else if (values[valuenum] > 0) { + y = 0; + height = halfHeight - 1; + } else { + y = halfHeight - 1; + height = 2; + } + color = this.calcColor(values[valuenum], valuenum); + if (color === null) { + return; + } + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color); + } + }); + + /** + * Discrete charts + */ + $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'discrete', + + init: function (el, values, options, width, height) { + discrete._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.values = values = $.map(values, Number); + this.min = Math.min.apply(Math, values); + this.max = Math.max.apply(Math, values); + this.range = this.max - this.min; + this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width; + this.interval = Math.floor(width / values.length); + this.itemWidth = width / values.length; + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) { + this.min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) { + this.max = options.get('chartRangeMax'); + } + this.initTarget(); + if (this.target) { + this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight'); + } + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.itemWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + offset: currentRegion + }; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + min = this.min, + max = this.max, + range = this.range, + interval = this.interval, + target = this.target, + canvasHeight = this.canvasHeight, + lineHeight = this.lineHeight, + pheight = canvasHeight - lineHeight, + ytop, val, color, x; + + val = clipval(values[valuenum], min, max); + x = valuenum * interval; + ytop = Math.round(pheight - pheight * ((val - min) / range)); + color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor'); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawLine(x, ytop, x, ytop + lineHeight, color); + } + }); + + /** + * Bullet charts + */ + $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, { + type: 'bullet', + + init: function (el, values, options, width, height) { + var min, max, vals; + bullet._super.init.call(this, el, values, options, width, height); + + // values: target, performance, range1, range2, range3 + this.values = values = normalizeValues(values); + // target or performance could be null + vals = values.slice(); + vals[0] = vals[0] === null ? vals[2] : vals[0]; + vals[1] = values[1] === null ? vals[2] : vals[1]; + min = Math.min.apply(Math, values); + max = Math.max.apply(Math, values); + if (options.get('base') === undefined) { + min = min < 0 ? min : 0; + } else { + min = options.get('base'); + } + this.min = min; + this.max = max; + this.range = max - min; + this.shapes = {}; + this.valueShapes = {}; + this.regiondata = {}; + this.width = width = options.get('width') === 'auto' ? '4.0em' : width; + this.target = this.$el.simpledraw(width, height, options.get('composite')); + if (!values.length) { + this.disabled = true; + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + fieldkey: currentRegion.substr(0, 1), + value: this.values[currentRegion.substr(1)], + region: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + shapeid = this.valueShapes[currentRegion], + shape; + delete this.shapes[shapeid]; + switch (currentRegion.substr(0, 1)) { + case 'r': + shape = this.renderRange(currentRegion.substr(1), highlight); + break; + case 'p': + shape = this.renderPerformance(highlight); + break; + case 't': + shape = this.renderTarget(highlight); + break; + } + this.valueShapes[currentRegion] = shape.id; + this.shapes[shape.id] = currentRegion; + this.target.replaceWithShape(shapeid, shape); + }, + + renderRange: function (rn, highlight) { + var rangeval = this.values[rn], + rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)), + color = this.options.get('rangeColors')[rn - 2]; + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color); + }, + + renderPerformance: function (highlight) { + var perfval = this.values[1], + perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)), + color = this.options.get('performanceColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1, + Math.round(this.canvasHeight * 0.4) - 1, color, color); + }, + + renderTarget: function (highlight) { + var targetval = this.values[0], + x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)), + targettop = Math.round(this.canvasHeight * 0.10), + targetheight = this.canvasHeight - (targettop * 2), + color = this.options.get('targetColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color); + }, + + render: function () { + var vlen = this.values.length, + target = this.target, + i, shape; + if (!bullet._super.render.call(this)) { + return; + } + for (i = 2; i < vlen; i++) { + shape = this.renderRange(i).append(); + this.shapes[shape.id] = 'r' + i; + this.valueShapes['r' + i] = shape.id; + } + if (this.values[1] !== null) { + shape = this.renderPerformance().append(); + this.shapes[shape.id] = 'p1'; + this.valueShapes.p1 = shape.id; + } + if (this.values[0] !== null) { + shape = this.renderTarget().append(); + this.shapes[shape.id] = 't0'; + this.valueShapes.t0 = shape.id; + } + target.render(); + } + }); + + /** + * Pie charts + */ + $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, { + type: 'pie', + + init: function (el, values, options, width, height) { + var total = 0, i; + + pie._super.init.call(this, el, values, options, width, height); + + this.shapes = {}; // map shape ids to value offsets + this.valueShapes = {}; // maps value offsets to shape ids + this.values = values = $.map(values, Number); + + if (options.get('width') === 'auto') { + this.width = this.height; + } + + if (values.length > 0) { + for (i = values.length; i--;) { + total += values[i]; + } + } + this.total = total; + this.initTarget(); + this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + percent: this.values[currentRegion] / this.total * 100, + color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length], + offset: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + newslice = this.renderSlice(currentRegion, highlight), + shapeid = this.valueShapes[currentRegion]; + delete this.shapes[shapeid]; + this.target.replaceWithShape(shapeid, newslice); + this.valueShapes[currentRegion] = newslice.id; + this.shapes[newslice.id] = currentRegion; + }, + + renderSlice: function (valuenum, highlight) { + var target = this.target, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + offset = options.get('offset'), + circle = 2 * Math.PI, + values = this.values, + total = this.total, + next = offset ? (2*Math.PI)*(offset/360) : 0, + start, end, i, vlen, color; + + vlen = values.length; + for (i = 0; i < vlen; i++) { + start = next; + end = next; + if (total > 0) { // avoid divide by zero + end = next + (circle * (values[i] / total)); + } + if (valuenum === i) { + color = options.get('sliceColors')[i % options.get('sliceColors').length]; + if (highlight) { + color = this.calcHighlightColor(color, options); + } + + return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color); + } + next = end; + } + }, + + render: function () { + var target = this.target, + values = this.values, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + shape, i; + + if (!pie._super.render.call(this)) { + return; + } + if (borderWidth) { + target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)), + options.get('borderColor'), undefined, borderWidth).append(); + } + for (i = values.length; i--;) { + if (values[i]) { // don't render zero values + shape = this.renderSlice(i).append(); + this.valueShapes[i] = shape.id; // store just the shapeid + this.shapes[shape.id] = i; + } + } + target.render(); + } + }); + + /** + * Box plots + */ + $.fn.sparkline.box = box = createClass($.fn.sparkline._base, { + type: 'box', + + init: function (el, values, options, width, height) { + box._super.init.call(this, el, values, options, width, height); + this.values = $.map(values, Number); + this.width = options.get('width') === 'auto' ? '4.0em' : width; + this.initTarget(); + if (!this.values.length) { + this.disabled = 1; + } + }, + + /** + * Simulate a single region + */ + getRegion: function () { + return 1; + }, + + getCurrentRegionFields: function () { + var result = [ + { field: 'lq', value: this.quartiles[0] }, + { field: 'med', value: this.quartiles[1] }, + { field: 'uq', value: this.quartiles[2] } + ]; + if (this.loutlier !== undefined) { + result.push({ field: 'lo', value: this.loutlier}); + } + if (this.routlier !== undefined) { + result.push({ field: 'ro', value: this.routlier}); + } + if (this.lwhisker !== undefined) { + result.push({ field: 'lw', value: this.lwhisker}); + } + if (this.rwhisker !== undefined) { + result.push({ field: 'rw', value: this.rwhisker}); + } + return result; + }, + + render: function () { + var target = this.target, + values = this.values, + vlen = values.length, + options = this.options, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'), + maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'), + canvasLeft = 0, + lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i, + size, unitSize; + + if (!box._super.render.call(this)) { + return; + } + + if (options.get('raw')) { + if (options.get('showOutliers') && values.length > 5) { + loutlier = values[0]; + lwhisker = values[1]; + q1 = values[2]; + q2 = values[3]; + q3 = values[4]; + rwhisker = values[5]; + routlier = values[6]; + } else { + lwhisker = values[0]; + q1 = values[1]; + q2 = values[2]; + q3 = values[3]; + rwhisker = values[4]; + } + } else { + values.sort(function (a, b) { return a - b; }); + q1 = quartile(values, 1); + q2 = quartile(values, 2); + q3 = quartile(values, 3); + iqr = q3 - q1; + if (options.get('showOutliers')) { + lwhisker = rwhisker = undefined; + for (i = 0; i < vlen; i++) { + if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) { + lwhisker = values[i]; + } + if (values[i] < q3 + (iqr * options.get('outlierIQR'))) { + rwhisker = values[i]; + } + } + loutlier = values[0]; + routlier = values[vlen - 1]; + } else { + lwhisker = values[0]; + rwhisker = values[vlen - 1]; + } + } + this.quartiles = [q1, q2, q3]; + this.lwhisker = lwhisker; + this.rwhisker = rwhisker; + this.loutlier = loutlier; + this.routlier = routlier; + + unitSize = canvasWidth / (maxValue - minValue + 1); + if (options.get('showOutliers')) { + canvasLeft = Math.ceil(options.get('spotRadius')); + canvasWidth -= 2 * Math.ceil(options.get('spotRadius')); + unitSize = canvasWidth / (maxValue - minValue + 1); + if (loutlier < lwhisker) { + target.drawCircle((loutlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + if (routlier > rwhisker) { + target.drawCircle((routlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + } + + // box + target.drawRect( + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q3 - q1) * unitSize), + Math.round(canvasHeight * 0.8), + options.get('boxLineColor'), + options.get('boxFillColor')).append(); + // left whisker + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // right whisker + target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q3 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // median line + target.drawLine( + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.9), + options.get('medianColor')).append(); + if (options.get('target')) { + size = Math.ceil(options.get('spotRadius')); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) - size), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) + size), + options.get('targetColor')).append(); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size), + Math.round(canvasHeight / 2), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size), + Math.round(canvasHeight / 2), + options.get('targetColor')).append(); + } + target.render(); + } + }); + + // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier + // This is accessible as $(foo).simpledraw() + + VShape = createClass({ + init: function (target, id, type, args) { + this.target = target; + this.id = id; + this.type = type; + this.args = args; + }, + append: function () { + this.target.appendShape(this); + return this; + } + }); + + VCanvas_base = createClass({ + _pxregex: /(\d+)(px)?\s*$/i, + + init: function (width, height, target) { + if (!width) { + return; + } + this.width = width; + this.height = height; + this.target = target; + this.lastShapeId = null; + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + }, + + drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) { + return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth); + }, + + drawShape: function (path, lineColor, fillColor, lineWidth) { + return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]); + }, + + drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) { + return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]); + }, + + drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) { + return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]); + }, + + drawRect: function (x, y, width, height, lineColor, fillColor) { + return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]); + }, + + getElement: function () { + return this.canvas; + }, + + /** + * Return the most recently inserted shape id + */ + getLastShapeId: function () { + return this.lastShapeId; + }, + + /** + * Clear and reset the canvas + */ + reset: function () { + alert('reset not implemented'); + }, + + _insert: function (el, target) { + $(target).html(el); + }, + + /** + * Calculate the pixel dimensions of the canvas + */ + _calculatePixelDims: function (width, height, canvas) { + // XXX This should probably be a configurable option + var match; + match = this._pxregex.exec(height); + if (match) { + this.pixelHeight = match[1]; + } else { + this.pixelHeight = $(canvas).height(); + } + match = this._pxregex.exec(width); + if (match) { + this.pixelWidth = match[1]; + } else { + this.pixelWidth = $(canvas).width(); + } + }, + + /** + * Generate a shape object and id for later rendering + */ + _genShape: function (shapetype, shapeargs) { + var id = shapeCount++; + shapeargs.unshift(id); + return new VShape(this, id, shapetype, shapeargs); + }, + + /** + * Add a shape to the end of the render queue + */ + appendShape: function (shape) { + alert('appendShape not implemented'); + }, + + /** + * Replace one shape with another + */ + replaceWithShape: function (shapeid, shape) { + alert('replaceWithShape not implemented'); + }, + + /** + * Insert one shape after another in the render queue + */ + insertAfterShape: function (shapeid, shape) { + alert('insertAfterShape not implemented'); + }, + + /** + * Remove a shape from the queue + */ + removeShapeId: function (shapeid) { + alert('removeShapeId not implemented'); + }, + + /** + * Find a shape at the specified x/y co-ordinates + */ + getShapeAt: function (el, x, y) { + alert('getShapeAt not implemented'); + }, + + /** + * Render all queued shapes onto the canvas + */ + render: function () { + alert('render not implemented'); + } + }); + + VCanvas_canvas = createClass(VCanvas_base, { + init: function (width, height, target, interact) { + VCanvas_canvas._super.init.call(this, width, height, target); + this.canvas = document.createElement('canvas'); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' }); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + this.interact = interact; + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight}); + }, + + _getContext: function (lineColor, fillColor, lineWidth) { + var context = this.canvas.getContext('2d'); + if (lineColor !== undefined) { + context.strokeStyle = lineColor; + } + context.lineWidth = lineWidth === undefined ? 1 : lineWidth; + if (fillColor !== undefined) { + context.fillStyle = fillColor; + } + return context; + }, + + reset: function () { + var context = this._getContext(); + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth), + i, plen; + context.beginPath(); + context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5); + for (i = 1, plen = path.length; i < plen; i++) { + context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth); + context.beginPath(); + context.arc(x, y, radius, 0, 2 * Math.PI, false); + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var context = this._getContext(lineColor, fillColor); + context.beginPath(); + context.moveTo(x, y); + context.arc(x, y, radius, startAngle, endAngle, false); + context.lineTo(x, y); + context.closePath(); + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor); + }, + + appendShape: function (shape) { + this.shapes[shape.id] = shape; + this.shapeseq.push(shape.id); + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + this.shapes[shape.id] = shape; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] == shapeid) { + shapeseq[i] = shape.id; + } + } + delete this.shapes[shapeid]; + }, + + replaceWithShapes: function (shapeids, shapes) { + var shapeseq = this.shapeseq, + shapemap = {}, + sid, i, first; + + for (i = shapeids.length; i--;) { + shapemap[shapeids[i]] = true; + } + for (i = shapeseq.length; i--;) { + sid = shapeseq[i]; + if (shapemap[sid]) { + shapeseq.splice(i, 1); + delete this.shapes[sid]; + first = i; + } + } + for (i = shapes.length; i--;) { + shapeseq.splice(first, 0, shapes[i].id); + this.shapes[shapes[i].id] = shapes[i]; + } + + }, + + insertAfterShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i + 1, 0, shape.id); + this.shapes[shape.id] = shape; + return; + } + } + }, + + removeShapeId: function (shapeid) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i, 1); + break; + } + } + delete this.shapes[shapeid]; + }, + + getShapeAt: function (el, x, y) { + this.targetX = x; + this.targetY = y; + this.render(); + return this.currentTargetShapeId; + }, + + render: function () { + var shapeseq = this.shapeseq, + shapes = this.shapes, + shapeCount = shapeseq.length, + context = this._getContext(), + shapeid, shape, i; + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + for (i = 0; i < shapeCount; i++) { + shapeid = shapeseq[i]; + shape = shapes[shapeid]; + this['_draw' + shape.type].apply(this, shape.args); + } + if (!this.interact) { + // not interactive so no need to keep the shapes array + this.shapes = {}; + this.shapeseq = []; + } + } + + }); + + VCanvas_vml = createClass(VCanvas_base, { + init: function (width, height, target) { + var groupel; + VCanvas_vml._super.init.call(this, width, height, target); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + this.canvas = document.createElement('span'); + $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'}); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' + + ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>'; + this.canvas.insertAdjacentHTML('beforeEnd', groupel); + this.group = $(this.canvas).children()[0]; + this.rendered = false; + this.prerender = ''; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var vpath = [], + initial, stroke, fill, closed, vel, plen, i; + for (i = 0, plen = path.length; i < plen; i++) { + vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]); + } + initial = vpath.splice(0, 1); + lineWidth = lineWidth === undefined ? 1 : lineWidth; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : ''; + vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + + ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' + + ' </v:shape>'; + return vel; + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var stroke, fill, vel; + x -= radius; + y -= radius; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = '<v:oval ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>'; + return vel; + + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var vpath, startx, starty, endx, endy, stroke, fill, vel; + if (startAngle === endAngle) { + return ''; // VML seems to have problem when start angle equals end angle. + } + if ((endAngle - startAngle) === (2 * Math.PI)) { + startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0 + endAngle = (2 * Math.PI); + } + + startx = x + Math.round(Math.cos(startAngle) * radius); + starty = y + Math.round(Math.sin(startAngle) * radius); + endx = x + Math.round(Math.cos(endAngle) * radius); + endy = y + Math.round(Math.sin(endAngle) * radius); + + if (startx === endx && starty === endy) { + if ((endAngle - startAngle) < Math.PI) { + // Prevent very small slices from being mistaken as a whole pie + return ''; + } + // essentially going to be the entire circle, so ignore startAngle + startx = endx = x + radius; + starty = endy = y; + } + + if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) { + return ''; + } + + vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy]; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + + ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' + + ' </v:shape>'; + return vel; + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor); + }, + + reset: function () { + this.group.innerHTML = ''; + }, + + appendShape: function (shape) { + var vel = this['_draw' + shape.type].apply(this, shape.args); + if (this.rendered) { + this.group.insertAdjacentHTML('beforeEnd', vel); + } else { + this.prerender += vel; + } + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].outerHTML = vel; + }, + + replaceWithShapes: function (shapeids, shapes) { + // replace the first shapeid with all the new shapes then toast the remaining old shapes + var existing = $('#jqsshape' + shapeids[0]), + replace = '', + slen = shapes.length, + i; + for (i = 0; i < slen; i++) { + replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args); + } + existing[0].outerHTML = replace; + for (i = 1; i < shapeids.length; i++) { + $('#jqsshape' + shapeids[i]).remove(); + } + }, + + insertAfterShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].insertAdjacentHTML('afterEnd', vel); + }, + + removeShapeId: function (shapeid) { + var existing = $('#jqsshape' + shapeid); + this.group.removeChild(existing[0]); + }, + + getShapeAt: function (el, x, y) { + var shapeid = el.id.substr(8); + return shapeid; + }, + + render: function () { + if (!this.rendered) { + // batch the intial render into a single repaint + this.group.innerHTML = this.prerender; + this.rendered = true; + } + } + }); + +}))}(document, Math));
\ No newline at end of file diff --git a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js new file mode 100644 index 00000000000..5335599478f --- /dev/null +++ b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js @@ -0,0 +1,38 @@ +openerp.web_kanban_sparkline = function (instance) { + +/** + * Kanban widgets: Sparkline + * + */ + +instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.extend({ + className: "oe_sparkline_bar", + start: function() { + var self = this; + var title = this.$node.html() || this.field.string; + setTimeout(function () { + var value = _.pluck(self.field.value, 'value'); + var tooltips = _.pluck(self.field.value, 'tooltip'); + var sparkline_options = _.extend({ + type: 'bar', + barWidth: 5, + height: '20px', + barWidth: 4, + barSpacing: 1, + barColor: '#96d854', + chartRangeMin: 0, + tooltipFormat: '{{offset:offset}} {{value}}', + tooltipValueLookups: { + 'offset': tooltips + } + }, self.options); + self.$el.sparkline(value, sparkline_options); + self.$el.tipsy({'delayIn': 0, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); + }, 0); + }, +}); + +instance.web_kanban.fields_registry.add("sparkline_bar", "instance.web_kanban.SparklineBarWidget"); + + +} diff --git a/addons/web_view_editor/i18n/ar.po b/addons/web_view_editor/i18n/ar.po index c320801ab28..4b695813859 100644 --- a/addons/web_view_editor/i18n/ar.po +++ b/addons/web_view_editor/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/bs.po b/addons/web_view_editor/i18n/bs.po index 4f0dda22f3b..3af0e397253 100644 --- a/addons/web_view_editor/i18n/bs.po +++ b/addons/web_view_editor/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-06 05:34+0000\n" -"X-Generator: Launchpad (build 16760)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/cs.po b/addons/web_view_editor/i18n/cs.po index e6818bf6869..380adc5389c 100644 --- a/addons/web_view_editor/i18n/cs.po +++ b/addons/web_view_editor/i18n/cs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/da.po b/addons/web_view_editor/i18n/da.po index b60248f3e4e..dc2967fbc27 100644 --- a/addons/web_view_editor/i18n/da.po +++ b/addons/web_view_editor/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-09-05 04:44+0000\n" -"X-Generator: Launchpad (build 16758)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/de.po b/addons/web_view_editor/i18n/de.po index 9aa612152d2..7f8a726c371 100644 --- a/addons/web_view_editor/i18n/de.po +++ b/addons/web_view_editor/i18n/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/en_AU.po b/addons/web_view_editor/i18n/en_AU.po index 2f5749f8bde..c227a18046a 100644 --- a/addons/web_view_editor/i18n/en_AU.po +++ b/addons/web_view_editor/i18n/en_AU.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/en_GB.po b/addons/web_view_editor/i18n/en_GB.po new file mode 100644 index 00000000000..ee158133fa1 --- /dev/null +++ b/addons/web_view_editor/i18n/en_GB.po @@ -0,0 +1,184 @@ +# English (United Kingdom) translation for openerp-web +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-09-14 06:41+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: English (United Kingdom) <en_GB@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:164 +#, python-format +msgid "The following fields are invalid :" +msgstr "The following fields are invalid :" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:63 +#, python-format +msgid "Create" +msgstr "Create" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:994 +#, python-format +msgid "New Field" +msgstr "New Field" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:387 +#, python-format +msgid "Do you really wants to create an inherited view here?" +msgstr "Do you really want to create an inherited view here?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:397 +#, python-format +msgid "Preview" +msgstr "Preview" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:183 +#, python-format +msgid "Do you really want to remove this view?" +msgstr "Do you really want to remove this view?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:90 +#, python-format +msgid "Save" +msgstr "Save" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:394 +#, python-format +msgid "Select an element" +msgstr "Select an element" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:836 +#: code:addons/web_view_editor/static/src/js/view_editor.js:962 +#, python-format +msgid "Update" +msgstr "Update" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:264 +#, python-format +msgid "Please select view in list :" +msgstr "Please select view in list :" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:37 +#, python-format +msgid "Manage Views (%s)" +msgstr "Manage Views (%s)" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:13 +#, python-format +msgid "Manage Views" +msgstr "Manage Views" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:833 +#: code:addons/web_view_editor/static/src/js/view_editor.js:959 +#, python-format +msgid "Properties" +msgstr "Properties" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:64 +#, python-format +msgid "Edit" +msgstr "Edit" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:14 +#, python-format +msgid "Could not find current view declaration" +msgstr "Could not find current view declaration" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:383 +#, python-format +msgid "Inherited View" +msgstr "Inherited View" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:65 +#, python-format +msgid "Remove" +msgstr "Remove" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:517 +#, python-format +msgid "Do you really want to remove this node?" +msgstr "Do you really want to remove this node?" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:391 +#, python-format +msgid "Can't Update View" +msgstr "Can't Update View" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:380 +#, python-format +msgid "View Editor %d - %s" +msgstr "View Editor %d - %s" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:112 +#: code:addons/web_view_editor/static/src/js/view_editor.js:854 +#: code:addons/web_view_editor/static/src/js/view_editor.js:982 +#, python-format +msgid "Cancel" +msgstr "Cancel" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:66 +#: code:addons/web_view_editor/static/src/js/view_editor.js:414 +#, python-format +msgid "Close" +msgstr "Close" + +#. module: web_view_editor +#. openerp-web +#: code:addons/web_view_editor/static/src/js/view_editor.js:88 +#, python-format +msgid "Create a view (%s)" +msgstr "Create a view (%s)" diff --git a/addons/web_view_editor/i18n/es.po b/addons/web_view_editor/i18n/es.po index f4b1748eb8e..f19c288dc0f 100644 --- a/addons/web_view_editor/i18n/es.po +++ b/addons/web_view_editor/i18n/es.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_DO.po b/addons/web_view_editor/i18n/es_DO.po index f0e3c2803dc..92351271fb3 100644 --- a/addons/web_view_editor/i18n/es_DO.po +++ b/addons/web_view_editor/i18n/es_DO.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_EC.po b/addons/web_view_editor/i18n/es_EC.po index 289aa810006..be904ac8d5e 100644 --- a/addons/web_view_editor/i18n/es_EC.po +++ b/addons/web_view_editor/i18n/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_MX.po b/addons/web_view_editor/i18n/es_MX.po index b5ab4675849..01b3812dd09 100644 --- a/addons/web_view_editor/i18n/es_MX.po +++ b/addons/web_view_editor/i18n/es_MX.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/et.po b/addons/web_view_editor/i18n/et.po index 6c541f1c716..ad68902e698 100644 --- a/addons/web_view_editor/i18n/et.po +++ b/addons/web_view_editor/i18n/et.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fa.po b/addons/web_view_editor/i18n/fa.po index d4bc264ac1d..a5d3dbeee2e 100644 --- a/addons/web_view_editor/i18n/fa.po +++ b/addons/web_view_editor/i18n/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fi.po b/addons/web_view_editor/i18n/fi.po index bea2233678c..d8fe6104f71 100644 --- a/addons/web_view_editor/i18n/fi.po +++ b/addons/web_view_editor/i18n/fi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fr.po b/addons/web_view_editor/i18n/fr.po index d8e010548c5..45760fcb274 100644 --- a/addons/web_view_editor/i18n/fr.po +++ b/addons/web_view_editor/i18n/fr.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-04 13:29+0000\n" -"Last-Translator: Quentin THEURET <Unknown>\n" +"Last-Translator: Quentin THEURET @TeMPO Consulting <Unknown>\n" "Language-Team: French <fr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/hr.po b/addons/web_view_editor/i18n/hr.po index 38940c24af2..83ebd71c257 100644 --- a/addons/web_view_editor/i18n/hr.po +++ b/addons/web_view_editor/i18n/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/hu.po b/addons/web_view_editor/i18n/hu.po index 9549b92bf5b..c53886dcf9c 100644 --- a/addons/web_view_editor/i18n/hu.po +++ b/addons/web_view_editor/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/it.po b/addons/web_view_editor/i18n/it.po index b1435f9883a..8ebc7d15968 100644 --- a/addons/web_view_editor/i18n/it.po +++ b/addons/web_view_editor/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ko.po b/addons/web_view_editor/i18n/ko.po index 359308dd3b9..717da336820 100644 --- a/addons/web_view_editor/i18n/ko.po +++ b/addons/web_view_editor/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/lt.po b/addons/web_view_editor/i18n/lt.po index f2c4e0418e3..27d908f906f 100644 --- a/addons/web_view_editor/i18n/lt.po +++ b/addons/web_view_editor/i18n/lt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/lv.po b/addons/web_view_editor/i18n/lv.po index afe91a24a59..ba8171660ac 100644 --- a/addons/web_view_editor/i18n/lv.po +++ b/addons/web_view_editor/i18n/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/mk.po b/addons/web_view_editor/i18n/mk.po index 89d84026301..5add860340d 100644 --- a/addons/web_view_editor/i18n/mk.po +++ b/addons/web_view_editor/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/mn.po b/addons/web_view_editor/i18n/mn.po index ac579b9b0bb..1fab9756719 100644 --- a/addons/web_view_editor/i18n/mn.po +++ b/addons/web_view_editor/i18n/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nb.po b/addons/web_view_editor/i18n/nb.po index d3454639d43..0cb801a6d84 100644 --- a/addons/web_view_editor/i18n/nb.po +++ b/addons/web_view_editor/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nl.po b/addons/web_view_editor/i18n/nl.po index 13fe8912e87..c144d723430 100644 --- a/addons/web_view_editor/i18n/nl.po +++ b/addons/web_view_editor/i18n/nl.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-05 07:54+0000\n" -"Last-Translator: Erwin van der Ploeg (Endian Solutions) <Unknown>\n" +"Last-Translator: Erwin van der Ploeg (BAS Solutions) <Unknown>\n" "Language-Team: Dutch <nl@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:46+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nl_BE.po b/addons/web_view_editor/i18n/nl_BE.po index 4f6c88b4dd5..bf807f02ff9 100644 --- a/addons/web_view_editor/i18n/nl_BE.po +++ b/addons/web_view_editor/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pl.po b/addons/web_view_editor/i18n/pl.po index dfa1bb275f9..68159329f7c 100644 --- a/addons/web_view_editor/i18n/pl.po +++ b/addons/web_view_editor/i18n/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pt.po b/addons/web_view_editor/i18n/pt.po index 080e3aeaf32..8705c041158 100644 --- a/addons/web_view_editor/i18n/pt.po +++ b/addons/web_view_editor/i18n/pt.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pt_BR.po b/addons/web_view_editor/i18n/pt_BR.po index 7ecef34708b..33f1326bf3f 100644 --- a/addons/web_view_editor/i18n/pt_BR.po +++ b/addons/web_view_editor/i18n/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ro.po b/addons/web_view_editor/i18n/ro.po index 3e25a1c0f72..e492e564883 100644 --- a/addons/web_view_editor/i18n/ro.po +++ b/addons/web_view_editor/i18n/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ru.po b/addons/web_view_editor/i18n/ru.po index 337bf9c7afa..9ca609e0d96 100644 --- a/addons/web_view_editor/i18n/ru.po +++ b/addons/web_view_editor/i18n/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/sl.po b/addons/web_view_editor/i18n/sl.po index dcd1ea53bbe..861d5a2afd7 100644 --- a/addons/web_view_editor/i18n/sl.po +++ b/addons/web_view_editor/i18n/sl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/th.po b/addons/web_view_editor/i18n/th.po index 1552f0ef154..995e6f9e54f 100644 --- a/addons/web_view_editor/i18n/th.po +++ b/addons/web_view_editor/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/tr.po b/addons/web_view_editor/i18n/tr.po index d3d252ac7cc..3b7aa5122f3 100644 --- a/addons/web_view_editor/i18n/tr.po +++ b/addons/web_view_editor/i18n/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/zh_CN.po b/addons/web_view_editor/i18n/zh_CN.po index 8a9ecb53399..65c954dd706 100644 --- a/addons/web_view_editor/i18n/zh_CN.po +++ b/addons/web_view_editor/i18n/zh_CN.po @@ -9,13 +9,13 @@ msgstr "" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-01 15:04+0000\n" -"Last-Translator: 盈通 ccdos <ccdos@163.com>\n" +"Last-Translator: 盈通 ccdos <ccdos@intoerp.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:47+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-10-16 04:56+0000\n" +"X-Generator: Launchpad (build 16799)\n" #. module: web_view_editor #. openerp-web |
