public inbox for [email protected]
help / color / mirror / Atom feed[pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
20+ messages / 3 participants
[nested] [flat]
* [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
@ 2018-12-18 03:45 Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-18 03:45 UTC (permalink / raw)
To: pgadmin-hackers
Hi Hackers,
Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to specify
NULL values in CSV export.
Please review it.
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
Attachments:
[application/octet-stream] RM_3780.patch (13.9K, 3-RM_3780.patch)
download | inline diff:
diff --git a/web/pgadmin/utils/csv.py b/web/pgadmin/utils/csv.py
new file mode 100644
index 0000000..2b46478
--- /dev/null
+++ b/web/pgadmin/utils/csv.py
@@ -0,0 +1,414 @@
+# -*- coding: utf-8 -*-
+"""A port of Python 3's csv module to Python 2.
+
+The API of the csv module in Python 2 is drastically different from
+the csv module in Python 3. This is due, for the most part, to the
+difference between str in Python 2 and Python 3.
+
+The semantics of Python 3's version are more useful because they support
+unicode natively, while Python 2's csv does not.
+"""
+from __future__ import unicode_literals, absolute_import
+
+__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "Error", "Dialect", "excel", "excel_tab", "writer",
+ "register_dialect", "get_dialect", "DictWriter"]
+
+import re
+import numbers
+from csv import (
+ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, Error,
+)
+
+# Stuff needed from six
+import sys
+PY3 = sys.version_info[0] == 3
+if PY3:
+ string_types = str
+ text_type = str
+ binary_type = bytes
+ unichr = chr
+else:
+ string_types = basestring
+ text_type = unicode
+ binary_type = str
+
+
+class QuoteStrategy(object):
+ quoting = None
+
+ def __init__(self, dialect):
+ if self.quoting is not None:
+ assert dialect.quoting == self.quoting
+ self.dialect = dialect
+ self.setup()
+
+ escape_pattern_quoted = r'({quotechar})'.format(
+ quotechar=re.escape(self.dialect.quotechar or '"'))
+ escape_pattern_unquoted = r'([{specialchars}])'.format(
+ specialchars=re.escape(self.specialchars))
+
+ self.escape_re_quoted = re.compile(escape_pattern_quoted)
+ self.escape_re_unquoted = re.compile(escape_pattern_unquoted)
+
+ def setup(self):
+ """Optional method for strategy-wide optimizations."""
+
+ def quoted(self, field=None, raw_field=None, only=None):
+ """Determine whether this field should be quoted."""
+ raise NotImplementedError(
+ 'quoted must be implemented by a subclass')
+
+ @property
+ def specialchars(self):
+ """The special characters that need to be escaped."""
+ raise NotImplementedError(
+ 'specialchars must be implemented by a subclass')
+
+ def escape_re(self, quoted=None):
+ if quoted:
+ return self.escape_re_quoted
+ return self.escape_re_unquoted
+
+ def escapechar(self, quoted=None):
+ if quoted and self.dialect.doublequote:
+ return self.dialect.quotechar
+ return self.dialect.escapechar
+
+ def prepare(self, raw_field, only=None):
+ field = text_type(raw_field if raw_field is not None else '')
+ quoted = self.quoted(field=field, raw_field=raw_field, only=only)
+
+ escape_re = self.escape_re(quoted=quoted)
+ escapechar = self.escapechar(quoted=quoted)
+
+ if escape_re.search(field):
+ escapechar = '\\\\' if escapechar == '\\' else escapechar
+ if not escapechar:
+ raise Error('No escapechar is set')
+ escape_replace = r'{escapechar}\1'.format(escapechar=escapechar)
+ field = escape_re.sub(escape_replace, field)
+
+ if quoted:
+ field = '{quotechar}{field}{quotechar}'.format(
+ quotechar=self.dialect.quotechar, field=field)
+
+ return field
+
+
+class QuoteMinimalStrategy(QuoteStrategy):
+ quoting = QUOTE_MINIMAL
+
+ def setup(self):
+ self.quoted_re = re.compile(r'[{specialchars}]'.format(
+ specialchars=re.escape(self.specialchars)))
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == self.dialect.quotechar and not self.dialect.doublequote:
+ # If the only character in the field is the quotechar, and
+ # doublequote is false, then just escape without outer quotes.
+ return False
+ return field == '' and only or bool(self.quoted_re.search(field))
+
+
+class QuoteAllStrategy(QuoteStrategy):
+ quoting = QUOTE_ALL
+
+ @property
+ def specialchars(self):
+ return self.dialect.quotechar
+
+ def quoted(self, **kwargs):
+ return True
+
+
+class QuoteNonnumericStrategy(QuoteStrategy):
+ quoting = QUOTE_NONNUMERIC
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, raw_field, **kwargs):
+ if raw_field is None:
+ return False
+ return not isinstance(raw_field, numbers.Number)
+
+
+class QuoteNoneStrategy(QuoteStrategy):
+ quoting = QUOTE_NONE
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ (self.dialect.quotechar or '') +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == '' and only:
+ raise Error('single empty field record must be quoted')
+ return False
+
+
+class writer(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ if fileobj is None:
+ raise TypeError('fileobj must be file-like, not None')
+
+ self.fileobj = fileobj
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ strategies = {
+ QUOTE_MINIMAL: QuoteMinimalStrategy,
+ QUOTE_ALL: QuoteAllStrategy,
+ QUOTE_NONNUMERIC: QuoteNonnumericStrategy,
+ QUOTE_NONE: QuoteNoneStrategy,
+ }
+ self.strategy = strategies[self.dialect.quoting](self.dialect)
+
+ def writerow(self, row):
+ if row is None:
+ raise Error('row must be an iterable')
+
+ row = list(row)
+ only = len(row) == 1
+ row = [self.strategy.prepare(field, only=only) for field in row]
+
+ line = self.dialect.delimiter.join(row) + self.dialect.lineterminator
+ return self.fileobj.write(line)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+_dialect_registry = {}
+
+
+def register_dialect(name, dialect='excel', **fmtparams):
+ if not isinstance(name, text_type):
+ raise TypeError('"name" must be a string')
+
+ dialect = Dialect.extend(dialect, fmtparams)
+
+ try:
+ Dialect.validate(dialect)
+ except Exception:
+ raise TypeError('dialect is invalid')
+
+ assert name not in _dialect_registry
+ _dialect_registry[name] = dialect
+
+
+def get_dialect(name):
+ try:
+ return _dialect_registry[name]
+ except KeyError:
+ raise Error('Could not find dialect {0}'.format(name))
+
+
+class Dialect(object):
+ """Describe a CSV dialect.
+ This must be subclassed (see csv.excel). Valid attributes are:
+ delimiter, quotechar, escapechar, doublequote, skipinitialspace,
+ lineterminator, quoting, strict.
+ """
+ _name = ""
+ _valid = False
+ # placeholders
+ delimiter = None
+ quotechar = None
+ escapechar = None
+ doublequote = None
+ skipinitialspace = None
+ lineterminator = None
+ quoting = None
+ strict = None
+
+ def __init__(self):
+ self.validate(self)
+ if self.__class__ != Dialect:
+ self._valid = True
+
+ @classmethod
+ def validate(cls, dialect):
+ dialect = cls.extend(dialect)
+
+ if not isinstance(dialect.quoting, int):
+ raise Error('"quoting" must be an integer')
+
+ if dialect.delimiter is None:
+ raise Error('delimiter must be set')
+ cls.validate_text(dialect, 'delimiter')
+
+ if dialect.lineterminator is None:
+ raise Error('lineterminator must be set')
+ if not isinstance(dialect.lineterminator, text_type):
+ raise Error('"lineterminator" must be a string')
+
+ if dialect.quoting not in [
+ QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_ALL]:
+ raise Error('Invalid quoting specified')
+
+ if dialect.quoting != QUOTE_NONE:
+ if dialect.quotechar is None and dialect.escapechar is None:
+ raise Error('quotechar must be set if quoting enabled')
+ if dialect.quotechar is not None:
+ cls.validate_text(dialect, 'quotechar')
+
+ @staticmethod
+ def validate_text(dialect, attr):
+ val = getattr(dialect, attr)
+ if not isinstance(val, text_type):
+ if type(val) == bytes:
+ raise Error('"{0}" must be string, not bytes'.format(attr))
+ raise Error('"{0}" must be string, not {1}'.format(
+ attr, type(val).__name__))
+
+ if len(val) != 1:
+ raise Error('"{0}" must be a 1-character string'.format(attr))
+
+ @staticmethod
+ def defaults():
+ return {
+ 'delimiter': ',',
+ 'doublequote': True,
+ 'escapechar': None,
+ 'lineterminator': '\r\n',
+ 'quotechar': '"',
+ 'quoting': QUOTE_MINIMAL,
+ 'skipinitialspace': False,
+ 'strict': False,
+ }
+
+ @classmethod
+ def extend(cls, dialect, fmtparams=None):
+ if isinstance(dialect, string_types):
+ dialect = get_dialect(dialect)
+
+ if fmtparams is None:
+ return dialect
+
+ defaults = cls.defaults()
+
+ if any(param not in defaults for param in fmtparams):
+ raise TypeError('Invalid fmtparam')
+
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in cls.defaults()
+ )
+
+ specified.update(fmtparams)
+ return type(str('ExtendedDialect'), (cls,), specified)
+
+ @classmethod
+ def combine(cls, dialect, fmtparams):
+ """Create a new dialect with defaults and added parameters."""
+ dialect = cls.extend(dialect, fmtparams)
+ defaults = cls.defaults()
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in defaults
+ if getattr(dialect, attr, None) is not None or
+ attr in ['quotechar', 'delimiter', 'lineterminator', 'quoting']
+ )
+
+ defaults.update(specified)
+ dialect = type(str('CombinedDialect'), (cls,), defaults)
+ cls.validate(dialect)
+ return dialect()
+
+ def __delattr__(self, attr):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__delattr__(attr)
+
+ def __setattr__(self, attr, value):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__setattr__(attr, value)
+
+
+class excel(Dialect):
+ """Describe the usual properties of Excel-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\r\n'
+ quoting = QUOTE_MINIMAL
+
+
+class excel_tab(excel):
+ """Describe the usual properties of Excel-generated TAB-delimited files."""
+ delimiter = '\t'
+
+
+class unix_dialect(Dialect):
+ """Describe the usual properties of Unix-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\n'
+ quoting = QUOTE_ALL
+
+
+register_dialect("excel", excel)
+register_dialect("excel-tab", excel_tab)
+register_dialect("unix", unix_dialect)
+
+
+class DictWriter(object):
+ def __init__(self, f, fieldnames, restval="", extrasaction="raise",
+ dialect="excel", *args, **kwds):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.restval = restval # for writing short dicts
+ if extrasaction.lower() not in ("raise", "ignore"):
+ raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
+ % extrasaction)
+ self.extrasaction = extrasaction
+ self.writer = writer(f, dialect, *args, **kwds)
+
+ def writeheader(self):
+ header = dict(zip(self.fieldnames, self.fieldnames))
+ self.writerow(header)
+
+ def _dict_to_list(self, rowdict):
+ if self.extrasaction == "raise":
+ wrong_fields = [k for k in rowdict if k not in self.fieldnames]
+ if wrong_fields:
+ raise ValueError("dict contains fields not in fieldnames: " +
+ ", ".join([repr(x) for x in wrong_fields]))
+ return (rowdict.get(key, self.restval) for key in self.fieldnames)
+
+ def writerow(self, rowdict):
+ return self.writer.writerow(self._dict_to_list(rowdict))
+
+ def writerows(self, rowdicts):
+ return self.writer.writerows(map(self._dict_to_list, rowdicts))
diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg2/connection.py
index 2c9fcb5..d31df4a 100644
--- a/web/pgadmin/utils/driver/psycopg2/connection.py
+++ b/web/pgadmin/utils/driver/psycopg2/connection.py
@@ -37,16 +37,13 @@ from .typecast import register_global_typecasters, \
register_string_typecasters, register_binary_typecasters, \
register_array_to_string_typecasters, ALL_JSON_TYPES
from .encoding import getEncoding
+from pgadmin.utils import csv
if sys.version_info < (3,):
- # Python2 in-built csv module do not handle unicode
- # backports.csv module ported from PY3 csv module for unicode handling
- from backports import csv
from StringIO import StringIO
IS_PY2 = True
else:
from io import StringIO
- import csv
IS_PY2 = False
_ = gettext
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-18 09:19 ` Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-18 09:19 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi
On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <[email protected]>
wrote:
> Hi Hackers,
>
> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to specify
> NULL values in CSV export.
>
> Please review it.
>
A few points;
- You've included code from backports.csv, but per the licence you need to
include a description of the changes made.
- Shouldn't backports.csv be removed from requirements.txt, or is it used
elsewhere?
- If the previous point is true, then I'm fairly sure there is code in one
or more of the many package build scripts that adds an __init__.py file to
backports.csv in the venv that's created.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-18 09:30 ` Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-18 09:30 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
> Hi
>
> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Hackers,
>>
>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to specify
>> NULL values in CSV export.
>>
>> Please review it.
>>
>
> A few points;
>
> - You've included code from backports.csv, but per the licence you need to
> include a description of the changes made.
>
Sure. In that case I'll copy the complete file and will do my changes
which is of two lines only. With my patch I have remove all the unwanted
code from backport.csv.
>
> - Shouldn't backports.csv be removed from requirements.txt, or is it used
> elsewhere?
>
Yes. Will do that.
>
> - If the previous point is true, then I'm fairly sure there is code in one
> or more of the many package build scripts that adds an __init__.py file to
> backports.csv in the venv that's created.
>
I'll remove that code as well.
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-18 11:13 ` Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-18 11:13 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave
Attached is the modified patch to fix review comments.
On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <[email protected]>
wrote:
>
>
> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Hackers,
>>>
>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to specify
>>> NULL values in CSV export.
>>>
>>> Please review it.
>>>
>>
>> A few points;
>>
>> - You've included code from backports.csv, but per the licence you need
>> to include a description of the changes made.
>>
>
> Sure. In that case I'll copy the complete file and will do my
> changes which is of two lines only. With my patch I have remove all the
> unwanted code from backport.csv.
>
>>
>> - Shouldn't backports.csv be removed from requirements.txt, or is it used
>> elsewhere?
>>
>
> Yes. Will do that.
>
>>
>> - If the previous point is true, then I'm fairly sure there is code in
>> one or more of the many package build scripts that adds an __init__.py file
>> to backports.csv in the venv that's created.
>>
>
> I'll remove that code as well.
>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
Attachments:
[application/octet-stream] RM_3780_v2.patch (27.6K, 3-RM_3780_v2.patch)
download | inline diff:
diff --git a/Make.bat b/Make.bat
index fdd62a0..592d0d8 100644
--- a/Make.bat
+++ b/Make.bat
@@ -255,11 +255,6 @@ REM Main build sequence Ends
ECHO Removing Sphinx
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
- IF %PYTHON_MAJOR% == 2 (
- ECHO Fixing backports.csv for Python 2 by adding missing __init__.py
- type nul >> "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\backports\__init__.py"
- )
-
IF %PYTHON_MAJOR% == 3 (
ECHO Fixing PyCrypto module for Python 3...
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py" "-o" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py.new" "-s" "import winrandom" -r "from . import winrandom"
diff --git a/pkg/mac/build.sh b/pkg/mac/build.sh
index 11d17e8..3cb9741 100755
--- a/pkg/mac/build.sh
+++ b/pkg/mac/build.sh
@@ -144,11 +144,6 @@ _create_python_virtualenv() {
if test -d $DIR_PYMODULES_PATH; then
ln -s $(basename $DIR_PYMODULES_PATH) $DIR_PYMODULES_PATH/../python
fi
-
- # Fix the backports module which will have no __init__.py file
- if [ "$PYTHON_VERSION" -lt "30" ]; then
- touch $BUILDROOT/$VIRTUALENV/lib/python/site-packages/backports/__init__.py
- fi
}
_build_runtime() {
diff --git a/pkg/pip/setup_pip.py b/pkg/pip/setup_pip.py
index 92df74e..17a270f 100644
--- a/pkg/pip/setup_pip.py
+++ b/pkg/pip/setup_pip.py
@@ -96,7 +96,6 @@ setup(
"Flask-BabelEx==0.9.3"
],
":python_version<='2.7'": [
- "backports.csv==1.0.5",
"importlib==1.0.3"
],
":python_version>='2.7'": [
diff --git a/requirements.txt b/requirements.txt
index 74c4603..92eae7d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -44,7 +44,6 @@ sshtunnel>=0.1.3; python_version >= '2.7'
###############################################################
# Modules specifically required for Python2.7 or lesser version
###############################################################
-backports.csv==1.0.5; python_version <= '2.7'
importlib==1.0.3; python_version <= '2.7'
###############################################################
diff --git a/web/pgadmin/utils/csv.py b/web/pgadmin/utils/csv.py
new file mode 100644
index 0000000..7ed0f27
--- /dev/null
+++ b/web/pgadmin/utils/csv.py
@@ -0,0 +1,749 @@
+"""
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,2010
+2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version prepared by
+Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+"""
+
+# Changes: Handle the null values for QUOTE_NONNUMERIC strategy.
+# If value is None then no need to quote that values as it represents null
+# value and empty string will be represented by ''.
+
+from __future__ import unicode_literals, absolute_import
+
+__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "Error", "Dialect", "__doc__", "excel", "excel_tab",
+ "field_size_limit", "reader", "writer", "register_dialect",
+ "get_dialect", "list_dialects", "unregister_dialect",
+ "__version__", "DictReader", "DictWriter"]
+
+import re
+import numbers
+from io import StringIO
+from csv import (
+ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE,
+ __version__, __doc__, Error, field_size_limit,
+)
+
+# Stuff needed from six
+import sys
+PY3 = sys.version_info[0] == 3
+if PY3:
+ string_types = str
+ text_type = str
+ binary_type = bytes
+ unichr = chr
+else:
+ string_types = basestring
+ text_type = unicode
+ binary_type = str
+
+
+class QuoteStrategy(object):
+ quoting = None
+
+ def __init__(self, dialect):
+ if self.quoting is not None:
+ assert dialect.quoting == self.quoting
+ self.dialect = dialect
+ self.setup()
+
+ escape_pattern_quoted = r'({quotechar})'.format(
+ quotechar=re.escape(self.dialect.quotechar or '"'))
+ escape_pattern_unquoted = r'([{specialchars}])'.format(
+ specialchars=re.escape(self.specialchars))
+
+ self.escape_re_quoted = re.compile(escape_pattern_quoted)
+ self.escape_re_unquoted = re.compile(escape_pattern_unquoted)
+
+ def setup(self):
+ """Optional method for strategy-wide optimizations."""
+
+ def quoted(self, field=None, raw_field=None, only=None):
+ """Determine whether this field should be quoted."""
+ raise NotImplementedError(
+ 'quoted must be implemented by a subclass')
+
+ @property
+ def specialchars(self):
+ """The special characters that need to be escaped."""
+ raise NotImplementedError(
+ 'specialchars must be implemented by a subclass')
+
+ def escape_re(self, quoted=None):
+ if quoted:
+ return self.escape_re_quoted
+ return self.escape_re_unquoted
+
+ def escapechar(self, quoted=None):
+ if quoted and self.dialect.doublequote:
+ return self.dialect.quotechar
+ return self.dialect.escapechar
+
+ def prepare(self, raw_field, only=None):
+ field = text_type(raw_field if raw_field is not None else '')
+ quoted = self.quoted(field=field, raw_field=raw_field, only=only)
+
+ escape_re = self.escape_re(quoted=quoted)
+ escapechar = self.escapechar(quoted=quoted)
+
+ if escape_re.search(field):
+ escapechar = '\\\\' if escapechar == '\\' else escapechar
+ if not escapechar:
+ raise Error('No escapechar is set')
+ escape_replace = r'{escapechar}\1'.format(escapechar=escapechar)
+ field = escape_re.sub(escape_replace, field)
+
+ if quoted:
+ field = '{quotechar}{field}{quotechar}'.format(
+ quotechar=self.dialect.quotechar, field=field)
+
+ return field
+
+
+class QuoteMinimalStrategy(QuoteStrategy):
+ quoting = QUOTE_MINIMAL
+
+ def setup(self):
+ self.quoted_re = re.compile(r'[{specialchars}]'.format(
+ specialchars=re.escape(self.specialchars)))
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == self.dialect.quotechar and not self.dialect.doublequote:
+ # If the only character in the field is the quotechar, and
+ # doublequote is false, then just escape without outer quotes.
+ return False
+ return field == '' and only or bool(self.quoted_re.search(field))
+
+
+class QuoteAllStrategy(QuoteStrategy):
+ quoting = QUOTE_ALL
+
+ @property
+ def specialchars(self):
+ return self.dialect.quotechar
+
+ def quoted(self, **kwargs):
+ return True
+
+
+class QuoteNonnumericStrategy(QuoteStrategy):
+ quoting = QUOTE_NONNUMERIC
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None then it represents
+ # null value.
+ if raw_field is None:
+ return False
+ return not isinstance(raw_field, numbers.Number)
+
+
+class QuoteNoneStrategy(QuoteStrategy):
+ quoting = QUOTE_NONE
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ (self.dialect.quotechar or '') +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == '' and only:
+ raise Error('single empty field record must be quoted')
+ return False
+
+
+class writer(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ if fileobj is None:
+ raise TypeError('fileobj must be file-like, not None')
+
+ self.fileobj = fileobj
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ strategies = {
+ QUOTE_MINIMAL: QuoteMinimalStrategy,
+ QUOTE_ALL: QuoteAllStrategy,
+ QUOTE_NONNUMERIC: QuoteNonnumericStrategy,
+ QUOTE_NONE: QuoteNoneStrategy,
+ }
+ self.strategy = strategies[self.dialect.quoting](self.dialect)
+
+ def writerow(self, row):
+ if row is None:
+ raise Error('row must be an iterable')
+
+ row = list(row)
+ only = len(row) == 1
+ row = [self.strategy.prepare(field, only=only) for field in row]
+
+ line = self.dialect.delimiter.join(row) + self.dialect.lineterminator
+ return self.fileobj.write(line)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+START_RECORD = 0
+START_FIELD = 1
+ESCAPED_CHAR = 2
+IN_FIELD = 3
+IN_QUOTED_FIELD = 4
+ESCAPE_IN_QUOTED_FIELD = 5
+QUOTE_IN_QUOTED_FIELD = 6
+EAT_CRNL = 7
+AFTER_ESCAPED_CRNL = 8
+
+
+class reader(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ self.input_iter = iter(fileobj)
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ self.fields = None
+ self.field = None
+ self.line_num = 0
+
+ def parse_reset(self):
+ self.fields = []
+ self.field = []
+ self.state = START_RECORD
+ self.numeric_field = False
+
+ def parse_save_field(self):
+ field = ''.join(self.field)
+ self.field = []
+ if self.numeric_field:
+ field = float(field)
+ self.numeric_field = False
+ self.fields.append(field)
+
+ def parse_add_char(self, c):
+ if len(self.field) >= field_size_limit():
+ raise Error('field size limit exceeded')
+ self.field.append(c)
+
+ def parse_process_char(self, c):
+ switch = {
+ START_RECORD: self._parse_start_record,
+ START_FIELD: self._parse_start_field,
+ ESCAPED_CHAR: self._parse_escaped_char,
+ AFTER_ESCAPED_CRNL: self._parse_after_escaped_crnl,
+ IN_FIELD: self._parse_in_field,
+ IN_QUOTED_FIELD: self._parse_in_quoted_field,
+ ESCAPE_IN_QUOTED_FIELD: self._parse_escape_in_quoted_field,
+ QUOTE_IN_QUOTED_FIELD: self._parse_quote_in_quoted_field,
+ EAT_CRNL: self._parse_eat_crnl,
+ }
+ return switch[self.state](c)
+
+ def _parse_start_record(self, c):
+ if c == '\0':
+ return
+ elif c == '\n' or c == '\r':
+ self.state = EAT_CRNL
+ return
+
+ self.state = START_FIELD
+ return self._parse_start_field(c)
+
+ def _parse_start_field(self, c):
+ if c == '\n' or c == '\r' or c == '\0':
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == ' ' and self.dialect.skipinitialspace:
+ pass # Ignore space at start of field
+ elif c == self.dialect.delimiter:
+ # Save empty field
+ self.parse_save_field()
+ else:
+ # Begin new unquoted field
+ if self.dialect.quoting == QUOTE_NONNUMERIC:
+ self.numeric_field = True
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_escaped_char(self, c):
+ if c == '\n' or c == '\r':
+ self.parse_add_char(c)
+ self.state = AFTER_ESCAPED_CRNL
+ return
+ if c == '\0':
+ c = '\n'
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_after_escaped_crnl(self, c):
+ if c == '\0':
+ return
+ return self._parse_in_field(c)
+
+ def _parse_in_field(self, c):
+ # In unquoted field
+ if c == '\n' or c == '\r' or c == '\0':
+ # End of line - return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ else:
+ # Normal character - save in field
+ self.parse_add_char(c)
+
+ def _parse_in_quoted_field(self, c):
+ if c == '\0':
+ pass
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPE_IN_QUOTED_FIELD
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ if self.dialect.doublequote:
+ self.state = QUOTE_IN_QUOTED_FIELD
+ else:
+ self.state = IN_FIELD
+ else:
+ self.parse_add_char(c)
+
+ def _parse_escape_in_quoted_field(self, c):
+ if c == '\0':
+ c = '\n'
+
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+
+ def _parse_quote_in_quoted_field(self, c):
+ if (self.dialect.quoting != QUOTE_NONE and
+ c == self.dialect.quotechar):
+ # save "" as "
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ elif c == '\n' or c == '\r' or c == '\0':
+ # End of line = return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif not self.dialect.strict:
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+ else:
+ # illegal
+ raise Error("{delimiter}' expected after '{quotechar}".format(
+ delimiter=self.dialect.delimiter,
+ quotechar=self.dialect.quotechar,
+ ))
+
+ def _parse_eat_crnl(self, c):
+ if c == '\n' or c == '\r':
+ pass
+ elif c == '\0':
+ self.state = START_RECORD
+ else:
+ raise Error('new-line character seen in unquoted field - do you '
+ 'need to open the file in universal-newline mode?')
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ self.parse_reset()
+
+ while True:
+ try:
+ lineobj = next(self.input_iter)
+ except StopIteration:
+ if len(self.field) != 0 or self.state == IN_QUOTED_FIELD:
+ if self.dialect.strict:
+ raise Error('unexpected end of data')
+ self.parse_save_field()
+ if self.fields:
+ break
+ raise
+
+ if not isinstance(lineobj, text_type):
+ typ = type(lineobj)
+ typ_name = 'bytes' if typ == bytes else typ.__name__
+ err_str = ('iterator should return strings, not {0}'
+ ' (did you open the file in text mode?)')
+ raise Error(err_str.format(typ_name))
+
+ self.line_num += 1
+ for c in lineobj:
+ if c == '\0':
+ raise Error('line contains NULL byte')
+ self.parse_process_char(c)
+
+ self.parse_process_char('\0')
+
+ if self.state == START_RECORD:
+ break
+
+ fields = self.fields
+ self.fields = None
+ return fields
+
+ next = __next__
+
+
+_dialect_registry = {}
+
+
+def register_dialect(name, dialect='excel', **fmtparams):
+ if not isinstance(name, text_type):
+ raise TypeError('"name" must be a string')
+
+ dialect = Dialect.extend(dialect, fmtparams)
+
+ try:
+ Dialect.validate(dialect)
+ except Exception as e:
+ raise TypeError('dialect is invalid')
+
+ assert name not in _dialect_registry
+ _dialect_registry[name] = dialect
+
+
+def unregister_dialect(name):
+ try:
+ _dialect_registry.pop(name)
+ except KeyError:
+ raise Error('"{name}" not a registered dialect'.format(name=name))
+
+
+def get_dialect(name):
+ try:
+ return _dialect_registry[name]
+ except KeyError:
+ raise Error('Could not find dialect {0}'.format(name))
+
+
+def list_dialects():
+ return list(_dialect_registry)
+
+
+class Dialect(object):
+ """Describe a CSV dialect.
+ This must be subclassed (see csv.excel). Valid attributes are:
+ delimiter, quotechar, escapechar, doublequote, skipinitialspace,
+ lineterminator, quoting, strict.
+ """
+ _name = ""
+ _valid = False
+ # placeholders
+ delimiter = None
+ quotechar = None
+ escapechar = None
+ doublequote = None
+ skipinitialspace = None
+ lineterminator = None
+ quoting = None
+ strict = None
+
+ def __init__(self):
+ self.validate(self)
+ if self.__class__ != Dialect:
+ self._valid = True
+
+ @classmethod
+ def validate(cls, dialect):
+ dialect = cls.extend(dialect)
+
+ if not isinstance(dialect.quoting, int):
+ raise Error('"quoting" must be an integer')
+
+ if dialect.delimiter is None:
+ raise Error('delimiter must be set')
+ cls.validate_text(dialect, 'delimiter')
+
+ if dialect.lineterminator is None:
+ raise Error('lineterminator must be set')
+ if not isinstance(dialect.lineterminator, text_type):
+ raise Error('"lineterminator" must be a string')
+
+ if dialect.quoting not in [
+ QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_ALL]:
+ raise Error('Invalid quoting specified')
+
+ if dialect.quoting != QUOTE_NONE:
+ if dialect.quotechar is None and dialect.escapechar is None:
+ raise Error('quotechar must be set if quoting enabled')
+ if dialect.quotechar is not None:
+ cls.validate_text(dialect, 'quotechar')
+
+ @staticmethod
+ def validate_text(dialect, attr):
+ val = getattr(dialect, attr)
+ if not isinstance(val, text_type):
+ if type(val) == bytes:
+ raise Error('"{0}" must be string, not bytes'.format(attr))
+ raise Error('"{0}" must be string, not {1}'.format(
+ attr, type(val).__name__))
+
+ if len(val) != 1:
+ raise Error('"{0}" must be a 1-character string'.format(attr))
+
+ @staticmethod
+ def defaults():
+ return {
+ 'delimiter': ',',
+ 'doublequote': True,
+ 'escapechar': None,
+ 'lineterminator': '\r\n',
+ 'quotechar': '"',
+ 'quoting': QUOTE_MINIMAL,
+ 'skipinitialspace': False,
+ 'strict': False,
+ }
+
+ @classmethod
+ def extend(cls, dialect, fmtparams=None):
+ if isinstance(dialect, string_types):
+ dialect = get_dialect(dialect)
+
+ if fmtparams is None:
+ return dialect
+
+ defaults = cls.defaults()
+
+ if any(param not in defaults for param in fmtparams):
+ raise TypeError('Invalid fmtparam')
+
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in cls.defaults()
+ )
+
+ specified.update(fmtparams)
+ return type(str('ExtendedDialect'), (cls,), specified)
+
+ @classmethod
+ def combine(cls, dialect, fmtparams):
+ """Create a new dialect with defaults and added parameters."""
+ dialect = cls.extend(dialect, fmtparams)
+ defaults = cls.defaults()
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in defaults
+ if getattr(dialect, attr, None) is not None or
+ attr in ['quotechar', 'delimiter', 'lineterminator', 'quoting']
+ )
+
+ defaults.update(specified)
+ dialect = type(str('CombinedDialect'), (cls,), defaults)
+ cls.validate(dialect)
+ return dialect()
+
+ def __delattr__(self, attr):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__delattr__(attr)
+
+ def __setattr__(self, attr, value):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__setattr__(attr, value)
+
+
+class excel(Dialect):
+ """Describe the usual properties of Excel-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\r\n'
+ quoting = QUOTE_MINIMAL
+
+
+register_dialect("excel", excel)
+
+
+class excel_tab(excel):
+ """Describe the usual properties of Excel-generated TAB-delimited files."""
+ delimiter = '\t'
+
+
+register_dialect("excel-tab", excel_tab)
+
+
+class unix_dialect(Dialect):
+ """Describe the usual properties of Unix-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\n'
+ quoting = QUOTE_ALL
+
+
+register_dialect("unix", unix_dialect)
+
+
+class DictReader(object):
+ def __init__(self, f, fieldnames=None, restkey=None, restval=None,
+ dialect="excel", *args, **kwds):
+ self._fieldnames = fieldnames # list of keys for the dict
+ self.restkey = restkey # key to catch long rows
+ self.restval = restval # default value for short rows
+ self.reader = reader(f, dialect, *args, **kwds)
+ self.dialect = dialect
+ self.line_num = 0
+
+ def __iter__(self):
+ return self
+
+ @property
+ def fieldnames(self):
+ if self._fieldnames is None:
+ try:
+ self._fieldnames = next(self.reader)
+ except StopIteration:
+ pass
+ self.line_num = self.reader.line_num
+ return self._fieldnames
+
+ @fieldnames.setter
+ def fieldnames(self, value):
+ self._fieldnames = value
+
+ def __next__(self):
+ if self.line_num == 0:
+ # Used only for its side effect.
+ self.fieldnames
+ row = next(self.reader)
+ self.line_num = self.reader.line_num
+
+ # unlike the basic reader, we prefer not to return blanks,
+ # because we will typically wind up with a dict full of None
+ # values
+ while row == []:
+ row = next(self.reader)
+ d = dict(zip(self.fieldnames, row))
+ lf = len(self.fieldnames)
+ lr = len(row)
+ if lf < lr:
+ d[self.restkey] = row[lf:]
+ elif lf > lr:
+ for key in self.fieldnames[lr:]:
+ d[key] = self.restval
+ return d
+
+ next = __next__
+
+
+class DictWriter(object):
+ def __init__(self, f, fieldnames, restval="", extrasaction="raise",
+ dialect="excel", *args, **kwds):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.restval = restval # for writing short dicts
+ if extrasaction.lower() not in ("raise", "ignore"):
+ raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
+ % extrasaction)
+ self.extrasaction = extrasaction
+ self.writer = writer(f, dialect, *args, **kwds)
+
+ def writeheader(self):
+ header = dict(zip(self.fieldnames, self.fieldnames))
+ self.writerow(header)
+
+ def _dict_to_list(self, rowdict):
+ if self.extrasaction == "raise":
+ wrong_fields = [k for k in rowdict if k not in self.fieldnames]
+ if wrong_fields:
+ raise ValueError("dict contains fields not in fieldnames: " +
+ ", ".join([repr(x) for x in wrong_fields]))
+ return (rowdict.get(key, self.restval) for key in self.fieldnames)
+
+ def writerow(self, rowdict):
+ return self.writer.writerow(self._dict_to_list(rowdict))
+
+ def writerows(self, rowdicts):
+ return self.writer.writerows(map(self._dict_to_list, rowdicts))
diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg2/connection.py
index 2c9fcb5..d31df4a 100644
--- a/web/pgadmin/utils/driver/psycopg2/connection.py
+++ b/web/pgadmin/utils/driver/psycopg2/connection.py
@@ -37,16 +37,13 @@ from .typecast import register_global_typecasters, \
register_string_typecasters, register_binary_typecasters, \
register_array_to_string_typecasters, ALL_JSON_TYPES
from .encoding import getEncoding
+from pgadmin.utils import csv
if sys.version_info < (3,):
- # Python2 in-built csv module do not handle unicode
- # backports.csv module ported from PY3 csv module for unicode handling
- from backports import csv
from StringIO import StringIO
IS_PY2 = True
else:
from io import StringIO
- import csv
IS_PY2 = False
_ = gettext
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-20 09:38 ` Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-20 09:38 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi
When testing with quoting set to None, quote = " and delimiter = , I get
the following exception when I try to download:
2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor) for
server #2 - CONN:354106 (Query-id: 4121147):
SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
09:34:02] "GET
/sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
HTTP/1.1" 500 -
2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
Traceback (most recent call last):
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
line 270, in run_wsgi
execute(self.server.app)
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
line 260, in execute
for data in application_iter:
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
line 870, in __next__
return self._next()
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
line 82, in _iter_encoded
for item in iterable:
File
"/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
line 820, in gen
csv_writer.writerows(results)
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748, in
writerows
return self.writer.writerows(map(self._dict_to_list, rowdicts))
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256, in
writerows
self.writerow(row)
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
writerow
row = [self.strategy.prepare(field, only=only) for field in row]
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
<listcomp>
row = [self.strategy.prepare(field, only=only) for field in row]
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136, in
prepare
raise Error('No escapechar is set')
_csv.Error: No escapechar is set
When I have quoting set to All, the first column is returned as ""
dpage@hal:*~/Downloads*$ more data-1545298598112.csv
"text","int4","text-2","text-3"
"","1234","Foo bar","Foo
Bar"
Isn't the point for it to be NULL?
On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <[email protected]>
wrote:
> Hi Dave
>
> Attached is the modified patch to fix review comments.
>
> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
> [email protected]> wrote:
>
>>
>>
>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Hackers,
>>>>
>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to specify
>>>> NULL values in CSV export.
>>>>
>>>> Please review it.
>>>>
>>>
>>> A few points;
>>>
>>> - You've included code from backports.csv, but per the licence you need
>>> to include a description of the changes made.
>>>
>>
>> Sure. In that case I'll copy the complete file and will do my
>> changes which is of two lines only. With my patch I have remove all the
>> unwanted code from backport.csv.
>>
>>>
>>> - Shouldn't backports.csv be removed from requirements.txt, or is it
>>> used elsewhere?
>>>
>>
>> Yes. Will do that.
>>
>>>
>>> - If the previous point is true, then I'm fairly sure there is code in
>>> one or more of the many package build scripts that adds an __init__.py file
>>> to backports.csv in the venv that's created.
>>>
>>
>> I'll remove that code as well.
>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-20 10:08 ` Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-20 10:08 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave
On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
> Hi
>
> When testing with quoting set to None, quote = " and delimiter = , I get
> the following exception when I try to download:
>
> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor) for
> server #2 - CONN:354106 (Query-id: 4121147):
> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
> 09:34:02] "GET
> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
> HTTP/1.1" 500 -
> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
> Traceback (most recent call last):
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
> line 270, in run_wsgi
> execute(self.server.app)
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
> line 260, in execute
> for data in application_iter:
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
> line 870, in __next__
> return self._next()
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
> line 82, in _iter_encoded
> for item in iterable:
> File
> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
> line 820, in gen
> csv_writer.writerows(results)
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748, in
> writerows
> return self.writer.writerows(map(self._dict_to_list, rowdicts))
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256, in
> writerows
> self.writerow(row)
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
> writerow
> row = [self.strategy.prepare(field, only=only) for field in row]
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
> <listcomp>
> row = [self.strategy.prepare(field, only=only) for field in row]
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136, in
> prepare
> raise Error('No escapechar is set')
> _csv.Error: No escapechar is set
>
Not able to reproduce the above issue. I have tested it with the same
setting as you mentioned. Please refer all the attached screenshots. Please
specify the steps if they are different.
>
> When I have quoting set to All, the first column is returned as ""
>
> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>
> "text","int4","text-2","text-3"
>
> "","1234","Foo bar","Foo
>
> Bar"
>
> Isn't the point for it to be NULL?
>
while quoting is set to ALL, all the data types has been quoted, so I
thought null values should be replaced by "" instead of blank. But if you
think null values shouldn't be quoted even if user select quote ALL, I'll
fix it and resend the patch.
>
> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Dave
>>
>> Attached is the modified patch to fix review comments.
>>
>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Hackers,
>>>>>
>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>> specify NULL values in CSV export.
>>>>>
>>>>> Please review it.
>>>>>
>>>>
>>>> A few points;
>>>>
>>>> - You've included code from backports.csv, but per the licence you need
>>>> to include a description of the changes made.
>>>>
>>>
>>> Sure. In that case I'll copy the complete file and will do my
>>> changes which is of two lines only. With my patch I have remove all the
>>> unwanted code from backport.csv.
>>>
>>>>
>>>> - Shouldn't backports.csv be removed from requirements.txt, or is it
>>>> used elsewhere?
>>>>
>>>
>>> Yes. Will do that.
>>>
>>>>
>>>> - If the previous point is true, then I'm fairly sure there is code in
>>>> one or more of the many package build scripts that adds an __init__.py file
>>>> to backports.csv in the venv that's created.
>>>>
>>>
>>> I'll remove that code as well.
>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
Attachments:
[image/png] Table_Data.png (43.9K, 3-Table_Data.png)
download | view image
[image/png] Preferences.png (93.9K, 4-Preferences.png)
download | view image
[image/png] Downloaded_File.png (43.8K, 5-Downloaded_File.png)
download | view image
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-20 11:18 ` Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-20 11:18 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi
On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <[email protected]>
wrote:
> Hi Dave
>
> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> When testing with quoting set to None, quote = " and delimiter = , I get
>> the following exception when I try to download:
>>
>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor) for
>> server #2 - CONN:354106 (Query-id: 4121147):
>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>> 09:34:02] "GET
>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>> HTTP/1.1" 500 -
>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>> Traceback (most recent call last):
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 270, in run_wsgi
>> execute(self.server.app)
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 260, in execute
>> for data in application_iter:
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>> line 870, in __next__
>> return self._next()
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>> line 82, in _iter_encoded
>> for item in iterable:
>> File
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 820, in gen
>> csv_writer.writerows(results)
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748, in
>> writerows
>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256, in
>> writerows
>> self.writerow(row)
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
>> writerow
>> row = [self.strategy.prepare(field, only=only) for field in row]
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249, in
>> <listcomp>
>> row = [self.strategy.prepare(field, only=only) for field in row]
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136, in
>> prepare
>> raise Error('No escapechar is set')
>> _csv.Error: No escapechar is set
>>
>
> Not able to reproduce the above issue. I have tested it with the same
> setting as you mentioned. Please refer all the attached screenshots. Please
> specify the steps if they are different.
>
>>
>> When I have quoting set to All, the first column is returned as ""
>>
>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>
>> "text","int4","text-2","text-3"
>>
>> "","1234","Foo bar","Foo
>>
>> Bar"
>>
>> Isn't the point for it to be NULL?
>>
>
> while quoting is set to ALL, all the data types has been quoted, so I
> thought null values should be replaced by "" instead of blank. But if you
> think null values shouldn't be quoted even if user select quote ALL, I'll
> fix it and resend the patch.
>
So how would you distinguish NULL from an empty string? Isn't that exactly
what the bug is about?
I still think we need a "Replace NULLs with" config option, and regardless
of quoting settings we always replace NULL values with whatever that is set
to - for which the user could then choose options like:
NULL
"NULL"
""
''
<empty string>
We would never quote the NULL replacement value - if the user wanted it to
be quoted, they would include the quotes in the configured string.
>
>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Dave
>>>
>>> Attached is the modified patch to fix review comments.
>>>
>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Hackers,
>>>>>>
>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>> specify NULL values in CSV export.
>>>>>>
>>>>>> Please review it.
>>>>>>
>>>>>
>>>>> A few points;
>>>>>
>>>>> - You've included code from backports.csv, but per the licence you
>>>>> need to include a description of the changes made.
>>>>>
>>>>
>>>> Sure. In that case I'll copy the complete file and will do my
>>>> changes which is of two lines only. With my patch I have remove all the
>>>> unwanted code from backport.csv.
>>>>
>>>>>
>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is it
>>>>> used elsewhere?
>>>>>
>>>>
>>>> Yes. Will do that.
>>>>
>>>>>
>>>>> - If the previous point is true, then I'm fairly sure there is code in
>>>>> one or more of the many package build scripts that adds an __init__.py file
>>>>> to backports.csv in the venv that's created.
>>>>>
>>>>
>>>> I'll remove that code as well.
>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-20 11:42 ` Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-20 11:42 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
> Hi
>
> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Dave
>>
>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> When testing with quoting set to None, quote = " and delimiter = , I get
>>> the following exception when I try to download:
>>>
>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor) for
>>> server #2 - CONN:354106 (Query-id: 4121147):
>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>> 09:34:02] "GET
>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>> HTTP/1.1" 500 -
>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>> Traceback (most recent call last):
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 270, in run_wsgi
>>> execute(self.server.app)
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 260, in execute
>>> for data in application_iter:
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>> line 870, in __next__
>>> return self._next()
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>> line 82, in _iter_encoded
>>> for item in iterable:
>>> File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 820, in gen
>>> csv_writer.writerows(results)
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748,
>>> in writerows
>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256,
>>> in writerows
>>> self.writerow(row)
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>> in writerow
>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>> in <listcomp>
>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136,
>>> in prepare
>>> raise Error('No escapechar is set')
>>> _csv.Error: No escapechar is set
>>>
>>
>> Not able to reproduce the above issue. I have tested it with the same
>> setting as you mentioned. Please refer all the attached screenshots. Please
>> specify the steps if they are different.
>>
>>>
>>> When I have quoting set to All, the first column is returned as ""
>>>
>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>
>>> "text","int4","text-2","text-3"
>>>
>>> "","1234","Foo bar","Foo
>>>
>>> Bar"
>>>
>>> Isn't the point for it to be NULL?
>>>
>>
>> while quoting is set to ALL, all the data types has been quoted, so I
>> thought null values should be replaced by "" instead of blank. But if you
>> think null values shouldn't be quoted even if user select quote ALL, I'll
>> fix it and resend the patch.
>>
>
> So how would you distinguish NULL from an empty string? Isn't that exactly
> what the bug is about?
>
> I still think we need a "Replace NULLs with" config option, and regardless
> of quoting settings we always replace NULL values with whatever that is set
> to - for which the user could then choose options like:
>
> NULL
> "NULL"
> ""
> ''
> <empty string>
>
> We would never quote the NULL replacement value - if the user wanted it to
> be quoted, they would include the quotes in the configured string.
>
OK, Will work on it and send the modified patch again.
>
>
>>
>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave
>>>>
>>>> Attached is the modified patch to fix review comments.
>>>>
>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Hackers,
>>>>>>>
>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>> specify NULL values in CSV export.
>>>>>>>
>>>>>>> Please review it.
>>>>>>>
>>>>>>
>>>>>> A few points;
>>>>>>
>>>>>> - You've included code from backports.csv, but per the licence you
>>>>>> need to include a description of the changes made.
>>>>>>
>>>>>
>>>>> Sure. In that case I'll copy the complete file and will do my
>>>>> changes which is of two lines only. With my patch I have remove all the
>>>>> unwanted code from backport.csv.
>>>>>
>>>>>>
>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is it
>>>>>> used elsewhere?
>>>>>>
>>>>>
>>>>> Yes. Will do that.
>>>>>
>>>>>>
>>>>>> - If the previous point is true, then I'm fairly sure there is code
>>>>>> in one or more of the many package build scripts that adds an __init__.py
>>>>>> file to backports.csv in the venv that's created.
>>>>>>
>>>>>
>>>>> I'll remove that code as well.
>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-20 13:05 ` Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-20 13:05 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave
On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <[email protected]>
wrote:
>
>
> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Dave
>>>
>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> When testing with quoting set to None, quote = " and delimiter = , I
>>>> get the following exception when I try to download:
>>>>
>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor) for
>>>> server #2 - CONN:354106 (Query-id: 4121147):
>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>>> 09:34:02] "GET
>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>> HTTP/1.1" 500 -
>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>> Traceback (most recent call last):
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>> line 270, in run_wsgi
>>>> execute(self.server.app)
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>> line 260, in execute
>>>> for data in application_iter:
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>> line 870, in __next__
>>>> return self._next()
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>> line 82, in _iter_encoded
>>>> for item in iterable:
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>> line 820, in gen
>>>> csv_writer.writerows(results)
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748,
>>>> in writerows
>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256,
>>>> in writerows
>>>> self.writerow(row)
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>>> in writerow
>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>>> in <listcomp>
>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136,
>>>> in prepare
>>>> raise Error('No escapechar is set')
>>>> _csv.Error: No escapechar is set
>>>>
>>>
>>> Not able to reproduce the above issue. I have tested it with the
>>> same setting as you mentioned. Please refer all the attached screenshots.
>>> Please specify the steps if they are different.
>>>
>>>>
>>>> When I have quoting set to All, the first column is returned as ""
>>>>
>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>
>>>> "text","int4","text-2","text-3"
>>>>
>>>> "","1234","Foo bar","Foo
>>>>
>>>> Bar"
>>>>
>>>> Isn't the point for it to be NULL?
>>>>
>>>
>>> while quoting is set to ALL, all the data types has been quoted, so
>>> I thought null values should be replaced by "" instead of blank. But if you
>>> think null values shouldn't be quoted even if user select quote ALL, I'll
>>> fix it and resend the patch.
>>>
>>
>> So how would you distinguish NULL from an empty string? Isn't that
>> exactly what the bug is about?
>>
>> I still think we need a "Replace NULLs with" config option, and
>> regardless of quoting settings we always replace NULL values with whatever
>> that is set to - for which the user could then choose options like:
>>
>> NULL
>> "NULL"
>> ""
>> ''
>> <empty string>
>>
>> We would never quote the NULL replacement value - if the user wanted it
>> to be quoted, they would include the quotes in the configured string.
>>
>
>
> OK, Will work on it and send the modified patch again.
>
Attached is the modified patch as per your suggestion.
>
>>
>>>
>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> Attached is the modified patch to fix review comments.
>>>>>
>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Hackers,
>>>>>>>>
>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>>> specify NULL values in CSV export.
>>>>>>>>
>>>>>>>> Please review it.
>>>>>>>>
>>>>>>>
>>>>>>> A few points;
>>>>>>>
>>>>>>> - You've included code from backports.csv, but per the licence you
>>>>>>> need to include a description of the changes made.
>>>>>>>
>>>>>>
>>>>>> Sure. In that case I'll copy the complete file and will do my
>>>>>> changes which is of two lines only. With my patch I have remove all the
>>>>>> unwanted code from backport.csv.
>>>>>>
>>>>>>>
>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is it
>>>>>>> used elsewhere?
>>>>>>>
>>>>>>
>>>>>> Yes. Will do that.
>>>>>>
>>>>>>>
>>>>>>> - If the previous point is true, then I'm fairly sure there is code
>>>>>>> in one or more of the many package build scripts that adds an __init__.py
>>>>>>> file to backports.csv in the venv that's created.
>>>>>>>
>>>>>>
>>>>>> I'll remove that code as well.
>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
Attachments:
[application/octet-stream] RM_3780_v3.patch (532.7K, 3-RM_3780_v3.patch)
download | inline diff:
diff --git a/Make.bat b/Make.bat
index fdd62a0c..592d0d88 100644
--- a/Make.bat
+++ b/Make.bat
@@ -255,11 +255,6 @@ REM Main build sequence Ends
ECHO Removing Sphinx
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
- IF %PYTHON_MAJOR% == 2 (
- ECHO Fixing backports.csv for Python 2 by adding missing __init__.py
- type nul >> "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\backports\__init__.py"
- )
-
IF %PYTHON_MAJOR% == 3 (
ECHO Fixing PyCrypto module for Python 3...
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py" "-o" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py.new" "-s" "import winrandom" -r "from . import winrandom"
diff --git a/docs/en_US/images/preferences_sql_csv_output.png b/docs/en_US/images/preferences_sql_csv_output.png
index 48dee9c62a87640af5085cefad9dbd400912c867..a8036cad9681f97df80531d436c2d682f1093cab 100644
GIT binary patch
literal 291152
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	xqG91UVPh_HRK=*1J;({O`SW!A9*em
z2EKozNkBpiGKvbN0_VYSX^Y)_)SRFRj@NVsUWY1t|DcrVP<Oajg5j3vfki(2Nf>;w
zrV9t*G}6$w{{wy9EW&g!bIL%OJ4UHDU80hu2vd+=DOc@|F&+?2QJgTmWOl?GqX`M0
zz`j*cxFNJmgm}D06gmFa>>(}}fNrv7{05Zw5`If1L8P5(TRJ$_m2tkXMVJ;r(G2Iq
z16J#S197JGHsQ730A~mnzBU+Un*>sBRm`>3DED-~f;fN2JPaf~x&I-HPH)QC=kZ<Q
z?bVgzt#FXcfScnT9uW!nOD9;Z(!`QncM=OD_LXroTNRjuVHPb;0=4|<@k>trwAw%F
z>>_OFLSi5~-|Nk+g`HhfPVdoNS)5d%SbK$77A_x$R)=7wZBeDdW?XDHs*}Wkn+@=u
z;INP1I!|6f7#6)eJEV%XYVel1kHgayLf2bGuTfNS0kOB;3*DzxrhyE%gbpDuP_h^7
zk;Ju;bPC@%HFq+~-7s9nkiOTDU?3enei{|(S^1#Y;)gIP#Uv??x;(YuXS8$}QCfIX
zhW<zR9i|fVwsGPyg~Kle8VxL);(^2p-O|$`bT;5M@K0OthBCV}4wT|aQ#d!<=^&>H
zAV*<NmV@yi#PxV4M)!B~pw1+C2l*1}D6U3GE6GZM;Shcg248I*EpKMk5Vl1_9A6|T
ztY|B@<Kt1sGT}3Dw;UwH5DdFMbkgh(pFDaCV>v6r<K%ge7$(Rqe}Z1K_$JX5Ud4p8
zewElkQOn9qzbH7-lwhQ~ekeq`uW)p4z`8H!m0XR6Ct(n~eeZzZVV#moo<7zUcFmJ=
zN(>q;J5BX@L7ucM=Z*_m^NaQHrf)sJgz~*`LGte}OaFv8zk=Ya=U0yN_Umf94ZdSl
zJ-ui=ZdU=G$|4Wa-tTA?!C_Js>9fcAAfjl+bYWkFDa(CJ@wi8M7J2fc!D3@Du)4Qm
zG1NOwy>wDegj~E3?^}=U$x{R}@$;+_aJs?oD}dni{TG00IJZ>}j1*Y}W67`w;!9_y
z@azfOmn#gMOM`YOQs(1}>Cq#GkbP+ivEAbFf#(fAgmZ!;ajONk)z@pfRg}^}PxZ0>
zVzuO4e`1a9aM7Lc5YIc~z9RJ1TZ<f0s=3K3(eYBVm(ejjI0g3?=OzR@T|B{$3BjDo
z4($(9%m9Ee_OCShz7}=5Uj1<dBZrn^M6(p>ytW1uUoXcGZ|0uJzh)<QZd6$xE_AOI
zm@xy~^a=7l6dSvChdDaD(|qG>2&{DV`f1*FV7o7d<1{Buq1Ql@5pz#h)!T3_tuPvR
zwbhX{d9kx8$n((8_j3K2_rTRt!KDXmwY>nUY3#07xMf%}SMH(xVGNz8vj)SrgFNIB
z3juo~El4_LVVk$^Wu7V;(lESb0P3m6X;RQ@e?hy3^Q>3xD9kV$^_=<-p?-IoY<G6P
zl+Z6KYHC{fva>T=YFvc_)DUnv$QnwF3K1A2N;3JXJd=1nZeh!MWoyn@d#!aoA4`Gr
zLfpPx53J5TGl_J5ooG07kfvFjA;$hyWnI|d8qu1vS<qjR*sDH2b#&G+1vL5m!JqRi
zBp(&@ehL@VVlU{hqG-ZN$lr+8<g<n&^0s8cUw<H7>>`g?uhb)HYxXd(1b_3<{8-6N
z{gn%9)}^t~o*_M;DG&a3S5>3^N09G{<mSSP5g^-27Nstr<tx&U6i$0%O5Pl(JdSR}
zzI6cZ3YXG>RcbI!G5e<Q2VsihCKd4&kh{BG1w9<W>H@HReV!P6xs{(AaX{*JI*h8i
zJSv&oks$oNJF8PEL+HyLX=%o;0#sR9cdwgOy49{UVqKcR4@Wo`cKdS%nykK<GwsRA
zm|LF^YE3kOmt4cFid*7KBajaYPLSwo9Ehg}1OA|94@OsY5~i3=DU$^$>Ciccb_0{8
z=9}Z!R1VWD>|1zii<5wU|8kUU0T8q^5~w;X=T8a(#uT|P3aC3QXBK~OyC*EbwggEz
zD_qalqxQ2sCq}-I8h({dp=-EO4_ipW#i+suv`-c3)YpPRU@enns})A3XtR!oJ>FQQ
z<3}4n1r;$por^r991xhmWQ|5xlSSynjy^K#|G4SIf3cM3pFbrKqVEIGIk+=m<c*@!
z!tId}PsEqe1zgR^@o=IFUDsM_ur|R{@68!oE`VCEFGPsz8x}oL@q68b!ijobY*D`g
z95)aXvWll>6e7^-MyoTo<nE*8$~PGOLJ(&1Et65~^znO6JlN@U7K6u83*Nd{<>h<`
zE!9Ej?1CQ)pf0Z>vKD(edMd_18|?U<+;la9t}*5f6a$5pqixGq=0i3b%^06)f)5or
zxVv&e$7i*tHZpoYE0XD$W9G-C9SRr9;Q|^UC(p5Zm4$ay_&*Y8sz$l*B4u({LCBxy
zW+X5NVqN1@dqDNQ)+#!m+5(MnpsT6RlboM9Cb|7&voxDWrK^oJd6O5+6qB%e>u%6J
zw*;`KYaMB{aJ#k577QlJA?TKU5WA{Md)w0yt4Kp=ah5M{`~z8iNS&f8N@a-W<PB+#
z1k!&7#bfG;mTkYz&Ak2AZIeR=+Y)fj6b&rP;&$7T)_+1iIy$nS7RAuSS2t>GZC&;V
z!$`gy;hO(>@>;A@A5XLQiR{UB_Jh?#o>IFFR6=PAgv0!*)fknz9;pW>Z$kw%{i&Qm
z?&KuTajl2mC(7W<*Q-v9>SWC&UnU3|7xPPtN3T@{j2>(;EPO9Rlx(d9e>Wb{dlGWt
zou}Gno9>|V3d(_cM0@`(3^%^>Ud}I849Z?XTi}bn-%$7$6Z_o@1$7)Hu}Y~a25%ZR
zkAHQ*-Zzj`N3>*JJcB0sI8xFX!>qS3mny0<1qSnJcEn09Vuhui90D8n7k=W<n_ei$
zV}GEi=3Q40^E~e5C}Rsad9#6^;|@jO;~7$ra9!T(H>axt-jscrTEy(>eZ#z~$cGRy
zjy^%0!K-*!2)Q@ly|y;Rf^OY!L7m7L|B(8#uQr_UMUKC+3f^EKp0Ia9@ML4@tKEyi
z2R0=LYg1dQ3Cu5en$|MO+qBYD_NUeutL;T=EBD*Izt)D~&v%rSAgw{sUmxLF>|2KG
z(3A3$Wezt6+4sPu2kh;A5qz47qDv*HeSjy&f}KiZ?xYJgYA8FEe{fXZ!)*J=Y)a%S
za^iUFT~-#BeikW4x|`%4RdwAUPNzMMeNPV$#4wT6kj!bjn<1`Fg`Qpw+=+0A46d7Y
zM5GFnk38z8ALm8<t~p`$rP&$xJeC(?)bCvlPAehaejo%tgmLtn9KgGcGC|MoMe{5-
z6MqX3QcDE;IPwZJT_@of(S}abk0$F>eOt;?aSi4L3cy<4Gx3!a(!+CQ?w6$-)A?kh
z42e6`g6IUn*!82Qe^0Nsyhp#?mvx<<DEtOy^wP^x7Pgnq)%g*rAVrPybhJHF<^W$_
zadnws|0swK-jP&T(>o?@vSJSUIL%~ClNZOX)sTy>jpu_HHxoqsV_vV1N?lrUe+1m#
z^_EhgO!=7rT~ZBC`lp%WBM_(dl)BC&CzDQRF`0P0Yt3B>Y1Kz>gGvtoGHgNWqBnTo
zU7l$?N%ozkx|S%XSg6se^N~}h#7FF8k?L1zEIk6Ospx<OCR!3|>ejfe@bJ#tQw@FH
zkfTz^G5t<Nf>b;p4n1D){A(7##EJgwi?mVtf^mgjNnX+;*354cF8;HA-HaYuSXJaG
zcTHAvR4)%e{zf$zYinx}N@aY>I9&Dk0$n|z(#b4}E>M(c7+5c>d~V6g!#!-7WS*)U
z{nHmdT3G!ar19Jgu<_v(V8RfSf?}&fjg6uIX-|2i7-dn`ybv^;dsjvFzzfpeg%`m|
zK+@r<rSuzrOzfOL8mgz`5~}*^^|ur&IUahYh*u`cU`cT}<xk}58`pb1$Gd(qI(m3D
zL0t~fk!@o`R-TE0d6{(~MJ4hz{Gw!Je0HZ}gb8lBUtdL2!8$6wuIBopUcnR5823Kf
zr(tDXZ>>T>C%`!B3I8ZB53^@#k@>Ww0jG$x3!v#mSJu@O!fDg^==351R$edxK`u<e
ztfP3b%OXr;*)J?8)lVN&zdHa(ttt&{qYKvb;3)QJHAI84zjF7eazN|z_a}*0S$2fx
zy3k32HpK2s%+@hYy4j)nc)cs=M-3+zb7OdFyVsb<yO*tQNA39glEh{`VfX$^KIIlA
z>2feCQsoY5ZxW1ZLqo&7l)v8IY%&^nVFgl?Oin(Q^zzKBS+lg@eJH6ChkdngxF~g6
z$!rijZ!z+U-T<#W{O0*Q@Q{gw3TA+!RPdwMBSq&}z7AP$ENNY6B-y$IF;!exkm!Wu
ztNr1k69{)3iUxcCF4_{mxPekT#1FS>3>%qN+Xi|SgnK5OxN#WH@#<a+0{q-#C37lZ
z!FGAwo{S-NPEg8EPx`5C3Viq;VC7Z=i6|e)G5B^aE9sJ>SLJkwjyZR>jqH|aw7fYz
z^{QeK89`CXnFIGqrp28UX2Ifi#BH9Z1Eaw4=Ug#0ioWaQC>2fk@=vS9x?<;w^;-zA
zO?sTMLisav3mYK;c;L;xzUkHlzCYU&zUEMm#P&}Rg)2H(dw6iOReb4jGh^LM-lHl{
z*ZjJ-Bs=D*8m-#4T)nNWJ+<eMo0AI0VmRJ|EwS+jXI(kDyE>9#=@DmIN`wNbNM<N!
zaz7wcwMgR1#glO>sl(RsIS4j<Z>uP|rnmv2$?GhQ61{>0MLOVTM&QGvsG(tY!G{t*
z`&>Thi?|QPWME-$)O5*&BuS2PiFl>tmw^!dNN^}o2#v1W8~T!l?xA1fVA$%hFe<20
ziuPDfSlEozow=fO<YyD8qrIJN!jmr+Gy3@Ud_4-8qtHJQgQYUa&8CKG1nA6Fc{PSD
zB!0)8d4}+jBU{1~mQSZfnehoCkFxb(e0>P=84Cr(7Cj_yug0%>aJb3`=Z1_8o63H9
zkY$^vYYK`9;#Sf)6hLMq^V~NIl~FhkA@A=$J0!Uy!vh2v2JKqUOP{kcSTkbF`nBvR
z4!r0~eA>z_URFf6Cnj~}kWUK`h<|hzon55T)8A<ZO!B>SmO-u*C;e2v-ruYo;PcQC
zz1Y+2rf)XdUN*rWr64S|5Y^NAEzdKLAR=KDo$>OfL+7VAHtcr4$BP_Y#m|A{xbI;(
zySZt@E@Wh6{503IMXHL{O{K#2`YK#}Ah|o1!Y7zv%*9IF8!91MBf?Wsi&|}>9&X+5
ze;^@xC7WxGxCU-`G8%+vNTDsO3bv4F$|&&JA^U!o+QOkfXd)oM;{4}TM95MS+^}3y
z_g*6hohg2aR~o_faX{#<5#|v+jJ6M)Fe!;*M#T0KD71%#zR*3~HLi_{GhshebrZcm
zmaySiuKGMnFtna74)Ba+Md<|gVU+?w(f#C1$bcdutKDaG#6npVW~U(FX9%S;Q_Nhp
z>t1#Gsdyk~$-0XqZMOO9x+WG`h53PjF$YjbMRN~`y%QenK4utyXFw8JcHFVpmuX=0
z<8f67tU5Qbj9_qk=*EF{Fs<PMv5y+3Ieu%RlchB{esMiPAp3OI*}=(u6~<{qr+<1R
z!&J9Tr|eG`aXpCvPpRwaa?tv^9(9~Y?1xsHrCP}Qbx(RNZEZ%kGaVYu+8vjcxA*9#
zA4M`VuDn7ASrl=aFZ>qavkn@_G<Vp?lT#*@ZzIcG)w|yaV(#WPZ9d9ssA)wbB;IbC
zR^nos;}<K1D~#8HFFvlSwM)?Fhm^l4K+2Odl3jnxK+}hPIVi+m?GM~NEQP6T27sn(
zg(z%b7Z)ev6plHlN(-7hI3is69(1!Gma@d?4hTyIve$er5*Zkoa<Zgsy$tCHfDs*W
zSlY76bZSJny+zaTBn)C1$dS-Qly%v)w*`DUZYsV!cCArNO+h;E&qV!6xPP_9Hkcsi
zhArPHiln;{qm4bv;H^b#+a5lA(1eg1<>bPc_A(Mo^LF!tkEf>a1OGZUFx|A!A|1a!
zYvJ(%i0)yk80rYwo+_O?vM?9CvnOluUEA*q6%)q_#=!EaqBBWJbaL<%LrB=Rw+s}4
zY;Mq3-Nfb*j^ZtMbhEPa-#WMN)d6w8$wy-}*k97jNizWmd=_CUU*^kuZVqRs7Z%J}
z_1gh8N!GgUReIM#L}peZ)Y!F^IqUL#WY7o~T3_|ZQPLxbogPdjS8zLGNWM2O>>Ci<
zld;K9t%Tg_V8)$)sw{&3;jr6r+Qt?8!n&ff=!fQFNMlRa!$bBJS-c!Kp~KwBdofAM
zn7?mdDm8MAdV6*jmM@wf%93ulX0PF-pI%?W-lZ2xr>+@wc2DG@afy>mqxe2PBG(@r
zeDR*?T64gO!c-zZfk49Vu_==eqg_t3#$ID6w|fVM;e0k3y&YA0iyv3Ext%Bw%Srlj
zLNk*^clWAA$mnq&vu$xC=~p^t%;9!vAShWN2Hn@7<ycim9oDH))#n$~G(=-Zmosrs
z=*{Iu$c@tUsIt8zLsf6u%JT9e%WyNzV4+X-1~~ieA)KAK@;1E)wX-!Ia-3=l3)?fT
znMuE-90BgJy=U1Z*=OT<F?uE?wBjaeXttK|(^z1`zjpR3z4v{rmuG@=7+I<#7SzQX
z&3yW1e?<Mh@MK?#j47PKm_i)QLMA^qHHFA#w;mZEkF4YKxZ8YKltCj;J#6}(AU`2!
zSzN(g&cU7z-%3dGqTYz9(AJJU|JF2d#&O5Y@(ErUN0N<?M;fWT9aT3^axZ;(CLE*B
zA(2VY17Q+KS%m37v^|zv#~<F98=!KB**K3QRQ`48kTW}>R*EdC*MLBs)LQyml80g%
zd9dz^7SfRe@j7qlE4ZeLB8kz2%LB3^Pg_&Mx|9G!Vd^-b8*Z>S%zk?l&OhK)c(I1v
zKN+GU>uOAMp#R+0(FwBiOz%Xpg<;4?&C$_N{E}kgZsl%g3eAyt3~^9zf_m&r;d%hg
zeo~}pO$}`j?=;V9i;uP5hS04e%p17Fm!Mt-8<X!Aa@UNg_Tto1A?-s5_T_KzM<!@}
z*?cc1$~a%YV=`dAC)B9Qpv{yd;Te0LE6+%tu26xg`^P`WZArEn0Z(5;FFd|4Xi^jJ
z4Y}Q~>sga6T9l)#5KD^G3RV_K<VM?=1c^_r-&LGyG}RHr6yc@{KIG-#KOz0}|C3?+
zL2BTR9hKe5%buipTUAl<@$~dG7FP`!T|-qhNPz+(WmI*_TP!2>N1S)&CHEpZz`}P#
zqzrX!ctQw=?@9leGSD7d5TW$@6-}`~Z~J;;-X}DqrI#~!u8^n8zF$7*zcO>b3Za?W
zrmY~$h}2VslHFwH`E5_${_GLwx*Ug}<T#8&HS{E-h8A8HIH!Wp)etBoJ2?hoyxCz)
zPWz?gslZ<IPbW|hXs|=`7JUuyw(xAgY2uYci!gMB8QEn9MGYdRX7>6HEt_dax!-Vk
z@7tT66M=UZ(LCLc1?i4-VktXuZk%^bB7B#<9=U?Q3yZO@D7VWv!AVL1rT7ANDq9SO
zN|e&}=1xFVE!!OxbhCpzO(hvqe$-8P=Dmpq2e6)ueCa{P*t_zI{2bJDK7hf-K%TlY
zQd)3IvTv#TUN+OwphDStfo4A)=&Bn1d46aU4A+>TieQ{69;vP82K&ge>-KY78$e^7
z8X%24qm6Zd5N}M`_i0HkzRC&WPYJX`5kE%(hZ;|TFbdMb^71jMMmpGqgy8~G6-~-0
zvRztLp57XKg7lLgp=y~S6y{h@5)~x{Aic)q^b~@+B5JUxmW9m<VtEtW0>-8wP5>pZ
zY@;6@pJXehgqJ0W@2`;gtt=#vgShdCxmsco9!MwKNTtHq)w99ouN=EL+#GiKmQi#E
zBPVT=^Ws9)sgL_XBe#`Tk-93q&|VvNcm`-S-RZ?ask$#G^4%~H;<hB^Y<{f5<zVoZ
z3GtP~kG40<PclFURrB;glaeQfnljNtoiNtd#NO(u-6pt)=}J!0>6u@r;;yGNA8++}
z2WkfAejWeujbv<w)`_-tFAfb83z>6P9xwb<r#HkE>5@pDc$;~e3pmQr&e2vrH7KdA
zhLeKR0+li+w#R7{WBlb0SuHtVu)KW<jc=%u-E^YJ)m7R}pV-#{pG(Wikluslys)j_
zFG?avl!=rm75$m1X#POGPajRIc<XaaJ)yesYC^w}^eSdL$_suh*b&|yxML=Ms@65a
zjhJDlj8-7VanLs@t2vPXyF1`uJDH0w*Ue0cuO}JaufTFpy7`W+8W_RxElPDTs}4qv
zn9KoQdI{IA(waOkVKI(!h^8R2wUW^qZ+`Ho(C!ac-JyuUjekuzKt(eCmb$7P`2#vl
zbuWmhFCvljm4>9!od6+2d0(Wd;g!qwxFAg=Gp{zWYreCLPy0e)q0Z3G77=-NHe_J`
zAULzbdCjDh(IblLPCB`<ZjpU~YeIudUZv<M)$i;3RiL175L>H8nFTZ<nBOt!h_!~l
zJYMa_CV@q<Cmlc`Gg(||O1{=uFfzqQQi`Ila<kN`vR<*ZzD-RN$(Mbm#QR+2EdIw1
zu1ym%14;fL9$WC^;Y@b1Lwv-9ScW5fZkI(@&uMN$YBV7!+s+firlbgoA}x~PXEe%w
zPBFQbAtv8@{qjk_3yX({P_OhmtN$6nyHSG`Mh%5h=DYzqQEYoS6Kj}0IwFwkv8$7>
zt10V>+>DqosZo(SG#>5Z=Jkb5hGbQV1=FC{jD>yANvbK={!^`&!hazMWLEEUFXT#V
zGq%o(K>E5YBobwol;&0vEL!H68l6G8>%i^ZHcdyl5-xSdxJJZA!%g9IAKLQ>XYp{6
z^LwR-s8sY%loum`hV_5B06A`*_2Z5<b>S<Bhb@?~OiWJfKE7pyZCe?!WKBw;HA(_#
zkS0jN!^8LP4)uu2SCYE{YwGwTxTqAF*gZK>5iP2A>%|F<;(mWQzqciHf0q+*CemcE
z^;?&H_Lu=Un!}GCd6z_RAV!GBg#t|r+fba+9y52xcO7<Xy4a(lY$WSvW~oLLL@{_P
zOl<GsB3R1fIKNx4eid^2ZHV&T&tw0D_#Q}zHWkh1(!5oZNBc#f)h2%X44Jb6%AO#m
zC`?7AWN1QKM{C7&G*wS&T_>ZFWccQS#SX+AsIZ~rX=S$zqAXer?87HQdM4U_Z_zQz
z_58i2yf@w0z=THb<Wh-3lb;+*ZR30Jj?+4A_ofMsRb72+?2r1k;GP=lOal`6V-9CB
z&zm6t4_?~K+6~?Ybxa4froUl?HQ0c4T7ybURz!S~^7l$1wTVhjxTTu?H7;jGFI>WR
z6=`7JTMptooI8SB16O64>{K6B`fz@Zttw+MnFl9847CC_e9W$#snWt!7ts^9=S+jG
zLGDjSFSSYXIW`xl>c$k~T?5b6oMS?<k=U%cRFxp41nXp)#C*dbvOqQ6AFZm*B~u?y
zqKj;RS@6@C)heg#>`z@f@4X4Q5F*Ev_Z(CG6%qo<6|Wj{3SRkS!C@?n%(kCdDeClP
zED|k9$AjaszOjY@O;B5%@M?zO<y0CUKY#LpV@I@AO4Ria===i$^G~4pDg(7@y{<sa
zr=d^_QXA$a+=*=6XuEc0WQUem=H3yAp-efl6C-YS%QPC$R^T+h9A6Ai+6T@;c1_pi
zGZ_;5gFVvwbmlley}JJr*3BD|*j>1Q9zPt-qt63$>hEe#MPUiWp3U0@w@+7^Rv#L_
zuM{>9zKa>Yco=s5P&Fb*-a><tFx=PFcUsGb@|gj@%cbEPgd8*23-9p$Kuu!MeVQ<s
zTCUXZO7)vRNC`b8n34)Vt7bn9S-6;p)W?satWm~|5XvWg$rEaUq)Ykm-sSr1iT-{o
z7^hO)$%z>`ERat@4kG&E`VsY|=T_r60^{<4`BUbv!h2)LxiV~G`B8HQLtozS5OR88
z#AJ|QpvU-x_o3Ubn&^t^Je(-Q5T9^41R~raUO*Go6A3QyU9Oa7(taa<0*s(3qndzZ
z8n_Cq_ZHJoeG1G#;C5~^Q;j_-LdlXf`nksfw}Q5IggpmD*G6%kD&u3E@z3GdQ5~?J
zYUpScdRM-TzN1>0UR2mok@_v=w@bc*82DmtsZAF`!uvp>wDcSkqzaNmwv+_SecaU>
z85(-(x-;G*hg&YMZmxp=J{kzb&;g@)C%qaf$5e~m`{$q6k7T?-Xw+<rcvjV0xWJ
zxt*3+bZv|wMFNPs<w#oz#S?>CiQSSC2KM$-$SFla3bh~h2eV<0w#Ey8XAk8Fz>tSi
zhV2anU_tBAifuNQSrNj`w7vAA$6HjWg6=!cy#bHADHUd0u(`Vu5D<?_nZDzv4?8Jm
z{R2GVxZfkP)xnBEK%MkC;*?p9Q%}QirEPvA#@%1UyE&*A#c_8nP5Bw8I~jLe+Z^uK
z-13Wx2CZz5$dAhQMOYK(z>@;sd5}P4fKhUT&x~cXEcRb|Y=4AA!Sft-SC6e;pFY-?
zTW@J)Wt5%vHEsBY^R_yx`90}aO+49z!k((723AbrUvoxnJeQT1Qar2nn@%|7*!}jc
zlcVjY=fw`3@WV8xLuc%B_esxc+cmDTuwZEPg!Bgu$g;4<gQeLNzg6lnZ<D;TM7BFu
zvkmLNi2jXH-uyviz`L(mI#=zy>#&*1QxTaGKqA`tUhPxR(y~&FP5MU{ro9;o!+ppl
z#ZZ(4x@T+!%mzwBiqqZo`?5eB;p5-5xNM?+X4qQV7Ep66I+rxkNwTcXhOb@zHoD6-
zAaUUQK7m6KBHH;JvFCeXA!Jro)_ljd#3_)AUu`X{6~CeEH{E&f-Uk<(gc!B^IyLOm
zMKVrt6up)#3*L1%g&uOP$L7=Ram5}sJ_iyjZ!yG#HQ3%8A`HaEZIv$`0{;txP%dIL
zDwV~3Dbsy6b4Gz)$A8Q24GH0-@1YF3?Ci+JrM4P=hJ`6UF)7c5=f*RBdPWAV7B)V>
z<8A6dmC}Ekl(1KY16NF6pP=)up^6AUW_tibzrW*t{YzT1z2IjnS(fCMdzl|%zq>TL
zze@_>qKRl@V}~0qoOy3Ys3o{_pc;dNgRAMKE2D%=Xu-bw6JPxT5zjZeHni%0I^{fP
zx@;_Vc(R|ho%6Ln9hIq-d@C2?(v&Y9Ud_>qIG$nr&AA#J!45I!gsKA*XGeH6%$TrV
zZuNh$Hd-$kjoUM2BP;t-S}DFGN=WltrSDHT@`uLnj$&UA<vwpm*(%h0kMbZtpl{Ad
z(+^0~cR&osn4i(!9j94mb;SJcUU}bBH;=H|!jJCh^>x1XWWw@`%&RNM<DU-g(##04
zc^<=^FzQ>PL~yCEtAN)Ay?4a334Skc2p>Oc-Xl5rUU+nD@<QpqY+=0j1@L;_Y23p)
zRmDCB!)V;z-fDDsu=3r#_dkQFvt=|84tIzO!QP*(efVBhSvmOLHzhCc=b`#vE`UFC
zqJX?SLi}(+gGal_PiI#b!(aaB%`wU14jR#c4?pJTiIKx1wbI`#POUuO9XmM$ushE{
zfPQ$&9M1X$lmwV7()aL)`jm`>P<62vwmfwQZQkFgr2o5~y}B!@A!pWGnDP*e^%VdF
zh648ZU;6krE8EU`N0O*%tEjK1C}B)D_%@MhW|W0jJ0mfI=duy%nG`Rw+JFjh(IzdK
z)|P#iCwKvrr|+*-bR)qIomaiAk4p0}N=r*$Ha2zG+??NXs3C{-7c583>X!Xh;m8=I
z5Vl-owCb1JO{rb2H=@_tTzh3>VE8nNfeT}4%$JMH4S>Bga~hg7XY5@xv{Ys{{N$Xu
zzY;LVM9xfGs(Sd&mZmR_s0~+F3|{p)0-p{opgzTXu<i2HfZ*1`S^n$Th7qfOy^VCj
ztWR4wGwA|v`qNd!ZGP7xUCifC++#kIH`nRyc?g*V+*Q}{XXzlPSqmNP-<A^cySgIA
z=ZqdOT5NVeNv6?bu{3zJhKu&+U0h-cZR~_NKn%jwr;|tQ6o5#YHP53u5gB6DOn{uE
z62MQs-;U|p2zxnkx6tVXsiSCY2^Wx=FKtu?lQJ*@8=M`fNB%iNXOiZz_S-n78inFc
z@!c9z`COcE01#!F)2CKft((~QeC+fI@Sn!*Xb>V8aTcj52{kK~4@st;D6*e#$yT3N
zTr)dLz`lE-`_Dins*ew7ss~m#*WlKDmTO+4YZjSf3Stw<%X`Mq@4Kz7k%_QqK;rk@
zUz6}X&auZ6EjvVA)PdI>)2xW#X%e$Wo10CQQ5`9PzKFZa7i0ezV(wH@wTM}f5`}Nx
zk7m20bh58$`KsUC{8O4Hav)A@1+Q{G3YjAcCUqlb>v`7FIn0AnYBP~U;o)BKtpdkq
zSaqn&_&=)x6Et9`R3&m6PyIC<45{XP;5ItbR*4LK^YI<L8E9$Hq2zE_YZc%t8JH<^
zy-H&)yQWvB&jx1tC(HNZt>(<#>*P}#=>AR<QabLhMjQ!>{Rn40{ut*y`}~i#Cj4)o
zSG~3~E`zQmdk$+wNJ1p!KkZG_!lSKMta%B>8wuk>DY)!P6$lGHxbNh%rzQ$X9em|d
z0hkv8f;7w{Ho`@S^7)pQW0vGa$Sj$?W~?JBFy1y(e##1Ke;5XuhB@=7Kje^qI1Scb
z!9K1;26)3pzQE`BSz@l3d4dHiB)n@oE(&N7{AQP`H+TRhX1E~*x;Rx*;|vVyn`)A;
zX~TcKIFOkQ0ml`?f%({upBNYr8Ynz}S5mcLLEQJ=u~;FZQOl3H9OKPbd8KM1adP>r
zDn<Ds-=6BI`Gu9CEW2^6)X<fC{_R49W}0FlM#PHIY*HimdXgXGQ3XySC#1h{Vf%=E
zBWAy;9N6_b6H$ioiiMukrm!2YCuah^Jnd#r-&lV`bXYD{(1>4${)4D@7ScVOv!a_5
z!G$=*8aPUCEl9jAMyBE4+7dCPA*4B~o9f-@L=I)diF+|N@YM=VCmYO5ya;7Ym$Lr8
zmC?zN^#yf26B&7_0g3yQv$3x{vZWiW)T<moN6*BGkA-bg+_XDLpb~*Lqv=}%bM!<Y
zP9d6L^EK8U)CWRsCWH^i;GuycLZf-Vy4jrTUAF}6@Xt!IEUZfh$Btq}hvSaK+2%uJ
z!5dPMjtbXo+pFIQujV2YG?k+u8^&0RL}A+}AWpirm3h%>Xm>@T8RwkTJf$}4$-DKX
zADPOE?WUf-4xV2V<L+4H(p?A5Sjr2~EBxIj@`Kpnl+Day8vDY77)69F|E)DI(y}1h
zD6aG8yNEjLOpnlMNE##M%dD49RQi8SQI5-yPu{3iOAM-Tl`F>K<>iG55=y?G>+bg3
ztw4i^ng(77c5T>o&<OY4aYEEiII5`1_0>yJiQUcoi1B)2FL``OxyW$S3xMHmEtRU1
zVD?qpKO0}{xa8z%Z2NGj^0|oCO01nEG$^UC<bsppiy})t1*+Xz$e9g}{pKUa6nCsx
zX*p<=C7h7cmnjvjZ_wzmi(Q~L6|g)?OnA)1_~B}O__|>o2a9Vl4LDx`*I%*2<t#a#
zmZw`UEz4J?qtvywWp2*=BYd0NUR>-GCxKBB=G{4RMBWA{^S=%ut+^Te<_n-r-yjy@
z*TXqWxXq!=<^hz|q==_q`X)Zo8y-L5Ejq?N_8z5dma9fs+M!$Z`8>q04LO$sx3%|-
zT}(ev;XYqH*s=Gud0<amMOc`c2y=6+se@I~`fqsxRibUJGfq{O)&6=l1{Vi(*a=I%
zfMJMVX5=#|4CD(8gqJ;nCo4gQ>S^KMJuZ7HWC;g{PRxN)|6Go|A77*}FVQbND_-^!
zTC%syI~+vI`XZ<6sDweyVz*{P`0lk|Zqh(i<~^sfC;@yj*IZL~2B?!=05oi?j%1D7
zq$)2+b$xGE+m>B)uh(OJV5w@E{p;<*c3sXZjcv!RTDfLja4tBfhfNs2N>6lvdpT1Y
zi+8lf=ayoQN)ivZpb24jW%#D5N9@kK2SQtz5Py3p@0eBpXWvE)0&O?8w?jKSfxfex
zZ_hRQ2IDJLz&>bxzq&80CAkYJRYr*SzI$C489=u!yrzx7!zArZiw=VG){Bnj=N{Q+
z$6I0@J*b<r)!;1o#?5W!g-zY@q}Z|ZWH;cue%P!8PyQ-F#^^W)3*`P4dL#WSSaZR3
z`|SJ$Em<GCXZ7L!Qh!4~21AH_GrnnD%#<O@zvB3!KYr9<GQ>BMo35fe!@Q{aFdM<h
zX0$>=S0|#({80hffpEEnVDe=^=tcY(7^}kxe(ohqy8L!bf6+~U*1w@=kCOecMHQ~b
zJ9P5&$>&yfvkbvy^MxA2cp!sLKv<a6YNUTuif8TLFGm4RVTPJ4U_HcAl7b&)wfdg|
zMBdiw-%h<wi*i5zN7R@J0l_0ftE#32MxW*3@eDo9kJ`|FDSXqPBSZOy<2aL-Bmy2@
zzT?b!(Snc_Fu6)<G;0w?a=nXN#Gd#Wi9m!H2`J8Yg*2AQIh(!!&Ho_ibFG!SQ_Ocu
znV85x7E`zw{3EQEtjCdaSapC1&gS5D2QIfX`3tD)-7IMYXZ2Lb#>)*_f7Kg$=l!tL
zWsw+p`vj@QN(=0?-RsBfjR!pliqJU~?zqE^h#-Pzigde9*z?qFfv|g>e$T2wVZ5$^
zWtX<g@G__reO1agllswx18HO3+$q5b$yNWiPkX0}-R@pj5rFMdERHXYCZkU*l|GNZ
z#8o3cc)mC(Y<ZzgkI9t}$Ua2GR1B8BxARCN7+m7niQE|y`0&LFxw{~)KR^YucZNRu
zT-mNZ%|KV%PdJYiS?_Z##O&v+g{ybH!05fKsA^2?qV~xlaN#e<WcXZ&>a==5(!nst
zXq05?ePQZyAk$54{da04)e-DUHr=a5MN!S_^_dnN)mNBpH=tDT@0mpZgmk|hQH<Qu
zx;6yCE`<0S3F2QO+i4}JzwkIKEl7{l9E`(c$1dl7Xs8V-l0HRaDcn)sF(AgQYi!Xb
z^}IWF?^)||ezW7_;|lk%wZXx`xL2XC^Ir+gWYB2R?u8rVLZI;{IHY<;;tq`_$~piK
zA>4{iY2dPBc1hnbG{}Z%Z)y11HmBDtX)*`j=5CO2Agt(9qg$lQrco(nxYd#U&6kjQ
z?tyC7u(%KuTAC>i77|~wL)LK(!l}zlX4?mQAkfMQg?=gp3KI_%BHb|35Fdz(LZZZS
za!h*RK5zD!$_SyG4H;2LgA>uOD7ec6E1a3eKSz5@H1GwTGa0_%WWHyMBt`NisqNI*
zHlW*UK{K{E$K<#X9Xx6>;^&|D#s_BH8z>Z#D3|!*zl1*(LFi$C8Lx3in-jYhuARu=
zVgi}@Ps<=CoWX`o(tS}l9)K`iyqq)oMCM#H9X@|!btVzS>dhT2!-6GoTCJlF8r}0y
zYmoaMbLt>kMK~n2WI^_@2~q?jK|+JaH%12w>Oo$7`uNPmh!&c79Z`kwMJ8~Jb8V%J
z`Wh|tt~4!asoKmkCEo7(I&k{}=(zKZsGInKhdsQM?e(on$JLbXEL4vI6BPIbYRDrB
zjY0q(pIO6XAxg=2{qWKY5LZ%<idYdYW<?95klt7|{cEy?ZVCy_Dn!ykJ^(hQmiH!~
zb?0LrMcK81*|}Yf`@*MorB;xXdC4j$z}0Lu?k|k{*E>7LjIHI>V3tO{SIov!cmA&t
z#|m`gt=mJV?!nv{7ZbZ1$?18HoLUDzlC}zP$I#|uoESo2o6{Gi0!65Yd9iS`M6+%c
zU^8bRPVR}{Uj;6{2|C<K>b4XT=q$Lpz#)~a9`+^sPiKk(RJ!=WkyLQlmrCz3fp%ch
zV>?`pcxn-6l%UY@<odC^W{lI5d+DCRR#A^~uZh8?pbzkDwsqxp7J9&RrEZtYHktH<
zYtf@%hT`+gZLlYP{If!eF`)%K3up8qEd(F<xStiYdr4soOIjU^uMalBA9ZH2mTcN&
z4x*?waI$T0)8iFMeHGT1cuTO~&BmD)X3}J?O*y}@*+Rr|&3N-{m5P{6{dq!D4qd;8
zz3Pcd?_qx7LP8a?h+I2P?-q7-wH+}<8P{nRp|sN#|Lv)h{pWRz7s{`@dT8HNz384Z
z?&_mP>5F+&C)(UGQhd!fNP*offb*$KDt8A|HfB{!iju%jzYL=2T|BIU>#<*|asC|E
z!@vpprs4VYqE1Tx*=WC2<sH-TrId=-Y@>-|wZFpo*zOYF=J94@we*Bm)xRfpI8b2V
ze@R+oZwxxZVIv4T<h)<5ThP5%j(eqfA#>{;p0RQfeyW(gJ?+Yn`B(Om6(RU)jAo%#
zWf^K0AlP<fqPJphKl4ZFnvnkIe*sX~Abb#GlAw$7YA4{un>4&GS_4@1kY9GT@TsV)
zUHrf;7vf%vN=;lt5!B^O%5w<ko(h?W#?;bU`c}lCh3{~((FVSD)<mS#S8z;&Pk(LH
zazHfCE+QC~wxmf?tafIA0kz@@x?!zHE=nRLCTE8}O~jAV&u*|>o>nr-ZoE7~nmVfy
zgxo|*NtBR3lyV@<<_wvh+GRD|4pU3LzjZPoo2s}=3u7Dy$8m%{y=?_@C_w9FiY8NT
z`;qr4iYS)y@#59Bib~klS(#S}tP0~VKjv~w*m~(S&AW~le`Wc-!sEY9V(|9JsLg2p
z#=#*syR7?nA9E9x%;1fW#TO@iJHMsiC*Qk#4rIfBjGC=+8AX5DWACcr`5yU1O01eq
z4YKD5IT^x|!d_lp-oNU8y;%gD+xcL=bJMr$z-X5wn<)8-c<l`g{{`rIah#JK)xBcZ
zJIBmqaiL0>r5pUgc0DNPmm&Q?CYg>?0E~RRl&)9dmc)*5@+QelY!y$`DbCZTdoF>S
zP9KLLN$kY!<|Y40cW2UUjlEa^>zu&QWD>&RZhdjqezB$tQ%3T~Qwz`U&~?N&&Ux(W
zJ_Z;{o&>$X98PEi?|U|#>S`#X28Ap5l~Ltx@YdEmz?Cm=@WH-sc-y>+fohLQE>=em
zg}0)}m#<EP#H-<M+x}7KV$0h8#~CF2nBqktI7*T`U)#|+&E(3`r986J5H{eyYm?f?
zBT{s_;hxuzb%>p$zJABw2JDx-CUs-U3UtaaigtF)_~yWW{Cgn1IYwsii~AB&GLl*g
zErK`#gSP+c<Fyz*wrIH&336-_h+WsKYo;fi`gR16mQnO+q>LlcK96(nT9YHsSIFZS
z{Nbrf&FDNI!vU=qKA~cEHryBD+{S~Q?`mWJXK4gRZu(<M=F8-9S#Om7FIXmi-H0yt
z?G0lfx4M0UfSJzZ^YqdYFyq&DS+ha(hln+Bi$lx)o}4%EB6EVl(|e}|US~pi!$at<
zH<r%lrNd?m)!1ziQ|bvp?`+tDO1*$CiPd0(p^%ve#P}XOjb|CW+D?3uLy_G(b*H&b
zvenR-O_Y>hFd9tIvS+A94g}bfugqhb-r#($%Cu5x^;S<y-J`ybWSKx772if4KZ@(G
z?o=5yUgOw0zbZ4P$8a@NS@~YJV>V)Ze?1o4_oXlc?!&P;pb!`eYOs2qob2y^d3@O8
zs*SYsg2X#MMwE{m7ZJG4L<VHRpl)zSyJ5R}zNb`U78>u=-;){Puq6hp0|IlIe@j-%
z8G->f4OL&t*()tnBL`p<?mYO_;aX1{R~XDEaH(k+aLrQJr;~q1*aKRg)@#o<N94&E
zwqGsD7>c`4d7H03v1i&6w4*s4bg0HabwS%^*R{5Q+0W-hI8~JlcCEVcJ)t=CV=e99
zKp=e*W8mEqYza7%<G`_dwf|h%<{c}f4)^NK2;ZM2!7Xjy$9+^|Ek}#p|E)wIZmC3b
z3wVyN5&Gs&)bErC6e^@Jwb-Dw+vTAM9lyHE_kPB&?^q3a+<1jtKbZU$pZk>(>f@7<
zd~V?va=x1~{+~sng+s1)TdL>k7j7FA430&0_K#~E7ya7@9%q(39uusoH7tQMGh9Ei
zJfYWhrUU9$o+x~#QO4Yfc>Jvr)mbjM0J^BdIuV^;b6)dMBXFpDf}jW96EVmf-(gBH
zen{Rr9GLufp0w(-e?AJWjB`|4b$&;OcfX-HQ>*kD6;l2n)j(EZlwuDV7khF=&5;SQ
zcsp(|k=7D0<RdDR_(y_*XCzqwrPd>o!FutfboftCz5d0Pei4T7474sHeAW<+#5}CJ
zHRyIoe~bQ2bRLgi@)uF^r@;Tm);EP`wrI<C?2c{Qw(X>2n;qM>ZFkT?$F^<Tww?R0
zbI#Vf`!O&1k~s&eYSb7rgS;!aiFyBz*lm~e2v2xQD!%aE?~Ugh_T2u>{I%=wpG!O2
z?5YJ~_jNn7pU>WIJD&Xg*i#>LjqPQyFj()w{il6L${*em&!f#j%_L6vC9qTOS#_F~
zpt{Py4)7RQSXeiMJexfOIc`o75J!Oi@xq-c>g>#FI+f$yUM#=+8NBYd`$+jj)IvUz
zEt92IVYg$H^HQyoIYFF}Ko199sI`Y*)4|4J1ZBNav!uyu_r332`~%x#5NQSm5R?Bp
z_JRP+$+uLo){G11tWtWg>wFt!#!_S`#LF9HDNR<nete6wys{7s0-;HgKf51^!45L4
zdaL%ap!b2Q>wbV*zA4kaX>+^yqE7}dnQ&xLk;>CQqSsfeom0usmgKynif@MTNdQI$
z-%)Qays8E7Gi#b8s~GD5$pzEWOw)GzW7u#+wW9j`g@VMrrD|J3@6c<CVGGqG-o76Z
zCTJUr7nh{brZ4A+y>`MO$RmAJM-|A};b~^VrJ&(Lg{OfqP=k4F`&xrfIcqlm%r#gV
z;g*3tm6h#?J~8oW=iT6uQ>)}&7AlJbbf3>|7Hv}Y(DfN5^y~r|zwRRcGbNgFZ8;j{
z5ymKn_42qeg@N=*<8Z=p)M`IR3*pZ=?oX#bBRHs+8;c$8&o&PIy0ru$te-Wp9{r5<
z{{NQB{~L_mVtLQ*4%*~+TDg5L2ZCY|rFyRG_7GUu*p)`gwzxQBnGbO!y)!c??ik4O
zLE#=F!g=n;+zCG!$yS$_A8%EgcYw#UYv7x<UbT2`)*x>5E%2QEacX0DUYpK`^7fd#
zE>hJDZ=x_u*XJVOKd!cRT)Wmo<F;U2L-J!!HkRvsvEHv<DLQ>qAQpCd)o=5tJdI*$
z?hY|0%O#q)XTeU~0r(jf=<^fBr>hpFis^p07HPic3U}{mbde2LnrQFQ(H@GNr_e_*
znwPnIc`f`(zR#QF5B}Xr!_{hN3W(0JtfOG49dfZf<qT;w9<1@$&H)i>zCpC-dHi7M
z1UW^RtHE6)L_DoQ^G!S1Jm<*(+hMc_s5nF|)ZxwA6B8R*3Golz9=m-d=~FD{6C>DP
zDrOWwA3Yqx{B9lA|Bmgy0gGymGlr|0Y7%L(va@IQ5kra-Psp9%@~t|2qNec~VS1ro
z^-=S`65?G*U;EEagldpU{pmzO*J*%W(&ocv4nU=VtL#IS{zUHjdZAw4!VX@-7oxi8
z$)es0gi+0oj>HZ%0)MGczhB9k&2qYx+TJG;pf9n;N_PSuK^Y)iLMWI4_3&)rGRs4W
zCqUQM$6!c<pE@ee134_+6GBe+!jiNJZH2(B(i)w%z^4+z+uso6QZP;Pqz@+?DLi`U
z5mtP);|<r%T!Edf;c(n!#K%|r0mo3Xp-!5bpPxg!{JdZIJQ3>?T4_VSI`tym?rK78
z+RVJ1qaO787HQm+#z9aMYb>I}rdfq<vigA5?Yyn4w|mseesY}bhkb#=5$E`%ohTWb
zpMMEo_*IiH)<k&*?aZiy{9I-dZuKQL@U3Ive~erKixUdxCoD6fvZrG&;jmH8RTMO)
z=OraIT&t)1M8*z)^G^8B-2e$Y)(eyxkc>j7Bt-}Hbc@1Tc$XQ$X{sFvdVtyCy?k%*
zK0mc}DT+xQ-C(Zw2~xX7l3E}qJ!1}7jZ`j}{8?@W^XabKaP%1m6w@@?<TG7W`wML6
z7r;~}?E5W;u6D)lBJ?^&{)_oibEk*K75{Pb%YOZ98~$bmADy+|N&DG1X9!)&#b9Dv
zZ}+x|eyGy-nW4(PZ$-V|PS+8h<!L1Uv19q!_3nD$;VS~0-=6W(V@zZC_H!HS^VbpG
zRf$Gb%4(n)zbiK0vJdVfT?d@6k1#LO&Wl|We)kxDCv57+X|CPXN9rE^*6O%t<%IHR
z>(TO&L{n<-SMaDdmV`?laVwA~Qfgj&sC$TlR&)iL13wi@GJ_>~SJZHk!}037xYO08
zs12VeJ*|{J5%8%6D<UpnNcqoZ<gXmjJ<mUddw?G)x;qRA;X|Tz8+N|0m#M<q+SykG
znGec`aGW_~OeB#wQ5u+(BHhnAzSQ2ty&e4cEcTx<7Qm~L08C7bgn?$t#0ag*eSKaS
zyB$8%xZRT@zjOHZr`rr`bOvMJwuC!mGW+N8$#8*JI0WhlZrGI%*3*|I?PJ#6*7NDw
z;m#{3-aZZ|$t%}PlNF3dN=ku$zDw1;79+@4kecg8Oo(WAf#zG$K6@AL%{&{=C$9dL
z*_3FtPw|4lC1S8)f1wY@`u)0>6Zz|wD=}TCJ}I3|3aVsa-WXYyY*#NnUkAp*!-8s)
z;?CG2ui5f?b0!T_I1ouKtPx+uM80QyU_dfTYUHN2)4NoEt&AUkg*on`Jatkx1JDQJ
z3_jSuC;KeuIQk`EWV+nx&23nN!IU2LOAAFWtsa$@0t43Y^ZkW_lCmbtrC17{NnXly
z-3X~t#w`7Zjt;IG92HFuyGkO<qcdR0++8N#y?(9xl#V??#ThpKxV78!wzNB@g|?%N
z-wuwh(+myJ%PAVj(!~opK{hJA?bN>Qr2IVI_{@Di2dTRr;hyTrxI@?15KJ{o+aL(R
zvYOGr6>zV{ia8fmzdM}TzRBKDZz7Fpntu&ZYuer}&?bK**u10aoQhw}Vh4GUMT{~3
zrG?+Kw=K(`${WTP0$#NS)ITbvIGVbK8OV?0*A@h|^5Mvc9Sti_14<BKp&>(*TUb4y
zBA0lAGrQY3GNZ#6Lg!!~>bJhJQe`)XZZK+c&_|6U?ThB2YBI-2k^mc61b4H28$>Jt
zOB(lNUp$^~q9dN)@K1f}9|w!<u#ge*f48+^W3yQcn3)|Js8MCa@?0&<&+DJe{z|EK
zRxj+M+UGR6{nh;NSAgdKP=)uJ^4tt;yXwTIR;%)w=mjzHqNGZY{R~`6k=kw`va5a9
zMJvju2?6)Ge%|s$n&N-w^m^d0>dD<|#3GDfwdqU?*`VsY)nxfGul`nc$@2O**9Wz<
z8!=!&lc%37`zyZWDL#-oDa154x_UhT2hq58tj1%8^w{lF#Tt%{z;lFCwThx@L_s0a
z<x=4FSHp4y_I1;kb{e6TYMNv17$?VcG)N}<?!XY908C=l(|Z8tH5*?znk|MEp9i&R
z5Ob;5%aI#}3ohDtc1-KQK>;fxY<x(T@Uh1yx!Y?j_Vu+#guDr}{SNI_?~AmVzDdLL
z54fZ8y&M%|>$Mnd-_E;Ox092j>$WZ1{wh3vv`q)}!(^_SC|#o#opXj+v*vP}e<t|<
zImb9EA=Av7BO;)+oflNJtEu>Qd6N@EV|R$k6hvavxm^K;?^a6L8}z5?{L&$@_uyJQ
z{lmpUnh3R{;I6?#w5=CNzQS;=g+t3S1P9`qsTXlhb{OM)F#uAOFafp9j7-!dw>&lO
z#KKRXoJcPfxNI7R{ZWpgP98l`#C#UXHOOX15@^m3s`LpDWz&JDccm|*a!ahORR~d`
z44n%UMW^d6-kf;O<%Ltv<wke3sE=|;qgkzXHG|M~j{#nGZraAl#b=g%+Nt~n3Fkt<
zH605Q$XE0hvRxHJ@MB{C`a6FB9((P55!dtihZ~;<+Ha{*pa|6ju4>z<^5u`=*qgcr
zSV3clhm#}L{Gtb_3eP-z&qnQlN2{tK(FcKkpHy@bhithBjlj3K<vW_sx00?N=?iBJ
z$cpaMF~58@y#Cimwu(rgF21xOY;i%X^yW(ne__!5BdPy5#n){iDBzUBYPBc;S`mup
z0eNt6`^%ls)mBXn9WamQqS0-46Pf4Q6~({UiU_VwK&%`3;2;7{K#Uiw$mzxfT3%cX
z>FMcNa#}}rleE-?%2Ea0cfBv7aBv)VB0}B>CU4QID+NNGBOy=#{RJhZfgDg*)mQSz
z9hQ5^cCgNOH3sDEsqjD_|FuApnmnmRB(yL3dRC=0`zpwD&4Xtvr&mD8+EGOa+O+NI
z!faR%WU}?u`o~LiFM*YKEFCjcKHy#fb1IF11y!I0%HknQZm{E2W~c=r{(CwKID2~(
zy6$=3G(uge^hg5({F1cW>7Cwyqa%HPlnVOJ?A=r!Sn5{P;d~v2+co-g56s1J?41@O
z`Va%MsoIN^$i0-yMW6psXKY*Nwtt-gXI0muP=#g#)={={a7&$$+lf6JPJ$?V^FjeA
z8IfJW`=~sN=)d<Vz{N9nU?TMifc%eCLgK3eaAV90g{zZ3IQYyCJkl_w^9@WT4v}bL
z5+mWcE$O%#><vaQF1s|<jL00Cuck4Yz)F68o|gZ~xn_(t^;!K(7z6fSQtHnMYk9!o
zork~2>1Jcg(m4_cijh*qln%33@Jq$EG$!=Av+e$A+lm(H^F`+M+WL~_b3=Ze{FXc9
z*yc%48*ieu**|%Ir%-E0Iq74`-TCs20Pf-5+e33$Ltazv36hh}hpnbFAJp#3fuGFk
z-<v7CZbe)--E7BM)qHC`U*j=2yI|hAt*z~F;GU+uE7rga1JTeJp~S9zxuf;yua|Ff
zWb`~--*$5;-;QqEas#dH@+sQ9eY$r2J>+RavksI0^ZaTWAGg4ZtV$K20j^8Ia#7@v
zQugEaUu}LdTu*Y_4^=Mh=qyzZz8vX<joJE;+q`bS*?kChquWKrH+L|&daD5wgATrW
zV{w*o{~N~wBsLPz9S^yCc~$c+^z-vU8;NOZWe}*U8ai4i(?#*?YQ)7Vh&UN<3M0{u
z|JK*%(+;i=26z09zo`tmT2m{)#3h!{l{?Hx4kv;QFhej134og3y>ThMcwFospdATo
z50+3k_Zv2h^kGvBMQQnl$?J8YU#-+3TKRtZUiZ^~f$8}=(cy76VXCcv%F$Hb6!y%<
zp&7OMBHMJl+S=Xy$rV0-hl!u!iud%PZDn&;>?i_WVh8bIZePh5QQuVqKXDoytw|m;
z?fyEE9bhk6yB!~8=1ulS?K+Q9?SHz2Xw6!F9D9qubzBf0mF8ss5_CV2JhzPmUR&G|
z_ynJ4kf~7}tS(}UP+fP_M=x06T@GMXe=r-{ZWL<2Tg0GK<HW)A2<<>_&I{bbgEl}X
z{!b4Cpa64#K!!~c=ldsgdF}KDLx%QIP*Y>i_{yOG?^PS0<0qP%a78kPTc9j4AXe)}
zhN>`|k|6oF>qat8Je>X&pv1@=8lcqD*t=97kRdbu7Vsi<5>m&yMe3|non)qk4)zZn
zwN#y6+M}#dPHX`h<t|2hW0^PGTVBX31L*npS(xVL`$(QND({U3BP!@X_`cw@xf($k
zZWt?OozWd9^o2F{d@0v*TGw?*J?0e-6yvL0{4Ry@F*TET{ccymb%^O3TGhFnzctI~
z4k#U3(juwY&VaR@@0{EyZ>0qcZ}Pt16Q*Ab$OSQ07AKX%MVtud``MTw9Na(Co=}Hr
z6N8+^{GD=|fdaW#Az%I0s58BRdHfpMbp5uhqGILS)O6Be@>(QMMHxgwQcs{$^lC1p
zm{BU<KlnuhuZW_E_&^vzAS&vSj3xwm($OSo%GB}1-SoA^^^{|go<0sMDWiY254aUe
zXLa$B&1B~5TG`-@bwoTwEH9q6eviED%l8t#4r0RD?|IdM?)h}NFc0bPRFOcZwGMLC
z_2u&uN^IuW5k7T?RF#kbp<MzIK`e0zGI%ZhUbAO)Ee!2$D|wZJFyC+WVd#7WHFQ|f
zz66Hv%5q&8xox}P>vnyl&DOhIJWdzTN!Gu9A+HcHMmQ7?=#RGtbAZJfX?cRBu(KMR
z(EDXO;f{~sgpw@QNF_bR7ZK9*ae<IIf#JZ0nh4i3W7W*mghj>*Yg@Av)D02;Jk|EP
ze4mRmXi7{$QZDOr9y^V2;xTSvpQSD<Trz_C;yM;5K56`2j(~vxbdi(rW;vW`+g(hh
zOqhqD07(Ig0t^il>?gF%AL`c(Wol|F)L1A*ob}`0R|{u;R!W!Vjal0R;=zj%9r;P%
z<5|7+^n|OQ_c~r2kCTq;;pTTG;6X5Wfrfav!0L@ov&L2g%8R+LV%{3CdfK76e%=0Q
zD3#wOw)NtRs(saa?kbk>?G(YXu!j4Y`y88iuAkP;l(swUf3TZ?4bVvHWX<7QXGRz0
zc7l+Y5NI@`9LM=Z2Y$11^h31fV^VNg!49I3*8-cw1!29rZ+y+r$fmJN1Qs<T7-nlX
zu>OI(vuR7GM$3plzUldcs3V3XCl)jFt!@K6G1tE1_2fGtIGZqv!;Jp~t8P%lzP!JG
zc|Z_GQFb92A0C#&%dpvrP8{Cp+q#M*;dG$D)tFkF%>y;5*FsPLABNYj<wjHbM-}XN
z=U1etNDxDFpVF#wJdA}L!2kcx2kDQD=)cL&^*EjxvZCz1f_)O3@^K1pX~CK`8McrJ
zYG7NS;$O5GIKvdvlX|?|;#hK+;@0kj7id5c5A82c3*6`K;x*d?FCB`Yterl!BQsdQ
zpA|lWTV8EBfJL*W82<Z_z)NUfgpV+z?R9m{!qM2TsSfq>&|{t%Aw`|Y0yJ)9yhHAp
z%d(~fWjQMas*M&}&T@L50MAsMaPocBt^Z0V`bf>Xhe_LC!$_MV0iWcR*9{)Oi*E#8
zez(Elu~I%k7!xVcVire477N}>JEGEab>^U{7Z11cC0$%}W!rG*T@a+7v-*e-AB|v3
zFiJ4%C+wk|Zb(BpdqHt!aQ=#<gJj;50`5>3%$du#Gj5^P-N1r6JzElK(qI7$|4nr9
zud@_ZAta1SA9O0fX|mOg2D`c6S*ayb{}Y4%dXnToz^_>r>W<Z)do!CaVvoB^dh%0V
z#ktq{kQ5y<>mc~v_lh{X4%Z3y?>+@Fqxp1NVYTErZos6Zq#4@0zVlKX>GSJ;6l%t<
zzV+{yoQC)}gp0@>;#r}O7OdkStt8>^ex@6Y<7~e(gtkG2wvo3Ig`-4MD{VtdS7mEC
zj``ScDyH`4-2wfyOLrjniFW8QLUq0YV*AMh;}4ZzV~7~bj~|vP%DA!%=Cm8(xU4_T
zEzb-UoakH42ZBOyOS$SXW8c}}?MtFWHH8Wq>2iArid9uFOY~pYHHJ^#*|GFiA~%>*
z^bG@0TMYX}mb!`ge@APsQ^U|^*F!k&0})@qB4vz`Eh@(&9*qmE_m4D>bRoI&)#J6f
zs1-z`WVS^vs^X%Wm(ll4G9}n*_cN@Afu<~gQG=yX5DQ3`2c_Z2aI)hY;d`KwvK~<E
zAn@uYxHqhY4=C|?PRC#+BBB{|rV)8*JPUYJgL)88zwI7>gfb@JLpzZA3u7zj%>>LU
zpcocNwvT$}C;WSS0|j@NU;|xvS3iyI#)q!?R<R#j8Tq=DH<|y>OYwQ$xh&W_z<cfn
zfyZIZHb}*-X+B0<u@xUK>pU=YN0bBp%!7Ly!92{*M;5H&Sv+(m3L&(Lsl7LF5mHfx
zjKTx@cwz8>3T&D;Ia}+oswHty#y+=)JoH8Vay9`cGwTQgYtjv_%Z*O~?>8gwoBa{F
z+Q=iL=|JjpKl+iT(1@IKMBj4)FNMo}E;%wB!=yje!-S{%UE3Z%#kULrnaNOnb5HCi
zODICuHOg}12VAK+M5hZ|0u5snCaEeZB9WBH_q2Df$$I}m*|4)~gOF?ec#?7`4~^@|
z;_uoHoav;+1Z4WRZu~y)OyP~0^xa^-CdJI~?wH^>%W45>bvA-$q^|krztx-1z2v~w
z6gs>p7ty_;9Nj3&k;UXkhn{VDqSn~6V~@~2fb;|ri(|GTCrl!%OBsU3=+Am@`5Ov%
z#tgFO^Ad#g^+7$p^0BsK%iiHCDXE3)+!1RBW%@xsp%(P`JlJv7n@3gtRl5I58x9M^
zY28P$$H67vs*)~tyb%9ttq<z6<onuhv?zR^&qgSysD!k%vUPk|715iIi8i85$KxX-
zJHNFx3g<D&GKGK!SIlVzB{_XRDzAdVRUw(wSTu08Z~4BDaDqw1FcNYZS`a)!`3sPb
zs#XaozmufR4eCn)o4{Qs@ZH*nyzOtcK!;iatK($^mLH1s956UWiAxR)bN|w$02Pb!
z`}D%F??Yt4i2p8zf(}EfHi;t>HaavKYa`Y@7t+WEueln)Ai^zqZr8v=ca$;c$;;-;
z6|h7z5Q_dbGqYZ#LGL_0Pnk2;#-$UU(Pp3sEopLbvLbAbJ$~;l#fKkRl^J+|uAwg@
zDdtfjioFnzKSx>3jkcF>GNwOXe5Om2DM{i)CT>Vona|ffD!`U7+gya7ILthB>vr4l
zyg7%y>+)DvSO<d32eJWr(uk1?ZDozMt9^T2pb@!8v;O)%)XW&+?u1((W^TljCCO~}
z2~uvSDa@<M#bbUy15K9Wzfnjd;qc11Hz-mSMZwr2auhF~uku4Lmlt$@DmBOBqbEWC
z3kjVrjBY-~wO1o4QWDugfA0Ko{-H>?xbZ(~A72Bc`Biv_9$GAqQu^70TwsD~2Q^$H
zebK^SGDglhuF<SiZqcX<Cb^4r3JoT&1u4e0w+3<LZ@&IR*Ty|xiyAvid#3jMZ|91X
zS<MH9&#>fVQIcW??NF+bn5M{jogg+zoo?_h<IlwBjzmSt?I}+nY*CoW=3k!LP{CWL
zTC7Yb(f4JJLv71Xio`ax=-UY=j|>*1i#Rk_o~OpJ@fIXtA!9_f9=Qx1GJn?EWG<*d
z`KTeU`55|*r%CBR9B+-Mi%NL$>KkW%hLgy%ypU~X$h0Ra)iq23bKW=fTs#(R=nDg%
zIo~ZQ6>k8hC=SN@4EJ$`-`tU3;-e%I-gGYC{1eyfDi9)q7qBAJVeTGO*Ap}hjj+|g
zWwPD5lpc^|@w(Kv5-=jmuuA&v-M9qszE7s5@qNJd00mYeD4U|5A~mB@^~eSA!GX=q
zxyj5?%cE=Zl2rEl(Ih|<t>q8pEvae+cMCu=FyZK!e?U3LaofNa+?}^qxqrd=D8rJ7
z98mrP75#5V%8G)7<$}lh)CVW645>|<9RmO$asJo%Vp)mIy&XIXu1>&Gj|CU$XA;g?
zQ2f0W$J@qrHShOI5v^dTpDT0rhwcLm?p!k}Y9Y4|vD^NfdO`<k_yeeF+JU*bQe)sy
zgVr)4GYOsusVM;p%ijbu+fLJ*#xCpTQe{rxswPKD*!+`h<&-UUOyu`1YBCyB+C`$o
zWNWUk?`VyahZilYP1RHCXA)dWQ%}+@%MmzU5HVhTu=Twh=58>5eI&jKB@Bd6OxQ{8
z4vSvm*?*vhh?S3Vk)c~FzDs!X(W^&?KcUDrfw$HLK_{5Sg&{~&)?A-@c3A<xdQ1MY
zD=~iHvzYdlw~D5eH(a-PYDF1K6yTecccHF`0wh>5hRex^F|UT8f~C~JXYIp#wROze
zu1J#T?yChH5mpg>>!e-ht12W;h`_U9gz*!Oc`6ky5N)G~OxLHCLkrUg>*Sd%DFA=|
ztM>zt5I^uOFoq8$&VxDxX{GTl>vF#WeWJj*ZTk&)v213@`MLGaS~m4e#V3YYg(XUn
z<YO8-x<zeJ=Uu7aC(bd=`0-^Of)Fi+X}&~*rt&@OoOK4*bB6wB?Vgj(2uC`fz-$+r
zfmiQmdd+t4CKPh4#0%TOTN0iylVT0QjY75U?GT@n;7K+cfx@&tPT-uFG5MYbf_zFA
zzmoNT4t?U<hzx{mN8A}bh3J?&-7Os+v+T>H4ZCr|CigMtcTA53DFaV}5+Un7vSQr!
zc$b2zI6st{Uj)z}3mATK6#XJ23asM0NcNnbJrR~(CqYpNoj@YH+F!c(K6qxq^&_~d
zy-dO(4FP>-j=6HWM*$G3BLFn&>Aeg%E1Sgt#cZ6(AdO7u8B)P1U;sE_a07>CqmPnu
zRxOf_CArw;=lr4<Rz^&Yq)wcGo5F!JBEDE@>9vYD?KXEQXlYBfA-=)A`my9)<nn*O
z{~r&Y4+PR&8P#25emG_Z&P`#~l4Czn1_vI8!_OX|k;uJKXsM{G5)l#tjf{-gab+JL
zAN$2hFAgyt%2-*Ii|Gyw4i>buq)RtvHkfQ@W@H@u7zK|VAOXTe!_>Im4ialG4kb6>
zzJI@yca#GpWP2^mYslH{ECdGO%7K7&H1KdxlZB(B+NH+b`rBp-^gPabpz|2JzMj>$
zO2Pyw#+zYRlWt4)g!<pzjSHa&$v8rW->dCEER)#dq9UjTSfMETmRX`C?Yi-9cu&(Q
zMswf^^+2dxZ2GEZ9nP&UNdymty`&L>_Xdewl#sZrT=MhVzmJ`~CNVKb6eWvd7xYZ~
z9sb@}Zg#@PIZ52f3*fl0Jeiqx?LL(tv~wU}$U2%EVMJPx2E2>d?(U%D5q>&W;J-(0
zh=89M=PvG(<e_cg>M;x<tNJXerbNuT^O6ph1uNB9Xb%c(+@G_g0xg>sFtS9buaB*-
z$_1~lkEfe6y)Vr*-_Mt$n|Wn<i?>+5R|;L<59gm>pKn(~;`rW07Z3yJ5=u`9AlGl+
zMWOxOlG^qGu+4Ij)JL%WQ5sQa@*sTg)gZFTHnl(S&b?l(+<rRqZqlO@(k|azrCzVY
zx$cypmPzEWd}l5hBy7B+O-cfrnWnLtyy|=X)zzy;_s(Y1dIaZWLf2hXK!M_pH{g7C
zcXK3rpuR#@+p9C%O8SgFOc`>DVCjKQ&sT?sO`R=4l@_*}M7#WWy>xR2fj{tOjqJ44
z(|AU^e)Dl)ZhocT?1tF?n2lfP@O9RFdFDAS*pz#DkWr*f8r&@z)vYj9lIW)X`wZGY
z5eW#!7bhVV@lPs$E$q#uozizXXU%_+s=wH&{trmV5~8cn+bVM=I4NFSMK+Cie`VW*
zQeU|2JfySYl3X7wz>xs~K|%k=TCN{$pAKT4?@wJ{I*#J)SDkMxhy}in=PRq9qUbvF
zAG2P4aO?tMtdd&*r`3)fN4@u+!3|3<9WQX<y&j(!k{awSaQRGlKWtukjX!lvO-FxO
zjg%KP@pwj$5_KRad%++ZKA1FJKPGHWPG52t7g{#NA5KI%GupR4b#+>mw41;yqru>#
z9T<Syud*bs;}f{Op$)_K50~G?ASex=a)7aD8p}j-fK5Qik2ECuel<LvT$~gzGMGLp
zts!QCH%GUtXw8Z(_;EUnSPX30rp^zv#ilH15V*lX2jH0o1MbttwP~-7l{70>BE?r~
z?KGx(A_S`JaY&rlqw$fb*wZ$lZ8xHAr)7(ab8)Ru?3)_xN~OQo*eM=hp9Iy5Y#Rq6
zw&-Rg0Ws!S?4)|E@4W>IG&y30ZXCA|<-|oAQc@9zL==pb{j>@R`{ZOHg@tF%_wOuK
zHl<gtj%*v;nlpZS;7Dp{trsIwf$xU6N?M4zlsNZ;F-1`{GV1%{8lK1**w$gJgWcN_
zf=Vb*bgIyCU(od#@hQ2%?NCq>vF&r>D>&8TQG>G&$sBQ6aB=mgAH>e;aNL*-@dS6>
z8wVjx6QNZUgUz?ih}W(L{4Ku~Oo6oh+1>%WK8Lk!@hGWbHDx*!8`U7maCLT{n96a(
z-?SZS8}uhZVt$xVfyR6X9(r@PbMmMx`b+C56zvwBjgU?=rzdr3Q*l&8PZg}`RFeG9
zXxpv}^t)!L{g!0Sz0qsnhH&7-@I!ey&74ExK3D#`lxBFsXR<R`0{sCJ{pqUJpM~1c
z-+!98v9#QwIsu!Htco58E;F=}S4;7aZRv#BUJ=y_8=)EX*NT2XGrS}rSp#esw7}@$
z)Y0b!wq#9&MFzW38YI7e->kRnF-Ef1R=rW$be$@#SLY#EkW>}5Ze>Rnr4cAesJ~!z
z>&om4`O_7lObG6FnkKn4nA><4s36lDF~!l|u@nDj!?WdkMSp*r=-Q*lRwqo5>-fZz
zIm{x^moOrDqU87j-|j(m<{;^*QR1#PRmOBd*9mF4o7*;1aJewH>UD<t3q8C-;#`>d
z`}jUxp3E%HXf>{?0hoqZh+lh{M0>z%vFayo$fMz|VNNt!C)M9@l2;?b^(^t9$`0i>
z!8vKG_xhqB#CX+@BVPcB74G>hk1@b|y%UN*=zf$Pdb2l_s0ahGg7y2te9S4kU=N@u
z_4EeAFgl;k_c=Y1t%9%Nm%<}%M$#n3iIN;N3*`Z!+Cen!O}P3kb2I5nhY<?@z&A+l
zRf0vrr#1jiI6Bz*<E$sFbt1mp<_+@sxcu>K|I%c?;DwAP$6(Pj-=?0dSkqgSw3yY8
zx<Lu7V+dvfT1HkWQ#hu+WcX9)qvyiy3*EQ7Jh*A6cI$)QhmA1grBeMa*6ezxT%{C!
zHi9Q3nHoW^;|0r@rwvyH`>D{q0-gFvPIxjMN?qw&8ioA7G7RS@sIjwjYGTz*dfDoj
zB()LsA}iaSt+K+K|C#xj^6lR`ubd2MP#|NbZ1q}2Shz#aNuCu!w6BLFGx5bssRXr7
zI7Lb_NCWCi+KVJt!5EJ9nwE>ABBG(81Oem2B!0z3{9WHz&zNm*MmvEH&<1VkAKhr&
z%%^Rgp(Z=Cc#!lPl5~mBd-!nFS`K%jEQw-Nl>|pLYslTv2L4`A{7-bb3A01cR;bqB
z3OXC%5zvkD$Q}`<j`?g!mwNslZx>;5-`iMSu!Z7Vm@u(1>B~{B_+N=Kay=m_TUI1u
z60xG~G`!7ElMXH^B_Sz8kr!`L3x{iPf1Qn1S4{`NGaqehm0?mC+AnWLwzm995ZX2t
z+CE<2BcBUX(L)6$#|K732C?Sa|6?uzQ%{+)4CG57qglq!L%s#2!mIl46qi8>bl4!w
zEK5$4^PDZZ{k7<>MKNBrRmq)__v`(xA^$i<ff#p5;tU27Fj2UinW3bg1#kUe+)NC<
zTJ8NX|FfRs@@%=dm%a6YY5Pfy9Ye3<&s-OcVFcg1HNc_!=$1BumQF;!>ticX=TfU-
zal0=gZrVd*oa0Gm<I{;Mwut_F7|9g@n~kkEUYxz#(ePPmD}oMiE!G3Cw4DO`u6C}0
zv4;6w9<b{c0G^=iV+3Jo_uUljR{~BEjW2}49inA9+wRXh5$$f8z%<iz?fPdf+`U0-
zp@ll%{*TH#MVHeF3Hixy(g;!atQ8^vS>_+IECo?_7h~<PWYSofcT9mXsnp*}6?0TK
zAV{+FZaq4lZ(@C;%BxzT6UpWI##OG&cYmLuJPBy9UIW&%apX7;lH`k(Ws=t4w%5K`
zK5wNH#IJIonlhzb-i~JxVDl_{;hN9B4!6n8WJQ=pNSNQRnb>{|wUQ;FKX2dI1%W3h
z{%H?t>U<Ng$f!erD*pbAb*AvJ>WT3d%TL^<Uh#X80L2qbN%xEPyYoAU+B+-MqX1L@
z5O$81Cw-0=3-VoYuo@d|i`7n*1qswaAiF};d@0@f?ZBGd3$5DTh&jmQaD5(LqQ2e@
z8rpdD&>~$c1oWENQ7?fZqm>d()Y9NKxi92)4t^0Kp&A7>s*euBKg)IuFR+2D=fup%
zGPN?+-;;|6l!Z8}aIR8Nl6oV<l7Q7Cy#j~grXnFRvBA>gQ{X3`MGl=-qgk#u+w5Fl
ziloP9*uHp046G@(!n<SEr!2efGg4q-Vn4JcW2L#RNo_AyZe&&#i!sA&hlb~u={lt&
zi|N-TD@s3FZvm|YMr0J!UG?)Pjm&qCnF9mda*&xOZwN_brTD~ksmWnKeMf}gCcPLa
zvk4JhSr9H>Q#aX}=Ev{g4pXv1{gcp>7HS5Djrf1C67-q54WzI_%k(@^|IE7-Y~lti
z9Sc}ngBw<5!;2?@=x_?O>xj{_8N&KuPw2HGqb0~>hBD7y3`2V=-l|ip>OuP(#dMcm
zjvzjsx*cN}r2cRQpeTZXZ(lOZW&B*H0sp4_|3v^WIDtQoJOE|7)nrbADyTk#-8M(n
zgySJJfpwh;vwOY8v90_GU%|B}j(aE7B5)u?q30xRSl|FT^f%xm5DnXk^`=be1%Q2u
zWm2V#Afa#!W=X#D#3nFYJZed5Zg2Jn^hZ-9gZcoj>5wRHbi>tl<r=@8We^~UVL?JE
zeh@5;!Ra5tb#dY?w=+uCTug`Bez4EWgJF|-P&1*GXd}<+hBgBLr%Jt#qZZk>)a;O5
z4CL7&?0MuI5fS6x(L&o8M0PwmU_-(~j6uiz#G0Oi$5X$)WYCjT{}ZGC1tkIF3KU?b
zrL*kbL(UFIqBr4q!Bzx&_;!Fjx!PimjMlHE`4YFh=nU4btlif8OiR7NGP(FP@ib}S
zOX$35nDZSO8X`W~{HP;AHCG_y$Zv;BQ_B(MT#lNCWej?@g8^2&xsq@&!fyzU{^0o?
z%|Ty~BdUOzhJ2i=rizT+@P?G@K>Z9`jhW<bf1k;3R_q>%td_pZ92--AEDYD}>f+b)
z+N6lK#|O`{EZaqsjs5o@l7!b5Li(jgb0rp8;<hvqEqos8RFeOp8vReucQXp-<qkyK
z95EAlzXmA+*KFAj;pUF3*rsJTXCsAu3}V~zc+iEz;!vkW1uZgG!}C61GU%*6fv7Uu
zo{A#8sy6lYa$NKxVVNV6N(V{Tm-itZ1bvB0?W>QS=_N`@YKCX6;$kawnh}3*RN0wm
ztcz>1`)-qK9WsY?A|P+}2BSCx?Ozzvz4O$osFn{Jg8>Axe({r}X`-3~2hnU75k?X2
zZ^`+8f3|2Izc(X=1*s~Jc!n3WKa0z``cDnvlZW_I{OI`b?=xj*vrXc{k25KVjs8e_
zog^~NZ`SI_hKNJNfzM~ozOlMi>d@1wjWBOp?pX3{QNouAXN;b&>N3#_=FGBgUx|Dk
z(Z7EQZ4X1j9<A6LQ}VJpQIF-|>{!LVd!6d&U4pY=5(G;g@qtyixh;G?c<kTAv-q8V
zJ~+eiUfgG0KVHACHj8p3=F8`LEa8gi+7@t&G-k2os6a>=M1_kAO=2{gmsy~!c%Q;C
zTy7p{%I}wpm+<($W#s~$xw8M@{{LSTfX_&PzK+wY&nf8WZ1D0Ur`A0`yDeWl5|Rf4
zUfeoJ*ZTqeUgp+2ndx|1eoF;ZyfaNgmGU~s0O?KZSyi7!Nw$lOGhU=Uj%WG~)URgH
z$2&`&$KS~zQ!Ky^v5ielR!{pg1c{<K{S%ID8x*v(CNfQarUvP`x%~TgWml4r%56JW
zounYR!N)e#i;<xvVK_F!V<P59c9nuAk!Lox8iA@&=6i0eJE7G0qH;m%vl2z7je3!}
zTh~MZN8WhSRUFvNt)xmN@2P@}a4Zf6`$b;cwf@++7Nr?X55N9>toRRgfe4ZX&^q^S
z%)zC07u3}BVsCGuVF80N6o=QKAD|n)UmsXAqz@18`KvLFGO4sh%YZ{Ak!fkywSapj
z<_A8ntHG5F;92@Uui)ikMF<$c{*cZ{*FDpU5xi~E_NB#`6S~Av-^mRVYU8s~0()WU
zvh)q{Mld~K`gGdR8%Rl)RagA!0zs;htc{~`gP>Rv>!(Z9_6k-X^M8+o=}a)HXKe*V
z%u1av>qN3G>&s(CMlq(RWnovge8XnZm7wVhxUOF+Jn81cv9=adE=S+=gKO;9Mu{2|
zGnGQYfrT+=c-?VsD)9RFjuBzjYY9zIY|YD-G+#K86MdXTnU*=^62j)DS*}>y1l$l^
zX?_EW$RI-es~SV&WMnv;oaK|PUiGrCbK#GX?Fb*sA8k0b0$kK=fyI8IqJt9RV0aki
zykzPuRsFfcj#7)eg1+qlS}ri75?MiycCeW^w_s56dH=j7Jgr4%0ycic8;kEOf4(pv
z%DHDO<pc-sUogb83M#$BI|$_xsFeO4Q~hIZ8A!xHH7k`$78I{;x?;^nd*+4+*sZp&
z*5sr%<kID0HObvSE7eqlokpw)i97G1Ap$oqs6_$JH3jWookqAd@0XjXT2ODZL2o=S
z6G@y3$?FR$Dj1;1!U$z7Q;n{N25*(1QptCE<2u)VU`$B?n;s<PLmr$E>14;63?CVm
zajK?Mv|5kJ;ML`+VFr8Yv^?Kvz?bG<jy#OR@2OyBv_Ji!u4BYVwkQW23MV8)%wE`$
z54xt-9$G0oQCj+QhaO7K%_x#_iywb3Di}jPV0b)Pi1*Ut+~bAx*}A4$BS2#Pnl8ns
z9XC2yEpM6=v+mAMz!L;ZYEgef9KtT|H~51Mzt>OGq6v6|)%x(T^bCJDe&_jAqp`g%
zL6ZrTr1Rxqj8M#9w2En&Nx+^qTuR=R#}#X#w;!1`@0AS{R%arS;Zw_{jOJ|Ij5T(!
z5eYg3#tabL2)E~bqfJur9-7|=-Ha3)-&L%aHv>`_ON@G+UkKF16Cx$kwV<H?&Z7RJ
zskz_$1-)NFhywe6iYH7R^`&;+lUlFTigKep^%^DrMVBVIulh4stzudx3%OFl-X;{2
zSG3aNR3fTRqr+Ce;0YP#>-Nl@PlmaONNkqaSa6;p&?ei!yS7e($giAebUE<rlv@!>
zX$G**r~%*GH5Wz+m|6?^$^U`#c^{0wJB$84tnJ1nmu)HFumW#Cgvr@#D+;Ij1B!n9
zNN+;U>E}CR&hx8m8t0jrn_(i*49sM2!JP6A*R{_3tu%j6k!NE;L9sA)ZR4=n8TkCU
zH%M;RgZB??m^fML-^!*Xc?S)DwpTOt`apbF1zV+tY3bi){Vuw^5NvtuKsuiS+Zf*l
zKg?rtqwM#X;<K%1R4IOPR6}6<I>O;?bQ7GN%rST`!j8v$VPx8HVn6YIg5v!lm0jEf
zLar?2aW7G<K$SE?isOi9f=)y@a_W{!l{UJ7aeK<;A8a1b8+x)LCvsdpQD>n=c8BN+
zzM{(t%jJ84-n?YVlNK@xUWaUbG8igmzbQGJ?EQ1a1(Mo<C8G1rGM<(c>NGf8cg!C=
ztnlN%=27l9Aa4&wBE;9A8N-_G8FBpJxs&--{Bk!{BJCwgMjM}pa=o4&)M^r3>Ff;P
z|0$GFkU)fK4{y#QaIvN)8>1z~IQbx23K3`5d)$Az@7rZi+*+p(bYN|#qx@$4F}TsC
z?XJX2cZGSr#E1&;+VH2Qvcs7RfJyWxg{4<$(=M`O_`BM`A+!mfhxTW%BBEsca!W^^
zZ(+LngI{XWaPSQmkIa9vpr+<NQptUsc2z%WZRJJk!$t%hJ4^^}o|i4#AG<8;xTpth
z+&J$BRA^@191`-V)FA%~u^2A2W;|p%0Deo6?|W~X>bb(#in>=oP;^0$VtLqoEeylw
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≈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
literal 140688
zcmeGEWn7f)+C7c~GN2%05CRgS(jl$1BA_DOF#`fa&mb{$2r4LufOJVnGYmO&Bi-HI
z4BgG|n!We)?7i>rbMxx|^3MxCGZ$B!b*y8pb(|O9loVu1h^UEhaBxW8yndyEgF{e(
zgL5tSIstIRYOwzn4$e&~b15mMH&RjzO19P}=2lP~oY&vNGzryI-%$S2RJneG^ENJP
zqR<L$vSUVXt;}n@&v#!kd>sy!1`T=p5oy?~|0$x79Q6Kb`2J4r5a<p$6wEQKbj*As
z0dui%b{OltTPboldA#Ayx7m)vVBK{0I<GPaC;!N~t{KPL#O)<x$lmoJoI5Ny*Alu6
zmxwAD8DHXr=3Q*=Y%odwITx_AL3;kU)Ks4TU^jxpaOXC&o$ZMBZTf3Cnx@2`opEjp
zCqS$neo20xdWq!tjE~Fkv*DS#pTM7I+J4!O1$%<UZ=d2xrsiwaso~83*^WA1Q@by#
zfRjfaUq2^RL2KyfK<$6cM(9sSet!PL@U)j!v1j1e{_2Kzbb&2~DL;(Nx$ZtZ-LVBl
zA)jBGKEEh7hWa%wc7F+oX1e*EZ0RPZNa&G>*7t{w^N%H-b38D7@|An%*<Dwjsu(7s
z?^I}dgQb(2Xj}pumg!u#PY-?2uc(r~-_KFDs=xczEm4fRv5nY|uA!xFt-0sOOk9GG
z!<fG_pC8_Rf3me>-=DhR&CD_3i<_F%F36{x!V0bTU@c1xJ})>3ZDipxYFp`>^>zI5
zxjZz9EGq5V^s~jRFE3wbkfcV3iG)*{)SA3mRQWQ@$IU6MwCdkrXE!I+`0PVTm50i$
z`@U^~R0}?}0}HgzS9KYizu!kU71{D#V@yFb-db9e4LEjKs0A@)Uprul6L|8nmEM)P
z+5c;}ZN1HHJhzYB26%U@S{P`OuR%^F&vD#BejHt+xb3Z016uqY%@g>n<vP9iZ^?&8
z_ZYdFX%Bb9zuUeL@Asq{dK<sUAk7=iz1@tX$k16gVB<JWPU@woIBfNSdEB`@kX1sE
zy(e&4?&jl@d-9FWxeqb#hChEiw6?F!U8-CAqjzNV+|6Is>E-fcQO0ow`+FN7wYIeG
zLi;T!a$X-@vtzmrns^$0Y39)K)Z{Xf1b$t6Y;LlIW}dWk?xr4X<ebCPd)(vK7EMUe
zQ+#9rcBdL`^h@^&F2v)ND`PWa&sqHEx4Gx|;QK~o@tYQZyxg|}!-sj-SO)##8o1sw
z=egAU=`<kGqH%cpy-BmqsO9bb7*3Ts&TEY`0V7%iI{Uir7fowOWrCM2hXl^!-lE$+
zTP+mrcXm|zb|N8Lf$dO&?GcKQNI{K31)Q&!o4r#_G(Pjy0Z+L+`xf|dr}c=!GN$Y~
z#BdZuaX(&c#3*bEj6<?;pAFPf+}KSK);nXsAqw&pks>j}6*IVLmydg^hTI8H;wk9!
zC$k_Nle)|_FOFsx!AL@iPj{6FG(PPo+_kzUQVaQj^8j~$`tdVju8-^q*T!)Ur$?8s
zan~?75&GQ0fB2C9^N;k0qhE0ieTEqnzKYEHer5=Mjra3&GNaq8&+Ss-4A9rlRlcoB
zS_J6_-)q*MzuWt5{Dn)9$GpJKjRqyQ%<mRSKIu<ZKf5H>n(+%?lb5#Zepz@Q{0;sp
ztLNN|)`g<dds4EzhjRHg!Bg$;UMmKRk@prqeKGo`Ma1-n!XQNpq!B>-hkB;C$_HU|
zZCEz;Yo84h{ML{u1Kp>B?FVkSRd_jn4rdWg#2zG@wS?O__|z{x8OVHih<|7HM#kq6
z0Es~Fg=U`3h>nZ6e|CJu82o~tQMj%$O7b0Z=MxkI{2?8q;2n`~m46=I{gy1l`=~Uy
z?hS_uUB>6aZ-w#pKK;_GkK7sBexh3hjXiA{qZGLqHG>X=6+_CK6<g|giFgTkxp-%I
zA4EOp%`$dq;cwLoTM3~`Wl{Og0uMEND-7j<K3ZT{5M2;o2tXo{C}hE!n)a_X#*u)0
zUnqC$L9<6Po3ea{c>jvp9mEp^Df*j>?}?AhZ>nBV^KXTsqi=Oc)*q}tT>ta{-1(C0
z^^ZrzN~pIe1(e)IO2zjIuZoDXcgHV}iH?8oXf6<v8I#>4cO%mxA|}fuQ(zfaxv!GU
zuEXxbZo-OE8c%b2vmJH!O^Z^C;<w*w$U@bXSQT#C-<TfvWvi3BCtN4aF7dp|Bd?#o
zehw~ucl^<|d?&&0r(fJ#<Xf+|VXdrTaDv9C#`rwER9W|B?+a1IGnpxDMc2gTy4BU*
z0N<O;Qc&AhTgVL0q*JL(Jb4q4v6vQ~SR|7TS@#k~!866x-HT2%_IFpW-3wzbQ!rNK
zh;uTY1(T@Nt36UNLNzJ`2nIZq=j_0d_gZA?u#3K?bCXjs+ddnilZHM)uZ(VtimoF@
zO$+1s)FUD7?-pfDi0zbQrI?julMAHMz@}P5uZ3iaUmpf-Tod#A6$0^_6s|O>eBll|
zS2}k-L7zC17~hP&*?Uv)ej#;*5I^sCK0OO9>!bG911!zy-RXnNRXiQT_0O70MvuyF
z^!#agTyO0E#+TK?!aCYS2kJ6#Q^4-&TojB46Z<N1Ui6zphD$G}U1n*7bCq+pb0Dam
z@lR57(&TJPN)<F|fx1njEl1-(BTAzjxuMOjt(eD^4=?n98Cld9W#pH_<qGzT!DeFy
zr>&jsKP-y}Hj2b1#QQxm+zZYr31tZr>tFbK$htQ@ZtD0^92*+P7_0FNY|r$}RfOAK
zeC4dCq4r7F!q+x^)FO%sb*dLHFBsh(S7B+J6N92@gZb(fi}Z=LxR<*Y`~Dzo`#m}r
zoc4>k$*y=wmHS?fea<<AyE41t%VbmK)M?34`=R+xgWEMXIrp*i&@;m`wsX1@%t_kG
z&<QEQFkw518PQ{W0z%Y{3i4#CKesY(P{+<bgI<J&8(4f$`vBegeY@}W``1P+)WT2f
zVaw-FKRxx(a({N6lt`cEf}xIuk$JW_<4?vN)vQ$UZ-qZ%DMzTK1Ea~&+^gV1$GyyD
zSDr?mq{v0B<KdM&fxOK*x4G82vN_JVr6&D1N{Z7@_#gkgYjn?%`Ih`{Op%Aql>O<-
zlRoRtr_st!=X&4mM@8`|cKnQQh(_>#3nGgs<X+)pk5%uWetYZfWUOfO!Fy|i>S-t2
zL7S6O__*yxA6aqePN-=HJi}7;v`@5`t(U+_yyER-)?UpXY-N+Lj_<(uyKy6wu9eaB
z2{dk+eVgxyb3|tZG!lo$_u^ZENYfKj_s)c;S|uWsEpfqPL1{Mwg<*_FJ&H-c+z!t&
z&qxc5OzAn5IHoBJJ9y#>+&cSSUe@U^&f1OG#VoC~>x$->Rt=re5(j}=h@&Z2IXNK1
z#ViIrlMSH_RQ{ga`D|?5F6EEmZ;bLxwv%Qj<MBK)IfL2ngpcd2mf4T-x=~qcpW2Qs
z#DsftE`&n33fQt(PAj}CXLq^=C9Kb!jiIfr2kN)7icn0b#hj|rMx%~N+lHOGok?_}
zC1#LkC=BIV?lE{GNA5sACa5I%RnXr0=E!jF8_&K~`FQp|HfuF!P1;dpp7ZhIq3$!?
zvLY9_Sc$xy?nsg1nDdzR=JjD^O_&xqFQkOeb14LzSFYn}bCP0Ge6o>0p?|P-XulaS
zKBh9KrCOk9G?l4SsG&Ai?Rj$X<60FV^{r_7ahtC;>1$7)aR{HC4JGSa)7=p7b?aYQ
zt~DZP5~NR~=gyW|UF;_rOdD_%ddzSCE7CTpv<JO?WKB`M{yf7je>Jo<Lp_Z(&0jGv
zmQ|Fm|FIeMvly46VrPxrO1tePRPj5Qxdgr2#VqKOcuA*Hr%TVi+-c`$TgttNIIbam
zn-Y~FlPQNY$J436Vv)ijFrs3#duF_6_<8BBeT3}Lh-K9fmmX=E$AZjoKxYh(ko8ow
zN7kv}(m{bplp|!Kqguqxy2rilyqA!Ol#R|p6nRlUA1F0(Ya-3X&2^McTC8lSZNq*0
z+2Qt5)hu%%Gr1x<eo(Z)*&%<bx_a)oaLJt;pWBD<?S<Nz-LBkRMAOC2Sr+W6NA70W
z)<83c+`4~q&Drv>$eG1(d8QocSidPJk?uZx+OuMWNh?uQ^fmQla-TeEn3tOyn$9_t
z&6knE=XfY*OIBkbrK*DCR7r@VgC{Cd<N82a!R7Mjb;e4*x3`ZJwOnLFzFxy|6~+Ck
zjW2m!^taWQ4je<awT7lmGsTaiqd$t3TjcZ5!Hr3Ex;JO)o11Cmab5@DxZU~j{iZb)
z)p0)Y&&q3(sz3H7nJE}W=d6p#e*dTv0!<ShQ*utiP8c=xgm7?h2h7#9?6u_I2^(3%
zxZWFE8$!99U>^VxfrBIJBn*6nLG9l&IKiyocEV0#jQ==882F4m%+1K~k5lX|#Td2Z
zl^CR~ZJ`VTT>M;58O4bh7#KutjZK7AUdjCHa^Ra7qnW+^2Vrh*M@L64M?NlVTT^bH
z=g*&WKjr1-<>ds<;Iwmw+rM|>gxfv(=S}|SKChs5Mz-c3?9Hv=4A}d=H?&6Bi!m}{
zAN0RJ|7@qdxyiqu1h@NFw}1|EWB<a<!}XN=fA0-kDvCWSEM*P*U<<Xg1MV-*Bl?ds
z|LfSlpYzZ26>ZI-KufXh`QP*Z^Vna{S2DA<w+2Sd*4*d~+#YHRJnUar^Zx5;e}Bfm
z?j_2N?f8ET#6L&*A4h><7AF$r{@*DRC&C;42*SaU#Ch}Tg_;xY+5};&+Q9MUw(kT~
zBrfHU={~XaZDo9;dK8cHqmw=snGmhnsdOHT?|F~IUxf@CZsy^W2hftQDdWHTgXh<a
z+2}38A-+7OvuhM7;A?B&Sli%m`;jwJx<76=<v6arVHa-~&8b^tm8E=J5(gLm?|+#k
z;ZeyKPVm!QbrNt3X2}|VQarrt3?Fg+?w4c;1;g|}GB<sI?3Isf_G7y5*hkpoA9?k8
zk_<3>h_L6YSGvtxe$xg7SGF)A<HqeR3k%Kf2aJE;LZIoduHXLu-|Sz@;s4iTW-Ndv
z=!0Cb*d%eh=0Uu?(IfCUTcl~s;*4h2c>6qiW<8x{Yu4IWulxb5#W6>_jSbcoo{dP~
zE(hOm8i)!a`upVz+;NYBg{`?TKG4dja?C`?LP~c5Itq6|bRyOx^(%Td+^YX*z|%8T
z%a?m|72MXo|LyVx{*YW;6IlfUWH~Lh*f6==8{881TWtC6E=x^1aa+8+6?an&rLO8;
zg87ZLp`4mVQuDCEfX<HAT-8G}n06u;Wttm0Q3Lj5TAf|c;pJ7q(W{$~{<Q7KST+<b
zv$(LJ?cq@cH8s^WF{%GCgNC+IjFs5@h7IS|wzjoB8a)V6(v{HGc%Nn2Q~3}~Eu+Ny
z>8jrGyL){%=~zPsXJ<Q`6l}Gyl&Gtz8Ly9``9PJ_!ow*(#>U24a5&2H(`b^jzHNT=
z$mf}C&i=jRwnOyeN_LSeLLWPJza=+|I<ie;*1o2)c87(8+{;7qnD$ekS+!0m7qsHL
zOCT*2c#syqJh8t65NzXv7V+H2qzM9uh=}wkeO3moK$ZQKhPit;K$xGL_!U3Nja;vq
z0fr9HNs<3e>I~v~d(Ix*oT~LlpAg>)V?Js!zO}k~bRK%e`7wTy85s%QU9o5Dh>;~&
zvIv<83sYbYMZrpq>L7!^!Cq*~V51Rjs-nW=aSdd4uBo`5LDxIoAXG;x_zGyu{X|5z
zXe<-!EF*KWC<!%@DMG_Mc4o5X55G>oaa$a{=c5x-H{4S{iwG-nlmEi0g?^Zg_gZ$d
zr@oU)sC$$`=GOFJsr;{%l#i64t59$_7!=M0w%A?jD&E<#9V;|f#s9+Frc-G4zS3ns
zKPf5cD<UJ-Jon?!Gz6Ayhk+fEI@hI79t@Z7_Azel_f@)T5<57b&F+Vp_sC4qP2Ra8
zb$B)2judk(65H#RDzX~kWoKpmX7;k&VI65bRpl`IjTugloAb3G>%B=D7w5Vk{U%&u
zd2$rx?4m)UJGjXPbtG9H=XDF>jzFPf^dpTnJHX}<bOkZlIbXjk`3M=~UD-=7{MOc1
ztK*%8BByOb-AWh4pD0R7%9ue}?!aLd5FbhS47nBN#INIEB}t_?-6%`1&HR@(=P9Q7
z{lt3Tmz02T>4AcDhT-`SxpKrbe77lkSWK=&7#WJ@*4F&9GdI=4FVumSZQ-0n2#m&1
zCJBvTi9uwU2(qh}1vdwgxRze9;lVvyaj>dyTrF<D^g%=2LBl72W*psv2dVTUdNi8W
z&P8<9>i;O2TvOw9ZT<5-h1>{zkC9aQ7!%7O6xz?vuQ_1V8KsN|$?JTBn{s#|I52rq
z|4<|H6kOm^cq!htS|LR+QiIAKN5ykPj67Yp`BaNP$&zlqr`1{X$#UDNo*H&nUHq~n
zuw9UMZdFVNd#P=FJjk0<n$0<7EGO4ywHmv?bIoE@TzDFB`Z;(;SZ>g|a7s*2Of=^P
z8tOFVFo=eESt>3pvgsD3j*CYYXX?0~{cwCY+*agsp?cgfu~~j-sd(Sw)61o(kg%0S
zO&~f{tv$!&Pw6wBh2wp1S|4b0SUro&SiNxAcVUNUnn#F>*VD6YlpjdAnF(2rF*dmr
zor*t87oLqPI2hR^jLUXCJ=+o=^_a=zEkB5gF3;)Tr|-=I|3MET&Mb~~PPeiKcyf%!
z8w;*lEUO#|99&R4axyZlV)z6Sff)=B37LcFR5|aO6jyZ;zD@8hyy0|Q#Kp==Z0d|=
zZ{PNpdXX?#WLkXyuY$e!fv^fQ_5I9SljM)5Q=63VbE=DbbDXJ*Ut>5OmzJ@SNHqad
zn0H=}D^y)MDSN<9)WyXa@UFZs60+*8tZfcl5p_Uw$D)|j3^YVImSPlNs7P-~^USmu
zRxnMs*hrd%$us6n)*Q1~5A*lKlXI*(fQ~b$RO}8^WlAlLSF5&tO)#j~J%zj4)z)F+
z<JKErtBO^zlsMMTNPKmcKSPMxzZMdKzS9?3<hDMVaJqs|dAU%eXJ*<)>G7F%7QP8#
z8i{>wr{|#g{(T~`OIT<qzg7)9?@QG#=3iF(7%4D)BOB4<1|kP@T`1-8PMtMrI>p)!
zW)Fok5O}y|E_6Qip;)VyHy%tej!HEL1**x~=dzas;z=s%=jwk@Mz0jy8qRRZWiK4?
z6PQXnOIg(-DjevCfPQ*ZU4FEH^?Sb>O<4CHdV!now3G%@x0lbMul8jnZl{!w=Yt!(
z95QyUY1!-&xgt{f<0Wlu^5o;iCnh~F-G{<vGS#z?(6(?v<L29kY;0_{+WI=F+m)*Y
z$zUJNQzc60s`R!ptta=9$F?gvsv24lhwuf#uA8RUGc0R5v#Z;*RA^gUU6%aGQyHT3
z>kp<<?4B+Ee#Z^c^nO9jNz+{lJ=!`{Jg<s*HN^#`2Ne_!YFZT)i|fPNq`*`Zi-N`U
z7YVA*zNUQqQMRC}`9051f_Y#YKp*z0l99N+x&fN;#SGDKiK?|KovKc>CX+B_{QJ}d
zO?%hhV+k(e7e#-Lt<%S?CdSA=^OozBtj0$b)zCLKu1^YBRod)Q#B9swxfhl6XVaJ4
zrF}RICKCL`o2q|Aeeu*jz|FNV?}xx#%m7^Cn9Uz)-9*8~aM0V{0DmrV1*Rpu$EV=Z
zGrPyEP#7q2F|2{oGlz{8p>eMf3<t~7t?*U@{6hW(57aGVtp0?<{N9#I%}Rxo!;kA9
z+zM>n1C}lfS(@*Ng@;eQ->doI(F-cSb-p{lRl!77Q99dHUJfM^WbL*coY?&GiF5TO
zkCq`Q)1%CBbBl>+UT?3taO*<HrlYTbvGK8pQ!&cs8f3J}$vp*3K`kLS7bP8`MsL{~
z3w5~oL@)C|W@vg*Rp#?2)gFRX!EVa9P1=y^uOi}6Qwm;927}|jH{EF8GYmC#(cHVm
zm6;`tmLecZI8OQq-P1Dhh(kf2)+|Qs{<wk^?K3NBYn!K}q@c#?ZqW)4Pr7cxT-VVN
z>tz@eTzhx1BO8fq-<!<QuRgJSoxUh@!wG#Ix->5S-uURx==_q_=B+O?lKvVjNB3xh
zZfxF;R&r3OFo@s{@qQ65!t6;kJ|NF7xwCtX;B!F@7N$#7U~|uiy{QaxIv~`1N-0*H
z@t{;>Ms%wL<V4hjc9c1+Nrgh2Ll+dK;XCebq8H=cy!R5Cahzl@@2*<a<+9uMdy3E(
zPpfJ<x`F6H)#-xY)-mf*I!{;9ClBf_PT{%sA-UW(xvjtNvSj@YmY|e1P6RkICdTq~
zv$}e{e6uP%KHgeeTYIp0^Y9!0{zN9wPuBY>Hrcb}P*T<-RaNDn$B=KG?}VK`Q1)f%
zjGUa`1*!dHC91-gi@(Lm=<VbI#+)@L^mH{I_*1c{5U5tv$Y%zkEhY}<ypJ6kU99g=
z_q9hX3--@%9`=-z{xTO9?#_Vb`H>>e9Vc5q<SKdPs!C})wf=M!=@(c)ceVSW+1svK
zzFzn)`>RmqUrtGFv#ssz_S$+xZsui)a=-B_X5*6Sr&heWowR$X#CuNvw36+NnQ`P8
zWU!Vj7VjFF9UsFgEpKKRjAXPO&bfmkWEG2V;s<+UD3B*`Bx;&hB5u`)Q$Iwjrj1^I
zvj=wlha<%}*RyQYjZe~4@Ud3gz60t&d1)$R>NHGHEqJ2B!|XEt``Su)2Sm+~RN>qr
zCO&Md^W7C(S+W&BbR<PnI21d`xhbe!HMfMNf`*h-hSnlH@V5knSy)W731XD#S(REG
z+gpPrA5o2p#aG1-gE7gd8yKB_*usv$!oi%FtF*o9N&&v_frV+8M`3qBgvO9jp2QWP
z$uIAPedaJ?Ii7haX4p@OAY}8c;+(qqgKV{kFIhsL%g0nFE=fR`yR1{F@9{0<)|c34
z3!1${8~fu$uKILS2F$4EzyBQ{aEh8X&1H#E<VIvYvyk-Na?&4_iE@^hEJzzWi%wfv
ze7fAo|Mx9HlMk06veebpwE+<4)GO&`V`rB)a>$^mw{KY``lSm@qc=%<;EJET`iw=`
z4SOt-EU60QRT-+jQYY%|@9!}D)A**7e?D(kKwev;Hfg%As8dLo_+2fkOploUNZ2Ki
z&S7thuE@1ZaE2*htdd<D@}7k0?^jfMOiehaE;1>pPW<xBF6Nm{QdoGn4v-va3fO6{
zL8uTS6MN$#!cxn<Mh<e$QolcmNxcMP1~ko^jT%IJmwCzw5HMQnzOM^%a@C}v`<wlY
zhG3ZKF960BD$ijtyr$YEL?A)dD<nct#Yf%}Ci!UNK+&DAV%vZ29W+qt59dSMtaj#G
z4(f=xhxb<cU>oD5a3D^#cL>csiWRkejPT}LZSAInUb3*WK#oU-Jy7KpPMA5)OOu6@
zEjB0(D~1))vyHjyWC=7>m=J0S`lKo4f)*%kU~}E)=B-q#(#mJ5cr#Y_pxnK#dCP6@
z^Fit2(ZiXB9pp+`woZhbkpE0;)D<!SmpS2MM1BdK+t!QIq3R1LmR(p^9XCQej-ddK
z4%LCF7Z(?GOiWC4GGP(sJVc!pd)u>H!wRhzrSr>Ru#l6#ztHeb_kI0OW$65hMF4_~
zi2F`nHBA#i8VFN87FGwIsjyM!Sma#LzVu4ujj1-Q+}}_#D;<dvOi-0m&1Js-lxQ%d
z*<Ol{9pVbP6?MW>YTs!}n;R0aJTysxI^l{Qt8}kIScI7Z1bqD>WB1+A%o(9X;SiTd
zb6oW*?MO~Dq~r+a6d<LiRz1|1VYZ>sqUIZ$X)rE#H=oIO+Q!0@&*un6k)S7?{n^*g
zgR&cUcT%{Ds%~8&kB0AnfCLIY7@TeJ=M)hc1C{9%!(n!d?L1I>G;C~8=KKBkzO)XJ
z`xr_Qs?@v*>`W@<IJ<<e_oT%USD8U@siE&dP42xrWn_qKA(N#af(}axGZqf3y}f(X
z<#tZWZ<(lfw6>{{DDnZsZ=ui(JgrB?+an$azrQ%lPP&f^C{4tT&6h?T$S1RCvCKuk
zBme&UDoEPFixGt7|NMCuP*do(>1aV%^uql7@F?0c8%wGTYH(<t+a_Z(MJh**J;xX{
z!iVl8vbtiX(RsAQ*<YXRu+qtWy{t)<AS6G^8_d!u(p<J9zpe44u;O7LdCm)J5llmr
zKj$4)eP2ANr^{l<XWnt|AK&!up{3Tp(Ji&p$2eZ0>R;;_0Gf-dJH-IYSJ$gfHyqBk
zo5s?We{)DkOhpS>|8jzolt4d0ojT4^hbcbuBGm5QFn&ejR#d|8qWp4~=&tz#7N{Yb
zwK?xrBG;aqGR|t&0%omLiQs416mhumk2C}SMiLQ2Eyp2*e&7LUCX-D_J*sgkTG+Id
zRgPWDdxC|@rQ$?fgK=oZF;G6xGLxs=FfOYT%pG7fSPAyRv_4HcK0J5h0(5(S_Wav&
z>(+{=!9N~pg3GyJJK55chnM%VuOsA2lao0X(ZrfH_<s+L*B?L01;k}mdiqmPRp>&>
z8n;Az*nq+Nl;lxlKn&K>wfvA{BjkQN7D|1UNR~|ac4PcJgzFCH#$dMYAGZ&SDG`wT
zHty<ifcV{q#0Ce?lnHSFM0w7E7SXRP=y7(mb)u%op;O3`)Otga>sw^tFXxrBJ9qqx
zFkB>$Izy?hm>|G~v%qVeU+qr(gti!9t5BeVv~B>HUNAdrs9Wvf?gSQANVeY47PjbN
zy6QFtBKNwrz<^g_TbsSCYT1+Yg{DpJMV>tuens!`YPaB3*CzY|k*x^>zzJrG;4Slh
z0)!plAt6n>e$_UZ3(428uXEiXxzc;1R*;;tUl|A`HgXbJ$dVnq(*C%Q2UwPj;Tr1F
zow7))`KaY0>0+_q#XDPXUwwo9eWC$Iis^A~uD$9jOCgwFY@pUiGhYu(_x8ZSt7zF8
z_B&6CUR-4lMhDf@2?XP!_Ax_gFpQAZ@a-N!Jjk5~?N<ah4xUIV_A2mw4K+0_C=@#S
zK3#rcVd2iYj#AlkL-AlLz}Qqaq`7i%Z`^3t(}T+m$(T5kQ&Og>cgxkH2C_6|)4BAE
zN5r*t?&NU<Q{h3rvE-3lv9=kyKjRB(z|fvm`W7+8RwTt`nVGGC_*n6N*P1z+50!HQ
zOUW-s3IjaILN1rY0t4F&iyZxB)$-PXu;>bL3k1SzPcP|2n+m2*9m^(CIC+m2C^o75
z&iCPjV3S{GPT8D4s9iaFQg3g)Rr6cFdU}|)R>w&+?zBb<zdzIn4;kR#)YY#t_ZOoh
za;OxmMh>n&npU?Ic6fEwJoV~NXXmu7^+CfN8ov$>R<kf?Q=c`o1~?3P${`CYG8NVt
zr`4Io9b~S)NkR#-6%~^|DvWN<$4yMoygcZDDfvFIjEfja2+*%gY^~DLHn-EXE-Xzn
z7|KV)sM@;WL0I1>-@R%s8O}ju2ECY$oWAPpmcplxq5?)Ju0#?XFZ+88(_wJU&j(j7
zGXT0IYuH)21h4GX?bkxMc#stbX*1HRR?0_76+FQ1oi#MNsxR24nF0P|e)h^B%jlK<
zF2hI3Bs^oMCu|K4SI{t^c4W>P6xON{78a(>V$@y)pRkA%M&x^Yd#h<E{?p?%f1EJ2
z-w`cP003*bqk#NwOZc+8nl&;XJ|SG}ba8fkC#xKRq2TGd`G0qC%?Xc{#AziJs-Y1M
z8_7@65E63~_2|5R<s>Aa@CNW8v?2~jL>wSX3$zPNwAIza0_em>T@E+En6lwJ*y|Z8
zL7_b{w^F#KbXU4PM*pT1)<VpoUnOdoW&wD#=r^4#-DsOR8Okk{@T=`*0K85pUYpls
z*)4SnTJ*CFr93ps>_1HT?Q!KC;oeB*pAL(PGCw{(=9*41zuE!C!Q1By3U0l|0WRyG
zbla7W5k_PJ65(l>x+>-WJ)Zx&D0x6XTen6loD0G<u|SssBMKNG7gHEo9mtxv57B|>
z=~?+xa{qW{CL`k`(A8NK8~dQGtpkljCf}l0rsTVNSzLe3knuId8!Q*jkr&3UIU3!o
zl6Ad<P!5;`z+Ehn_NU+k*m^ifQy0$CJdla7WM^Z`=K_~$`PbEb-M<>3fwBiuQUy%S
zRv=f)RY|rsT86OvBS)o2T`$KSFhgDmIXya8*Hq=QxO85MGo5P+EI!^{5?WAAT)(Q#
zKt1*~TfN-GeYOHiIhK$t#i^=6z)((Bs7g-$Q+2V*uIan_R@!+juW1e71%)OZ(b8&~
z5Xi=;ko~d}4Ugexv{?_Mp*z^LzjAKAB?Q(P``qE;cu9A2vJ#{7<n+<sEUtexssANI
z#>a@p#hoZHkpp6VRA5Dl4I_tm6?hqDFMT=o;zgS4MyY8`xn+#1!t(~`FPPmNzMv8T
zjZx4OoCc;VyCp{an0za9si;5G1reWayH!g#mXY>rHMO9iAiJbw_+mHyaya=-$asFA
zqQt~T8HTGE2`+blQ(a|<0XQ68B^g5MbS$?uM}Il2@N5QO0yD|{F492X^Bf)LelT({
z>(4z37$(+D5A42IUYuZzO{HJ+T!}gSV6SziX?1OFs$DifzBT>wyl^f*n)P4zp@HWX
zPr9@PR0_byOCrbESq?VJH>30a2>LWq(TKa1tQT~N4>VpU-iVEeFa>h<#<P?}o=$#!
za_XhEgip8fJL5zMg%Ex0nyA83yCoff9>XHQ4jDxdVzPAIGW(4E<(_)Laf85U0%#8a
zQ>%2&#MroGy}w}|SOMcj)O}Xn2`}y#MGTnGtEU!aVqOR6GKFC6KU~5G)17=}@8jJM
zqO!r|gFZK@W^bByL__I4juNp8-5K=YcayF^>XY+TLC-+tr30$qzcm!DBx$;SVymmJ
z0*5ZdSc;l>K*G`1Axj56Rcue5JmG4~1Uz{-#EUU(x}x!9b)+Co7ZO2Fl&j}30u{8G
zeMR}Y>|oRqT*LH?U<mMd*Se)h5w%gvMgb3=_x^HTq{0m68SSwNZC*1cQjw1ErE_Uk
z5MD|C+K^MR<EJa=vS;Qx7a(N#gWaL!NyP9yMbY;{lTN?EA8J7}=j2)<yX}1IGrsh<
zxc!B;J4H5!0ZE~!#4+NomWHRNsb}-0g}uyvxw{tHK|(9cZ#Y1Iu|+rp2hEY0Rh+D5
z)ngD<va|@b_FWR|KUYzDhM;80Y&;0S-EE>?$%TiF>e6!-f#e1UoQCPZI>XEF!JOqI
zOnp^EE*&vKT@>69t51Za4yQo8^;HrsMR4kxq{Z644L~rLsf?&mg6)Ij5QEzP@CV8e
z7^HlRAlwo9IDm?;F%&n&cIFGE&gI29*d)YTyY)n6+U#I$gr^{y&S@IAIKE6lO(t@+
zd^I!6s=<%kVW)+;yatk6-T)wBab<q>EL7xpS_dcrj}2ZbNwyG{U+kqxjN~-|<@x*N
zd%be7)=*Y>LH#X}c2G;`Oo~d3yL~|Cv$>n)mlvmC+SYdA`5>v-7`zX{#qaBVMt}m=
z3UXW~k-lmIYpLoRFU8vZXyaFn+wK&q;JJ5YjQ_+#6FEhF;jJiA8(GZk&_I{6^}FkL
zP(emzMqX-1sV6SFN6ds7i>T&1PgS|s@8g$CR%}+C>g8quK#amv-FYPQxmaYY<{EhD
zbL(U@zqtz9rtZv#yZS7Dtg|bSUSjf=_>n;bPpUybF#qr`U%q&tUAeir10$yfzvG#=
zs;HJ?Q04E8LNi#NrSY^LOgQR0ih|M(#;hfZQG%ytvQV>Q15Nwz=vB?Z7;nfB*fGvh
z4k@Vt6q)oWe_|C3Y=-cvbfrX(M}^2xn;_fZL;BOYOIA|@4%*mB5(@uxAG4HS-v1>L
z(z@2m{!GGQO{-e&?Iig}W#t5u{nY`uOT7<?!)E1S*$R73MXz@)7iYhgdTWx3^Inha
z#IPQmX-kUgJ#`MdR;ZZ6Qk-L%G*P(w$x2%706H3yZ~P7OQ`ze|sLxwE%AopefqQ}x
zw8-xh`4)E2;}Ix!5IMQ__0f-9AX0jO(p{zNVUfheb|Czqbm<r06m5!rjw9M;wLe29
zmp#4i3Wx7{zprFAZw3F&h%%=3j?P>-E%9CWkj_wCVkvx`?Do#YREGDoJ@WW7sY<<%
z$JtZZ-J90|O4YWW!bRZk?+<nisG>$llmK&3)}C2WQ4tB=VPzr9V%fC-dgL%-)R!t>
zAa*#;H)wK$dv}5+Q=}0H1NAX(jYcilf%5Gw^bo{u-x7%uupAt244|oRQmx4c3aK;4
zTKAUXJ*)Ot`j`jV!XI9h!dS`E)qNuHWMiZz$l#-e&od$pZV<$&xG>#NOXaCoBm2|C
zUUmk=2ijqMR69)}u8tcRNP=*`#%7f*<}#Ms6j}32OEL7a?1Lx95gA~jgp4yFGugk8
z)%R@_Dc^3SnLw8DwFBmLA9_Uglr25QwoB|#Ype)XPnVhFetN*QD~Ac=6!N@qla~qI
zm?)QR=esi5^hZc?@>THr426IFD91?BFCIX(1(g1kOQKrG{kY24i(=aJbkG*+f7s$l
zQaK9O*4Dlv1Uk(0vH+6OU-(7^6Pk?x0AcJ&gr4D$zGr16(8L3b{^ckrE>t-sNpkWA
zbL?$YvEb=v$6NC0mUTc%Y)X<Z4A3*qgeA#+_+Ge-XupyZWRRt+*RY3?n5CEX%TJLA
zjZfc7LlGE(%zt^Dtmq)>hbo+RBh!?Xm1i3B{7QKXpF&KuD%R0wK;A9V)OR0%c%CCp
zx9Uk@XGhyJ9RjE!TF3GCtI<4KKPP0pkN|X+1J&fss;&DbwZc(XYLH%OfShOoERfac
zb?xndM`2by;;USWh;)<>$12_j0C+coOyk`hO4_OnaxEHxcZ`UffbN<Woo<wCio^lx
zJEn|UO<D6>kF*iIq18#1X`DIU?QUghjArro0@E&sK2ov0pmhK^;i5T7NsL452FN&|
zl@nAHWNt!&F=aNQ2g622>TSGN=1@-jpF~aqq==;<fKFy1$Iav-xDXQ~PwXg&90aT{
zz_gj{VNWzDzhqVegbr1<%2vLT8Z$m~vbSP{%}Yn!VlI2Rc}7jqcp})WalYj%!5=Ud
z_O5i+k6llR<-Ta&MVI&~5(8K2dnEI{TlZBDj{t#&z06>td7qvuqu|9<dyI9}%7Jq6
z7v?y76{LJ7r<?=5wuLAkG-$%Mjnko#$~3afHTi!D`2PjzD=a~3HF93Jp?5QotegUf
z5lW6#qOQP+WElB05e3wN)gV=P7L@Ki#>{uV5TRd&6Pw>f=A;7vmHaQ!5s$<2sV`YQ
zM;hFfdn&Iqy<7Rq*Yex+KCWPLs*Aj?5sun*iJ40I+~f(U1>#Vr&laj0=e!tIwA(4-
zi`l&=TvSF;al9Ba5ec?EI;_5grNw)cjm={b4pQlI+)+Pb(CQ?zS+UD_pc>N@Ktnkx
z=u#K>@ZfB>Ys}j7RF{U|EC@DU(gRC9U`r?-g1Ab@8Ugqsxqf+GeYv!%elUuq6uu8^
zzqWO<v$NabDuVXxAri+eib*joqF3R6w*lT8P{qzmTx|H2Y#a-I@#a`{;nt$y)G;nF
z>EH#qogA!Nin$)#L^)s?JRl4P!u*nqGR)k#BxE#^E&~BGVVV$Z**3e#<?{Tn7z^eO
zwIIrpwG03m3q}QX5|C+53oXp?{FR|Mo?O!>Gd>-gx}fO!VpQ#Mt|v46=i9vr@w|iG
zQ`u@#I?-WHmE1L;>gf+zUlb4@8MCgY?QG5L5N{R6GAOI+^8-5so#VI-Pap#LF2iv+
z^vLkxe`qH2N4bd=b$)V#I@0MwK0B?g-BTOEo_%TZQs&qHdmw5Yo&-fvQ47j#C&pS?
zj-{rM&!;dc%m)LD-P|gT;>(wf1@`MzmhEg%E!O3pOm%h);6r~vRK7dSOEpwSO^1}7
z_uW@(b<50Pi7{`F<T;3$I%6_%^j`YqirNQ&QinV(&LNt0+3tLQXe|EnZ0V~(#2_on
zK$ZLH*YnVC`^}F6hns^Rtpi0BdyHF<)pB>@0kAeE-bzu~`_g-qw59Keu;Zj~QL2-@
zJ{`#MfC9P|4v9jndVlCmegk(y8~u3R7_h&8ak|M|sR)7m%2EZ3aRF7VxG^ACk`{9u
zNudCsu>PRzw8jng{I}edJh^VRHk`t)F}9=rWTlTq$NRr4)4BE6m%Z9ZpbH!5OydBA
z)l{RfqZ$1wj9UP|11L`w323P|{h<9+@J2rCv>H%=<?Y;{$Y_i1-+=0|my(>IU9AKZ
zXsW?fk)OAM<sj1Lg#;)`$G6OST%$*v2%eFSsdbw3%{XnwvNK@+$6B-{%4UKp)4gW_
zC^i*Jk&5+${)k^38L1xV@SeH>T90Qe;X5w^nhs|r?^jDu?jys$J!}JdIYp1cXr7}~
z8T1>fnSbA{4D{G+WIGW{PTGtz=-HI{M~`cYK;oAcUVs!YBN;2Sc%Q9Hq4VAYvb;Io
z3~w$5-_!joY6Ml(q$*jxm(u<ch5}nZv8*Z|ilA@Z8O=~UoM$Iq&vQH8`FdVN+wg6;
zVv#CfBt<f?O!zxpb=IO-pCt?lC%tE$SZ1NNsLm^W`uMJ~UWHR0v0g@b-Hm%puk3^G
zi~efd+kvk1ro7plI}Gp`ve{4icLVsvZ~-71PMOx&gvVv)PM3ebNOfc?{EH)#kU_*x
z`h;R-My_(S*c`e`$%)QaDn30CvRt~gzUrnkp!#`LY2oJ+xwZWvea9RSF-3nOlS2S=
z!cAYNqE^3>g>c<*R4c{qizefPH;+R&A!AzquG0s3;6W25hw{T3Q19K#93Kvcc|?4r
z_-}$D68n+v&)PtCh=}!h%)sGm70R!n1QkFrIihjPZ|I3Sn7aJY=GbppQmle})O`vo
zo-o1cIQP@_VxYDStnJ~GeT=E+ahv|QAXeV6j<JupH_wg+OF(1)XSa=2AYPVVHAcKV
zjsU+iO>T94o7zs{zkpp*mCQ^z$Qq_wY%i~WT<uvtxFCAJK8wqRq#~zrh?>vjd$v|y
zQsbj37fiOpptfl#oYb;FF(9nqF5pld#p4(`Z7X9-iqSqb5&GPPB#B&%CkJa5oW#2^
zGQZ8A`~@s-J<N5OAUL(C{n>pj+F3Bcu{gOiiU)88-{u4m-g;n0OvzPvIO*CYezN>X
z7i|$177?Kf04P#32O@~|F$Aq57Z%(ln519_Z*mG!1^(R?#GS2)mq8Qil+p*%|Lw!3
zlX_KDY`QRJAjh?qRtr}3q!PSS<RV6~*|3cNftX7nMuj^!x`phznH3k*c_qv&qeJ}L
zV8?$riz}SDPxw2t-kQj~b>&ms3`s@&`@#SCB>ytOStHeQX|Y>L8^H+}g63<e02-k(
zz%<$UkEQwVMfx9~l%}u_B4T5FL?(b53ivCSa6NthefOmP!2d>+zwp~!cOt-wOUe5!
zj98t=gOrv|?U$Fh=i6xfrEP!ty22RL`{QgVN8cJ--Zk$_)iyUbFN=M&epO)@K#CtA
z73wV&O&{v|to;05s57hy9!ve-)BBg^N=9E#E|jaUt9wZ!>XeJ!Ab=Un?wcnwC%E#m
zngfoY-jA9lCaJ8;DerQS$WV<+G5u?uBv)IixA0g4-X8N*^k>g>CrV|fr>EbNmpezr
zdz@rc0{R}i$@6rE)YA+gm9DF#F9ZHEEPwe*!UnV<qKsFqTh7P{Hd#^nLh*6%Csqsx
zGjkK7^fiGFqv6#%kdvz=-(G_NI9~{;*AgxgKnlb-m`<TBHEDpDYTH_!taKek2NL`@
zDEy@r*B^6ZhXRNI4s7AMf|r-~r?tG;X5xW>^`t0lOtULZasRK^{KwMzSmVGN)SDhk
zUvD{DXs)576YXFC&`z|_lv`h_LYxH<ZtuzudKmsmTvv4^!MCP7FV6?_jAZ*hF}MIL
zxbxz;%d<?%@<Au?wtuLQ5#SkYJd>q!PR`aXMrrJ0PIX}uj#KWy2sxuOKgIoD#h4;R
zuTT@Gl+*hVi+K3_iaTI$jV+NcApdc$3S$D{qrIR%*!>VaNzyaIfZ1;1x|Zkb3h?qS
z(Dyp_OCcV|4Lw)D30eC@Dt<lCd<5`QF~Hknm=i}psiOs9qa{4t@h+>ZnzBGanbu+W
zJrBkorEdg1IalkdC8U2)`KJ9C*xftqak_2_7+>%IoM3n3+Cx?k90A`99v4n)-~Hmw
z*Z|aIAX7b6Sj2w$w&0thDspy>65&F9VR5aHwd36XYoEL1Dn1Ysy&Yw>p9sr8{)Dfk
z=&p>H76ecWw1Ud*jROD42qX(@u<1F!jjI44timqp=wosBli~I#zHGqWfKRlBv9JG>
z<H`dp)U?r}9%4F|<%c4Rkw)WrRTn3gl-ExH{t9N`a2Z=ZKAiHLQV`vKRjjp1^o~{4
zQg;FCcM+D8IjN)$0R@cp<E8jwqd>7ijT{Iq>g9`aHG+yd@}c*P!FEWg{WZV81Ss}v
z_h)Qe1KY0nL6xCmK%t~JQ}reCU}0&g{J=c=Up-Kojxzma^CEqk7gT^XQvvfU>hwbC
zLvsWmNOWGj@QP8_^dd5-1c<r^n%EFqgHCPFYzbkG;SF^g0W#Nkm1(Sv5Ajd)34n^i
zWFOdko_f4-3UJnXOsD8>`)6-3IXSt*7_7MToNVpnXf7~YHBAA2f%OMBS9!Z5082}v
zMFj804L3m4rgrUv9VejonBKiMqZj-?s=z8w{<-MoCJ2CSfc?OJYn6e{(EhomEtLqL
z-?D+X9LGX`wr1dC0VUxLar)^C5YkOqY55!TuMcz5AU=QossUiCEIiLK`s?1rT)E%B
zZ~D~tUx*K<xL;xo>8+W1cf<ym$^bBKepLb<Fjk_JL$Q35*vWjcN0uHjL46`TL7*)0
z_U+rX?IwChxv=-ZcGjSDPQ$L%a>W<V!{X1^OlJ%<KUgBn(>HDnKxe<+dE}iHDPs_W
zms5RFHYO8K|8KJSKNH6f#ueKFbi|rYTn$(G+U$n)fW?yVMkp4mq*Zd|a_k>Gl3VZV
z5J$^n=^Yl*A1B=80C~9qD#pX`5OBVpxwdf+mGgcfZ$1I`_>k*a0jkl;3DVb7%az^#
zi2)niuE+mK#;%){#l+z&f!`L|B4Wy>12oB=?nW76#bb#`gVWgQ!pO+T%$lWyLWDl0
z+t86Q8U9c5?kNpL@#EyNfVCRq{b9PlK(^Q3-R@_*Wta1tFP@AFi{Yc(X|jMEw$QZI
zD<5c2TQ7&LFYx$i8oAFu;{p~Zz@y5PbMk;?eDl5mHRdgDl5s2Gl8!H)cx;d8ep}1o
z`lu+f&JPs3XjN0+<;4RICy(R6;ZWt_Bn{;7H~l$_D7f!4Z|neg7O7n@Zqj<&5>QyM
z(ZZHWtob)|J`0GEbzm=r?No?|Hqs>wnz~jDfFob5z+jHPgb-?&)MM+DR{7(KcL;Gn
z<j-vXnYROWtHkim{H$c^Aso;$$6C|aoy&tr?YaD2U?bx~*^Fv};?nK*MdFPdo4$+l
zP0z8qFT@ju2t+C1td0ST1Lo}PTq{3OhziR;vyZ(-D%vgVux3W@z8741w$sKXr9?W-
z5~7IP?S#N*AF#PRow_VTv1n%NEHuguOo1&9ANoGHYquukDW)FyBP1pUBYsVo6nxs-
zs}iy90T>&;eB@|YeiK%8iycjWnz`AO_RFO;F6T#Ll0z%QsK$Cou(+K#`#TgNy<2Yi
zWS*Y-6kyg^0T}`XIlq(bqVKvc&}Xyniyp*WKAcidJ4pP`l=6?IC~1pFEp!2lA?am|
zyRIt+S4(2?tf(kEXCGS(_4x#sVVzc2b$qvv;2q1<T(<<$!)Q@X>OmF_62R-v@try5
zV`@3Ng=WEV0PJlnhLvskIbLHMXi5>s#^ghMGN%$ib=CX!9!a5ZAeUt-{X9(B41(Tu
zV|*pf-X9&cK2Y`1M&>;w*V>wMWPKXZ%(HiTN`HAITjC*~E+<{-raTyl2g=m1eL`N{
zZap_e{!~ShQKJ;7KCA=kuoCQXyudR?Z%JSM4lIpzthk03B90vq`%XXst?Xl{et3Ji
zH!IfSrqRtzJ?GaLdlV>ocU$QDXo^iQ8GZoQ;kaF(ooWqJndO`HL#(exW~?fyJ^==b
zoE<&tCA(pjjf$#8`u07;HaiEkt;_o!7um&=`B<B+tIQFYxyurpx$$l8()piXVO$kk
zbz8@Si&{V_7V%=%Af+dsTg)nX+Tg>P8p1Oj*juZ&e;Kl>d|+g+ytO?aq9_;;m{x-n
zFR0Di-#eVNX`-d9q}ly{ctFtSkE8|}l*zCByukqz7&(BCe4kN2&&ROtW3BU1)ed0e
z2-nAyyiR@vziMTjN`eBcJ?zjxuBnBjvB@h^+~-B_ucXC02<_YRg?!Y^{E|V6i%+d8
zDRg{3tV?~*a=tkjZP5wTS?W%~_C3<@*leJ*zLg)%<Z`gK0-scj=5P7sy762$*T5@-
zvq$>H9euLqUa1FTYyb%>cQt!4K{5q29&QJc?Emr`??skoP7&b0mM+wOe1-ft#@8i!
zkEb)rTZ#HmZe<-X4bfRrQ`!v;4OoF+IqIliQIttbNNcZjBy1)^#r8Fsr(rMm3+Y}%
z*6-8>AXR$4%9X3-h9+@BDuyBM`|7GV(hH%g3O5Kn`EyWQ2(WwZo2dcnV)+r9d^L@P
zPVm$M^$_R%kD)2NF=}Krd(wSnOeZlbU7i;Ox=7)@;u;`hXMr6Ni5W2W;A5a)E2GYU
zDdAgAp(GPBn&E5Ywmqb}Uu-eZ%I)B3w`@%Wm1h00DhK<KVke407U+@ZiR<h10LtTQ
zmv{a(cLR0If+OI$l^_McmY^G9>*+YZE<BYS^mC6Se(hiS3mxp=q!DZf<pS?vQICHy
z|0kON2f<4J@^Rx~24NT_#3`|{5*<(kTl)!+MWBRT&ib21)5TDH!f!N<#=}LELPshT
zn~Z;{O=|QAmh~)JD}ag*VFLj|jdaAVPXmCE?gvXwlpQCbCM-fGQqIE~lDHi}l%cSs
zk72()Dr>^W0J`x=dd_BrpvsR|*JD3RztsFvY6{dUzAHU3{6r;GASG#IVbc8&Oi5O{
z7;R})_xZ-RHM&WeiDlNl7E0(cOL-$DsM{Vzq%jV7jVKS0!(CP)i=%|!HwVrQfeP0I
zil}|LEPYIZ-sx?!LUlmrm?tTFB<tKXy#Y}-tG`a|AAo6`OpKq#IZjfEF9IcE3s1lR
z!@eZ~j~lh`lNTz*iKNg&45$y}*N^*Lo+cWtma&!0`Fpzn6?Vrq^64I_CuNN%qDM({
zVCRLf4Z93WIycEh%IYKOXQ%I?zUaGcHwa!UDif5rJnk~`V6wF12oOr!Ah~<)mf_lA
zkc&z5rL!fth{fvdGE53iq@Q>-5mS-%)MSX7>rfTZ<Z;(;6wUwpLZ8Z`Tx{LL7ci24
z(H7K!9Yz`o<%L7Ps|mhT9JvKJbpg!5C?ltpH!wtCpAzuF+?*UCn+(s~>s4JXOH4sI
zx%H6HinSn_*MIxdlS;!Bn^26u$J(%dWOpdO_lr=2rw>Q$luSB+A~VgTycc%>ck&u5
z=q=fGz*19fB{U4BU1*ZnId$6~(1g2jchKAXxs!^_HTI)B+L9(seXPqr__Onk^b}OQ
zWE!LVQL&a-zdyi`k<^?e$PtrW42=1GUGd=s%7cvwk)$@^YSCcFxMI5d%E}Z`Lbo<_
zftOCPpfPb@)1$O8LgmA2=_M?W`|=5_lgi*<#<BN;7i#YbxKBFd1!m(&gIqb96~5o+
zZi4Z=@nj`_Ttq&Z{#DCeX%~%3-R+bCcQjO$hvJBm2gyEWujc`S&nnkVdCr+UcWe+5
zZmCnN1-hrc7u6SOx9wM?Nnx<J#4~xo@&9Zl171wF4`d${Bj@ZZvu6cT((#6?y%dv%
z=Ia3WUO<K1S|Mi-$rK+;qcL}R3(lcGUzXi4`2jy!CP?*ss}E+QwQJ`Y$e-&!4~A1;
z928dvl(4GBucyF)7&MT*bKS(=9iX8IVHiRnZMz(|-m~j}{ue;#%Dg|XBia3xvErQ5
zb9!!;q?;6=e6@aZR9PD_1@z`=l6Y{)Ih~w?t0zY#yXC1DA>9Xmve=$OEhMko(Fb7Q
zCdS#~92s%B5mV2gtz^Z4o%)KP2Da5C1#OKM3Pe5Tl0j8)NL5iROo^P&r2RS}>l|V!
z%U7vW;_~c+J3yjmR;E9<15_n&I%%sgKeJyf#jm~Uc#%dZZaI)n%;j@ePOAG}ZrA1c
z)a5{7i{Q|JJ@S>fKGCejcYbp4J?MG^JJIK3%)w3@cT-3EP^8UjW6)oWO~8iOXTL2b
z6G1<h<q;UIx6ZoW8^lvFJJ;kI4H2sC-yZ<{M=PQ651-7tohSPHr+2E%+^9f}_H)c9
z8Hf4#ya2B}99LZ^%S)#zre>ECy6FnArmPP_wEOeL@Ym+=LV>Nz#qqqi_SA|RAN5Rc
zPn0{7ZiXy>{^dOspp8~uS6=DQ2%#Bja6C_jj>-t_+9Q{DyIsiRK8<F;nW4YaHn3as
zCEbbe`Bc5<s0I!qTNykS!Zh`StXhYagBmCUeA9;jDQN~&dGhtwCc`q4d>P#iT~FX!
zU_3UZX~OFRj$U1Ce(4ExrhBxD1?78{i8eWg&>I<+lJPu3uu=X9ZSuG<vWa#BrkMQ1
zIgrBqZ)P8UI!#{b7pzd_(}d{88WjTtBO`46Y9K$=ZQ{aB;Bqm>x@>dWKo_k?dT925
zQ=csTd*^JgFx2AIChe@K7KkbC9o56gJU_PqY@PF&E|~JNlE(6Mnm1sZ91{&HzM(L*
zpjGSQ-FM<C@9CMo%!jNd1m5V8$-J}%TZ8DsQYbM6WMWmC6(|2;ME;Lugt)hb%jFr!
zCXAy|JgQpY2v7kcjb#%bh{t$FKR=%UI^7)z1R*3pMa#}YTZd!ia?^)5CJ;qi=CKqt
zBwvqwMH^RnI|7kT^UdYw*~e?QuA8=)>k)~qAZZM&E4F2hOcDtEvRJ`NLJIqj(eQ&6
zpUB4cZW1Kmv5ice`43P`n2D_y_8DgTmA*rO;^BdluW>~Y1L;XTukCj=y*QxH{*-N}
zZp+#~QjrErG`2B*pxL?xh=<o+H3=_1)uH>zLa$qgPJi}(a8j8@NKMAjTk=NyYtlO!
zcTbk-|BtY*4yY>cx>f`g43rQBq@+_2MCnxNZn%JmNF&_{ii(J$#05#|E~PIZAgy$#
zbazR=`#3Yt%ro<R^Zj>cP&xOU-`TPDT5A)q!obU>;@YNO>`2}2LE2fmgJ#u2OXfzO
zIpCAn6uQQ!UtkU^j=C2pieE{~A8o>X@RV`)e3w%JC5d$CA-TPWz2(Lb5$mqimgLZt
zx%^Cmbe;Q)@hzHidIWW6)^^63s-=vc?L2PYUwbf2EFztdFs8ZshVbC_tHP+zCgICJ
zUTtfw>D}#7C7J(Adj1VgqvFAGy`Y1ilJ+xNOIgLv%uLGkiwy5o$6*%}bQIyY1t~d|
zd6d7^1+y=%02y>BiBbjJPU5nglHHE}hT+PVzdcD*sITW$FEefv2|N+2Ru^M2Qww}z
zuM>(Vs`toj@N^+C3TdKIuBl{b3!p2qyNU4Dyb)NdUpaSk=t28s^Af)_h9R|PX!1yO
z-`Dt(pk_i%qpZy6`xoDxRqZ_4l}v`A^xA)XD_&F~c;3_@stJcg_XifrtQsI0IXy2)
z65+!DE?T0EUy_4Ow%Cz?@)UEe1B#6b^Mkb#%zUYm(M@JM4LvfX4$Ufo{(eaC!iBTX
zW=chddQnb84olnlo-uQ7GJUA>6#qfhf|j0$Z>1${oh~?^#^bg%Y9D8uB8w|L)7%rh
zN;sHxvxAgGx<_>UEhKuEQRWAkJ<!!LYzvZOC`JRs2<JRC@f*Lgkh;l?bfmK4t<AVX
zk;xRNEf^N}B-Q65-mu`#M9{@~qwm-!N^`rD*EDnI-lCEW)Z=2tonz<@GFugm^6nJI
z{Dbb~sOk-v0*|GFVB&EON>wFCjTNaC``d2$3cNG6c6Qa?vG%4B{U2BL-2J+6?z^}Y
z>s!t-OG_#wuxOIF<7s=-1yHM~ocscVObX5~rFoSwW*)c7VZJ76<cBkVmhzUFm?-;D
zq#B9*VQmNiX<ZJjqNl>Gj-~lC;1qU-#N`#*+sTKUv>oRV^jNOjYW<F}Kl|ZMl+dTs
zR5@2qGd}v!1f$VuAJVx{o-RpzjzQ<~fGjrwht*wZ!Ri*0<n)%9j>X3<;qwT+^WkPL
zDHaAoC-0D^aIj$#C*wHI^SSmcC_KB3w=I{_t!#Nvp%m;&HY$KoWSxf=gkbxLR7Qre
zhjk6vQ}c*Z=PXzHOk#?^Z96|)4IOdl(Hk{DQ?Ry8i)uZotjOh_(x5q>J+pK<ejuvR
zNU~>fx=Sy&rE|>)vr}<(|7PxR2;1fK1H7U%`G3L}R8-!tRk?n0Vu)U^>R~749hP(_
zl9`ge5LftC2$htvQ|cM<GDJ_uwNC0q6H+6bnDIK@d5C6bJk{+Eakx3_+nKoBq74cA
zjJV^&+i=ugs__*pyQy5!1en+K>#p;Seg$5mcx%muJAIzac-(0-Qb+oSYiO%o1cDi2
zDG5J1P^1r|-1E&k`;<%e8j>aK7yG-29w@gh>pLWC>nFy>ehEOQ>~0>rbKPe2ZEEs^
zV9~_5W!8X>886;9l)~jo6emxgWbWLwV19bGvSdPErOgS&{HmO?D=MJ`S3R%;U2(XX
zo%EO~UPkZ4<K2jqq^#(tBgK`hxqY8ZN|R=e6XDz=UU<D3?q_9fIYl<6x$7o!gr72F
z81*Cnt<@(AA0<U)W0-hK&rnCs@P%bZJgI#sxKuQ*+dU5u-0b00hEBi&Qn3HEB^NpP
zH3=XiDY=rE?07(k*&NuPFw@xE|9OAzrqmTh*D(}_90PyMtJP8;lOIntwbeW1s4}-J
zX@|%=Kl`Y8QaNX4r_RjoYf5^v2tRMQOX)#m9z=?sr8fjcU#TI+pwcI7AWepYIA2HW
zVdYw<ib8Q8&<l&QE<T+PL%11pG9t(K?3!;g=$3J5Ab7>|X_ea_S&6*}g@?Bj@&XkE
zH&vZ9Ez=it^gGM+jDihf<+Vylb-2_dN6HRMrvb!t96DE*rgJ<VQYL?Q8XsGSCaQ5m
z8P_qY5MY28^9SFpJynt`%(<hDG0T!3+apl%j~bmLztt+o@*|!K{fet&U!2oQ^v8=4
z`W(jD235)?ryBC13myd?!XvxnT^ohZON7)PM!h;@U%_vY=xK02z)jh+IIv7@$r^Sz
zVEnJ!33oT)6N288o|4p3p4++`t~{&0(fK+04R9~Z#)og2eY?p4J>^x@(4|>5mD#Rz
z^nCxl0md&W?8k_|?g3!F#MNuo&pXWLFdt%Z6oHV8kwl1d21Z)OV9{dNaj?62!=aB@
zuTw6pWvyhhTc?`$0x|2l9+xTWr(IVc!4kn=>>Gm1FrC`7S|KInm8nGkczW71%ImG?
zb<v9TjlH6zwYOgT*W3y9wTvs5h@S45Vi<{!^kPqu5fQcD@(WOt7uuOv`N-p$STgIc
zvB58h65(*A3|LLcdaM>~xL;Utz~)NGoBfSHKtU@a?rf%Wk8;yNudeH(yOos09&b&*
zaS-E}01qXNl=4nrw>U$OuAQ7Lp~K{SshX<6UHD-@r(n)2EPPTg?h<6Wd<nzeHcuF(
zP?NiH^t57%^lgX2-NMnC__yadlxyP(@j1@Q&A7MR8h^b);~;t^N{Ry2AW??<ErORr
zx3E@i()!c&Q-5a>n*JKXM3;j=MQ=G_T=-R&kOMV{ZH1UJR<qpww(UOygKdZ#<m}L-
z+d1df{!naH(rdNo&7sB!yu%HkZU?Ye;-<p@1|Zs`tS{Wdeq06iLkhwN_IpFip3|W<
z>Gyc0)i%DCTG6Dr1NC_6PV!u9uRemD#!};K>@5T7=Zp#IY%d<|%<(r~aI)Ep)}gE`
zc}<2>MO4(Y9a&PZ*0!u;++wyMD(D=`Sr{CZ7#oPfn_<yR<h<mus-^2G^fSxApQ5>S
zSv}xgiopl2mNA@qpS|v$&#dkd9*()?UiO}Nm=qa-fJHho!DF08wXdH=#4VrK-?++U
zScSbE6>IRaL=9oJ3~qlIp$~V$$sxL>yhjNP&>oZnS;p%Jdcs{EbyuB=m>td?oZttt
zt;c59sQAI^Td&V$Tm4P+3egsL*fWvDPgI`B8`&`5x^xx$+%oxxBABxdiSssUx36wS
zW$!*c&JwUXb>xZsS4x~n8dgHT2ED7u6eO5J(WfViHysY%y)t6rZ+6m1v7#ZS>U56d
zQ*h{;Iq_zfY!XOaj&kZxREC^Dal5{RvA5bCxDOO&Tw(5b&O4h&#}W;3f|Z~;SKHWW
z6+iwvGW}<<)UHPbRI<)<S8&)nEn`orY4A$UsuGba^SbWd#gx2U8^THwCv*6;0ZeNf
zx!I8lub=ci1^r1GJVUpXTcwWE4n68RM?0k36~Kk_#r_(vCU>ZMMqGps%n$<d)B3pt
zJr=Fq(<11G29>uJN|@qkj2v7h>!NVguY<t^GF~rzoE#Bfa=xT3!?xG(MKP7Oja$-1
z5J)_~(7MbOAe#Cl;3z7=s>^*#DdT1^8m*y|F;eQ<r3#apkE9h(i8d5l?;a=47nQ7_
zoYx*R9->vw_N-vJp0Iqu%M-0@>o-fB-bu9YH;fu_18~7hcIZsnAmsBU;<Bi-MC4LQ
zKOO7aysT^b^+&>Yg*Hcw`tNv?I9!>zkx6932dr14#pqTi^j6Qv-P}f?LXru2RU86z
zpAQ9#gVoL9@?8wGIIFsPem29q?Gg%^7=NhMStE&)k9|ZjH>#>WQS5VP)<C%=&fipB
zRA1@TcPivs5kFc^C2N|gFv5zsuBCtlbDz-{?}@OxkK+H=!{H)$zmz%jW?&oMvm5T8
zq!m{87%+r_#)4X92&7G-?|#vfMvoW2Cqqjm^Of_E;;f$?Wvp_~Gah2g^axdEc;h}d
zF`pTxRV`F>tzj-<N+PpocI`(UF98B~^>>y%e=?mnK9qoHoW?4l&R)nsFnITIA@v(X
z<ZVw+3bCk%SGzv?m=qhlrL-c3e>T#-T`D&%Kr@N`tGiN}XCzBS#?9r!Qb|icH6MHl
z?Bs)jMxk;T$qb!1w@N{(RQo0`+P%l!Q{O`&^`}$CV8uK+@#ia`zR@T0)c7KS-^n=8
zOv&43!Ruui%t?~|bAIhR@5on7>hg`nL!jAx?H^)ODXf~yyN=o_DxVKdO=8WQiL-M<
zddeTye+s58cAm@0OYqS$@bt>x1AL#y0e|5}a(uS=3hBvYkE@l)Q*pTJGVyM7DfFqs
z{D)JP8@Jm}+?(6I-aV~NzdJAn)d{{yfMiedj&n@nj{?~qc@eMiohRj3Zx5aBE}9u}
z{2lxwy%XC90+oW3_-g13R>5;=UR3j@W?exu-&209&f94lz4{g-JYq~ad(yu|H*MK=
zsd)NBtwmeMimSG8$)j)h4twLLGBip%*;HHQd4Jk}64hg4x@M+xoO(!A#Yr<wW{4*>
zLdw{B5s1R<v566Ze0Mg!b2!LN#&l|2J*4j(EVdg8X!=3e?-|~FSF~V;EMl&t!AU7G
zxxFhyHRqX-Q_=!Aae!Jp`|Du6j}cLAybC^ioKUsQUW+|?>+lq%aI{CZc_<jJerI{S
zRLDQ8`t94qk?~3{h}=Icq?0#WpVZ1LYgn40^E5X3^OKhGjc>D<Yw-Hp+1cr>==1*E
zq^jI<?9i;_k4l!^cayv6ha&G{x$B{TOm<4_X9*5p(`nz$SOjA!-R&nO=XWC{MZ+Fs
z`EPB<oLbDDPiuLeWoM7;xjYO|<W{==L8E0{OYU6Tv{1NR$H*Bj^?^;TjHVIuHp_tM
z?D<^##f?2tJ@+|lF%NpP-Gy{FDXm93Q95Z^P8%+Z_3Jl;qUPnj>hTGhI+eey77SR~
z9ld4DNqc<%9|i%y>CHQ`+FX1|K_-x>M><#g&dPQ6xq%$-O?M;GUA@JQpkXup6{+#(
zk6zTKwcollCoj#r(peT)d%R7PuADIzIQtxu*rod=GfoaC638x;cqiqGPh`cpb|nUK
z<Tk5Vwu!95i}R^8HGxb8uO1phEOQ{Quc=wAA1HY32BpjJezqrE22YsBdMw?a<D+SX
zVZxz%U9pm#SddyFC!L<BoBD}}_?ek)?Y!gU#!)kqrPc${)<h)4#9d8vsoAcZyiZX1
zZ2dhZn_UIxJzBb^O66l1j>6Lxa|wsCv+CNXg|8$p?i{_7_}*d3Z>(&Vq3K{;zbRFi
zF7Ebcu>bXG43Uu~vM+Fd$;V<OHNccxY1Z(ETe9hc++{vVTH%8E%A)GIEmX&22UcPS
zhsnB`SNUZnoSk8p21-(Y+@Rz(DDzSEBqtscSntCxKZL$Z$ZAE_$bB|3E7_g*dB1`v
zuY+WMCM%b5V5)hNA0b2k!S={9>afVKJl&t(xMKEGT&~(1{-q)bCu9Eqyj|X|1ihxo
zQL-HWXkFx_s1l8wnTq0L(O4Xf52Op@wwNv_qw_GNaVhEX&XSe%IEkGeu~@>ZK6*kr
z@|BDuo9GgT4I{^tL%@!IJjE}7c9vmElN#?elm9n-TFSGIOx1IsY03v4$X)I}N)@dK
z<!stp@F)9$t2*$~k|+L4NC}s+h#XzXyhP#k4WpGGl{Wz+Bw1*`%rvOE%7ytCezph~
z*6Y!b*XpEJ=|7@sU$vEDx#H#2%z3ih3ax*A<%VvK)cD&+`ubxygZsPA%bo%RnLVo>
z+pks&wwrkFysX{Y-JQ?YTamqjltPdAu=uMkqvWQ|THEajPkSz(tXq*TbZn2lDjr+l
z@p1VwU*z9tULr<kI=4nLUypX(Gji_gIaT|XI7s$DXpbGpGaG5<sf*6Eq@}=tHO{)~
z{KMP9^5pOGv%s5JuBU6fMv~;>AN`GHigY|VSI;EapXD&#MM^dHfk$6oUIeB}-RC$R
zm~<i<t}Om)sGq`4P9$-^`GV++0L64Vr9tu%M4x7n&uvtHd(d;DBKW~6^P?~@Em_Ds
zrJp7%PsPG=gXoFcg#zYIL5GL7{GWLKyTby=lQD;B!&)swb>EE#Ac6q@#H`IuHI#V3
zyO7tP`V-L6CBwi=;VR9u#KTTfh_PZ(&#)N}K%{0?+FdX#DrQQFV*c$VxJP+Bz{RCa
zk|a^#>7$18Y=JQmM&><eEiK8!eAaIxAK7mG4W59pIU`55&AIjpy?JefandV?Xo`*}
z0_CG8-;!yh;&%-v$;KS~uf}<WX*{x0b2^;MNXa^|-Xcs{$qn)=V9j`a<@$>~o-#w=
zcEyvPv@srRjB=f{+~3+DrVE;Cd9_{dW6(O&{eQAVBoi4TIx<r{b_V(`qx?wcUCAM}
z6@Xwzdv9xzaEQ%#007Kyo~!=)z3|0NVPMw{v?qQ5r8AwDhne_K68}khQYCpbQjnji
zsdwMJJG0P%tT99KxE87_MDuT;b89QsT)>0xCFhcUik9BYoOA#A5O_rXGXvS|<5s4T
zuddv9SY&nX#rdmdl9G}RRtC&0Vc;Yo7sc0Q9E-?mPo5(UZk$U!1DIm(M{MA{E;Ze|
zQnstCyt>>VBC$-E-J}&jn9AjKxc_qQ#W}J+^u8hv-jnIl77c4^SqdA&Lwq`hqNvS)
zzhB%FkrTKXBZ^k*B<%U$KT@ZZI9ga=?Jtztt#3kuiy=dzspi~GYv}o`&SrzM;VwDj
z)rX+y;7r=KCpTif`ufp{|D3ijTMVt78~88UdFBUiq3kNO9$0GU=XA53(fh%|(s>5!
z?*k^#@b(hDBC}*n&uPz}&!pY3RwZ^Y){HRF$S6qS{!w!omHSfb`JZ@!$oQGFGaW;r
zS(=uOTkXQE`@-y`6~>?cn=uJP4x-lT@F@PzGJUDZAoqRu&JegB>~7K>v+8SWYZ*{j
zXL%GCJ5U~D8)|<0S0VWY1rfb^M_dQOHs;_yHQl^!W@cV(7h~g;?Wb(3j)u4Y^F@EZ
zBql;d{A<Ox`<A-0<Ydr8A$g7B#EFm@md=_qN6wa<BM0Sbm$5*OYIH(2%h15|0I-1m
zJf)j-iWlbC#r_$t2ZBVTJ94<$Lu>2P&I&Spcw_V+(QU6F8UNDs-wxIv2>EaSD0i@k
z^bJhA$JuOqYkhG&`#1k8(y>rLn48AWclA{jrNULUw3ssa=%!|e%Y!3nL;ecT{CWR>
z|HL0AA|0<>$(i^3w-akxQw;8x5nRTv%sT+H&V*s1X_pY`zy5ZrKnwy>0IxDB7C6Ho
zm9|^UOq~`4xDsJcEiryb`qyhX4HmM%IMyz(Fh%flJ<<Zpft!o=h`9|CT^8H9|9;s1
zo6QqDdj@iNSBBP&rsihH<JqrYzfQ`ozVh$CGocLm;+|)-e<z;yM`8N85x85rZY%NX
z<$w3|`0(V9r$cWe_=x5&2jR~n@y92T_sFv$zI3UCGmq$}bRB2j<!Y7&g;Np#k~NQE
z$%#-U9?$;vO;)89aRv=V=x`Co=;Z#@AL7EJv&U;!%+5Nz@%zVv{^N3x9|UqC_Zu-G
zAmg>N=P-8p|Jiw`SbGO=@y`HlEyte|Gq=~S^lye>R8O8@D}NaM<AK2Q2v+~zmB!$$
zV_nwuM)=SfX;|iFPtR&B0%dctc?SSRDVK3@c3H%%H-B0kuN&CkSyw>`6aS0pHUz}r
zJBdJ!`YU^QGoELSAYW>+BmHClHjEzomOZ!mLF#Wd_zB>EmPM#r^AWQeP)zR>4RqDL
zx@|Z0OTG(fEA#DKM_w~RY>Zk5gC&*Wa)^)vpip0gMk*g%Ns=+1%>Q!xz2~rC{+I*S
zBSag@q5f9;D&KH~q1~YXok=>#Xp=}A;w1eC*MQBb3F%?sbBBC-ft&|>{kLx!E%2+C
z_V@Q)&Cvp%@|1Tg)T9Tr)zzo4%0ZXppASyBi4F`pNTX#jTIGAwqWAi>Yus9b|8Mh>
z(|8FR%^1pR8E=l-mEAYRNk1B)45_Nj0wGW@U^qq~!90(mOuBe4^$Q@K=BFr}V}YyY
zcGGsEKDax|!WbkuFAg@dz4EOq4!VJm6|}Hq@dpb$pQu+6WmrRJo*8EwAM%1iH9f6g
zx#>gi-+9sAUvao@++gKps9Uqm%e0ILRS!f*{A|Xx2nUv6o(|Cl;?1IMQcU|pc{u_)
zuF5T-%IrbGH<UZ<xo0^K)bKJ&^a;(GB>ArMO|eUt)F9-Ob{T+5b8DkRK_^{3^QT^0
ziiXeAU$4@_JuIC<tNh=EF#PSNc3FQt^blW7f#b{08yr&FllGpcJJ*A3e(+-%k9p{a
zlaQf+`_~UP*dWRN#nbF)B<dQ21MdJKsNl_2{-l(ti8LkjTZCHqOH!I*&|_7)c&U&e
zAUjdSx5O`a@yYQM3owy<d0P7sYZmCwwSa1!>2-9-Io~e#=B?0fJ*clXW(gmA5T$hP
zg6ivg`OmR4^T5+(1F0lJ0~`P!2BYq2lF;DbBF@IC?-3@zrI&mVBAAdh_n~V=N{#mo
zBD`o?dFNMf^_ER6@O#s=Nu0`A$`MD1Y*d*AV7gn4EZMh$z#@r%cP3tL-e(e_d*KW3
zx8{BN6csV2RvIjawrE=oAx>QFo=D(x5O6q`vh|f2k9ihj@8Mx^gMp}Q7%(AA!2Vz5
z%Q*MJtB44+lk7T#Y}L?Vt67=k##{hb_1yF*uwTN#!Ld3_iGO3;GXn-%c6F_MQ7`(F
zm#~c-SbhSSP?}K<meJ-T<z@NiJ<a(#-dcJri}S+Oxm!Kn!8JcYna8&d=uy{IolwM~
zZa||)Ov_}hStZ8O;nS^0tyG0ko*BBu?fIg5UTO8BF+-I5KTZW~9c7!J{@r%rkq?%>
zds%BE3$tF+U-dwvL07Z==joky9&!CwbZ(u%x#@eKoUD;K!+z0~Me9?uU|_M8c=2Lq
zvYT`>8x+(-B0X~EWx<mnS&3lW$L$&TYS~q(GUvgxnnFvo;E<=^VPM-8lgLq@EB(`O
z{RQya@J}t_+2}p4A$A0BI(41wW0n3K<uh3R+Q9G8K(u_LKF9GIxvhsW{X%#T&QS^t
zvc-TIAdo$T@vQBD+fwp60?c!L(K~);I54gG)ZM+RV4zwQWmARg+40f|2MwMC;bz{r
zQ9Ui5TQ}T(j=s27uzh2w#KEqTu52&Qpb~33!3ZI~jjnIa6B}$E=fL^#E6@Vf=3s7R
zPs=1~63ciL2UivderJG~{-S0`*;4r!gDW|+9zV_yQLjHcC{qiDV4TMuMy$&~rq`67
zUCvi@OTc5bhNN^8&j+Uou_<smAP#l|jQ!dcB@6^~5WV<wr#6#T5}YW6+d;zG#f1}&
z%!;>n)&{UgJe*$QH3nSftinm(2>0(|`zSO5tljsi=U`O-oaqxpC(2{0fsTVkk4NW-
zb=5A&h3*dOgGIxrLmMGrifFm8>(s8Ce-H{Uh>IY!T&AL~QXLZ()<=UD%a`RIT>P)+
z3qk|-RsohKLHE>C*9ZQGo@z_WA&XkkyEeW3oVml5WZ3|F7CbAsluGuYA3dd0Y7e2>
z8x9KZImA0ltL&Z>gmnoK-3~}r#yvgH$2helblnkTk)@l6UB^}1dTMt6c_3!nh!Poh
zF}mH+64p+7g2uw_NLFytl4v6q-dp%&^$ts_@dA);_EX5AVchD7Iqbw?13SZqDpS3P
zUYRR^$Y5pqqb0G(?SqXDo>?yEtkNYu^pzy49-!nJELR+rH|a(Qx;aYR3~&B!a?(_Q
z$+$FCu3zD1<CIb$+hqx5r*LLOWbbCGEy`}}_&toX+94p>7*A}De1C@=L=0I0jq0Tn
z?`0N_J~>esC==<B2~9+b=HZ?8c|t|yEQxdC{@0hcpX}g;g_sweloj^DRZ{(m9Y%cZ
zp(N2+DuZL9?;ixdp7`0Kq3z-J(8ST?;VI3~ZGje94UM_9!c&e;<wDbp)~d|(t9AZ*
z1XrxfHq{H&{RHtEk}>Ac@HWyo&XN)k8%OawIbuaVyA^;w)?MM{1xiA#V1sMy1TFiw
z{DL4HW*TK3mV{oOkH)|lO6lXVvcfSKVRAUhl_9nxLnPnRi)l~0QfGp0q&Z#YfHrSO
z*KV!;z2YnmQ*Q9}G&f`%nCkXpb$Zz^U3O*4_qNN~xlh;HRF6(hnEr%(QL036a#EE3
zqpo>yFAwB7k%e}XiAcNV$L5_TQu7zYT^0;4JUNC<b?o@*30VV6i5cx8=kR&WLdSC~
zYFwW<+wD-t1(6?$9K-tK&%wtw><y}^;rz6|&%#s16<TyYA&eA@GZzJE{64*W^oec%
zmHX}J0!a*SfuvZDrN6srIosN#L;t$PvUmS7%r_@cp3Ae5cfY2Pqe(AbEs(UTzPTCT
zUb)=J=QR~>l6RHtBCk*R#fyw-))KFKFJ08vb(65^zqFcUhq)H_JiUX*h>alBN{7}W
z&K#t)15Y1T2xZP91VOu<JKxDJw);59M&4@Uwe&xIPt-%=0{qRuGySSBpOKyIzc!|(
z8X-^PQ&%wCk!+G$flOg;Eh@y&Szk2d2vaZ*I4z=NzIi}HVJ0fP$YAjfV>&=Hd`Gl&
zs=k3{STD<q_VsYVz4|Y#L)W5B253GW`0QRc$-FT(O7uB3mPg{54DU3k7>d|vZsIJy
zyYRfS|0^{O`6<g1l8bM1Vg<*BNIs`tD1Uo#)n)+LtnvL0aXb4aR5U9OO*Lu&Afwd1
zwq=)`Ut7wMyUi@Him(|LcrcWi3htlPIsNiqo}TLGD4B_4JU^H0F!SjeeQz^e?9r(W
zuSXJ(9FNX#Sc@KQC-1hmyjfvs`w4sls}A#p-dv^ZC>if`ad>?7d)N=Z>l9fIW>;8u
zTzvZ5L;uTjouI?=`X+Z|t)9L7)2Ol@-F)RnOf}1zal+08?<)}kPYGQVI9%*fBbQtN
zXb3`u2$+EeA}`h}PFJ@4sX+LHi%MTz3V*s@o$pLFLR>r45P61C=7s0T^dmiJI!qv_
zivBJ0vKsMu<C#51j<Bi)U%?{PH!qFYW#e{{kX!DisD29rvu$h&_420}TN<Ar{*Xd6
zCZdXdnRW91tNa_yx2_d1Hx*+lK!<QCU)|x={<VCVf3$7(c+$`)c51qCN@7Q)ltjvN
zC(Fhxg16MeSyZW`CHfkRjCg|B{Oiph9i&9+N?UNZOEEgk^L!VTR3%ADlnlwLsR<l7
zCKe}!?Gyx7pRFg@pAfSyq15--3|YL&kgX{paoUynvq6UBv*a&(isl-ORXGjuEU4Zp
zo0tbphr8NAw%#?`65njq#wbvQ%=za%9IIlwdRHTn8;`tSE5cawy!!|IB0G7h)0_t*
ztik_$tHK!+smJ>0bSkLlow`#|nFeVm^5(M@pYQr;ySNb1vt@s%%3#8dL@_73MVlRF
zUB~w=_D^{;nik7CItnP0(==W@!$)J#aaFR6jT!(7bar>or^PqH#@g_)^dg=&L(qlJ
zqQ^!W=PRV1`JuOEuo_|Xzf^JuQ-JkOa&+?nfr0xHtHwoFmD6{^y9rn8ar5`HQ(9!d
z+BN#hsv;ukqijxjsrh%;Nm{zI^pJNi!o1ycY?7Ri*Y~z;H&L8QQhw?_%+`!AE)#qY
znc+jESX>h3NAPQO%fzH>bxN_X$GEYuhWauDF<w%*cXnG!HTs6hn=|N?E$6sLagPV$
zQHI3Ecpa%;keH$7JIWW#s)_t9@Obab8w{0HP_k188+ulBEa3k&AYFL!CF^digkMGV
zlJ(DN!|#I&RPjC<AW_zn&rr|QzMY*q$jU1GCg9n}PxoH(7xLgT!emfN*HDpy6}561
zoC(x2G(jGpehCx2d@ov`>pLMX{&eHqco~MmYk$?i3Rn7Ft8La>ffxIOSz|GU(9=9u
zc$$ZK6wD&49w*`VCB1gq`u*jprpj0^Jc25W0nq@x^$izOQ?|**kWbPf%(su{fp1o>
zUVL+xMx2Jg89SNa5ve^X+SZx~m1yP0F1nyVGThwhr5Bh@kV7Opi~E#F==z-hDCWEv
z?UZtx@s1dTac3Nt$V79`G6Jo6AU!N`U%A4Nt2*q<<xxAynbI<Yq)mdU>wkpm_Y4<s
zu@?A9UI_?175%U1joi;Q0&g1MGsTk@Z*J91baU-$WS3t@&(Mj|M5nwTs99<pCmvRy
z(8PN@T|MUkcrUb^6&8hbp}T9s?_*e+WDJkf$v?x1MGCj?+aS@_p<NDPX|iK{zumOy
ze=ZljSaW2WfhsFukz7+To~39Q3QBC&xEH$;bHdMf7)JO)kO;$>SYu>qn$<M)jFGa3
z@TPl(b6xL><LYiomh)<b+Ni{0YG({c&YIU3jt-ZPd<;*VI&VLgC3d~>8b{Dn^#R<w
zqw)uQt_7o>t5qkS4+JsImp9BmHu>;O%7cQ&WgP3G#{4X}VEvk-=_cX372W7*$fy2C
zHv3Ovqq4qGpYnqa|FRzoP!}Aj=hkX3t=BSFQK%w(+NO?#5IwJhO)xMTkz`XgJaoTz
z&$ksBV2?8wjP^k7I#WgdeBJx1&6nfymph(86Il?^Gkt>p@aOpWb1~KA1?)E~yYBKV
znM$F0SvT`{asp7S9VX-5I@S(Gr4nl&zDElVxJU~^2h$us4ID5B%VG}@Z-`nYza-^o
zQ@HPsP3POQZg^tyHbX9Z;h4<NXp=g7C@8G-@UG4YUsF2s{fnR2BW8<-^sLd0=tj)i
zh2X+5XrFa&NeQbTSt0gg3b)1naTNX&h`w0K!&}p1)yy@!D1+?`W%ScSq;h4`%A>ud
z;g+hLIJkqz<aQt6HC9hnla@nS-TY}DumyYZ$%8}z#Z}qS9ZVRp6*@59U5RT_d2QTd
zM!?U^PvCu$Z1`AJo2f;^dpd_4;lrQRSIxW9CNcK=0$E&Z1@1ex`ro=%fl(H~kJ{UT
z24k#%PK9Z74eTYj7Z(A>ek_jcra+spg|GVU-m?iVjFugC@%uL7FF}FwtEE#}Ue0_r
z5AJe2;nbor5@QI0@l>doNi{{Wk~UEK=UVaTFjV=vX99|~2#x;j1T0^8neCZSEaXSJ
zR{yB~b7}~i&du*yj&BVioPLHudZ(rO?N`Aqjc#&M`?sLZ)zbm_gxpS+GN-S6FjIoz
z_R>()44ro>c!}U9zq@sbgZKTj>l`Ilf%Y$Yp2JV*kW`36%h?uJ2Ab2HbhFl2Zx;^k
z<=G@7i(XM&E05g`T!kQIt#z>Dd2ID9NI}RHTo#+TP^ibA!dj#%DS?bGhzr0)f*4xv
zsaozBF^0y^jxlI9fn<p`(37>QMLG7HDt%<FJ|GCGMm+$LW_`PyPtwtA#)X9K#-?`8
zB(azgXPUULGDlZlULkPr=5YkpYVLR37CLvP?I>BSk7AVf|MNclkE7!K8V@zGBE5J5
zM5cFfb}%SVt0BG7Q(R0~9NuK9@{9mwtraMFo2&1Q1<n~|f=yC4*eGZmKoTe!mn6{(
z&J>}^rkKPf6ZUk!J_K;9-Y}=yJ>5s(J=WR{*htVZdVa7TmYd&32@!Bk$Zdg{T+tR-
z%otyM7OWyWdgkD=FBJw+xxh%yO18xMmrg8=$9}GpX@xPUcOCfenjm#o`Jg@4YmC;L
zs$zdt!RyCeIOG^1%;T|TXRcj(YaT@os^gmvzl9k{Pv)8RWa<6joR*A<6(_)%R9deZ
z2img*sOGFXL7_OL6c<rt*+^8Y9QR=<XzAVVJrR$&)MTGX<F#g$L!NN#{+t;e({@^Z
zaBTD0ERp|M2%6$k6qY5^AN05Dr=JBWCPkVO9J)vK(|tisp%wk&sY({?5Sm|A_g@OI
z|9tcw3KO}5!-0#nM*dFmy&gr}kY8bWLQ8Yi4u<xA{Rye0NF^bnkIg{mI?JHh5R{@@
zY}=h<D2`Yb>7HlJuj>aP@-l2YeKh)pl(MC2KImS;;aYRLc77V+7gb2T)XSvScwS&l
z*(&n+7Wno>rO;8!8hLoqW#$4V=oxnA)Xchm!=CKkyGKg#cg`W0R4d1j59Ul6Nw5SU
zi*rRgbW_gRpH-(q8M$qKh=9Pbc%0*=cDBHVyVYla)xOY{JFnA33oC4CCQ1`Ckf&7?
z$waPi$3eeOe^DxFzR{fBVs!6v7CzdcMIQKI8gw_;b~{i+LMmeKWk-3kp%c^y)zr>L
z2|B&)G#T;Oc5vywX*D?0KdIydVW~8)n`N~ryYTUNZKbQ;i?Bk-usFlc0Pi`Pw+g;T
zhYM7HE=M?jlhTAbe&uF89)YJBRF=5U{&&gn-xV+w))ivRMq;T1hf7MrUZR(0DVq?9
zMmU%8n3bIV7)uPA#2XASv#16m1k#8ewz`?u$W!4*f`K1vL4TCY<-odb&=l&1@%a(2
z%FYL^P*;joy^-B+IivSMoSGPbuo>3sNvR}qIhaJ7v?k3rOr&zdJUJ+A)J{AV71sw=
zYF1!P_)0#00S4nX!vg);_#QL-&I-{FY&E2Elu&G$)E0c`*q>lRR5aHc_-eGgd@xCl
zY&vtQrKVN~%xo+>Q<Rzs8+&F`+?db!8z6Pc!WIoj)`;gGThYUxs2SI_xc5bu%@6J9
zIl1}yK|_hSYRU9Ung<#D1a77AXtL<8z_aB5fm0)(qm0eg&lXx<`_X}V;OVhMyOuOB
z0GY`V%Je;Erwu!OKz>A>C3&7zyGk=g33<5w$h^dJoZ(+$M~)5wV~)*emE~wu6F-CA
zK#t*4LTOre(`X6(pUM13O9Jv@K2_yX3Gc!fk5ltk-a&Ce@UR`e&Qbm|&gE@(<mI{H
zOn}8e!8#$~r`g8X=InA%pRV9iMEkH_r{N60UoERn0c+8lXQY$tO$nwP;38`~da_0q
z_270UQ`=^K1%&XhHy<?i?Fi6No?4VG6)u%#CA;b6-miJ^Vyaict<B@o`ht)Qfe@XT
z=}2Q6LnUXlX#iprwyp0I)9XCSfjY8@5=#G|KkT`7;mljY6TaM?(@IG$pY{e{OebOv
za3wrFi@a1ou#JCcnYeDv>iGJQ($8dfo67(DV}=&x-_9Qa;bq~+Y32g4j}N{^J@WqV
zQwYV$0xj0;;ZWN0QT0|Ki*yk^iE&IdEKAN*($}88Fa7*bT!i9=ALi?rsPZj7U(X<e
zu8-m`ob|@KXDO1dW!xi@QYT+0k)P)CwBWkCC`qG1FT1xsd^bFdBm6e)_1SzuSsFCz
zwpQM@YDUl^ncH`plyAKSiw#s;+W+ZQ{zrlIB};}Xp8DM8#sTCl11OGex-1*;zxaYU
z^i&)jWS17%Ix%ffo%}mc@VDcz#^U|j)w$u5%*O_zenn%8x{HcStiCZpGb!YEg--QA
zDVRTgsWRk06$#X-INnSuNxfilF)h}O)Z*%?%5-S)b$GiUJ2bL=h)|r_!6JzG9m4oC
zf(l4NDT7|y1N?Dtl3ZDy#G>wkVtE9jj}QV?cFGw*?jqDHgo;VyVr{VgyzIbh$0aQ<
zb3J%D52iPQh+f@)>_V3KO5??ASO0QZzdjnAB7kyH@_hDH=V>uCvtsO%10Y`)zyU2%
ze2>%%9rFC&!Qhc_PV(Zf$fHbs-K3cuS^v=R)DiZNRJKBP)B;3*&>Y&G$I<6S$Ax`U
zRg(L`;Xp5J1hL`M7CasI;sP=i1XD(y$?TxJ8!%9soN5)nwiefVG<#diIdbY<G7fU*
zse-Uy5wlDsbsS0go;f;TczSfiq>FAa=OXz>rlI1+=3;ivM3wc^%ZB}^A}x5-R+Xlj
z`aU9`^Ck|~?t4{^-_EM-T?6pxLL`NKIfm7?kttR~B}>yNh>E%+HU1<6z|^yNdh%T3
z<AooUPZvSn`?%)=r_pmHu-tT6d%*B)l3UZTw)yrnd5>IO{97SDrjM-2E~YQw&|i>=
z1!j8zATXt72Qkx`s;SE5^}pSxzuxFThSNmfCYZsP{60Zh@ZCn?w&;eP@H4+f@*F{2
z3?M*A<Ymm2x!(<50%owu=zi#_GyR3u)`v3s2ZKRRh%c4W-Z#yVU<#=&0K#Nxt{IwX
zJI;2T)(B5)ei2wIBWyKU5Pydk_rP~zjqw)L$X94%kK!@JOv+!0L+WJc-)2K0P|9Wf
zxARPO%o`&{6;A;rQ6o!Xh{Lb*Cz6I8oPEb9gcnyeyKL(NVu_;U(++>%a_p<$7MN=E
zLBnLd<{4<Zk9g#28G-4G2jZ_fRO}UWs<&{&(;P7fUW5->yRf~`24%?SGMk8wOqrVA
z7_X{>@G<~6^<3J7<>N2MPd$rp^3Su?kd6!n{+(%I?~RCOUz%xSz3jM-L<WG5@^r0P
zm!#+U-@=UdqBxM9gmRFYIkO>x+w}e9$JNjD(ngAR1Th;pdVnIxaUOlz%VQ64;KKg>
zZV#OXABWl!P(*(lDYi3F39AIXxTK%noMPSsDTW7#eS-I+#9eq<HBOl@*S*p+Q%o6=
zkK*ftA(2nyEpUPP3{&os$GgV&;or}SoRRYh$5cK58`9_<n^%6j({;OaGNH(*ZoFVh
zP+@IcsE-iak^Z=(Rp9K=<)fq56jnjA+wL(fO=>Iu2sJyep0qR6++mS^_>}b14HXXK
z&T5v(>U0=Msly_T2bWt<{r)Xfa52DEN*dJ516oRNAhr153G!4{=}~uM_;aras%$@q
zf2?FLnW34!nsggkFN4@u4jQiIIfJ{y(*jU`@-Q;!^g{YVhKKAH@!Q?-9G@dr3f<ta
zr;~f%cU@j3<&K}7FCH;o(jj=;Sx$WmU#h(1>)hEt9=@BBT}~tnz0LO*qW+8gV6UU%
zT-z3Z_mrHr|CALaF3FYU(JMpA;8KHq05j9M?g>G8#55Pdj$4<`G`elol3Dj6I|oC`
zzx4Ej(BJ`!QrxrUT6lSWzIbxT=4#k<q=SCM@lLBs12%ga;`|xjehck8VNaCpXFghb
zpo3pGTx^_<R7g77njt)jNaM~<-~bQg!I@(zuYU&(*7%P53AG5U%jSFolgK1iN7J0`
zCxI`oDb>7SJxkx5Wb^gnUF^&?@}L*tM?SY7y(F4yiCM;`>5>YQnIt8>0fJ5Nm5yIW
zb-46WxJ+Cug?pCivOa~_pO+>()AFgMC{oXCfvv&^Ta#JSsNRBDl?1BeGQ%cZE(tYw
zD1xPE=P}&*;j+?s!o8&YdT}eb^XlNq6suJ=0VAo4k?9vMRoD-Mf{C$GhMF;CT9)Qv
z2Ghugtu+{7FNS`kHgd5!?|uC^t~Li|#b>Xg-oJ(51+e;#81zXf#IO8zDE>@&Yxu`G
z48Zi!PRdgHKDu^6w&_=hk8)utzWFPRCWsrrI9haxZSpJMOzhM4@LI4x{$VgE$2&B!
zX3-$Sd}Y8qyKEsLNZ!_Pcfy0mZOfuV`~D)lv3O~SvFNnvMb!z#zzZ7S92twoE`iSG
zHm7vedlZ<Mo3~PA|Bx(mwj3>4;o!}!iu%fqt4DyrNc{k=<alK4bkFsN-!7YXro2Oj
zL<ZEW^N6pJTDp24*cXpIcLINH*f(V6+WHXaPDvNu4HKm)Z%;yKb5zr=Sj$2{F52M+
z9obQ8F#i}`%S&XY+MTy~CgMpO8|Vv7n}5GHrX=Nj<bU$$?<Ys39EQlgn^E5(F?||B
z@1`s_7x;whKB=OR+Gr<{&egXuUgP`r`#Gy8I_|r&PEUQOn6V=lj1akhR%Yqy5@c*N
zeF4LC+emqR8n?HM4u@br`|0(&*lWu-tm`P;GC1fR+<$nV^6`9?$jb5AJgd0Y#jXs7
zB8WLR_Ts>&>%UDeme1gM{OmW+)<U!EErjY=ar&tu_Io-$VghCXLg>J+>4@FRQpM4s
zf#2GSD_~cME4ic9*66J^=-=(B98Ep_JdsI1GGL)Yb=|UtcvVRFegF2|KcKU}=AUE7
z?eIx?p}nKV%bzuzz!*T6fS?&-F^H^1lsy=eBh~%;@wq4Q#qB6XPzyiF*^X&r1ULp{
z+zod3#{8>x5LD-J_34vQ*L)#n;`nI6)6Y9?jEu~7%DC^`&YB<&%|NU&Tq08|Y+siF
z+ZdL)6sN$odls!<_fPw_;)f}vm32`m=bGF<s{=sFBBH9JuuenQ4L}!NtryozOF%S<
zgN&JY<;UU$8XH5|$i7{Br*!{=*p0>sP9z~~Or87tf&cYoe|TYUT-6Z3XYcZ*6gnJv
z8Ku$)Kv*`rFQ+n>xd6to`P^jMuiO_%>Ya192MkQ!_x}hRhK%z#S_SXZ^mjKVAd9rf
z3vPBki<1V>Gb%9gF+2me&{KDX_7-jkC(0aS&YpW9=kl5MO9M>$N*G5O1YUfNasEhD
z?P04D&1;RKN|XAG#JIuPV6uDj8<$v|cXk)vfPVzOL@mhBT7umeyX~Xk-MX2geox|m
z^>R9})bbB604Rr8ynD&@gz7Z9qxrMxp&GO`pTTtyq=SLLVpJhZ*4f_<_r3RDz}5O`
z^f^-Q(~Yy2CPX)p4lB?F(yv=5cVkc@Mitl)Z_;}F1l~0B&1b}-3@?^7_%|?|?h3j=
zkffZuLP6}x`L5x_T$s@tsm{pxUAPmc?CckM+wuq(5q_6YGE$%@pXZ&y5z<pMB&yh7
zlX23wx89dAB(MHRLC1anA7#a_OVh&ril>{4rP+OvzdXr?o+FiGeqtz5;F_x$P}6=J
z**Rbl#A0SoIVEL4FYE}0Y+5j`Uqpz_hzeyTujGf%8QptTNS8Wii?_^xpAJ;bUO+b@
zx8Df_5t&(o=WABBKzy2dCMgelNKmAwkO_lWqHUD3N44GbS8b27LT61ze_m@0-+}y?
z-00cO#s*l6{XvDK|9_!qU#w(A@b6P1;MLKp82OUL^($(LmsmA_M8_S@rDyBjOO7hL
zorV9~jj#6;0f7D~JGA#vOf9PPa<@}q-vBMld<zg-L1pKOlV|J4@@etYVM9Zy5J4Fr
z;|v<--Q1$!Lo*p`7^AO`ZSW+$f)*aSG1pw)N5dKG0E_riPL*XtC`^VmVd<4*6*@}^
zhEWfa<0=191OvR)%ZAHs+26U*=pU+tpACM2VO8|Aj2ypLzf^%exX<kPku(nlG7S{!
z+O=pl?_}7^y;K>9Z2kqpzY(0-1{x6rc<U~8vUc+D6;XXufq2|SvFMJ01774-f3SiD
zyc4ExTPD6h5kxCEg!o}C6C2{^CY-v<*T|m*Aw2c$M~?q>iBG<;-$6=DS1xV+ugJ!`
zjYRU_i=X;=>|iftnjl%17{vK#v0y?uQMwP=Iy;4)M&tL9l*dK~_JO6KUWly%;#|4~
zW1`Y^AiDHS;Do06+BqZ8?x>Am293gJiKJ87?{mTTuWm6Zr*0Sw3g`SEzXgxNvs;-X
zZ0*FQ+{FT|oc}XKdhg32-B$VQb`odT$tnNT{eZ}!U*&@ciY8Xk1-!FQhjx~^Iqg9$
z^mJYJ60}GU@FExofHXOn3J9l_UWxr<%ejFpz0%m2sw+uGqXNc=u|ZW%0J4A`A@7gU
z(Vlme`RwWU5OFwLzU0vP6S3~<5(JJL>@FWm*@6H$fbq?qpWo+Xjoab78o^_JDRS7R
z`W&vysVK(3r?lT*poMm%4|-Q^jy`0~aYnveDVsN9-s{5Pb_~po0?%FHqWyS1!83PQ
z9uMGG@4h}T_?xPlPkoDNtQsY%9uKybo(l3>f@lE?3-ru^)lsC=J_*|=vBf&zJzIcx
z@jI7#aTA5-&r#OR(N|D&7OA*Youd%AHAob!?>b9I#$%>xL&1J8a?Rx%cbymPTqzO@
z#;yb3n&xxFPYLC3Q47ea?f|*wCEqp!K+bQQqLS93XBb)n@)7Iyx9zUSQ00xPH2&`>
zQhM1N>s_GeK$UqGbeli9(=w8adnBufn3ijk?qy~53g`jm2TO};i+6#1H2^@+Ri1L_
z%+wPeDXCBd5xisQ9rv|;MfwHzw~(WSg?F1_IR%U=O5-o3t*f#*zJ7*wo~lU*zhQER
zhow%9URJnzLXHQdlm;aT^A38%g=h4*G`q#yb(CJcGi~vfU!EMl3G&KmsRUhJJn@uV
z#6aOH+#vO2`Kz#pB{E_jT=Vmx59pwM<$|mbm8ySbvg<NX?%~EjZhCIFZx?B!5H()5
zo3aBkXo<3IWD*?#`@FB<XejH{LR7nw6k(MI?w{C;1RoF;CNZ<>>ABBuZIs)gmZ}ER
zFR|&qvimi7Zr~^<7l-P-ziz@bI10NYFP-*U`{_F7$B+S;T7Dlf1V5o9yM7kr&g@_q
zwi2A=mUuXfa+xG%&}6ocUwZeIU2DPBArr|_2c9&wh{Y!eBeWsI1NNlvxkE=WN5Nd@
zE@`m;wL<(QMQf2~c|S?S-+>?ReNn2R3LO$QZ6X{hy2|<Nu5`K4H$*;<j3@jvd&#f5
z_7C+)b-p70Oq7(WJK^8Ptd^z;1J(@L*>)xW(cfA$$E#R7aw`Nbe%i>)T}ni%HdtR~
z*ub!oCH(Q)8$OV+<}IcLdci32+^%dmR}JQcnqs(^sMr|H!>y6}Q#pPN7e&fwn4u6O
z)Ym*J$>;Ej7^BM2mILSmyUB-U!aiskXC%rsl~fNVuR^?AW)+{zB)OC|Vd+>;{o=ta
ziOxlS_JSz8(+iE*?FZF{8pAitk#7Ib0vmc}y%!=SUWK)IC?;R-U=#FL_A*+F*``k`
zG8DR_<fze`Aw0Ejdvsm;HWHIbme=O^YE~e56d+;iz97X$a9Q-=5%dddb8A`%vf(Xo
zS7cZg@l=CFHe9D)kXXMnZVY}b_6;!!`>^>*fu<EICCcp5^p4B8+`G5Kf_f8=Bc}e>
z(Nk*ost3a);&rTwYXG5*r&7J|Tn;3I>P$J5PG27~QAH?AgSRI{={Rz;%XgVqP%MC}
zht6)jaekrz`UV$uW7F5FNV3N@#xuXHu+Sa`eIP^D3cW(+N*Hvze1>uqj(!Vq{_J@m
zUng14l6aEx_Z#vnAC?~T4i>-!$IBRo&|-IGYH%=rQ{r+9dC6_GYaf)1jy}wSPJydB
zZ!tc3B_u*z--_v38w?4fEWLP`U%wN(ovBmUOmuippPBh}NFlgNe&e&BF@TPi%Quo)
zry#?+QRS`+(Pyine&7069zNy38fBMIMTS?#NGT<fggbE;KU?z-vIYs7a7|>|cY*>B
zt-&`IwIEJhyVX<dnKg4{a`3vXrL^nf@*@{PjWksz|7knSDu0|jMc-O)sABS_se*RQ
zx1;@g6Qh$o$+v@F$l#aGnB+WT^DUI^;(jZ3<`T1N{bNG&iqHpB5RF2bqNdhALR-Q)
zngd+PliMoz0W;+@t|bbWvDa>R+s6bqwaE68{rB+!rqWdeAtjw3Rl60!HtR36+?SaA
zW0S}sZA!3=8vxI-PKdmNs=KyJP?9w$y;PBZPiBqbEOLk25r>@(XSw*MhiNLu*jn0b
zQ)O??JI_qB>R(5c$_bm+!kEFTCPJ_3ElOxx%@IrX*Y^{?=6*gy^D$Fj4CNf!@014j
zTTjoX`#tZ^o)HXwzwnfa;3q}{#bwv=JIL_Y;|@>Ppocn8`Cc`qh|R-gQcmH6*ZOzf
zL+(+fk70Q?TpVYcczqv^r7kbrYx@VP@wb@nD1;mm$3t5?ROJ`%6N^RTZ)Cz=h<|*G
z0s}P*1~Zsg)|6Bk^FO)sKNIzDh1V~z)H~`9)yQcSB;H&E`hu`82njQ^D^rJ;UDf3Y
zLZ@@FNo|4N2%Q*X>n<C1y)qa-0UCF9Uccpp3oj5~w?(|=6bv1nAMAR%W)5b)gBPCS
z1*FWIHPcAGDk5jVJC(}0S|w^K_iLD*%dH;$5Y{`~>*U*aZ5Ko~GJz#9FS=UNkUpd?
z0j%VZDw$P<S)pa)-V#ry#>e8|8;j8X<RDhS<;dEjGq~Y;_n0^jfYpw$bDPcOdk};c
zLCUnUNU~b_?gCl^!T~$;;JT=_%q}ny9b{uX0va6qDcK-;xv}R(%FUrMUWb6dm31AQ
z9_UO}S%fuY_*+SW$U<JLC<q+5PKm#F27d>Yf4_So6x4yCKj^$4m`nWB%6E-o(<*Q7
z&KihZbd(Ndv<P7dwlU&XM`qd#=XbETQ3ALzGK%lR-oK6l{ynmW3vr-Eym}Gd?87Tb
z=EA^#%tG8ed2w&AVrPR>2|wo@!*e0aP1A<&F2|7@5_}sA7o#>iXE<sC<%J`7WPYe(
ztJPlE2WyMR!>0Y>8Hk1Q7W@l3(8C)=DD&xq<s)GW!Q$xa8_hNpHUtS6sT3soBTFgl
zwim$nY(-9~4vcR5zh70ma{HYKqt)tVMs&Z&_7GZ<aS+!24T15DBP`MRDnH!}hPSi*
z)$_Wa9tK3Y&ZRCLx<e^R|1g*ScqX80@+)UYbX*P*Pfvt}{q;O<Go9v5^KRB#$;ewk
zB}~wI0`KzQU*X@&F-IOOQ(P3nV278oZ{L??VV-ijZ(+yFxO7?2JUCZer~7jp&du;z
zX=ea7J^&)#;-YAp^A$TBWA%U!P2~W_)FtbY!?f545m<g@4xFix=Al`fML?eB?bqur
zbCJL&hONs_Z0r=-fe)a#g_Btd>x;a59l*As7YfqlZpM#y#iU?@HZ<t@8WRgB>bOFt
z+xC*xYk_nq+YEng<A(a(ZjnHDqL>@704H|pdnj3gK47+wKP!fm*y{;il&pJr?12)Z
z6lSOeg6v;Kr0x*h(WQO_26g~!1}Ps5ZgMaSZnTPLL1nQyXADcIJ|Qf51mx22>Nic6
z#C?_)+}jl=d8Q|;5Y(ys$5*TIg+IfZiQ+OO#KYDB66c)R^~b;i2ye-!$LGZjTTALF
zyUJr09C0^e7#0PHuy%N`=#_jfRUfTd74BbM$~-yq=|@c#l#so+_S)!YH}V_E6!&V7
zh&SPcwY#GU6uE6L^IHlJJx6%=o{D(VD;C*MLv`-&mih+__?Ha6hUYE!u0q2&{HGgF
zIdkB+{51-c&NVM?>plw|8vj0m+Ye3VuDy+_^8LJ0A&AMFkCBg<LX*6c^=Ss2A}Wk9
zdLGIRr{u+fLMQ#H#5JNlVB1Hv#^Dm(RJe~W1SG2+_a<z7I4ePh`(W+mdnqbq&GMX;
zYb|ts&q=RAcAbv=kx-8C!`8)Y&%NWtRRl`u=K(Y}zn|#r2Tbckt^>g0*wN-6=3yX_
z3)Zpii>tudaTr4hJWhdPckA1Y7HpIS3<}~1@k4m!D0J68ybojuvT>+B$6I8Z@uDB*
z2y+6ZR>0|HxR1<q&R3DWf!g9i=~CG?Y7cA}2yOUaZZ209F{SoXI(Kb*NRKgqcjy#H
zRvAJyhs`nApX%*$pie|v6A{@nq)f<xuYZA!ptT)mpnYG%_kLgFFG+JFBR_whSF^93
zZoQ?p_qQ7RFTKjb8a80~%UiJ(dUobs>1?LWao2rce9karpv+e&;Mi1xNkTc40UnXO
zXtB$4bS>;<Rnr7X?|J+#;d#x}odt_aTy{@P)zFU3a{?V&?uG#-t)SQ`OX$4IFO#RM
zrrr->R>Nx!nU;>emj{EyJAQg;9V+X?r84Gj0C%e`R&6j%pnBi%%`paT2QR>lkv1I~
zb#dQ;y+1DrN>w>HvJj}wL1~H0MWyD$*CJq{T)$B2UfMm4BjRhbLC;YR^V_N@A;7z}
zsyG|RzfWuL!N^5V*zZAO4ZX^n><Ft8rVFL2$qo$zO(P~Q=tNsep1T=RksFtmhv!gq
zWZE4q)qjqKCWx`<4tL@W8}dS2jHNP8`~%JUahg@@aC;<;PKKz3=iO)Q?3eVTVuY7C
zv|G*8*o@C@F{2k{JUX|RZJvAiUuyJEy#9<pdqes5mVnwj(fjpX8v2W|^@L`C92}=|
zac9DgUVDfT-m`?FPpMp|N>T*iS)}uwK|<hjSV8YMyIIiz1%6G`jO(hc)IoM~IHu0?
zaK}VLt<2Q{v1!*S?auB2I!Go6?y>~mT_%p^=vxE0X=rfm+xymWI}4^@eSx5Q)%ZIB
zta6gCh#rq#HX@tAotB&L-uF}herkXAw-<83JyBw!jbI|TK&AUJ{pYmY{X_|wK2U90
z<DCj8>&SOdFkWlqhcpsJ67!Y!Ph@Oi4x3qnmD1%=y~U({`eHWE#Oy%VGQ<4e>d!#^
z(~P7IjTPOu?xLlM59N=7Bgzt)oGtBcAA?4n9JdL*FH?M?pzvj^fF?mWZHhZE6yF47
zF}>vow{?@Ukm;hGLv}b?Sp}$_PY39{!?#04vn&T4*kAS{*w#7GR?tsijR-+cR@#3;
zQ>W5V()yC%i>(o!X^M>+f$M}4!^d3P$woNng%-)*19|}jyy0}Uf<sTmco`?zjqW)C
zwZ~y5tnH!KeY?#l(@S0R9I4n{f=$D!$QlO}=YtBhtZ?#)&|*&iDSHByuq6G73g+BY
z9qkS|ojzuw2#-dSUZa8={u0T4|JZk-btLH%jaPi5*@9BTMxnVCTjmv7Dyhhq#4fhl
zuXnAjD`mzMfh2?|sJDP|f1BeY)W`^qHn@gho{^#9Ib{%{Z-SQ64U(gtrl6l0`1<9#
zG4Y00tud(@^#VnOnD{-%;H7L<>bt`awC#G`dxdZ%VF$rEUOGKgg=ZPlek@5icaBlr
z8+NDAqRr(I;gz*lyrwiQ+0GtD^Y&2yD@Fk5FtyzU<0cW>jYT|_@Oo)9`{D=t4J@s=
z@`g@WZ`u7zk>axo981TlxTS0%8P{1MmbavT7M6~ZSZXX9P*fe+x?qwHIeVCcS&Sx|
zLJQgxr6txDF7*=^e*N%waL<6`S`O2DKC|!rn+5l~%ycMr{*SS*4#@iK{vHerP*Flu
zP!Oe&Qb0mLMd|JiK}AZsK~O}*K)SoTyA@GN=`N*Pnwxsh#kOa2d-nX^|I|6T?{A#z
zoKGDx#YCCsjzW9)o1Z06+ZlYT?YBHJUgkSOt@{8@#fcR$dRm3=A75Kq8;)D@fJAFR
zT=&Q#7y}*QpfmyQ+XnnRVYkjU7&U}tUXc~n-So|Y3y5o<;X55A7KJq6dfjk_>O+I-
zwao9Q44&Euxe)f0%7*qe_;NJV9bN%nf(rHOUOrp-0^1G?M1@v%iEK`Aj9F2Dwt&SW
z&0oX;0MU|G!a3qtw)RMam;~8p|CvPl0|cLz7MRpTiJP?gjxP}4@7LGaRM7eTq1XPi
zfhRl(X6(*OLz*GEV+z5pnKU`kP}7;`27o#>0PIR?I)M#OHHq7T@Pb9&&7)k%RT%aS
zTC8j!lluZ-E?s_Q_v==H=#CvUd~*OMS}GD&024CNFf{wH#vQkJ0wedpLwuFfWyemt
zX|pwJ9(8RcEqb@FFuYZUt~J^i@(d?%Q^O~egYS66`#ZxWJX*$R8^rX^Q<>_N#0K5j
zG|jR?{7cg-m4*^Fv!eH<F#kD1+#*B;FBTaoWEc}xG6?I%1u?5qEtlDgxt^G78n-n0
z&-?QG7w)M$N>}@0?{w#I{Px{F&d%Xv{u>H3g@L}F%I`$zDlASdCIEsN`Yc?(?$;_A
zFU>nIcW!u2^l8yxiI$YY$GiuVXL{KyA%9r?U>qcl$$mm8T>dF;K$G3e2`_{0ZJtn~
zh7LOUbyrPGr)eg2i5c%wp9>SK*lhejrSw>%(y0VWA`NORZ}J!HZ&&T-0qc0b#B^@$
zGBHC{59m+l0H4oC(F%YTMI@WzZGfJGpp?gcC4gR@=HbSzZkQP!qF{2FEcaSN{+*@w
zvew)YbRFNoachViLyZ}M@~(g4*MeHKG7N;^WB;>o{&DquqK?F`iX@erfi^<VQDN}C
zeb*G<j;~6LkCj6Txv9MB(Did^+*Xx0u5b>wiPA>sH@F65iVn!{WuXDQHf9}ao&mIX
z$)a<<_GTHdJX;-NfHfk@n;@dykTBr#CuH>VG6!TKl}Pt8{~#zWGPBBK{2AxqOR$b-
z%k9Hl)Qj3C<-n>pv*F*u7Q7`&O8w26!Y2Gj5{(|TF(_vmBTt;Xm>tSFAK=KR9bcAv
z!}J5uQ<^R;t|lI@{OM?OWMTuJiJKA8O64Q|spKQ{qJ+a^e22k-C}KO5rp)39IM>r~
z^X0q#p2JY2iB>moGbYjc4d@E`V1>fdlU}d@>hX{xVVVBk5XPMR?=|9Qwdf}@9J%Es
zhEqrHsDOlUaypluN(DYB$0Jfg5C3klS}{Q7jiE7q`6wv+(idhg%}_?7i96vvC6Bt&
z4gZ)*Ind0cs_~uh_3H@n$p(^y9W@7g1nc`yNLWKKaS=-N=L!=Ff(zKd_HHUcx#z@<
zRT*>?Y6c4*<yclL1*$(H`1_3ywY!RNe&)rcUhevkXXog5ef0y8bn!xie83yvY$NN+
zA~B*<plwVA#P`EEk9=jGieGUju*%VD?#Z|Ah&}V8qmgE_HxHnbr8-&Ku>}hQa{$Z5
z`K~YpR_B$Ea$E54b=2rB`lTJK5bcqxEP}N(hXDxm_nd<%9l!6O1N@hf63UW~?UDGg
zQR=J=_ERhw4FL=xe8HC)JhaCzjh>*co>D|yAm>{9nb)1<aG{g{dEt^Ye!*Yo>_0;7
zN7n|r1F&^$<&65+J=$Qq^nNSm^6DT^0;8jDJ=8UKv76BXg;$EgKYWsu0GEvYxJ7i7
zZq!;Eg!e6e;<u#v&>rL5XB#Wz)Q3Ep7bQ1p`eA#u&L!bD*SxrN+xNx?FTZ6Nr(U_|
zOyPQbzCG`U$=+1`hg|<+`is+m?;Zo|6&p|LJ{bE>K676+S^kEBp?nT)1yocE`@j-%
zOJon4KIV?-v?CRUpp@T?BWiS7gLz*=_FI@xFW_WqtuK~lBz5Vm%?bp}Twb-1ypg+L
zlk>`1`_11VkiQ+@a~jyVR2K(gHEb-1)}=>xk(H6J>T>F{y1<CC<|a+eNQvcjUuB>2
zh|7l*U%s&84!N~Szv2Jv;%kzyxmq5ES1}Vol!^DiW`321@KFZg+Z_yq#{|oKYB1DJ
zDV!}O4Eu0<TYBPZF090){pjWV<HdvMuCP~LF}1hE;)w)aH-BC|8>ll|Kdq*<)M&^w
zf3j!r2pvxHp0nt{hF-BiVl5Sj0L@-LAgnaNa1#|m6Z2e}{-3AJ@87Bn%MCh$JM-*U
zO_lZ~R6!asnGz@C$uKG0Ug>+vP;Z0zov@bPXSLi|soa&ib$rLGb%iEhR;)4^379J6
z3arkEo%s#O`uS!2%VXD5a3r3%jWsEw86wJ%7keWVOqNoE2bwH61m<#akmdzBJ*{Ut
zKHJAE<dW%*{>wf1bQp(yW)uw_#171|BB@T*ude)FJ2is);6C?^@5|FE{IjtBaoX4;
z`b9BIYY;RPI<yV|Ul>i!zhwN^>+{FwnB&A@KiBqka!IZ-VJGyxQPGxuw(M_bnc$%#
zphIF&iWbCj1UDf&E1CQs<^0b>{ory_@*_1n{%NM{cbA0wV8ew0>giqYJo=-u^_U!?
zD@rnk9nodYk-c>P6~m~0L+jJ(^SogYD3rTF@5M{X|Kq^1(Z<GTj-UmGzkn{UaNAvH
z@{iB|^C#+$Kyq&jJClv=I^2Vgro&6L2_o+K*IYx{pnoi81S?w$$kgX86kz+fn-a+3
zm>7M6^WdS}Mi~#_6)Z$B89)5JLhxR<p5U3HB<*5ptafF%rqq3&%QPIV$$?_X(yhJ4
zdccmt#U6-(!NcN0C$N4+@MM;9AT?b}y9509Y}LH`Kpk#t%a;{dWsTR*1|N$93s^sZ
z2oKfb=8(T0{8D|;#|+rRFqv`N^Mq=#L>OoD4`h;tDp`wnnrW&Bl7Xiahp&E9<stvp
zeEa-=zl53M(baIm6nO+?vBb4;ID4V+hjyYt_(s<vC!~Tde@7Q(%o+P#6opheopz-Y
zr5c^GeClc5`~8K<6yh~jgl_t<Pw&`_g3njKqwPD$SPOhU-KZ5Te=dNFGgKf>j6w%Q
z{T-n1ggL`>9Z=7Y=NW4d7J>BR28P{h2%kY5oi}qS0%W|H1e8H5@aT)cemM%eeZxI*
zrk<+&IlDna4@gP$;r%dgAD>VQrBuBOmR}?%dsgI=;4~HE*$4dZ*|D7tXIJ>m90X^6
zYU_q<_?a}c=XbMxB$&ZdhZ6Vi&DU?htY%;}_{(CuB7u>Hp1=RuQ6deM_b?ol(U!zz
ze*7IGpd=tv0RSC#WbNky6OEh33kmP(AlFB2<Ti9f8oRQ>=SlLnYauQ$Vrl#fpm>IW
zHdzj-Ap$jR51Qz70J+d&$H|<r?U^&DcP`7I<s4GcDA#%(vdSN80?MLVRH>pXv1@=h
zI$jJ{h9*G-T~;EFs98yg62q&p3Ts$cQ{3oqX!*Jy>$s&o3@4X*%04ig&$cJM)lNks
z8?XBUJ4;W2@$Bi00!#lwOlV#U593tQtyJ>ZLzaIL-~Q$O^kF%oudw9%AjraQx{=Ak
zZruCJ;RBU#w)#msVC;U)5x=00whMAVE(rX*3tqZ})r28989=gdF^r8OR~c$EBel_r
zD14S;P{H4kjPdd08np8J>}>?1gX4Y7RXY~5Z3*6pddyrv5RtoV%q<Uh{u~eRm-Yc$
zX$&ocw6P!Wm*xUFT?N<xPR6S91YbM(>oYtzI?f#T2<`X}H&|@E_MtBge>m0ug?Et;
z$=!I-#&6A%TON3o+>LCsCsYr~VEqMr|MQpGjYM?8pU+QuEdcpirg3SMw&AM%@d@|e
z1{HnZYT#Mtp>Z{rZ@@<jdS&&3&iNOK>mH>Z`;dpkl-bX7wkj_Bz_MQ6GqF3WIZ9x-
z=%!_|+2V&-jH~uWpDRIy<F^#}>GJZc^SqofJqhO1T8x@^9gchq+n8IP+@o7$_RwFY
zsgb&1p^MTpG>dO{evXqGy-1|WPEPnb;le*47Id3*x~Y9+Ys94^#8>4W#?*RTo#88-
zCA>d=P~d!$j_$w~InH|@j}_e=UjlK7TElE-v5>&V<>v`TcsF~XrHp^x_$woCR#G_4
z=LNNC_J$U+<}BfyKu-dS1*vgr(pjv@ZN%wTo_TiX7{e`(0gEG&zpJQ!KPvxIN_9x7
zd}I|FK<f!d=Yr^R`3F4!5SS%=yW&sE18tzJrFOySfNgb)5EL8|ANn>vwQSOhe9C^B
zmU1S`PkcApP|6G>oG=Sz^Tn5+2^ze-EMWwZD>j<3eR35_G-vKyp|r{cwwQETR*|ss
zvN5b&<nDMM9=r+V{jha|7xG0M=B{?Sol3rQ{a;#^vV-#mU?DayEezF_^~TilC#f(?
z*7$8R-246O*mK%5s<7UupB&hcPz4nK2DGv^Adtlv#5?)hTEC;ZV?iFYP{3Y8*ZQqi
zONVd+EgKNhe2Re$B<<sP$KNX6%O!XBqWk%P`QuuRks*_de_1??R}13FNG;AS(!iKV
zevjSa)p$w&dv|nk=d7^tK8K~k`Ovs3R*%-A9?&*2_9BcA6oD5^7xE&s0jN}{pq{t&
z%Mf?~J{sZ8uv=$Xox$}MiTw)uE7i;G%nNTo(30_w51;j~>+`a`{^K+J{K?9g&>8H2
zUH-5&R%+?x#+?pkaW9X9^S|2krVgO)^o#PkhsQ_5Q|To}U^&9cV?fkwry~TPHrLE&
zvmG=yuIDzAPrm3?rO6675jWR$+7vCQgs*r-BS4Ou_5{7;-3R|tYG1;^n^hk9Ufli`
z62hDM@KwOmS}H!sbQ=HQB@Lm?1}mSAoX1YTY@z;VUrGUGu=vfxK9M($(?D5%%#coC
zFY4}-eRcm!WJE*Z)NlXWKfbKn6G4a1V(z1@xKZ!nJlbpU<1UX?Zan+jfmodmB^>KH
z($|h>kVyF4(gmsb%|&>>4~;+8g&VOB&46cG8^h$fT8NH9x=K#5Q5KB+^B}RyJWx|W
zUR&{Q@}Ky|Pai<g2DMrAs^xr1h;*g3)ZZf4QoF=mp1ZB`6(K`98y97&T%1?j+o60u
z0NQ8ZM6VOHJx^zM;3&A+OFE|5nIuhtWa3$3+rj-t35_BIwcwEJ&De&rdAwotH8G3U
zKxXkbJmrML_tDn9Fuq)(klL&NB5gbQ0+o+6nV4HNt>Q=L@kv`A=6~q1wmk7$W&Csm
zYqz`<WLHm1m|<Cc8H}=$TCxtWDFlYRbP#0%`ieul7V17<zh{6?V;!WV{cy}7R2#W-
zdrt|I>!KZTi@s_1OtS)*FO9D;DW>|XmwosEPfx%7W5X!D+1u105GX;ao$f^>g-6IG
z3WS5#J`eVF^#`-vGyddr(FT?cg?-=^%F=KqKl5Li!DVXn4D)*iRi12Gn4XKc(*}L%
zg{<=8%7{9TS!B5F89bT~Q9y?XE|BXW6}e{eZI5M`V?7XSb+a-fTAmpnu6z-EcIO%<
zK&>L^%eCRzpV!{U1feJyNN*%41J5HIO}O?l)b~P)m3UsgB&OE`SEG8i&{0RiynN}S
z4to#GVUQVgf#nPW-O7<#NLl|m4|N4y5Rb_VQmJ`Z>~VAgkJNYk<bM%AACy)~*Hd6?
zNuVv@0v$Nw=9;zRdyXGGsAERhget^p*+8P0Z`gxcmxrx^tHDup;%z1WI$dkMdU1Lw
z^4)2<Y#9ubTl;?kDf#s>5b;JVQ4`FlEE?J?G?tSpcHpqlmQ(~LiU+*=2)517&ySNO
z>iK(x@x8AQ#c6lR!>6|glC$soTLDwTPql$~o=eyNMclOIDd^^bPil&9mh`AIb+p~T
zA&k=mYI$JDhfJt$YOy$L^pc@9Er47ciKJ0JkyTz;dCW8*1$|LtThvdYIU$HhRyaf;
z(c(uB8-J7L9QiWlU2{11)zlRDhh!&1uFHNZ2Z3J6$qH~`<pEG#;!_b4%sWKBEE6i=
zS{cBk+6Mmk#bBCCdUaupNu?5+jEZ+1DDOs{^-@%O8vGH@&Sn0QHf&oYVN&^8u^Muc
zz{};|2vH%yVG55cabAV12?>!sfg=elDcOUb)h|S*GJvnDJ;6P8au&P-YT6Eq{P{if
zfE#olMK0&nK3N)RTKntsM;bc{<P74635Z)*&$gdKT5$>GKjFaN-mgFA!D_hE3}9fI
zlJ11|BLny<RM&f8_e>nw_i%)Sn3jy6Mgq0)u5!%+{m+C5zMY3%XO`{{hP1Av{WC@6
zujQRm;NVF*DMVO7Y$K-kWx*6LCRyV$0sm$+{i?haC|ZGhABMu~Bj3$8c!4aENtz|F
z?w?@=e?9S`Vfyq?<o0;iLol5-Hph^w+BfIZWJniY>PqsF@LKl!a4&A)%D-LS|NKjW
zk5EYz9RbXUTr1_sjg%`PLqFBb{~*PG{nJf~-`@0Ypm5OoU}&}i_BH7V{FTyGPCdi-
zPf~_jy;7a(t6mF!pLuYb6`)E2bvzx;HzfeVjN0P8<^cmXr&TSt%R!6G3LlT&0w)cS
zMC#!7NC#3_6_fUM`4v(%D8<~u4db=VBva4S;3j?Z14g|fK)emk1{v3ZjKL5^aG+c^
z;u+al!=CJz^ANS9l&xc>FFCKMdwy*zMZ2o<ib{4h>H&*rG_#C*b8Wz`p#sKALM<0?
zcD)IjXxo7*m;||n?LhX7eVoF8s4N#ooZ#yyzqOe$@&|&SP0xoW0dS~V8lNj5U<aP@
zMApE*sGgZUkWkcfmBnR}I#$V*WXbxO|M!0W_tySX(!pha@vbK!sJwhRHAA~<$V*Ty
ziok@9jj7YJIS(ec67&8Qlg*`38))-s%RfMjmjMiyuL<8AY>{;4L+i}ZdLmg#xCA9>
zj=)A`fbJFaw@JA3Xn8fSwD6J~a}kJ1`@r4fzEz9sr9`+~`>k`XH!lNDa~s(HQ^H}r
zICO*WG96%1-)$hV?9e2G$Ve$52Si#d1NLC0m3r()M|Z*Vf&)bDjt9|5*Qu0&We^~I
zt-MO-?LO%HD6S>t3GDLPgH({IwbK3bB@eig^}rf;MKg46pF0-+`<MRXZTlIM`BaY+
zt7&9WB0C=K>nQ_=PDGIeb5i5x<EZ!I7i7Wd=($4W`*r+A)tI7xLrJ-1VbSL>6g3rj
z!Fg5I5d=gLOH{HVU0@fa%bA7tfZzl3>$5PO039WNaHweysfAuL)@mw+<=5Cb;<0d0
zR?NXhkU~)BJS(Hs3@lzja^SsX=9Ss*bNb7d%V1`S!;xdT4x$BHH#)S|u@{a@Bluku
zSyB;L{}2-W)RJTY5-SDgO2JDv4<sblQFWNK2ryogki;{}SFSL<!7R;S?^1Vl@wiI4
z-H+r6tMv^q@#AdIzy!Wc4j@F9O{bzVuH|f{Gu%8Ium|E;PY-nKu>SXn`1hJ6$WP+~
zBQfgMYM+xb6W5w4v$9Nyr2A4Popc%+GrR^pkdAb!HpEe{&GoihPq)T-u1&Yop0paP
zvx1+~k9Yw>A6WJ~Ws$kHRV#e-7W|1_F+)b~v)su@#}@lG*b7XABreSHG37y4833k~
z%Dl`WeYbR}<`Im-=8^}Rft9h{1Xg#Te+ocP)=&U16T`{nLnp`|LZ*yYnzD+}{8sk+
z6L}DZ-9w)gPH1Ze$A))>)0@eZ1!?RM9F|_NE$OmAUo#?0!<G%rG}4We=0XUOb8)@I
zU^h9J(Bc2uul{}^s+mQQARHPFp>q^etSsz5BDEU6Cs>qD>So2v7f2ty%$^fKM{LwU
zo8Y81G-ge6QRG%D1P+qC(0mkhIC8^BPKsgtSMLYQdkxQe#wV5di?VyhXQ?;G^pVYr
z(q^l&!7_o>i`|2AAlJZ~k&!lVomy5#PpfAvWc)pa*yH7Uwa#r<l5zz+G<LwBGLVpe
zc(HjR%NdjzrLm+~&dxLoX;I#n{wvn=ds(Hdf|CJ0KhDvsa5S@yb2g-%USC}{T8-46
zj@&j6;b#zvm!Jx4SjOgojbh&&Zl^@yP^v<Er^#FZb+^Q_f?gwv??rANU@pPs$%UTN
zD>?U@&u#R6oxF{$XhYMw;B)(gSAU(OwV?q2u^0lbO%N3K0$7#%O1%ClW8>vsh0A#Y
zM>UX7_KQ@>f}W)P=r>i<MWb@=l>d3AjgexXU0d?~M3qJFb!s`Z)<Rlv>m&3p6Ewa)
zmJlkgTKAGfvZN4&_%M+!UAVn$g{I#Q@mMX?PP5^?gOzZuE^m4Yt-b`j7vCzpyy_3g
z9%y;TYFP`7x|s**pPK8Q65n3Kj<E<d0ls7^>0}^)Sk{xvT8(2D<a?upN|5e7<2Lul
z%O@TEj`V=Y%@)CM$$WM$71Kk?uE+mn{QT`8bK5z1crbEWu|dxcE!O!`#F)IjL2oq*
z#qqn;mAB0Hx6w-V^{D-w`Zd`%3>7@K3v(9wpb}wdgmBp#UE`}SO?+tEpxw@ZRwzgE
z^l6{mYl*TkCto(SkDCCA#O2}cKeYy|Ko1b0Ghr6a{=rsY_B-$j6YwoPS+PN#Y`E<J
zl+xLWpza>1@By<%TSwb^qbyPYw)+ISc3#*<961Qlpo!Z_C;bWY_0_USOLhu&*dn%P
z>Mj0d&iU=(8WToC?wDKrju2ia>U$^a{3v3m%V>{^^XJEvr#PLdwEIqS$O4?%nW7g-
z?`6P|+m-h~n)aC!G&e2p#lL-m32nhbNpy!nC0oZQEEQlfw9~UrD)06e;kOsgztBVk
z707WzEZ*4rO`Yc7SS#Uv`A+ECc=b6D_icr%gv#4jL^>^t5;fWd$`{x7uuU&WyGPxU
zha;?0>eWg~-L)#55;*Ic^(ux}Rei@jwr5V){zK>bQ!hnu3i_V+eEC^?IsPzm^NdP+
z%WmGZH>YOz7(j!Wk&;S{kP<*tydbqf@<=4#D>g+ziYPWApwXZH`<wTk1Ye4alwvuk
zQ}?00){uwdH3!jo4OFIAv@7{qzvj<QLIP{m9wv=Uz-~zgv<$-%7Y~y%spy~u>GVSS
zRDQPV<&Kx%)*)egW46@>t@#S%)R?dA!dmD8WJ|dG0%<!}xnGc!b+EAvb~8~X|MwH{
z_dlJ}NB8UU5}l_UoPu%71oLAz7V;ZO>13+UaXcE!gxGvn(pr`wz01i1pcu^*t$l7`
zGOmwzcKY@T{VRQdL<W4oWLy%rvDaW2Ip51{E|nNpd;Ga%ty~npbFJc8`nTlVZT6C0
zuWub@co4$>wqY^A4-HkXU(a*d%&Ew$rzeyN995@qT5=OTQa&E2p6;@XK^hd=kJDF)
zzAU#nzb@jR`A_Tk-#SBHKZM}J$sK!~yL_)Q1A(RZ@=1AMylQgTSeP$=O+51$067}A
zaR|$0wZHV)zn-3aLi$!CN~q!cpp>OGkC~F>u7Gsi!jXYVM>)FB2;IY=ge@>Lx&+lX
zYMa4zW!8`6^S+!vf5dNdeJ=0Iq0#f>CJ6&-E?+`4o|48~rlTM3h5u#5B7%PGJ8ba&
ze(U_l33|Vt%km;p9%qTwLu!w>KwH%X!6CMhQ&&27w;U6E-T;4`2k$D+qt_7GrxiG0
zWdEa*=G)C1|Eq%Q2ouqrJQ{PF<N?ds#aJP44X{0<`Fwl{#8Vys6H&`{52m_+U=>1r
z8p$^XAOwgM!@_hLgaIA)3|lpXMAS{s4hRm2Nw|{i>l2%8N2o{G3s2)Cc(xMkf84RO
zS{Ue+;`<>4XM~DO)I%p@=kgzTs>$UBy&1Px=*&7H<|zX(R#UZccBDTJ#4K@q*OZ=z
z$H?-6{Agv40ox8BHO5esY$caD+lLNvP15>^@z}b?QfS|a1upENFzwG{_$Zxw4s?OX
z0)1MXj~|kUNL9+{li|x^Oxl&@yfcJe<-~bqPIJL_F?TqI_J?U%K4(*}>>Cve82sBw
zt<z1L4NZTtq<#l9bZpDF+JbzS>1y|AD1Vs2klqCau2=+`k%vIR<iZ1I@Z*)A?K{4L
z@+}r8>xFucI_6GBg-8pj8;}gZ)2yfV_5%ltP0CZ!-pl-TE?eOS?$=3vd=#(7Ao>S%
zj-T1TL2eA|Q2{m2jfUljoi&ow)-SXDJFVTG-Hce$qgV#1K}F%UG&2cK4^XI=5z+08
z&yEh$4uq%QUp!sWL#;$u?@udv`b2YZ%bx#6qboPdC<?-_IcM!`zhW=1a@WgssI4T+
zh3Q{xvcFvi(2k-e4KyOf<RXNXWAuTqNX1>AlbM<6<y%e5(Q<mpBLoo=i++^e?KBxE
zZiN@^d-<f?`68GuZO=EyI8t3S6b{3w0zoi0o8<Nt7_IIGQT~v)1>=g}9O%@oM~~s3
zZc3d5(B9K#z`UM%^+NmZyQEl&Tj3i#jfOd&7Zy{~GIPOG+=SwQX>;q!HkP%x!K*z`
zl>klIb(WHz*;%a#kL`11%q_Mo*midFS{q@5|B{SG$#Uw&+7d(f=ep1LMD$)-+_onO
zmuQKinDG5754X<0i0TJ*7ZF2<=rx*%S?a5{49*O|AB%1HZ?}M2*-LXdv=l;UnId}<
zL}8HjpC2d{n0~e<ao?42yb?3RXuFH72{B*kr85D+;I3h8)mv$Bmdxj$`GbZ0uf>zs
zS5S#GSVKcI<{Mmx!(_m@;g1G+r<}oa%Re%8^*XRU#rFb8MYxOg318VH(vh7|JX40U
zC3rtk1itxnmY3pRxX3@c1c-vWptU?Fm(1beA%FI1^&6^e=#l$C*Ypq%EBQOZW}tg6
zM&QS|e;BK-JH1&C?6w*3RS4wjd2?-iU+(&y@xx`{V@9zQHqa08nlanEN<uQLmfa{W
zywSnxffjZUoTV?!{Lbiq4*fQw*ken5)MjMfZ-jN0$38>)WSQ}8tViJ=vKcdrsdRhZ
z+gUzHMX6&n7sX3H<mSPu?H<6=B3S2iZSEPO4=)HQEq6j^|9YbSG>+xqd>SPYf41Uu
zI~wWuAf{y-kzhapAva79&_U^fZrCWTL>+R4(BgZP`xsF;3B?V?wL}DUBQGc-lK~ax
zc`GuG1qpWnD>7*sCCgIkmq`B}!0{6hGY4qI%xD4d3y_Ldj&DR~9s`tQ**Su)-{53X
z!s_>oqB2(h+M2RU>6AIxne^t?p_2rdWS}R$dq24KZ^h})@BV?1j$Hj+*h*W1xcbUO
zv*bZ!gymI||CN&W`~U4jjL;BJYUcxAS?VP89}?q#{M4Qy9QIT(`tVU;HH{&jHqlAz
z|HNv3!71cIKMC0cUXyW^l573{{-kqlKIB^c+cs<he?7_|)TX&~t<ZRjLA^>hE~7vD
zqOWVv;Z6%-|JJ{PJ?OpjIpzlEi`oypx^$tOSf!j>s*H-UcI@wc7ySMMUk_<|;6JdM
ziRTjfxiW(P9KeQNcY&b3Sn9?+PPt!yy65Oo>}kPStsW08m>n?syd0oZV1b)fDQv(f
zLwS|7C7FQ(R?u&Qc}3Dyf&%gbp-|>ErTeP>)QGrgoC;>Y_a;NVs-{^sM&m4_c42-1
zlK4fd#b`7)>ipwY2(sgFnhcSjD(mWhshDQ6)lfC?Ylv%x>VxgBjEJTs@@+)BDl6x_
z;OzrNz!C%>-S{c^DEr=#PkG{cK_4=B3R2al<*03%JWBBXdU+2%-v|Zv9jbG_7b-i_
zEIceYEf=uW$&Qv~RjH;e%F=g-1NMdxCjiMN`N|)4x4fbXnmx~s_1AyK<{q}urCZ&#
zb&ce1r3FSRDZU}E-&K;u8O;9UCedKscu``T@rZN&t^I<Tl9vwkOVWp?X>xyL0f<``
zR(X;%bxsA>;8MAr_9mwPR$hj8x@oF|P5B$~PyD9H^J-rMMvWpdu_Lc~0*<l&139fe
zK`E1{AeyF9nO@fR&2`VFx!K@qsu)7q?!F;6M1jH0Ay;X+X7!l<`fVtEupj`~*ecJT
zMV;o?JT}~){v!g4C@paqg!szz;cqpp#h*QHm^`3~HkELroh6~Ob!<Of9ZDZw?Ab1p
z$3!E80laTs{k^)lH4)Ltep}4mCfl=Dxyq#sfIgC>^MX`TQcoG>s^u|%{Q1B;OPOum
z&&efz@z$FMPiX$3nGvKpN=&cuNwSFhn@oT@grcC_7Dm<Fc%pKJk3T(<|9HyLi<Dh)
z)aSjCBhh`Ae>{<Y>!;o3#VDx>(59yT(zRI=7@G^}ebX2@rMsa-X`W!|WKl0{0<@a6
zVAK5_E5n_ar=f1XRQ38+m+^SipP7P#^nZoW{SL{Ubn_>s_0mM<auj3LK*DJ3JjMt1
z6}Hpj0Sx1*6D<)&$okHu{^P|b#Y`vrG`WPAAZ>Wx;Lm)%v*jN)jenjia@64XyKQeH
zI@czy*Ig)rJ%{YA4WkL5Xz=J)=sF{yWjQX4%*XT4cIJa7<FbJ1+Z+G$96a#4!o^|n
zVDo>_-SvW2dC*}k9SRh^$wRP!bAnTp%X6aPS;cY#<2pd=>TcM$?$ZigeKU8udg4Wi
z(tySIT3CS(R=8X=e4gN)V?~sI(Z+Z%#ZRxnKYNb3bsRaua{sVKM;lR@R1gO>{8Evm
zY`mA{Pm6g_4F;6^C<n}D6OdU$6t%g+(^z<q@HJlhbvR3ndUF##$6e_f>wW%zd_iEJ
zuVd36)#5c({j4oIN@Q@J*CrnpeH1T;au^xI&N)ul!ePr?V*~*xD3q8^nzcLlTR%!l
zMJo#c3}-YTC?aOL^QRNwUr<=L%SZIBWySPlwB{@jI*8UqXaRzmgM=zT=9<6-tWq}x
zhpY+U-z91oz*t~ki!Q{na5HMy1$E<D*16aGy%zoLhf!vo{KS>o3;<CsYX%UuXweE7
z*=G92#uLi5bhiP3ML56Z1@+L|TUF;cjUR%4=CQ)3T4*9lOOTa>Q9kh%TA_v*!2UCz
z?|}466-XUfJ2fOz<fVW;s*nX#L);*1$(W=9>=&U!C<5*g<gb3}a{x{I02tG=&`((?
z&GhB^>+3i79A|YKx&Bf3TG{AAFZ<uClD;tI74SYZcU@68?wqkM)ZgM!FEh2Y>CX10
z##0~1qaHZ(IslM^0ejH^7VV)3M>krhOebAr)-;mdFhQ89mKI^^Whwi1iUwpmuf2eA
za7|ZC159haC^4?<Vr!G*3xHj;ZJOBXH#4PPwe5`VXhQNwHgctc_JCw{<v@({>D{F`
zi)g4^4M??v#x<uRCgGzG5d9%1{ZlzDBy~fq3%J7c(UX4VT@{u-VfgxhrF2lY(kT)E
z+wv=zDVlh}i;0k^fi3VlK7et-`0HJ)f4l`?^(?TSRg$->+QL`v=@w|o>s{Gz2po&#
zXy}Q#Vx-oJ9VT&)+5x7OX1I_KplsRRqn`LwI|=0@A5HI_N!x`EYmeIba-mB))c)`|
zVT%5F9;<8!cBt`EN7)7Vp4TA+459B4%0acH>i}NEkS>gfjlp0PRsb6BIiY+2Lxk*~
zro2b0*(!tqW>#Vzq2#X{@N6&_1wXsG`)&`GJ>gP?;IOmU&|i+jfluDW-70B9_*t)_
zeE`?)kN%PJBGwHVDl<b6W{N~0wb>k~!3sfW_~Cpy-BDy*`Hd_F`S*){7Wn|o?m$0~
zg3j;$3F=m#5)ofw_qMY$8Pp3aGA_IlRwNX;+BEcD+<8n^vDhc_$Zr38BjFzukf}&-
z93v5PqynYt0rk%9CmizOvKhoRrQ#df!9timc>8pb{~V8m0VVg|M<fVQ`PiB@FcGTo
z!tZ7m*Q1o<8y;%eBf}|e*EWEuco6CcWdQ_{?5IW)5x|Tu$yE<m{^Xj0TP5FAe^D07
zRRW{T`3)Y0gELQX;wbE2sJH(<gY|qVC>?Y5E9j>;d`WX^J3ofjwx57qHE5{XSdpH`
z*vo@3!f3FxVC7ubm(v~-;IAwiAjcru=<Qox?YW&%^Ux&l?Br<LY+K&wiS<+j`^!CO
z{0fi-;3X+bWxplXFF3x`(VvbWoqiSmHXA0Q5SDr`>}Nt5EjirVk+^@@`H1<jGC>KD
zQiHpD>BIH#a!-Y|@y}qfn_)CB{Bhs@Y}=n5ji<NUz2Q+ye4#D(d4}fx{@mbUCk4g6
z`X8RBUs@eGFRLLdh=YwSM}j+doCN=6n%+&>)`Ij*Z>kx*mu1+2ipDzct*;cvMpM0T
ze{!x-kCY@n=&QFs*Z%iN`$Y+w&l1I=G)ufuU-ZGM14@c2BAO=W345ssoha@=M#asF
z_|fOqVS|<p!EJYL;W|1Uy&cs{;*>7u?p3H$a!d0_M-e{-guOX}L_mWSktSjIj6K?S
z@7`U~)!%~i&gy2$r<eOz=+Y!5>)Y6t@$9Dcsv$wrQr{)QvV}X-40qHjM(|K6<w!q>
zOn3CgwCZ~Y+upouQ4vJD5<kfcQUh-lRMi97<KdGw4szPTGS74OZ+TRPFHH*U_X0f|
zv{(ri^&&{?>pU+WQWZ)nXYii5x*-dNtgmheNp3(|uoRt4pmvpG+X_Qj;udEo@e_rv
zYgkz~rb#9=@YDqtuVTIhg<@+$<#c>w|1bb6(e(k!>sskJR3E=_d)HN?hE=<bZ`0{!
zV43yoeSlVN$3H?m>XN%v4gcSka5-kf^r#j3T>NGzo?$|U?BEC5S6Y(|XZQB5$Y_2|
zgURL@XK{K!&f8056S>iZZl!fbrIcGh*4=G5{LwVdTMu=D!?nsZeXynN9+xQQ2NF2`
zsI-TS<cd$>dX?><6I6%nCuFT!AiuWQ4FcVnLhm5%k&W*c(B?o&4Xl6y#ghy@#7z)l
zm8W5^u{(d@WVOeDmGkjR&qI$rmxse61F!M)A|P~s!R!_LE2ob+h27y?p}#&Dsdi%)
zNt^_Ay&=Z^u1oU+TqEA*{bH`YjIVqlq25=Ewys#a@o(B*zy9UEOC{gi>LKRn4Ib@O
znbQp8gTPUeGhy~ihc@(vxe8(?`sD;Lwr7;GRTr({cyD4mq4f8)g_LgChstdXw0rvB
zX})AxlzX1@p^rA*%<kj*`NbUe;yp}vRq0mAH_fRwa;*kzM@V`5KCcx&YYJf<wlVUg
zV%8Vsxisl20I`rrI2qy^FQR?o1nl8-jCs;PaEPUE=7t>zth(S4NPg0WB+MQIppof?
zbAa^oSmz#pPl7Yhd)DoIZ)y@>c_Jk=LK>00kiPk1N;)e?^L%pd^Gf1O^|LGY-~?I+
zr$cc8=9Vx}{r3ucRw!on3Gt*-x8`Ph@&aSDs!%CtcKbZss&etdC7+@vL$e*k**uUJ
zzC3h&DcyY^084KL)vr~uxXHUgy{jsVX#k*EInwh=tYA_xPsJ){#2+?fcRHq4QYJCw
zUcCLhSnRl}s_Hs`o26ffYWO?exk@!6mT0jbL+IA<Vz$v3;~pkP1&n<sTC>czZ<b*h
z4ErrnXK;-mI`kuzr;eAoNmA;Gn$%O6W%u>=O^%@KVP(r7Kti<yxEu?-Z$-BB>rX2u
zMcA;MN4MdPWBQuB+AG>!^fHd*`bdJA@l2pZ`??3oQd_thuxu5K9LWSx46l*MK*Mu#
zvTd1cDr_B-=z@MfB1)m)ojZLioZsJQh*k1LCcz}8I^8U5Hqop%RiETwnI5GRmZnap
zV}{v-aP#M3ld@-3awHAzlYDXjela%E0T_6yw*};6b8UVM_Z-1>RT4Ig9AGw<67(vG
z`w~;%Od<Smx1D=|gmonZ?Ase}{pFi-MlY1>fud?1l4MG+9=mT|7nxg*Qn`CN`R@MW
zhJ)iYZMs{90ok@F-BiN<thQw{$2xFWLg#A^C+{}EIn#|>o?n5z$-tYsp@~~}&CGP^
z>T~yQ2G7jIEn?@-D#M<O?E*<mtj>ovp#q&fdVR~pDl6v(QWrpauIgk<#8c@K1Lx@W
z$(KDkrN@W`-<m*LQ9Qog^wl>EV#utO6Lwu-K8>4fEpiPo-O00$8(Xm$e_Gt_Ms-@I
zTC6*2ha*{tAdAI~R5@Gx9+ONpW2+xy!~6-pB|-23+T8N&(D=1zz{0zK9oe@4&Qb*<
z=B4eKUoDr+$GoUiWDIW)o@UmV;{R$?iBkYMqs0WhculPbKdP4GE3R1cU_zqVtTeQh
zZEbD7Jf9$QU~nB|AusjKsN39_#{j_dVCI!@p28<M$VSz)zNtw1$XWi-<6KEg8L7}~
zpABTDZWXG*L@)>IU<%gf`^%V)8YI#8B#mgW-o`)>a4x_`!D2sBS7WP=oaa4c5@%u^
zgF!3xv}wEs@4j8zP&(V}l6fVgU8SR_@>%Tey)dmLaB19C5&+*lr2Y$Lt{_A=9SK?O
zaZjyn<lk=&MVNZBL<LY@L(q#&=5nrbDXnALJ|kSRxZ|eFy&q3y?t8fhU@TrbaV&uF
ze>foH*xrR{>{8}8vjVQyaO6}4tKK^Z$OQTh*(#Wi02T4F!Sp4U3vQUdbt>U=Na~Q+
zKfzj&h503PF9WyAf1-QV`T7~AHpdkA+YV7nmSmU>^7Hj9+vc0~=d#!zJGbYo?N0)J
zD3trS;PnJ{J1MFAJ=sGhtWaOpT+&xstIVCbo4Ig1)-JYG4NvV}w%KWzYIAf?72EWk
z#;`w&+GyRVyYbViH=mc-p<G%~xN9Xe?-FP4xU_5u6|%fC@r4ugeHQ=Hw7YLrc2HAv
z{#)kol(%-IIlj}3HvK}a1yTG@(x#v0^Pk)%Xf-uhCvfh$vXJ;BtkS*@_+wtG?bs-)
z6hswnS8EO2`@RXsS9Rp&=qluwR2lPMJ-(~sL$xf#kH3eV$lSv4>6`fJiM%jJHEpXU
zNm8AF=@FJ8%vxzTuDpP25c3Bb%VYCdlyBX6p-YOpaJK*w!WWT<Sq;XMIna(+-aNaz
zdvx!$6Cn7ShU~b;dQtc`iN6Hqe(CUkmpC`A(_VK!fT$9t*r#ci8qaw%<E5pCus9~t
zTC<_%;gxZcht87tTOg~3KH)yB$dtYxBnKLcF#PhmLyOn$26!mYh?s`xxG>=nVtkEx
z-k6mh$;|cl;=~<2Vn>}?XH!QX?aGDW%F<azkV1&yZdj+Ii0R@xJRzjVH0{A`q`6LF
zY`I`T+$Sf`tq4C1OjFx~K?KYFoLQ4=k?9-1?viat_Qrr`s9@W*0Q)Q60%Ol&Smoo9
zt7XU~!c~;nA}Wa`XtMv-b?5z!F30F$<-7del2PWw65h?riZnS5T%2Y@d<>flJl_xh
ze1qMw`Jb$Tm+<m69^A5gY4gIi&*bGA>xaKS>P^6I3=p>*_T7OZ#uO4(shZ-fNzv;}
zqP#-UW}P*no;^*aF;{nWzx>gD8vW*2Rl;->W4fa=ozhqFE9>sMy662|P6__vRv{`#
zYOy<@Udq}BCo^`0OZK%ub{s47tF2uC67YiHVsHX4J=sdBJkdL$Qq#Iqk$JmDpk-0Z
z?YhD3ZJi+IL$k5VkZX57q)ejsi+w`GcC?mDJ>K3V4d>&es=U&N7mnF%5&Gg4Z*jt0
zW2@WqR(Y0WN3J9fY#)tg6YNEq73*rscjqCy_G-Y3)#kU#25)xn8108s#9;^ym6<~D
zAL%dh+LeY(4DF|x@)9Q%FidCWN@0xE<ScZFvXZJvwC__WmCV9A?&eDw-EcG%zng1!
zPXLIr1zRmQ9o(-gkN6+Qo4`!q+nxAsa@BPO*6S|XWQ*S{1pY?|x6JBfgr8XScH*4G
zu$4=te$2Y^h`_q@?eV%@XeZW}qmFmf12n0r%yZb;oU)MKNXgQZe%tRai@af>us<=D
zv!Qa7!Lm^w4N2ulm_oHUsi#6^oYWxC!u!Yzhs{cp69`;N4Y@bN1J|%*w^IpjFfSx}
zYcL!i7w4g;Ou|>gM4!)^zMbpZn*W++rK^MnbCF*wN-gO-$lA6Nb0tcbX6ob8IW#xP
zf!yim$g&r+m<?MyXe{mVaaimaj(o2oez&2;9i_<mY@aM9odWj@+AktfDA;mi&-FEP
zD&`ekMg*Vz^1i@U6}9Fo#r2Sbq+M-^DXp`oE9sLHn6B+Mx8KohW{k6Nxznn^E~85E
z2u~zsb@YQ5(Y*T{;d|gT^6-f<I)3c$Iqtg3s@|+a5qrcc%aYo1C7{FCSdubax5u5^
z;s3F));H_EHoUjaMFv}1#e0>vg!V%pwM2l}o#&CV!SgMeDv0{{Y@lZp&O>YPXd6*N
zWpmedDPBAm6g@QsHk`&M$6cnyZW>k8qcEX`;S83;Vcpzyhu&E9ufJr>d`vB3>B!%@
z1}U9Q*33c%^&eeEn>W&qv2s)lf81_!=N~4A%}b_ayBSN93F*wu^ofaIa6=idhs+R}
z3cLK=VbU|e$d|@9Y0VE!m_&d4EpdhsMK)eCu@%*+{`RwH&n~DhVQ9*$rpab7K1l>G
z7)YnOw;ku>oI5=+cyU|aI-ge)wuGGQi8M##C`Bn$IGCL+If@bqw)sO-N{+2cN;)rf
z+HbSJ@Oo8$IDf}{)lFsiP<I^)?<oU4TowN-qdj7d*WDETi}eTfy?O!vp()9*(_J6e
z@TLl}{fhNIqj#GA$J0l=_iU1Jlvw5Ib7gg6Kz#CU<mKLJ+`LQqy=W7|qCrr<Tsyfk
zrr+-&3LbA{Zd=D}?|?GkZnJvaTB!OAB${;U#c*iSDJzAT@k9apzUjH3wX%iGKn&j{
zEx+Taf2AoVAD{^_z-8pfgsXCQK9R|2w_-z5+v<m;YZ-9B^A~2;rXYdamBC_Byv*><
z<H+1khnOg3uyIzk;^flsm~7|!I39gKsu9Lhn~;xjCxhkFuLg?KS8tz@wA|X#Q7GU0
zb|Wb|AnLtxql;<I$R5Ua9}uZhMd+6;SHiX?6=zzx3|yz3Z{FODO~o61+x+vXCvyh7
z^y7FHG5MVKEFNb3yN-bF6<U%dxyMOjHi1g>bKbUiP09H(ONqWW@g}Ack48WJVyL?P
zP<t(=vi2b!PYSi=J2_J7VUQDv98DUz4l4f{cN<9cZTWG<)%kkYoyHMdrg^faLrdR}
zN<BG0r`@<Wu<L>m%#ahV(GEt?Y;G8H;k2GMh`TP${x*Xi5w5NxO)G+M8@(c)d9Zvn
zhJ(FdIi4aaAwK;Hk~9bh`V7mcekc`8O~g;lQ6)l9&v1w2FR9+|y*QiW5`GB}ZP>3n
zWaA_tOl~eThJVpTGkBx)`ohykJl){-tDn~*4daj+*85e<#aU&efojDy?B2G*bMf-T
z{n^c9KHxySHd9+Ptd)g!U(Q_kSXRAI^!<XH0_oSqESI3Qef?&|ggNG2-ZhijXGcNX
zdu=~kaKk|wKP}Xag*SLku&>Z$)~1!T=i0vVlK3OM9-|92fL@iE<eMxxt1Lcn-D=dP
z^6Xe|h&&IfQccwIg(=QH{AsWi6eW2P5ht#=lg}K`x9=)<Tvq|_Valtw%qOPF#-O0Y
zic(xqBxDUK1ovGDK@3E|SQy|yO34IF)doQnZTJah-Dv}U?)PdEy`Mp=5sWrc%qQ)F
z-sog+%UfENP=?~F+`?-DPd<{DA3+|gu#eFeVl`~jVY8w5G&bZl{Hk{mB0yLCq%vVK
zOiXj$w0*b=IcB#a+*gK^hoPbGZ5AiVvdUzpJ3N^v_nCEgwWwP9WGag=9czFDeq>y3
zh=mb`%ogCsvGrBctYKKB6i;Aq8;9kzaOCE&J9`9*O205IPRYQgq$0UbD^fVUkGJQ|
zP=dRlka#`#X7C(a4_tNPuR&$R<;o+C`(&Nh1Gr0h_oWmKYh2BZZClhA6KYC!e5b`1
zGx${kLqeu26Ox&(1e~v;ESpPpT~yLpfF`-QwSe7vJT^DEW+Z}Np6*QI7seX)Qf?j{
z+@ITnTI?LG%${FV7>?cOcoM{{L9Z@aRL-oIQ0ukL)&Z2-OjpJ%v)VMScs~6v3A_2O
zro(vB`B@`2r9EfJ<%69MzkPqO8@hTCn?Ze2o!#~D4u8p@(TNbyst+1qO=Bk$ym{!T
zx!R$jlp{I5>-2dLl40+#AH8PV0gAuDiH28g!%^;qI!brT`SDg3ZL=45(hD;7$<7?}
zuOnMo$ZRy>k1EG>_9z^ZldSm+GAQ~-mIlvp8ZR<D5x%V>O(-+&Hu~OEc;da>p~;0E
z_2ZT;Y3_kMiXY7$XA0pi`6sMFu;*PdqM2Rgl?~kC_NQ5C?luo1?GqifWl}nH1T}6h
zrDc{fu(Rks76^o1=Fb5Ybpl^*g*u294e*naOxiy?w<P!4L9#Ei9}-yP!YAu;e*5bp
zBGs;8+GIvjiP_>(a93%goN~9z?0OA??tF|-ck3}e;yis2o7exag~b3T4L7d>HdL+h
zO(vT2jxFCFclD#k3K!>!NpE2pA>n(m_p71`HCDho<*(^hkUt_H=$*Ube?F<?jsMY1
z?q?`HZlj#pg#vbfn1)asnG?mvTbQ!dl)O2kqa-hS;|rP%o@b^Hi!+yeFtD6<S)FQ4
zTz>6U{$T2cI1yLcwO9th&FWHjt-XpH7L=!d9tH_7BiOS23W@r4BE#LqCaX~?uFeXA
zZFgOUZ)`LG`TXMM%W^WD!W@J%ndQciw{c5=4cE?UR6ayAG|C88QZR2ba{hucE=2D8
zh*2_J6}d^wp{cJpJ>t&UOq<wNlJeE}^91st5AL(LpViZic-nAdX8#JVp~DUSz0G?Y
z=M48DG`4Zj-Py3^QggfNnR^5mJPmMO!piDb$nwjZzfXSBjGTIWLwj-w<bi_`?%4JW
z=8@V;#^o!oHIud~Gs~C7Hn;@cSe;L~|J+_to~#s1#$plh4B}^^S#GXhlJ>lCa0lfS
zbpS3w`HG~EK}Y3HmRR`%q?p!0*qR!ozksgfAs&0m<%o|-+n^1Jl{ph|+#FWbl{^V*
z=?<F1zaTN}(@Op}bX&A02XLJ`6K-wcYz^4rg}9STY9$s1nPsz!wpwTVybe9znI&_K
z)>*FyPZsI6Rmb;{9c8@bgc;nGXfS9E8XP8n{3MJhAJo0fCza0Bw1ZiIQsxLY=35`s
z979PMg4b>c_rvH(Bll4zVf$Of+gaz^E4qd*X$oczi)wIKlO^u))3Z|S$O&nE?;a*_
zcDq<Kzg8YPAUE!P*gk^b%f%<qX8xydp_ZjYFZ|u<r<u&b2{RrkzME8R_u)22U&f#M
zHiQi6csd_Aacf|(FlM-zU@r>-ma1Efnxu}#`zphQ6nu7%^-s_^<5vMt)CC^RD$$1<
zp~`m+h&uhxp30i0ngw^I4$y)b{hW61RK}0tx4EzQANb1wBKTmfWcUrn9ggnXbl0cU
zO}}^VV>!_aRAp3k?=j3LZGE~%+Y+_6N-Hicy&)|;$XM1~G-AHX<4SQXcFX#Xbrpmo
zK<NMMz^D~JkUMm#w=KzW@Dv3t&C&Mt#Eo>6p$LoR^bzR>EM@a~<r>z2^_3cvinoyv
z@*=y)SX2Ghy{5rm?ia~@Q{t0Sb!v+a`<+22;4%K*a3a#GO_cdbLeA`B0RQBa28VE*
zSinr<(MJx$$h0v?dgu+zu|ZzQI$G*XA}Ft_rX8xZsLJqE?Dk)32vn0J+6PxzWu|`$
zL-PPU4@`D$S9W6BFQGdjn2Jx=1N-N+saH+bK>}3bom5(!ivRLX?<!XsI8rm4qTi%>
zm%**b4=bY9;%1Bp+Uvr-n!g7Tf@*-l407#!f33Zp%opf><52?xzSc<_#{G@kq!NIg
z;p!UTPJK&eW}2lkx*0n0?uT0<RNfN%TH;kaPR;BJ7(kz<Suh##lX1Kj<>&AD&eg%q
z4_L@LB+PFr%5Ic?O|x&(kLE|IN~Gl8$JOZRl2?@FDOX{G(2E(`%@H7G*$e`Sh2@{f
zSZ1V5a|G#@ck>UGemlcbFBDCQjqD85fy$8lvtrR<CIGDPJnT=g)_(N0>NP+}cS^rH
z+3xLLYHe!$)N+w&s)9kQy{Z$2B;gwgEC!p2IuU(nvA1bxl&rR|jJUYCWv@EgcRwAd
z4MLsLR<{~6V{e|?~j_$#=z>7LM_P*LO*<#NtWIC$RY2C*CF#1gIi3Oo7l3=(&=
z@u@NhPxeC*T67nJZY!4YW-?_9JSJu+ftH$pBz_CJ-GPbHBdHR<7zk)MOeY{=Y^mI{
z&@}NPFCyAdcd3Sla_x5%4a~>8_Le*aRA6(6h78@MOYhfWyi-eXKUvJyXLYLtIFJ0w
zQreSl|7i6NiNO$k*v*8~!mrPb+j==>>BO7y1ofMiHRC#Ucrw2Lkw+&@QF$NtWcWRx
z@*aor0nE3+NAin21zI|Xl?{oV12?jMAR_5eNAjsogReJ9n_;Z8S1*1X6DCeqCFdo3
zetzOt-0LJF3i38Vx%~m>lbcTLGCx$U5m#lre)o2C{1Jsrjo!V@dV$g>mZtZ*s=h#x
zE1@jH*2<CGmm*o>fob<%)Jwe0P4*X|ldM&zkG(k@RG__N{+PQ^`gOmn>P0&V+(N4h
z{3_H>Q6NY~(d@3~*+PfKRaMiO4UpbjCQz(##k=nBG2=6@+wJAB*RLjc%1d$AWqms!
z4E}sCDD~asdP#$0E59Y1$&u!x6jHR)!Cezb&(|11m9PB01n3~9<iI74{_1hNxhBDp
z!!^qwz_pD}p~Trwt3MfcW6Sw<3A^kbRkC)G%dSIFa@ExuB;y--Kd7b!!Lms9k1Ins
zEwW-nPbPuI5>U9@%fB_B79GO;W}-8)iTPa;eoLh@*q$b?rtg&MFRbwl04QtIc%|ra
zepqfJ@rRekIR_!^pA*)^@NLWZEFe*OKV5J_wRARpa*FRe7pbrj%bIaO5x&4CT*3`o
zp<d(>mVRtmlx|!B`HUqaeiM3#N*KH|3-Rf70SYU;$@$;GtTUQB^(`W4SPJXf;sr<M
z&|zWH>S4%BuCkBZfYcEytV%wvZ=yJOH%Hp{_xK-Z^#^i4mEJlpRW-?Ap8Ui|Y|l`2
zgF!r4S%<zSi`{O`;JQhcj^CbXyjr`X2TOtjMA-I$_<&@iLioFqk7jS~BMf^DTH+A6
zc3TUh9=oBj>)cL?rC7>wCi$ZT)u1gJ?*i0Gy!m7Ir;70O&KU%e^imp7Y8P<!p*
z_^(hFta-KLuKB|%U)sgZ$8OsrN2=z$fkO&kmYCvr7lfL9!)9w3la+rgbu$_io%}_b
z8h4*!Ukm+0U8NJmBg@S?+>uo&lFKVes%5Q<;P6+xwr?ilT6<uE3Z2x2prFwSUT?1b
zH@OkSJ0Y+HQvc1lfUTD%!0kuT`@|c2+DVR|Cee^neQ$>)J0I7SW#`7#yfMDfIvZaI
zoJjHZ2!Q~zD}@ttF?o43g@zJmsFrI)Rw#Qp+7yK}t!29_QTzF@@s6WGt=Ft(`5~I*
zeZFBgxXV3G1Ii|IAZl-SW*<}IN&pRir3@@paxQXZI8;Xbs@?HT=*J|TVpj?;TT}i#
z`7bHqCfT3G`FXSlw@b?1`?FvDRE#KPu4BjCx0~*N#o!%p#-6Itx}fh((lXt~cu@IO
zu(u5C4DR2ju`(A}kB!CF!eHM4G&A<O8u3{z*~3jP(S+VWU0Y!hy%s0Eqd38!(#Bvz
zv3p$MqcSU5tv2hrLB8Gw{Y*W>&2&OXybgNx+mrG5eUJDV8H$dv2q>+^RL6_iPje`Y
zBvX>+c7A~|T;p!w0CD*8y&v@rvs%65n8Br9B3LTeWV9j^*}hntk`(y}#m3?5GgNnj
zRiM}z+`EGaJ5y$sOJsPO;yrQ==cQb9^sql;1Ka7zoK=?$i!=v;4#$u^lgTv@oX=+U
z3+(+M;L;DUQ9P=4?&rr!um%?oQ^LXdKFzqs)5lU8C|wW!faS032NaFYB1sRd>UEQL
zv0cBibo2XMa<!6HO~&=IV()}fof&bg(|3NM8M?l#mQ<2>ZQozb__630>bCp{_A@p`
zDHKsxPV)u|VPG9a>a>!-Bvv7m_1g1t2_%;IHio}yURwm?9=;vDU~&^Hw$`1kN9Ig8
z%cNg}2>s8ew&h@$u3FD1aP4c&MLI}XI=w#6+jS#hgQdAd<Zmar$Z<EBU$rpLi!0w{
znHiCesSl;xtfl*n<TxpFTH<E^!kqfod$|<YUU;yooQGXoeU8iP+uD!mq^QzPyg9VS
z`v<4)dF&&^aZlJ4rFrMCaeaw-&i1H-PB~V=(vsuh*J^{g7D&;8Uif>mY^nr3$(2|U
zyPul2BgAQ_i*;_4y~$!=JFa*rUgb;h(@TH+owAG3$1-3?Mlkae$TQq8MA^p%_Bf4}
z3=h*Ryh9tsslRkUS2QL@S$cQ}`gwoCDcEPuXqarj*`c7Pn1KJiV0G1s4EEPs0|GPD
zp8mIMKu3eFL8@aGx4Oc@B{=a`by)*KX#$kI2sNLzdG-O!kkqzx2LJba@BfP%l3u`)
zW_?#odz6M(Es!dzu$Xxs#16LOBmr3KkeA)R`Q!Vg2XQ(`VcksXPDRB;>EnQnJO$vk
ztOw=X>_k5>r<M9;Vo9k^F=D}-keI!8=*x?r#uqFcCTM5H&N56TaF<^bbxh?jh)B6x
z^-=VYT51K)tHTEe3JGXc`}Auh5){tJGrZA-G=_y+n-DTL@;pg`Ww2wl?%Y|2dPvRa
zgPg2~a2i>ESpm*cPFXOD#J}Xuy3$PL-B-u{oDtzypCnO#SGffdG>2`mlHvQ6oX_j&
zGGc!uNuGr-3-V&-Li5KusC>ddq&NcIQ#K<16cUTUW1Pa%q(>3tuG+99m)H%4IkeS{
z9T&gzpyhT%uSC#sIWPt2QLy~lQ-%u*xcqhv^3N|M8vO0``UN|MYDs;4Qn7%QKkNCq
zrM9}L{QPUAOKoFcQo62Hg0U`PZd0z=`^Q21Kj(~%Rs&Dp6_*gKNk=BULBjs087Ju+
z+{8#4`b&?88Mg;!C>5}~&BeOnUZ?uot89uL#${$MJ)JkZP$&~8=W-$oV*FK=l)4t)
zTv^=>Vp7$+dcP@qx;?2MLbz@(MxFS}U@gMo_HuvwYqrH&p90yr?>GPK3ec~58gZ2}
zw|4U$CA=iDQKy0{3#)2@eWmC24Ek7P($8tzj?-~)7X5w`)~($7IMN<`p?^?lvwKLr
z>c>V~m?MVU(&f)N=ipZ<EYXiH8+Dsm!LXGoYf^NW{E_H;WRZuOE8&&^NZaE2NbN#2
zGHSslO69g}I1F@crCtB>@5F}-s+Hs_RY{qsmm32V@-St7IJr`BC`qs3wI9~c!_|?w
z8`xx=riD>?0&%Gv$?}b>z1Ft<3mYfTxX~0Ve--bQH)wp`XFWoPtKG4Q+?pSge!8WO
zPX!12IGBv)9k||h+X`ICJ=dA4vX&a4Ig-Y-&oV^jf_q)~w`c12mms<a*QLL5kkhnJ
zPj!~FCv@&h@*@TV7255qMrW>cB>RJv%;49n?CeZ8Zrpgq_Pomz{^0CGWYhv?)3b}~
z{9iu5PXl&yC}$ycqjGO<fYHEV{QXg?fcmDMzrAnk8d%QUc`i0K$|_eno<N#$nViEL
zrq^bUHaN0pAO1hazB`cW{r|s|Tb+h(ks@)Mwi2=_Y1kZl3)Qi+WkpfRXc!@zW6$h8
zLLC{|9HL}p@9f|6)&1Q2t^2v1&+pGWaL#)?U(e^``55Z>AAVy--cEl)_}k=*z1_-e
z0<Vo1LTqvk$9RavHpaGmmP5I{8ZJ9{Wq<xcyyS{{v6q&)?2?sYlIkWgR)SH#6|WuD
z#xTZxg{{iCLdFxm;>tDdXpX;s&h7c}3|ZTPoxMM!if}FiP!d-qc*NP5i;b<mS0ZR%
z&X}BM;tX=ZtLF&x8hB#&92im-YPgwjeXS3>0L*R&Z2cA%FU3@N-}2<&f8nQh|2tfC
z?HWVt9*&`D0&WAg>_i~<7-MqDHNeOL#r?Er<FF{lJ>`nes~1^7!g!AyVQz)l1PZ~d
zrK|wdp1B@u;BaHacPrJ&-Xe{uk0nd~EuRJdakYQ=$IcVmFYUDljJS$&zB@#S`rZ&h
zA_qSM95FV>aCbVhW9iX{`(Rc#g%PoCNe=N?wP1{qcRLs0sYuMfbHd7ZkR{)d)}%Z8
z9q0M;TGN?GDa6n6LQBK{AE3!!2g{!?5z~I7^18-ParYFG8a}nbdqO?VoWxh`|1Pc_
z+<b~48?GnIB?Tyzh>eFl<9Z5#-q8cNfr!A+Oa0@-Y?H2LHskjOcH*iS!%rxO0EUn*
z&>^IN9kYk!9)9tk>%mWeT;=aOx%=Z-50jVp2P@{9BxpUfT%?I0lcUj*zcu~}6w+y2
zdefJYXV5AfFR6e^m@NPdFhUqy?r(>#`{GTN{VDr{0v^XJLqhi@L5$Yl=jIP@`G4>c
zQN5iHXaa8ROYhM+9^l~J0h8&i3m@%cdLcE4FI>COI&mFLf>6E`O4>cqxVivXcOGzx
z3;8MmLeK{`jaew9cBz6tFRM0AxbK}i`R;Kj?^(bPFN#zLdbPCvjGCc~K<}!hD@-dE
zYPXRa41$`o0)Tgr>q{q4I0!`?*@h{q)#!@whcC9hygz)f=k&)Jpj+I2eXB7SK!Yxj
zRrD0!f@#@0d^itaEISwQ?t0CVnaJ0QTri*12V!|X1KV=q@tJUos+VB@G1oK}R~{qf
zv_*mT?RAj$IHYa=46kp`ve7XfzBdhRLp%)|DB++BekrAc&wTe$$OCDI2noc9?DKXc
z@j5WxL;Z=?TE|hf!sX?7%vt;;qWC~d&kbZPf^@^=a!#Y-^sEv?neH4I_6f7OT163>
z7;}ILe8Hl;uMn7Th`nSGx4eL`qq<nyb2lFJo%*_gd==qCUP;veLk5i{7%#4*E>WO#
zE<|iS;YOFbIT)mq0%=+7ViVwynBnccr>vl;Y$BH^b%C3F1kt1e?~8CzbnQCxN|%2U
z1x$nbY^N|?&bVKEvpbDn!}(mMYh2I`QX61|<2#mM*B*m%QS<q;QWOH2HAW=WjXq}g
zA2r^#W1qK4vi=$hf)O27F-pq;)R$Ait2w=+q`?u`-R;1Vd22-e&DtAS$HH0cwim4)
z=9u;J+j9H;a2Edfbfdz;a1nJ^%+v|qREG6m0<`@5J1_O6fK7&(%W3i=|E;m_PZ^#}
zWEzPKe6Me)zW4Ci@`<26iijhWMPW6Z;L@0<e&kw(!V{MWC|y?#_bo3VGtO0}v**Fm
zP@w<bws9D^xB{*yjsb-gd441Rm?c$_`R;GJ9pKJ5;*Nt%vkXKKhR9u1kF2fKv>*rQ
zne*C9%Iq08TJjPZzQOMjqTXVCe!Ntl{lMNLU{#!0UGaeNi`B9RIbEjvI!^h;r?B_7
zLZF-(auTn*i89KOH%mz%NO27nl|#rpk=Y9Is+A?vTYP^zG^(FpK~$LmB7C9J$ZjRs
zSZ4>WEoSufukk7D+~kdGM@`Jc7yV#;_J-{k0N}QOoE05-1Ytl(M%Ne?;cf*V!sLsM
z;=T8wqs81;iEy-OHAy!zUBh?ykSc8C)TpwEieG<OCAl?RH@MJ!?o??!nHaNiJaF^K
zv6S!SZ~BvoGiw~?cyXP`Ec#rdMNkJZSx%ONtLK?QhQ>R!bi*r3<zrA2{KnJz{W#yi
zHjI{PrvR9zOduLkup|m?se3-_7XP+kQ{ynm`r)N#WZoH{!W>{&3}~FRTUcj7hEr2K
zz{u>3G{jqGe%#uINr-6wOxoHEk-HpI22k$nvrOdi5O7AZUGr?qIHbZ`o!V;-zDkZ@
ztYQkH@X0l*Y=P0(7gED1qFvk_nlH?A+o0zh&Yde0`??BYshkU`<v|2Ne0+S7R3+?G
z-ucYI_?HFZ0TIi6$m6RQ%)`J6AG2hBdUpHn|E`XIPr6UDMMq<o-s<lFTz%-m>?yLj
z&f>Qb3Vb2~udun#vON6j<H{eIsmm<RfQ8z#X+Fkn5*6Vn%BI)<kGRNZ?pm0yjGYR=
zIeoC&;t6N^^eLWDnK_M7UL)ZX?}Wbf`GpHPUIE&Qx|%*_F@Z@nfT*cR@Gbo8#bPPw
ziu^&G1B6cZ>1qJtgOXCr0v1)|m_Oikm4Onq{$+Al5IGqDQII)FpzF8$S{v5`u6lPU
zy0=^iD0-g^<MH(?^y9O{aNr1=$*0E;?Zxg6T=1rg30GNEJ$&k18};|;^k2^;w-Pnf
z`4a}2M&c~32)gJ5US6(7ZsUN`i29)~eJ88J3w77-7p7u39SQH7ojIl5BEVwgOQ-nO
zI1rV7QKc`sbckTB@bt>oBfZIkf%5n*8pW0#-SJS^&B8g@k~MWL*g5Ni<4SW}!F(Y5
z`Xy;KbKtmo7o}zux3*5ncFmbo8{aMAei+D^mfZ_v-T~9V)<U$?GAoy<kf1l1r~A4j
zQ6bK4IE7+P*$*Gio*`QPjGO+w68L_j|9lxNJqgc^`btacLYTj0U~b9Qx3!}4{-wOK
zk~~kq*48!UickWrOt@gzUVWelvtNt5rx(qZE|pTeB6nRZU=}NSrOOmE&om$%tl<E*
zHc17MO2wxBGhfcX;i7msbQ+7b7)E)+b)bkX2G7+dwy8-9AGNKS_R?LJ{6V0C4XM#g
zR%WyFeY}0^z(Sq?;^GcnV~`u%yD%kIkqHI2nS8)D-h7c%%g{#-jnXpeP-1k&lDK_j
z4Zm2|nYtuJAAL<GgDj~Lf0a&oa0~aaax`0>R7%gH%Dq%T-to^LA~1v~bwowXa}P?A
z7^D%MT_=~^T(+rjtlx@f@Xt#8=(1|M<e!zaCa8>}W#utv^IbXXR_LCnkSSQ<px$>Y
zUQ&=&Qy~xv!3G%_3%)yg+}~8m%n~{TvyWVcUlQM4wF+lCd;x@+dA{@{-ZMFi??;0n
z5<jg%k<mI*;7*Zjv8Xsb2<Nm-9x^zv*r#w$J78hpbpVuaoqNX)5C>tAp9St{<)(sw
zGAz-Q!0rM+2<TVaG4Qo|!%r|w1`$ZUsBd_CrlNwJ6+V$ECJhcyGrkY>I2^9vx6=S^
ze;pFqy%^V5gc4FxQU0$~dgjo<)mo7aJy+P~oCv;I;p}Ck7PmJZA}DIOtVf#O>QPxJ
zUZMH*yR&sWh8<eT<o>G8qNVw{+t(|0lw!ob00?i_8xD@XsIrHWDFQ94*ftM!1vbxu
zgK_-fjgy7&l3TGod`UdV9j|6K7qV>ip_I^xT^)6`a$w5GGial&$lXoEp?1maoaDwM
zke#w~K79dxxsJ)er}AH4<ndi(Fkw*IgUNyiGGbCBu(gE@IfJdsiy{y1AjRn6gjtW7
zkfHo$Cz(=QcxI(hsdo$+TZk1)C*_{P0bc?4WK4EShfdt8|3rLb2!;Iu*jS0Kqq@Ym
z2vMU&$bQDm8M+(fYGYSN*okd%_P|i}WNrR23|!Qehw@8=%h(7bOe>YRF}Trzi*_TO
zgq8Q7Oxhm?fFBx%$bPa9@_z111B(XGt8Og=ryJ~%QaD??AVEyUF5Mwb@v9j+Mr#rD
zg0k$U3@${->s~cQNzKLKQ!-swFbcSRnZ2f%Sd?^@7W#b!o9rJ&rbmto(HJ*(T@BqG
ziE||%g2H709LeypNl2`Ejl$pAR_Xcu;0+c$@J1cFGA$rEBfIFb>#Ze=h(6a_h;~jL
zS1AB?q0G_BqM*F|-82#z5T}<=B!MAO8#KuVD9}$UkVS>PE3NAv%YvVZFB!T+JSLs}
zoCZi71x>bFRcuW(8GQ)W2xKx~eOGz>h(84<a%1r?$w4fU<rM2aXs56BUorgl(P5a5
z1^jY*?l6flY1f&Sh?rSKfB`x0tejgez%d1(?k0K-Cv4Du*U}kTwF!JY6{Pum%t8D&
z|5|r<b;4njj<hhOG)AUrc?(d%%z;g;Jd#iNrhqyjX}6PM`iQ0sou$Rtz&h*=ph>io
zMJkaJ;cjyzV6(b6`q(}^(|P$`piX*u;E+_y;e~EvLH-?v5n-@)G&}FJ1OX3oMHVEh
z^nTQ`MBa1PX1+!3I8(Mof44KWk2&z4CUe0}vuV|@Bg*}>19yG=LJh5X{&GB8`@w2>
z*CldYC-~;B+DjYxN=b^3Q_LXoaQC<6$fvHCh>W|hr-!;Ly69{ci`W9Y{UAmYXO@9x
zIPwo%iyuoISJR#sc0dt&g+pX|;uI`J9*?_%F;FLTa0iqM<!Y6hrh%~KV=_#QCSADL
znUGsi^!%YqNtp<&M@}43anYLo7^(=hJ)hsGtBk!gJ6ghtS#@~$YjaKJaAd!QiKn_^
zyx<Sd_)m`jyasMg<PwHKT~8$FngvzJO$oQvAmydbQ(h#|_77KpG;(z-$gmlb75>HU
z)a2ZZOsk_d3brrZxd<V%7gNvHq`OeXHm_+>Ygs?5dn<u=4RBR-xJvGooiff&KHyZY
z;C7O{Z`KHnVDS9ZhXrX5_YBEBnb3#Qk_-O$c_r?enO1JqW)UO$>yu17$7@eo(KAS9
zQ{;*<v~5?!D{bb&&mME2*tMY%!ELO3No?O_44u=^SFkoamQ(g|N9(-sF%!b8*dOqb
zAI9wRkEb%gRx#nAuZ{?Z(Tg|q-}s6t<s_<~EYn1|pQ4EfTpBv`o*zT}1iq+uD%cks
z!R_uc`vdAPyrurSXR&P0Tqxz3uVJ6o-Lj%G*z8%9Z}KJ8`g)w$Z**PEdDR8HfEM8s
zhH#oFq#}LWN9QFiyH%K|6in?M-`G=16+?h@PXXf-b{;W(Ki=yyWdDtY{C&?9BoHV<
zF2Hp)P=eNouPvk|HZ;rA>0OE<t^W0+jUW(|vXW<VoCNok9H0yrwj4fp<1!&2hxKu(
z_Yo4mclHo^>Ky`5q#~I_NXw}<bwCGG;elr#K`B;>wAzp98WHs2x;8)`Q{#%<N1?T)
z$zlJnqtsh3n)n*<_n-TnAN~<`#ZX^fRvAyN8A3Qh*k0JT24pHm&VgAM5*<(<7ISN<
zV=t0=hO_(23*bF0WG{NEx>0rg{>u;UR&o`3#ST#IvYtQR62Sfb?c0p``Fa26nou-R
zGOA%D=nm>bE|`Za46r2L$AQzw=pkk7VlTAHl*)GV_y2CVe|S><^Y0w<(Zn4Pjct;&
zvN!E36&f7j60SdoUsZgi&pKFsct43Rj3}4TA)R}uvdg~u$Uku2pZ{jY!(BjuVul#V
zxVX52aVEBS^<>q|XrL%I`lN$oJdsDRhSbO0$so7I?MJj&d8;QjzbJO)8)j*Il<t?;
z4*o;udDO<?v{~z)0k*Gj$2UchzAt>4rAF=FU!nhea1R!Ew5t>&s#w};Rq{EwOGv;y
zAmzftWlTptrS1}hSY{2L)-<sXvI{dFmd~x-f4&qy--B^OvZyO@Ye&_XjbA={rZ+k|
z%2d4!hHu?4Lk-thBYRX(4J#Nq?fH$=mlS1iKrNnt?f6;p60V0G@VLF8m;Pf40tCpR
zo`ef{1>$~qRR84}K82_z$S@XVXQajIK@WtLiAQF1;Lde{ovr2HJBYuks|4alrNb$x
zrmh~c+dcq9@?XX*ek1)inK<?vDH0k#afA4vjzEwoc+v3^AjMubs@fn+-90-=ePhP0
zXh9mca#Z_N|AOu#(tqeW2A;ko&4R4Z6OwM}imy%p`1^cqLf47}79|?F9YDNkW>CB{
zjpSGj%dnukD!Jv9*yX>z^uJyb#(i6drkVHI_&z3e-x>CYpbG{9sV-QT_DHK~|G1d=
zw_l9WU}!D8@3N1Byy#_Ba)u87%2kq|<Ed!E5p4jHvj7FOW6|PoO>@Y>Fq{R8xv`G)
z2<c$XxGj#a|Jt?v%L4(g9Ow2+J`$##85M9-5YQJG5D;KVM)RU3UPInz3P><{$X**S
z8xfw4B+gH#bC+!cODZ5h)f5Dc$ou?M79a6nfA?Q+!6^k)+W@VUx|j|fD-j-C$&=SQ
z?}N2o-UO0?17DJ}FAcKQLjL^i7lSzs4|I8({@W$`>)*K@V3T9CvS*sEKB`@|sjUe4
zRG)O78stjnV|hs4yv6T>5`hstDib{gErh_mIb%X=hW+z@{px>zBr(i?KFB$+WUBkK
zJiGfQ%Pr1X*(c6H_o@ng#qL2~kFLa_0fpep0p9*r5Z(FR{uX?}PdjzOxJUp;9eo(i
zxeNzTzlXw*h&jeVV=*Ad1>eZA2dnyGBp+8^ROgs<qZz!-2(uDxfbJgB0Hm2VoTDT`
z_oX_gUz;qHk{%b2b+N5!C`Ju<g8>6_kQ<W;1_eb7`o3odQt|=tG=ZDPb9er><NSxK
z69DTpX0`#`Y5L{uGv!jJ<)e+6qz>=>*G{2I6mmZa1gh-D2{61TT8EplVs0|MmaIsF
zkd$}5W0~qVZ{mw&hcZ`?M=)?=>5C5XDlpsuUGE}LZVRhkf$c4dmhJ{HaspzaUk}y=
zX+ZkTIGoNo;5Kl!Eb1~Rk+M|*<+_9cB@e%+1Zid=<Y~lR57u&7t{Za^%7xaWPOApn
zNM5#lbcUfig5h80^c1d2PUsi;*1t_)JfliVO)nFfQJ6KH4>;uA0W%QQE?Z<PxUw`w
z-z8O%j*K27JHV=cfHSvMCmKyfJhz(|=2kTU_{5{E922k{L?$8NIbs;yn@OsFV37NQ
z8VCjFeH`gy=S${0gU-$eYrPZnr7oVWeN>`i8`#+7<;-4IixPl{UqF<V4an0OBk;QH
z>x1s#W{{R`Fk*TthGc?Og*@@gqUf9}+TA?U4a&vJO~bZ44{Zn-LMC_F51xK|m&A3s
zM*g4k#KLd}9Dj^LteBNF&bHL~eYoX9HJ{nXk-qBf?Ohz6i}VP!b07%M1{3Vs)DBH8
z06=W4Vwd;AxM&PJt9gnSg=LWErg>9sTm~lNESPm0$VWiue6w4o%aLT+W1vFMG{nty
z!QovV)aWl!{es>1T%vV9m5S!G;i!c*SkWBL@gbAO7$qjYi8L$Vt{=?Nt#E&EzSwf?
z>fl~@cP7HqR5NcV{-$cSnn7wh+|S64zH*}QLzO#!oVnYxmX&~V7NJ7tz@l$xMB!o$
zJki0qyJEPFTHo5dhOPD4!Waq?*HARF2|Zf~xkkKDiAj{YeWPysp>DPD3ObgjgLPuU
zGj9&I1Le7?K{<}j${04^j|9PNCG9OIDclsOpS%2Ja<-lezr8i!d=IEzdk6qxbHJ<R
zG!OC1YQ?&NWF{`cnP`PH+PoGreww?8ME@fC2b_=Z5)>1k=iL5K385T@Kze0+qc<g_
z#j<-0_=~n@QXI;KA+VuIW&>fp5OOdyVh&#l@jdewgd7omaP(5j-!1%qmrFOr1JHdB
z4o^1=DiEZiJx*9aWVkrL5qMc3hu>Vis^3(;T0osd#I8>8SLt1O>$!_HVf&!oL%N$#
zHgE=Gz<ut3gqdqg`S9W)>-fvz`dk0KBLDdTu8E_j5mRY!^JXDmG3TEPY^uhBYqha_
z`3Fo3Of`U^1=T|R<bE4SXRDc*g_*)fJwn5^!Y7bJ$Lww@Wh}&-M2}`7erF!QUEdz|
zkhqXr$e3Wu=@~@Ein+^Vb!|@c11sldAeqE6w}^@gfHjsTNm48U^hbgG>^qzt4IHWO
zs{dgpS7^MRs87)g0zm(rF#7Ory;FvynhtYVC)jb9F)fj5a6}0he|4yJY5gN0xS(}<
z**Xhc8m*?wZX63S-hZfnBg4pm@8LVj!&qH;w^aL!Sv|f^;CbFP@*&0)Z0}IbY8lIc
z@f3SqqQsNg@H=~H_Tbx%)lWm;l3~kgkX8o0ow#i%jHCv9=^p*U-DVwWeVeQ(tV+IU
zv_#evvSa1P;KZU{c)8=>KWxVEZdQ$4)~_eU*l;7m)7=GDXRPeS&plif?Yi;Uz<bb6
z5j1`28qj&p5nm0HSakvQh;nC6Y*eYU$bS$`Q;1<<a;V&cA@wwf>NcWhFz$UCEV~P`
z?0+H|{MC^B_|fG$$)W<eQlJ^g!L`)X?~3Eox}C@rxm@;N41pheobvGF08c`PDN&PN
z4MVY6oMccg(5n2sx1N_ERW2APPyqtXK*sy`QY!6dfg#o0(lW=(B})}lj%ZMYq_Dg#
zZbBFTua^Q^Y&Y~$OWWxiNWLMW4ArQ_!VKqC*1hLDarReTW#_g(2dM;TD2WAD@u4S-
zDCR%=|M#o@<2_K2inM+?Fk@v83+~3OtgOoMkW$h=vHuZFUgeU(T1bs&WseIc1wg>v
z64l%NK)v}XUomENFxr*W_1)s8iY~Ar!T%hv0D6@W3!v6FwD!ka{x6RKFRCHn<Ku(i
zeqd!7Lb=O^_p9n3l+AzssAv?LIuw*uU|Vlm>q}=~PxZC#$}s7_rj4dBaG6U5aV2|I
zG60|(he=l)=+kebz5%5M0_X;p3=LmRze)eE?`4m^mt-Jo=8^L^QOJtvr%I3izdv@<
z9yj^@9pWpto$OJ&eIKt+^15%`UW|qv=;buPc|z-Y6|^VI`XmubbYr8wV+JsP0n+#m
z{4S*a!6*FZX%m@2jwU0IQTiXB!2f#MBIU@R6Q;WXQaAmWRgIdPGQ-9;DgoIJ;JNld
z6jd1*WUYb;Sj=xah1NKhpun5Zedc*lF{^fEU8fUH;yCu>>;5lO9)nx#aT$y)0>Z#A
zSkL%%mWkxzfG#mp{~=1NF>3<|%LL*BD&kWw**;BHU-%jr9&QF3-3;acma9UIBpX(E
zJ)cuuONx!+ETSB5maYI+gROY4e+7UW)-6Z1GaHTR%gR=w|JX093#A=g=|n;~4JC@>
z)gJ!KC;j`Gy}avWz^6D)*rIj^hrMf?zqbuYM>O(bgG;)|QD%TbBwx5yrPCCAufE&M
z5P@%aqIU@>mXM_(_&x0rd=H;3I99n6<WS;P9=z~poC=9qI-!yrC9QCD`cDh%nen=A
zIEC`wiAL5^U`0-Mvt!<a#OHF16jj*DQC~lJ9=@y*_}w+1B&;aVXU@5v>Xp~sv9Ju-
zS{H!q2UJ%#pO}{{1dgJ_!B9bmESu5h!Oe)Csv!UC7c9SA(<pUvP`Gs$3=XL^$|bwp
zNVlExZn0$Ak8RcciA<fqtYvTnYlssMO8~=^QqzLoC<i5BmTfF>P|vHCxs(9iwGEM$
z1i;GZIC1LTZf1_edqM8rFnwFbtAj%yIM8*B0~(qO^x00>$xlki-Q8hmj{?&+{vds{
zOYHXlcCQ1dKQy~+xlOxU5wZ%gJ=ZDkLO#zp^k%vGzI-)?{5Z9-?Dg=ElwbIvO|yCh
zvkJFXIdB`p)10CxJO?|UQjsb=qF%fGNA7iiDEKB}NTJ0E3+B6ZHrknhO>{$PNQGwC
z%+c@x+KjM`)xyj=4&o&%H9Zu?XW(q{3AQ*~^#^l7(1esl_hrQcx$Qbp!U-$_@luJ%
zc-}Ce`Zs_7;6>Pa6uoEmk+w2L*d=m)3EV_F7-)|)m6eewH_XulLbVqG1uGnYgZK3F
zYN{i0?7L|~yTM6I%i-M`VW-h*@cCP4h!hBvIAx>>ZDXB{$wm`0JVtB|L*jS;KNX-)
zjhAnum=7ggYbaGAc8i1D*mkm0Z;ZzzH^7*Oh_5Hk9Tko9GEBAg@iL>INX~^s4_N=C
zpnPDV1_HrysiKy-iaIoPkY}Zjf;<pWjgK)+$2nBb8i6fbhL-F4LfV@?u>3Mav*?Lc
zsbJ1(7#yd_co9X3d1iREbrB_?1Jc(4v<m*R?%s5uI3b6mxAyL`wh%?8?J!7%?6?dT
zU|dSkDRW_G#OqTWKFeU#M{Ab<$APEVLqrIAr|jzBcstv!VUCzY&4$S+B53)yh_%v+
z)lOZ_X+Abr;5a=S&+i;oJb?6<?E37BeB?8V>~~<dmnmCNi@0fy+859M7ccn7XGTsA
z3_MZ6#}U%hi@EAPZhli)HJn)y^eZ#J&)lA>B__$T5L$OyA#w=qVuP;}BoweiPt~Vq
zkgo~DTcO{FA7*8>Qd*C~+w+ReGEIR`tR9yGoU>Kvl2Q=k?gYIxghaWdsVNBS#=TG0
zg|8mQqz~N4WwRW2BZ9U<%}d|7l=Ox$0gbZ^ao$P5!6gDm%8X4t+hP@5{;QFf#|0kp
zcQV4u2H1?T%-UnGk&@)<ewmB8@FlAzl65sfHh;egW2m-OJiv9{bfhV&L2B$FWTw<~
zgA5TG+(6v>(oybqK^%nQJlBYm$^(ZhULwlRf!nH!g8a^}f_!wsJ;Ft2l4O@^upL7=
z%~{s~t!`EBRHvCh?o<X{*OCLbX^crkmZ7bI`J$tziZ=1gN)OEMJ$M3UE?5s_Mhq{^
zp=Vrt@@y4~=+(f3T8Jm4*?(ngGSGPhm_=hnHG$_TJ-DB$SYbb-Hlj`<_iAPEvVYrx
zsl?G6%HcLU58Pw^kWe1xON^I|c<Z9a#+Z@F5D?<-#UGyarB#Oa({^g_)@7UtK@KYl
z&z<F@L%^;1iZqbiwIJ2r+(&{5a)@6am36foK7GDE{R+wB7js;${9eb@LxteVv<aF{
zJe$p|pluwcEQqToV{%FNxx^78-y~RDT#F>!vRy6@IF=l%XC{5*atKypBJ%z|ukGrV
z#E<DJfq|S!{yuTb$so-@yWt+2m|5ov6UJ0D8KFox_HT1g^tyqO`RoKX8H7@cZ%_E;
z7i78*jCSWFvnYXu8WfIWyM%GHVVeNJ^b8R;(7|ERAs1M-JVYDxIIcmFta(R~(=g2v
zXa`b(v9Jgwxf`bFp{z14o&Yt)7Axk)k^5Te@dvyxv7@iJ@;VR`lyiPI^s3Zq^M5rI
zKQzqHVZLIL$<%n`@QSX{B5oH;Y(VZ6o2AT~(n*63Ej-=IN5r~Swo=sR#r40)dTHHa
zIX+N4G^Idax+hBFAoJVj*FdZI#J`c{8js5OxkDV<<Aei7C4@iHz=!~dnuiL&wY44Q
z^Fdqey9)a`Lx9u<yiC!71hRv|Hs)=Ik4^zPG@ey9ADflzzBR7X1+$`hM8k+MsnAtv
zp9*`TXV1M+b_((G+zW7qu4PMp5KHzdQ+i-w7{9J~=sC$|oANTlt&_*yv?(>a!?p0!
zd403&hKGp(i`Ti%QWcpO*OtEN+q&cE{;ARYF_?EKcgex7`}`yixmIGojJ9-_6y_dN
zC$$O2f3V%34!>OBKN#omy3lTFk_Y%@cD>F(IP6)|Etn`17<0CesbDAX`^+7ntEe0r
zQ6@!X#MbR703I#1`Gvg6CNYZo1-|fqHh@3eh^^ZXP%&D-Nv~dbs>P*oT7vZ;%QF|M
zae1s~6ZD~0+n;}4h$?vFM9dVk^781QESJYs0L*j6=Br=Ko?QE2O<<gAv;w@rylxM%
zcts{@5J}PvFl?aEt#03IN2&quKHH(Im=V#d28RK`#tvNA9==ouwwR?!P)EV?a;x>!
zHiQ3iO!&Lu`m=?6>W7>dm*>?CWLb)?nZl&72!bDVuuhy4S_GHBULNL_j>wDmj}nu|
zbuSWOmp(q!!#uJvvxpTPeJ;s<XKOlSwRXXQjPin?739c3D`sEhk=1Z(Ao2159N(<r
zK4gz{oMt=(KBD%vgv?Sn<E2W5l;M#!phE2L`k31Pv*pu2Kj8yW1(?D<#(@?m|G5nz
z0a$jyp^Neb0t>&_yuw2B>9hSMw2A@d05=@3_lU#yzs$<K5jym4)-Al>iXb!R7S_K4
z5)$!a%p=N&>m%aH9Kq7{&dJWUI7w;*i|QS1UPz3L?1mU2)D)ZXEj}buFMSoo;h0d+
zwpI#0U@qhA&uU#7I5>-spJXM`dy7JAjIj@plzeT}maI`=iDTb63;Jj^&I{x++38~^
ziqe6nlA#F}QfZ-^Yr`T)ubFS@I<umbF@cQ0tn@~g!3wo{Zy_$6jXdxMvDjfws<Ap3
zNp5_3Kkv+20cNm8mr5pad{RGbxZG`<)&-Q{9oiyE;lHf(GH#1fw7eTjmk^j%O@7N1
zK_R}yitQON%T3~ZMj;pFP96B<WPm+8gY5;C#Tkf}vKr%-4d!_AQeW)9Y$t!Z6U#eK
zg2l{`%-y?%ZHXGS{sA$y6`^Ew%(vo01ON7ysnyE{LP{s)OL@e5M%WDUyu#uG315*;
z_9K|lwrHwiyb{+J(p_z=^a^%tu6}?_s=V0#2DnhBPpCO;{cPA#BW*L@c`o0<KrPq^
zS+DdAz&-nb2;rgUZ~5XTndw{salz{bugnL_JqvrGDkpahtqT0Mzl4=xz-5Ye=IX!?
z#@>^L^^xB9RQJSM0NOaoQ$X$-{g6kue2Z~Uex^pdAHuK?u%h^DN9nZ};LYZ$W$}K;
zp#>V!h1MN&lKY`b^*AW2mr$tLqQ>GY8Rj`^lkb}6Bjk_w@%C>)jq)@uNIs7B9C=Zz
z%3)*yeJ-FL<$z4U`pV8N033+EbT7cLHw98=T1EzZBzP8=7$9kP5z|xr7Ocy60&YbF
z^!^RxF_yc1(Y8TeYuO<!T6t(zbl|%|nWlF47v!4`-+eI4#xi*zz+zr#4>)%t&JZ=L
zVv}SZ@X1$UwXt>@f3Ka+u17D#{QU)T?lUs4MzZ=SJDZK8S=sBi4Q<ovR!#>BZ~dCt
zq;{Fe|C~}di~VzyP6<dR+uD{VgZ#*BA8Y;nLG!lPb#%;+Vl)75KR&iT*L@ZIz80vI
zvG2-IvY_D&oOW_gHwY&*54{}v{fQ~2T@XmqNUQu73vQ!Z8o`fv0<MW&BW_<-r!5RG
zg;MM~AI~m21ZelTZm!2DJ8mO)n>7Yb$=y<>`^<-RXU7hf$ky!>Ok&b~sUku%0DPVs
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
Vn2yhodJp^~Eg^R&T};>Ge*s}b_I>~W
diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e47866f0..ae14ec78 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -146,6 +146,7 @@ Use the fields on the *CSV Output* panel to control the CSV output.
* Use the *CSV field separator* drop-down listbox to specify the separator character that will be used in CSV output.
* Use the *CSV quote character* drop-down listbox to specify the quote character that will be used in CSV output.
* Use the *CSV quoting* drop-down listbox to select the fields that will be quoted in the CSV output; select *Strings*, *All*, or *None*.
+* Use the *Replace null values with* to replace the null values with specified arbitrary string in the results. Default is set to 'NULL'.
.. image:: images/preferences_sql_display.png
:alt: Preferences dialog sqleditor display options
diff --git a/pkg/mac/build.sh b/pkg/mac/build.sh
index 11d17e80..3cb97417 100755
--- a/pkg/mac/build.sh
+++ b/pkg/mac/build.sh
@@ -144,11 +144,6 @@ _create_python_virtualenv() {
if test -d $DIR_PYMODULES_PATH; then
ln -s $(basename $DIR_PYMODULES_PATH) $DIR_PYMODULES_PATH/../python
fi
-
- # Fix the backports module which will have no __init__.py file
- if [ "$PYTHON_VERSION" -lt "30" ]; then
- touch $BUILDROOT/$VIRTUALENV/lib/python/site-packages/backports/__init__.py
- fi
}
_build_runtime() {
diff --git a/pkg/pip/setup_pip.py b/pkg/pip/setup_pip.py
index 693fcadf..2ab1c1d3 100644
--- a/pkg/pip/setup_pip.py
+++ b/pkg/pip/setup_pip.py
@@ -96,7 +96,6 @@ setup(
"Flask-BabelEx==0.9.3"
],
":python_version<='2.7'": [
- "backports.csv==1.0.5",
"importlib==1.0.3"
],
":python_version>='2.7'": [
diff --git a/requirements.txt b/requirements.txt
index 74c46035..92eae7dd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -44,7 +44,6 @@ sshtunnel>=0.1.3; python_version >= '2.7'
###############################################################
# Modules specifically required for Python2.7 or lesser version
###############################################################
-backports.csv==1.0.5; python_version <= '2.7'
importlib==1.0.3; python_version <= '2.7'
###############################################################
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index 43e1a094..1245c861 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1434,7 +1434,8 @@ def start_query_download_tool(trans_id):
gen(
quote=blueprint.csv_quoting.get(),
quote_char=blueprint.csv_quote_char.get(),
- field_separator=blueprint.csv_field_separator.get()
+ field_separator=blueprint.csv_field_separator.get(),
+ replace_nulls_with=blueprint.replace_nulls_with.get()
),
mimetype='text/csv'
)
diff --git a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
index 5e2a8ef1..805e1bec 100644
--- a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
+++ b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
@@ -198,6 +198,17 @@ def RegisterQueryToolPreferences(self):
}
)
+ self.replace_nulls_with = self.preference.register(
+ 'CSV_output', 'csv_replace_nulls_with',
+ gettext("Replace null values with"), 'text', 'NULL',
+ category_label=gettext('CSV output'),
+ help_str=gettext('Specifies the string that represents a null value '
+ 'while downloading query results as CSV. You can '
+ 'specify any arbitrary string that represent the '
+ 'null value. You will have to specify the same '
+ 'string while importing the downloaded CSV file.')
+ )
+
self.results_grid_quoting = self.preference.register(
'Results_grid', 'results_grid_quoting',
gettext("Result copy quoting"), 'options', 'strings',
diff --git a/web/pgadmin/utils/csv.py b/web/pgadmin/utils/csv.py
new file mode 100644
index 00000000..97ee8155
--- /dev/null
+++ b/web/pgadmin/utils/csv.py
@@ -0,0 +1,761 @@
+"""
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,2010
+2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version prepared by
+Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+"""
+
+############################################################################
+# Changes:
+# Added new parameter in dialect 'replace_nulls_with' to compare it against
+# the value to be quoted or not.
+# Handle the null value if value is None or equal to
+# 'replace_nulls_with' then it represents the null value, so no need to
+# quote it.
+############################################################################
+
+from __future__ import unicode_literals, absolute_import
+
+__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "Error", "Dialect", "__doc__", "excel", "excel_tab",
+ "field_size_limit", "reader", "writer", "register_dialect",
+ "get_dialect", "list_dialects", "unregister_dialect",
+ "__version__", "DictReader", "DictWriter"]
+
+import re
+import numbers
+from io import StringIO
+from csv import (
+ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE,
+ __version__, __doc__, Error, field_size_limit,
+)
+
+# Stuff needed from six
+import sys
+PY3 = sys.version_info[0] == 3
+if PY3:
+ string_types = str
+ text_type = str
+ binary_type = bytes
+ unichr = chr
+else:
+ string_types = basestring
+ text_type = unicode
+ binary_type = str
+
+
+class QuoteStrategy(object):
+ quoting = None
+
+ def __init__(self, dialect):
+ if self.quoting is not None:
+ assert dialect.quoting == self.quoting
+ self.dialect = dialect
+ self.setup()
+
+ escape_pattern_quoted = r'({quotechar})'.format(
+ quotechar=re.escape(self.dialect.quotechar or '"'))
+ escape_pattern_unquoted = r'([{specialchars}])'.format(
+ specialchars=re.escape(self.specialchars))
+
+ self.escape_re_quoted = re.compile(escape_pattern_quoted)
+ self.escape_re_unquoted = re.compile(escape_pattern_unquoted)
+
+ def setup(self):
+ """Optional method for strategy-wide optimizations."""
+
+ def quoted(self, field=None, raw_field=None, only=None):
+ """Determine whether this field should be quoted."""
+ raise NotImplementedError(
+ 'quoted must be implemented by a subclass')
+
+ @property
+ def specialchars(self):
+ """The special characters that need to be escaped."""
+ raise NotImplementedError(
+ 'specialchars must be implemented by a subclass')
+
+ def escape_re(self, quoted=None):
+ if quoted:
+ return self.escape_re_quoted
+ return self.escape_re_unquoted
+
+ def escapechar(self, quoted=None):
+ if quoted and self.dialect.doublequote:
+ return self.dialect.quotechar
+ return self.dialect.escapechar
+
+ def prepare(self, raw_field, only=None):
+ field = text_type(raw_field if raw_field is not None else '')
+ quoted = self.quoted(field=field, raw_field=raw_field, only=only)
+
+ escape_re = self.escape_re(quoted=quoted)
+ escapechar = self.escapechar(quoted=quoted)
+
+ if escape_re.search(field):
+ escapechar = '\\\\' if escapechar == '\\' else escapechar
+ if not escapechar:
+ raise Error('No escapechar is set')
+ escape_replace = r'{escapechar}\1'.format(escapechar=escapechar)
+ field = escape_re.sub(escape_replace, field)
+
+ if quoted:
+ field = '{quotechar}{field}{quotechar}'.format(
+ quotechar=self.dialect.quotechar, field=field)
+
+ return field
+
+
+class QuoteMinimalStrategy(QuoteStrategy):
+ quoting = QUOTE_MINIMAL
+
+ def setup(self):
+ self.quoted_re = re.compile(r'[{specialchars}]'.format(
+ specialchars=re.escape(self.specialchars)))
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == self.dialect.quotechar and not self.dialect.doublequote:
+ # If the only character in the field is the quotechar, and
+ # doublequote is false, then just escape without outer quotes.
+ return False
+ return field == '' and only or bool(self.quoted_re.search(field))
+
+
+class QuoteAllStrategy(QuoteStrategy):
+ quoting = QUOTE_ALL
+
+ @property
+ def specialchars(self):
+ return self.dialect.quotechar
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return True
+
+
+class QuoteNonnumericStrategy(QuoteStrategy):
+ quoting = QUOTE_NONNUMERIC
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return not isinstance(raw_field, numbers.Number)
+
+
+class QuoteNoneStrategy(QuoteStrategy):
+ quoting = QUOTE_NONE
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ (self.dialect.quotechar or '') +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == '' and only:
+ raise Error('single empty field record must be quoted')
+ return False
+
+
+class writer(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ if fileobj is None:
+ raise TypeError('fileobj must be file-like, not None')
+
+ self.fileobj = fileobj
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ strategies = {
+ QUOTE_MINIMAL: QuoteMinimalStrategy,
+ QUOTE_ALL: QuoteAllStrategy,
+ QUOTE_NONNUMERIC: QuoteNonnumericStrategy,
+ QUOTE_NONE: QuoteNoneStrategy,
+ }
+ self.strategy = strategies[self.dialect.quoting](self.dialect)
+
+ def writerow(self, row):
+ if row is None:
+ raise Error('row must be an iterable')
+
+ row = list(row)
+ only = len(row) == 1
+ row = [self.strategy.prepare(field, only=only) for field in row]
+
+ line = self.dialect.delimiter.join(row) + self.dialect.lineterminator
+ return self.fileobj.write(line)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+START_RECORD = 0
+START_FIELD = 1
+ESCAPED_CHAR = 2
+IN_FIELD = 3
+IN_QUOTED_FIELD = 4
+ESCAPE_IN_QUOTED_FIELD = 5
+QUOTE_IN_QUOTED_FIELD = 6
+EAT_CRNL = 7
+AFTER_ESCAPED_CRNL = 8
+
+
+class reader(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ self.input_iter = iter(fileobj)
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ self.fields = None
+ self.field = None
+ self.line_num = 0
+
+ def parse_reset(self):
+ self.fields = []
+ self.field = []
+ self.state = START_RECORD
+ self.numeric_field = False
+
+ def parse_save_field(self):
+ field = ''.join(self.field)
+ self.field = []
+ if self.numeric_field:
+ field = float(field)
+ self.numeric_field = False
+ self.fields.append(field)
+
+ def parse_add_char(self, c):
+ if len(self.field) >= field_size_limit():
+ raise Error('field size limit exceeded')
+ self.field.append(c)
+
+ def parse_process_char(self, c):
+ switch = {
+ START_RECORD: self._parse_start_record,
+ START_FIELD: self._parse_start_field,
+ ESCAPED_CHAR: self._parse_escaped_char,
+ AFTER_ESCAPED_CRNL: self._parse_after_escaped_crnl,
+ IN_FIELD: self._parse_in_field,
+ IN_QUOTED_FIELD: self._parse_in_quoted_field,
+ ESCAPE_IN_QUOTED_FIELD: self._parse_escape_in_quoted_field,
+ QUOTE_IN_QUOTED_FIELD: self._parse_quote_in_quoted_field,
+ EAT_CRNL: self._parse_eat_crnl,
+ }
+ return switch[self.state](c)
+
+ def _parse_start_record(self, c):
+ if c == '\0':
+ return
+ elif c == '\n' or c == '\r':
+ self.state = EAT_CRNL
+ return
+
+ self.state = START_FIELD
+ return self._parse_start_field(c)
+
+ def _parse_start_field(self, c):
+ if c == '\n' or c == '\r' or c == '\0':
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == ' ' and self.dialect.skipinitialspace:
+ pass # Ignore space at start of field
+ elif c == self.dialect.delimiter:
+ # Save empty field
+ self.parse_save_field()
+ else:
+ # Begin new unquoted field
+ if self.dialect.quoting == QUOTE_NONNUMERIC:
+ self.numeric_field = True
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_escaped_char(self, c):
+ if c == '\n' or c == '\r':
+ self.parse_add_char(c)
+ self.state = AFTER_ESCAPED_CRNL
+ return
+ if c == '\0':
+ c = '\n'
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_after_escaped_crnl(self, c):
+ if c == '\0':
+ return
+ return self._parse_in_field(c)
+
+ def _parse_in_field(self, c):
+ # In unquoted field
+ if c == '\n' or c == '\r' or c == '\0':
+ # End of line - return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ else:
+ # Normal character - save in field
+ self.parse_add_char(c)
+
+ def _parse_in_quoted_field(self, c):
+ if c == '\0':
+ pass
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPE_IN_QUOTED_FIELD
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ if self.dialect.doublequote:
+ self.state = QUOTE_IN_QUOTED_FIELD
+ else:
+ self.state = IN_FIELD
+ else:
+ self.parse_add_char(c)
+
+ def _parse_escape_in_quoted_field(self, c):
+ if c == '\0':
+ c = '\n'
+
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+
+ def _parse_quote_in_quoted_field(self, c):
+ if (self.dialect.quoting != QUOTE_NONE and
+ c == self.dialect.quotechar):
+ # save "" as "
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ elif c == '\n' or c == '\r' or c == '\0':
+ # End of line = return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif not self.dialect.strict:
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+ else:
+ # illegal
+ raise Error("{delimiter}' expected after '{quotechar}".format(
+ delimiter=self.dialect.delimiter,
+ quotechar=self.dialect.quotechar,
+ ))
+
+ def _parse_eat_crnl(self, c):
+ if c == '\n' or c == '\r':
+ pass
+ elif c == '\0':
+ self.state = START_RECORD
+ else:
+ raise Error('new-line character seen in unquoted field - do you '
+ 'need to open the file in universal-newline mode?')
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ self.parse_reset()
+
+ while True:
+ try:
+ lineobj = next(self.input_iter)
+ except StopIteration:
+ if len(self.field) != 0 or self.state == IN_QUOTED_FIELD:
+ if self.dialect.strict:
+ raise Error('unexpected end of data')
+ self.parse_save_field()
+ if self.fields:
+ break
+ raise
+
+ if not isinstance(lineobj, text_type):
+ typ = type(lineobj)
+ typ_name = 'bytes' if typ == bytes else typ.__name__
+ err_str = ('iterator should return strings, not {0}'
+ ' (did you open the file in text mode?)')
+ raise Error(err_str.format(typ_name))
+
+ self.line_num += 1
+ for c in lineobj:
+ if c == '\0':
+ raise Error('line contains NULL byte')
+ self.parse_process_char(c)
+
+ self.parse_process_char('\0')
+
+ if self.state == START_RECORD:
+ break
+
+ fields = self.fields
+ self.fields = None
+ return fields
+
+ next = __next__
+
+
+_dialect_registry = {}
+
+
+def register_dialect(name, dialect='excel', **fmtparams):
+ if not isinstance(name, text_type):
+ raise TypeError('"name" must be a string')
+
+ dialect = Dialect.extend(dialect, fmtparams)
+
+ try:
+ Dialect.validate(dialect)
+ except Exception as e:
+ raise TypeError('dialect is invalid')
+
+ assert name not in _dialect_registry
+ _dialect_registry[name] = dialect
+
+
+def unregister_dialect(name):
+ try:
+ _dialect_registry.pop(name)
+ except KeyError:
+ raise Error('"{name}" not a registered dialect'.format(name=name))
+
+
+def get_dialect(name):
+ try:
+ return _dialect_registry[name]
+ except KeyError:
+ raise Error('Could not find dialect {0}'.format(name))
+
+
+def list_dialects():
+ return list(_dialect_registry)
+
+
+class Dialect(object):
+ """Describe a CSV dialect.
+ This must be subclassed (see csv.excel). Valid attributes are:
+ delimiter, quotechar, escapechar, doublequote, skipinitialspace,
+ lineterminator, quoting, strict.
+ """
+ _name = ""
+ _valid = False
+ # placeholders
+ delimiter = None
+ quotechar = None
+ escapechar = None
+ doublequote = None
+ skipinitialspace = None
+ lineterminator = None
+ quoting = None
+ strict = None
+
+ def __init__(self):
+ self.validate(self)
+ if self.__class__ != Dialect:
+ self._valid = True
+
+ @classmethod
+ def validate(cls, dialect):
+ dialect = cls.extend(dialect)
+
+ if not isinstance(dialect.quoting, int):
+ raise Error('"quoting" must be an integer')
+
+ if dialect.delimiter is None:
+ raise Error('delimiter must be set')
+ cls.validate_text(dialect, 'delimiter')
+
+ if dialect.lineterminator is None:
+ raise Error('lineterminator must be set')
+ if not isinstance(dialect.lineterminator, text_type):
+ raise Error('"lineterminator" must be a string')
+
+ if dialect.quoting not in [
+ QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_ALL]:
+ raise Error('Invalid quoting specified')
+
+ if dialect.quoting != QUOTE_NONE:
+ if dialect.quotechar is None and dialect.escapechar is None:
+ raise Error('quotechar must be set if quoting enabled')
+ if dialect.quotechar is not None:
+ cls.validate_text(dialect, 'quotechar')
+
+ @staticmethod
+ def validate_text(dialect, attr):
+ val = getattr(dialect, attr)
+ if not isinstance(val, text_type):
+ if type(val) == bytes:
+ raise Error('"{0}" must be string, not bytes'.format(attr))
+ raise Error('"{0}" must be string, not {1}'.format(
+ attr, type(val).__name__))
+
+ if len(val) != 1:
+ raise Error('"{0}" must be a 1-character string'.format(attr))
+
+ @staticmethod
+ def defaults():
+ return {
+ 'delimiter': ',',
+ 'doublequote': True,
+ 'escapechar': None,
+ 'lineterminator': '\r\n',
+ 'quotechar': '"',
+ 'quoting': QUOTE_MINIMAL,
+ 'skipinitialspace': False,
+ 'strict': False,
+ 'replace_nulls_with': None
+ }
+
+ @classmethod
+ def extend(cls, dialect, fmtparams=None):
+ if isinstance(dialect, string_types):
+ dialect = get_dialect(dialect)
+
+ if fmtparams is None:
+ return dialect
+
+ defaults = cls.defaults()
+
+ if any(param not in defaults for param in fmtparams):
+ raise TypeError('Invalid fmtparam')
+
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in cls.defaults()
+ )
+
+ specified.update(fmtparams)
+ return type(str('ExtendedDialect'), (cls,), specified)
+
+ @classmethod
+ def combine(cls, dialect, fmtparams):
+ """Create a new dialect with defaults and added parameters."""
+ dialect = cls.extend(dialect, fmtparams)
+ defaults = cls.defaults()
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in defaults
+ if getattr(dialect, attr, None) is not None or
+ attr in ['quotechar', 'delimiter', 'lineterminator', 'quoting']
+ )
+
+ defaults.update(specified)
+ dialect = type(str('CombinedDialect'), (cls,), defaults)
+ cls.validate(dialect)
+ return dialect()
+
+ def __delattr__(self, attr):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__delattr__(attr)
+
+ def __setattr__(self, attr, value):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__setattr__(attr, value)
+
+
+class excel(Dialect):
+ """Describe the usual properties of Excel-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\r\n'
+ quoting = QUOTE_MINIMAL
+
+
+register_dialect("excel", excel)
+
+
+class excel_tab(excel):
+ """Describe the usual properties of Excel-generated TAB-delimited files."""
+ delimiter = '\t'
+
+
+register_dialect("excel-tab", excel_tab)
+
+
+class unix_dialect(Dialect):
+ """Describe the usual properties of Unix-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\n'
+ quoting = QUOTE_ALL
+
+
+register_dialect("unix", unix_dialect)
+
+
+class DictReader(object):
+ def __init__(self, f, fieldnames=None, restkey=None, restval=None,
+ dialect="excel", *args, **kwds):
+ self._fieldnames = fieldnames # list of keys for the dict
+ self.restkey = restkey # key to catch long rows
+ self.restval = restval # default value for short rows
+ self.reader = reader(f, dialect, *args, **kwds)
+ self.dialect = dialect
+ self.line_num = 0
+
+ def __iter__(self):
+ return self
+
+ @property
+ def fieldnames(self):
+ if self._fieldnames is None:
+ try:
+ self._fieldnames = next(self.reader)
+ except StopIteration:
+ pass
+ self.line_num = self.reader.line_num
+ return self._fieldnames
+
+ @fieldnames.setter
+ def fieldnames(self, value):
+ self._fieldnames = value
+
+ def __next__(self):
+ if self.line_num == 0:
+ # Used only for its side effect.
+ self.fieldnames
+ row = next(self.reader)
+ self.line_num = self.reader.line_num
+
+ # unlike the basic reader, we prefer not to return blanks,
+ # because we will typically wind up with a dict full of None
+ # values
+ while row == []:
+ row = next(self.reader)
+ d = dict(zip(self.fieldnames, row))
+ lf = len(self.fieldnames)
+ lr = len(row)
+ if lf < lr:
+ d[self.restkey] = row[lf:]
+ elif lf > lr:
+ for key in self.fieldnames[lr:]:
+ d[key] = self.restval
+ return d
+
+ next = __next__
+
+
+class DictWriter(object):
+ def __init__(self, f, fieldnames, restval="", extrasaction="raise",
+ dialect="excel", *args, **kwds):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.restval = restval # for writing short dicts
+ if extrasaction.lower() not in ("raise", "ignore"):
+ raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
+ % extrasaction)
+ self.extrasaction = extrasaction
+ self.writer = writer(f, dialect, *args, **kwds)
+
+ def writeheader(self):
+ header = dict(zip(self.fieldnames, self.fieldnames))
+ self.writerow(header)
+
+ def _dict_to_list(self, rowdict):
+ if self.extrasaction == "raise":
+ wrong_fields = [k for k in rowdict if k not in self.fieldnames]
+ if wrong_fields:
+ raise ValueError("dict contains fields not in fieldnames: " +
+ ", ".join([repr(x) for x in wrong_fields]))
+ return (rowdict.get(key, self.restval) for key in self.fieldnames)
+
+ def writerow(self, rowdict):
+ return self.writer.writerow(self._dict_to_list(rowdict))
+
+ def writerows(self, rowdicts):
+ return self.writer.writerows(map(self._dict_to_list, rowdicts))
diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg2/connection.py
index 2c9fcb5a..1e0253d3 100644
--- a/web/pgadmin/utils/driver/psycopg2/connection.py
+++ b/web/pgadmin/utils/driver/psycopg2/connection.py
@@ -37,16 +37,13 @@ from .typecast import register_global_typecasters, \
register_string_typecasters, register_binary_typecasters, \
register_array_to_string_typecasters, ALL_JSON_TYPES
from .encoding import getEncoding
+from pgadmin.utils import csv
if sys.version_info < (3,):
- # Python2 in-built csv module do not handle unicode
- # backports.csv module ported from PY3 csv module for unicode handling
- from backports import csv
from StringIO import StringIO
IS_PY2 = True
else:
from io import StringIO
- import csv
IS_PY2 = False
_ = gettext
@@ -765,7 +762,31 @@ WHERE
)
return new_results
- def gen(quote='strings', quote_char="'", field_separator=','):
+ def handle_null_values(results, replace_nulls_with):
+ """
+ This function is used to replace null values with the given string
+
+ :param results:
+ :param replace_nulls_with: null values will be replaced by this
+ string.
+ :return: modified result
+ """
+
+ temp_results = []
+ for row in results:
+ res = dict()
+ for k, v in row.items():
+ if v is None:
+ res[k] = replace_nulls_with
+ else:
+ res[k] = v
+ temp_results.append(res)
+ results = temp_results
+
+ return results
+
+ def gen(quote='strings', quote_char="'", field_separator=',',
+ replace_nulls_with=None):
results = cur.fetchmany(records)
if not results:
@@ -815,11 +836,15 @@ WHERE
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
csv_writer.writeheader()
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
@@ -836,13 +861,17 @@ WHERE
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
if IS_PY2:
results = convert_keys_to_unicode(results, conn_encoding)
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-21 11:57 ` Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-21 11:57 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi
Here's an updated patch as I've tweaked some of the wording. The screenshot
probably isn't the right resolution, but as we're replacing them anyway it
doesn't seem overly important. Feel free to fix if you like :-)
With quoting set to either All or Strings, everything looks good. With it
set to None, I still get an exception (below). The query I'm using is this:
SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
Field separator: ,
Quote character: "
Replace null's with: NULL
Steps:
1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms, using
the venv detailed below.
2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on MacOS
10.14.1
3) Run the above query, wit quoting set to All and check the result in the
grid.
4) Download the CSV file and check.
5) Open Preferences and set quoting to Strings.
6) Download the CSV file and check.
7) Open Preferences and set quoting to None.
8) Download the CSV file *exception occurs*.
System info:
(pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
Python 3.6.7
(pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
alabaster==0.7.11
alembic==1.0.0
asn1crypto==0.24.0
Babel==2.6.0
bcrypt==3.1.4
blinker==1.4
certifi==2018.8.24
cffi==1.11.5
chardet==3.0.4
chromedriver-installer==0.0.6
click==6.7
cryptography==2.3
docutils==0.14
extras==1.0.0
fixtures==3.0.0
Flask==0.12.4
Flask-BabelEx==0.9.3
Flask-Gravatar==0.5.0
Flask-HTMLmin==1.3.2
Flask-Login==0.3.2
Flask-Mail==0.9.1
Flask-Migrate==2.1.1
Flask-Paranoid==0.2.0
Flask-Principal==0.4.0
Flask-Security==3.0.0
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
html5lib==1.0.1
htmlmin==0.1.12
idna==2.7
imagesize==1.1.0
itsdangerous==0.24
Jinja2==2.10
linecache2==1.0.0
Mako==1.0.7
MarkupSafe==1.0
packaging==18.0
paramiko==2.4.1
passlib==1.7.1
pbr==3.1.1
psutil==5.4.8
psycopg2==2.7.5
pyasn1==0.4.4
pycodestyle==2.3.1
pycparser==2.18
pycrypto==2.6.1
Pygments==2.2.0
PyNaCl==1.2.1
pyparsing==2.2.2
pyperclip==1.6.4
pyrsistent==0.14.2
python-dateutil==2.7.3
python-editor==1.0.3
python-mimeparse==1.6.0
pytz==2018.3
requests==2.19.1
selenium==3.14.1
simplejson==3.13.2
six==1.11.0
snowballstemmer==1.2.1
speaklater==1.3
Sphinx==1.8.2
sphinxcontrib-websupport==1.1.0
SQLAlchemy==1.2.10
sqlparse==0.2.4
sshtunnel==0.1.4
testscenarios==0.5.0
testtools==2.3.0
traceback2==1.4.0
unittest2==1.1.0
urllib3==1.23
webencodings==0.5.1
Werkzeug==0.14.1
WTForms==2.1
Exception:
2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor) for
server #2 - CONN:8760231 (Query-id: 8649354):
SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
11:47:29] "GET
/sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
HTTP/1.1" 500 -
2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
Traceback (most recent call last):
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
line 270, in run_wsgi
execute(self.server.app)
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
line 260, in execute
for data in application_iter:
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
line 870, in __next__
return self._next()
File
"/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
line 82, in _iter_encoded
for item in iterable:
File
"/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
line 848, in gen
csv_writer.writerows(results)
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761, in
writerows
return self.writer.writerows(map(self._dict_to_list, rowdicts))
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268, in
writerows
self.writerow(row)
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
writerow
row = [self.strategy.prepare(field, only=only) for field in row]
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
<listcomp>
row = [self.strategy.prepare(field, only=only) for field in row]
File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142, in
prepare
raise Error('No escapechar is set')
_csv.Error: No escapechar is set
On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <[email protected]>
wrote:
> Hi Dave
>
> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
> [email protected]> wrote:
>
>>
>>
>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave
>>>>
>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> When testing with quoting set to None, quote = " and delimiter = , I
>>>>> get the following exception when I try to download:
>>>>>
>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor)
>>>>> for server #2 - CONN:354106 (Query-id: 4121147):
>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>>>> 09:34:02] "GET
>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>> HTTP/1.1" 500 -
>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>> Traceback (most recent call last):
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>> line 270, in run_wsgi
>>>>> execute(self.server.app)
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>> line 260, in execute
>>>>> for data in application_iter:
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>> line 870, in __next__
>>>>> return self._next()
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>> line 82, in _iter_encoded
>>>>> for item in iterable:
>>>>> File
>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>> line 820, in gen
>>>>> csv_writer.writerows(results)
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 748,
>>>>> in writerows
>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 256,
>>>>> in writerows
>>>>> self.writerow(row)
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>>>> in writerow
>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 249,
>>>>> in <listcomp>
>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 136,
>>>>> in prepare
>>>>> raise Error('No escapechar is set')
>>>>> _csv.Error: No escapechar is set
>>>>>
>>>>
>>>> Not able to reproduce the above issue. I have tested it with the
>>>> same setting as you mentioned. Please refer all the attached screenshots.
>>>> Please specify the steps if they are different.
>>>>
>>>>>
>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>
>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>
>>>>> "text","int4","text-2","text-3"
>>>>>
>>>>> "","1234","Foo bar","Foo
>>>>>
>>>>> Bar"
>>>>>
>>>>> Isn't the point for it to be NULL?
>>>>>
>>>>
>>>> while quoting is set to ALL, all the data types has been quoted, so
>>>> I thought null values should be replaced by "" instead of blank. But if you
>>>> think null values shouldn't be quoted even if user select quote ALL, I'll
>>>> fix it and resend the patch.
>>>>
>>>
>>> So how would you distinguish NULL from an empty string? Isn't that
>>> exactly what the bug is about?
>>>
>>> I still think we need a "Replace NULLs with" config option, and
>>> regardless of quoting settings we always replace NULL values with whatever
>>> that is set to - for which the user could then choose options like:
>>>
>>> NULL
>>> "NULL"
>>> ""
>>> ''
>>> <empty string>
>>>
>>> We would never quote the NULL replacement value - if the user wanted it
>>> to be quoted, they would include the quotes in the configured string.
>>>
>>
>>
>> OK, Will work on it and send the modified patch again.
>>
>
> Attached is the modified patch as per your suggestion.
>
>>
>>>
>>>>
>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave
>>>>>>
>>>>>> Attached is the modified patch to fix review comments.
>>>>>>
>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Hackers,
>>>>>>>>>
>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>>>> specify NULL values in CSV export.
>>>>>>>>>
>>>>>>>>> Please review it.
>>>>>>>>>
>>>>>>>>
>>>>>>>> A few points;
>>>>>>>>
>>>>>>>> - You've included code from backports.csv, but per the licence you
>>>>>>>> need to include a description of the changes made.
>>>>>>>>
>>>>>>>
>>>>>>> Sure. In that case I'll copy the complete file and will do my
>>>>>>> changes which is of two lines only. With my patch I have remove all the
>>>>>>> unwanted code from backport.csv.
>>>>>>>
>>>>>>>>
>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is
>>>>>>>> it used elsewhere?
>>>>>>>>
>>>>>>>
>>>>>>> Yes. Will do that.
>>>>>>>
>>>>>>>>
>>>>>>>> - If the previous point is true, then I'm fairly sure there is code
>>>>>>>> in one or more of the many package build scripts that adds an __init__.py
>>>>>>>> file to backports.csv in the venv that's created.
>>>>>>>>
>>>>>>>
>>>>>>> I'll remove that code as well.
>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-21 12:12 ` Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-21 12:12 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave
Can you please attached the updated patch with your changes. I'll try to
fix the exception.
On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
> Hi
>
> Here's an updated patch as I've tweaked some of the wording. The
> screenshot probably isn't the right resolution, but as we're replacing them
> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>
> With quoting set to either All or Strings, everything looks good. With it
> set to None, I still get an exception (below). The query I'm using is this:
>
> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>
> Field separator: ,
> Quote character: "
> Replace null's with: NULL
>
> Steps:
>
> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms, using
> the venv detailed below.
> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on MacOS
> 10.14.1
> 3) Run the above query, wit quoting set to All and check the result in the
> grid.
> 4) Download the CSV file and check.
> 5) Open Preferences and set quoting to Strings.
> 6) Download the CSV file and check.
> 7) Open Preferences and set quoting to None.
> 8) Download the CSV file *exception occurs*.
>
>
> System info:
>
> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>
> Python 3.6.7
>
> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>
> alabaster==0.7.11
>
> alembic==1.0.0
>
> asn1crypto==0.24.0
>
> Babel==2.6.0
>
> bcrypt==3.1.4
>
> blinker==1.4
>
> certifi==2018.8.24
>
> cffi==1.11.5
>
> chardet==3.0.4
>
> chromedriver-installer==0.0.6
>
> click==6.7
>
> cryptography==2.3
>
> docutils==0.14
>
> extras==1.0.0
>
> fixtures==3.0.0
>
> Flask==0.12.4
>
> Flask-BabelEx==0.9.3
>
> Flask-Gravatar==0.5.0
>
> Flask-HTMLmin==1.3.2
>
> Flask-Login==0.3.2
>
> Flask-Mail==0.9.1
>
> Flask-Migrate==2.1.1
>
> Flask-Paranoid==0.2.0
>
> Flask-Principal==0.4.0
>
> Flask-Security==3.0.0
>
> Flask-SQLAlchemy==2.3.2
>
> Flask-WTF==0.14.2
>
> html5lib==1.0.1
>
> htmlmin==0.1.12
>
> idna==2.7
>
> imagesize==1.1.0
>
> itsdangerous==0.24
>
> Jinja2==2.10
>
> linecache2==1.0.0
>
> Mako==1.0.7
>
> MarkupSafe==1.0
>
> packaging==18.0
>
> paramiko==2.4.1
>
> passlib==1.7.1
>
> pbr==3.1.1
>
> psutil==5.4.8
>
> psycopg2==2.7.5
>
> pyasn1==0.4.4
>
> pycodestyle==2.3.1
>
> pycparser==2.18
>
> pycrypto==2.6.1
>
> Pygments==2.2.0
>
> PyNaCl==1.2.1
>
> pyparsing==2.2.2
>
> pyperclip==1.6.4
>
> pyrsistent==0.14.2
>
> python-dateutil==2.7.3
>
> python-editor==1.0.3
>
> python-mimeparse==1.6.0
>
> pytz==2018.3
>
> requests==2.19.1
>
> selenium==3.14.1
>
> simplejson==3.13.2
>
> six==1.11.0
>
> snowballstemmer==1.2.1
>
> speaklater==1.3
>
> Sphinx==1.8.2
>
> sphinxcontrib-websupport==1.1.0
>
> SQLAlchemy==1.2.10
>
> sqlparse==0.2.4
>
> sshtunnel==0.1.4
>
> testscenarios==0.5.0
>
> testtools==2.3.0
>
> traceback2==1.4.0
>
> unittest2==1.1.0
>
> urllib3==1.23
>
> webencodings==0.5.1
>
> Werkzeug==0.14.1
>
> WTForms==2.1
>
> Exception:
>
> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor) for
> server #2 - CONN:8760231 (Query-id: 8649354):
> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
> 11:47:29] "GET
> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
> HTTP/1.1" 500 -
> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
> Traceback (most recent call last):
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
> line 270, in run_wsgi
> execute(self.server.app)
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
> line 260, in execute
> for data in application_iter:
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
> line 870, in __next__
> return self._next()
> File
> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
> line 82, in _iter_encoded
> for item in iterable:
> File
> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
> line 848, in gen
> csv_writer.writerows(results)
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761, in
> writerows
> return self.writer.writerows(map(self._dict_to_list, rowdicts))
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268, in
> writerows
> self.writerow(row)
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
> writerow
> row = [self.strategy.prepare(field, only=only) for field in row]
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
> <listcomp>
> row = [self.strategy.prepare(field, only=only) for field in row]
> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142, in
> prepare
> raise Error('No escapechar is set')
> _csv.Error: No escapechar is set
>
> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Dave
>>
>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> When testing with quoting set to None, quote = " and delimiter = , I
>>>>>> get the following exception when I try to download:
>>>>>>
>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor)
>>>>>> for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>>>>> 09:34:02] "GET
>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>> HTTP/1.1" 500 -
>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>> Traceback (most recent call last):
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>> line 270, in run_wsgi
>>>>>> execute(self.server.app)
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>> line 260, in execute
>>>>>> for data in application_iter:
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>> line 870, in __next__
>>>>>> return self._next()
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>> line 82, in _iter_encoded
>>>>>> for item in iterable:
>>>>>> File
>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>> line 820, in gen
>>>>>> csv_writer.writerows(results)
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 748, in writerows
>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 256, in writerows
>>>>>> self.writerow(row)
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 249, in writerow
>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 249, in <listcomp>
>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 136, in prepare
>>>>>> raise Error('No escapechar is set')
>>>>>> _csv.Error: No escapechar is set
>>>>>>
>>>>>
>>>>> Not able to reproduce the above issue. I have tested it with the
>>>>> same setting as you mentioned. Please refer all the attached screenshots.
>>>>> Please specify the steps if they are different.
>>>>>
>>>>>>
>>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>>
>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>
>>>>>> "text","int4","text-2","text-3"
>>>>>>
>>>>>> "","1234","Foo bar","Foo
>>>>>>
>>>>>> Bar"
>>>>>>
>>>>>> Isn't the point for it to be NULL?
>>>>>>
>>>>>
>>>>> while quoting is set to ALL, all the data types has been quoted,
>>>>> so I thought null values should be replaced by "" instead of blank. But if
>>>>> you think null values shouldn't be quoted even if user select quote ALL,
>>>>> I'll fix it and resend the patch.
>>>>>
>>>>
>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>> exactly what the bug is about?
>>>>
>>>> I still think we need a "Replace NULLs with" config option, and
>>>> regardless of quoting settings we always replace NULL values with whatever
>>>> that is set to - for which the user could then choose options like:
>>>>
>>>> NULL
>>>> "NULL"
>>>> ""
>>>> ''
>>>> <empty string>
>>>>
>>>> We would never quote the NULL replacement value - if the user wanted it
>>>> to be quoted, they would include the quotes in the configured string.
>>>>
>>>
>>>
>>> OK, Will work on it and send the modified patch again.
>>>
>>
>> Attached is the modified patch as per your suggestion.
>>
>>>
>>>>
>>>>>
>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave
>>>>>>>
>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>
>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Hackers,
>>>>>>>>>>
>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>>>>> specify NULL values in CSV export.
>>>>>>>>>>
>>>>>>>>>> Please review it.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> A few points;
>>>>>>>>>
>>>>>>>>> - You've included code from backports.csv, but per the licence you
>>>>>>>>> need to include a description of the changes made.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Sure. In that case I'll copy the complete file and will do my
>>>>>>>> changes which is of two lines only. With my patch I have remove all the
>>>>>>>> unwanted code from backport.csv.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is
>>>>>>>>> it used elsewhere?
>>>>>>>>>
>>>>>>>>
>>>>>>>> Yes. Will do that.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> - If the previous point is true, then I'm fairly sure there is
>>>>>>>>> code in one or more of the many package build scripts that adds an
>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I'll remove that code as well.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-21 12:22 ` Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-21 12:22 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Sorry! Here is is.
On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <[email protected]>
wrote:
> Hi Dave
>
> Can you please attached the updated patch with your changes. I'll try to
> fix the exception.
>
> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> Here's an updated patch as I've tweaked some of the wording. The
>> screenshot probably isn't the right resolution, but as we're replacing them
>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>
>> With quoting set to either All or Strings, everything looks good. With it
>> set to None, I still get an exception (below). The query I'm using is this:
>>
>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>
>> Field separator: ,
>> Quote character: "
>> Replace null's with: NULL
>>
>> Steps:
>>
>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms, using
>> the venv detailed below.
>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on MacOS
>> 10.14.1
>> 3) Run the above query, wit quoting set to All and check the result in
>> the grid.
>> 4) Download the CSV file and check.
>> 5) Open Preferences and set quoting to Strings.
>> 6) Download the CSV file and check.
>> 7) Open Preferences and set quoting to None.
>> 8) Download the CSV file *exception occurs*.
>>
>>
>> System info:
>>
>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>
>> Python 3.6.7
>>
>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>
>> alabaster==0.7.11
>>
>> alembic==1.0.0
>>
>> asn1crypto==0.24.0
>>
>> Babel==2.6.0
>>
>> bcrypt==3.1.4
>>
>> blinker==1.4
>>
>> certifi==2018.8.24
>>
>> cffi==1.11.5
>>
>> chardet==3.0.4
>>
>> chromedriver-installer==0.0.6
>>
>> click==6.7
>>
>> cryptography==2.3
>>
>> docutils==0.14
>>
>> extras==1.0.0
>>
>> fixtures==3.0.0
>>
>> Flask==0.12.4
>>
>> Flask-BabelEx==0.9.3
>>
>> Flask-Gravatar==0.5.0
>>
>> Flask-HTMLmin==1.3.2
>>
>> Flask-Login==0.3.2
>>
>> Flask-Mail==0.9.1
>>
>> Flask-Migrate==2.1.1
>>
>> Flask-Paranoid==0.2.0
>>
>> Flask-Principal==0.4.0
>>
>> Flask-Security==3.0.0
>>
>> Flask-SQLAlchemy==2.3.2
>>
>> Flask-WTF==0.14.2
>>
>> html5lib==1.0.1
>>
>> htmlmin==0.1.12
>>
>> idna==2.7
>>
>> imagesize==1.1.0
>>
>> itsdangerous==0.24
>>
>> Jinja2==2.10
>>
>> linecache2==1.0.0
>>
>> Mako==1.0.7
>>
>> MarkupSafe==1.0
>>
>> packaging==18.0
>>
>> paramiko==2.4.1
>>
>> passlib==1.7.1
>>
>> pbr==3.1.1
>>
>> psutil==5.4.8
>>
>> psycopg2==2.7.5
>>
>> pyasn1==0.4.4
>>
>> pycodestyle==2.3.1
>>
>> pycparser==2.18
>>
>> pycrypto==2.6.1
>>
>> Pygments==2.2.0
>>
>> PyNaCl==1.2.1
>>
>> pyparsing==2.2.2
>>
>> pyperclip==1.6.4
>>
>> pyrsistent==0.14.2
>>
>> python-dateutil==2.7.3
>>
>> python-editor==1.0.3
>>
>> python-mimeparse==1.6.0
>>
>> pytz==2018.3
>>
>> requests==2.19.1
>>
>> selenium==3.14.1
>>
>> simplejson==3.13.2
>>
>> six==1.11.0
>>
>> snowballstemmer==1.2.1
>>
>> speaklater==1.3
>>
>> Sphinx==1.8.2
>>
>> sphinxcontrib-websupport==1.1.0
>>
>> SQLAlchemy==1.2.10
>>
>> sqlparse==0.2.4
>>
>> sshtunnel==0.1.4
>>
>> testscenarios==0.5.0
>>
>> testtools==2.3.0
>>
>> traceback2==1.4.0
>>
>> unittest2==1.1.0
>>
>> urllib3==1.23
>>
>> webencodings==0.5.1
>>
>> Werkzeug==0.14.1
>>
>> WTForms==2.1
>>
>> Exception:
>>
>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor) for
>> server #2 - CONN:8760231 (Query-id: 8649354):
>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>> 11:47:29] "GET
>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>> HTTP/1.1" 500 -
>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>> Traceback (most recent call last):
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 270, in run_wsgi
>> execute(self.server.app)
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>> line 260, in execute
>> for data in application_iter:
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>> line 870, in __next__
>> return self._next()
>> File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>> line 82, in _iter_encoded
>> for item in iterable:
>> File
>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>> line 848, in gen
>> csv_writer.writerows(results)
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761, in
>> writerows
>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268, in
>> writerows
>> self.writerow(row)
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
>> writerow
>> row = [self.strategy.prepare(field, only=only) for field in row]
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261, in
>> <listcomp>
>> row = [self.strategy.prepare(field, only=only) for field in row]
>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142, in
>> prepare
>> raise Error('No escapechar is set')
>> _csv.Error: No escapechar is set
>>
>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Dave
>>>
>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave
>>>>>>
>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> When testing with quoting set to None, quote = " and delimiter = , I
>>>>>>> get the following exception when I try to download:
>>>>>>>
>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor)
>>>>>>> for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>>>>>> 09:34:02] "GET
>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>> HTTP/1.1" 500 -
>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>> Traceback (most recent call last):
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>> line 270, in run_wsgi
>>>>>>> execute(self.server.app)
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>> line 260, in execute
>>>>>>> for data in application_iter:
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>> line 870, in __next__
>>>>>>> return self._next()
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>> line 82, in _iter_encoded
>>>>>>> for item in iterable:
>>>>>>> File
>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>> line 820, in gen
>>>>>>> csv_writer.writerows(results)
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 748, in writerows
>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 256, in writerows
>>>>>>> self.writerow(row)
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 249, in writerow
>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 249, in <listcomp>
>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 136, in prepare
>>>>>>> raise Error('No escapechar is set')
>>>>>>> _csv.Error: No escapechar is set
>>>>>>>
>>>>>>
>>>>>> Not able to reproduce the above issue. I have tested it with the
>>>>>> same setting as you mentioned. Please refer all the attached screenshots.
>>>>>> Please specify the steps if they are different.
>>>>>>
>>>>>>>
>>>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>>>
>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>
>>>>>>> "text","int4","text-2","text-3"
>>>>>>>
>>>>>>> "","1234","Foo bar","Foo
>>>>>>>
>>>>>>> Bar"
>>>>>>>
>>>>>>> Isn't the point for it to be NULL?
>>>>>>>
>>>>>>
>>>>>> while quoting is set to ALL, all the data types has been quoted,
>>>>>> so I thought null values should be replaced by "" instead of blank. But if
>>>>>> you think null values shouldn't be quoted even if user select quote ALL,
>>>>>> I'll fix it and resend the patch.
>>>>>>
>>>>>
>>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>>> exactly what the bug is about?
>>>>>
>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>> that is set to - for which the user could then choose options like:
>>>>>
>>>>> NULL
>>>>> "NULL"
>>>>> ""
>>>>> ''
>>>>> <empty string>
>>>>>
>>>>> We would never quote the NULL replacement value - if the user wanted
>>>>> it to be quoted, they would include the quotes in the configured string.
>>>>>
>>>>
>>>>
>>>> OK, Will work on it and send the modified patch again.
>>>>
>>>
>>> Attached is the modified patch as per your suggestion.
>>>
>>>>
>>>>>
>>>>>>
>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave
>>>>>>>>
>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>
>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>
>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>>>>>> specify NULL values in CSV export.
>>>>>>>>>>>
>>>>>>>>>>> Please review it.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> A few points;
>>>>>>>>>>
>>>>>>>>>> - You've included code from backports.csv, but per the licence
>>>>>>>>>> you need to include a description of the changes made.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Sure. In that case I'll copy the complete file and will do
>>>>>>>>> my changes which is of two lines only. With my patch I have remove all the
>>>>>>>>> unwanted code from backport.csv.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or is
>>>>>>>>>> it used elsewhere?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Yes. Will do that.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> - If the previous point is true, then I'm fairly sure there is
>>>>>>>>>> code in one or more of the many package build scripts that adds an
>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I'll remove that code as well.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Attachments:
[application/octet-stream] RM_3780_v4.patch (112.6K, 3-RM_3780_v4.patch)
download | inline diff:
Index: pkg/pip/setup_pip.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- pkg/pip/setup_pip.py (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ pkg/pip/setup_pip.py (date 1545392222000)
@@ -96,7 +96,6 @@
"Flask-BabelEx==0.9.3"
],
":python_version<='2.7'": [
- "backports.csv==1.0.5",
"importlib==1.0.3"
],
":python_version>='2.7'": [
Index: web/pgadmin/utils/csv.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- web/pgadmin/utils/csv.py (date 1545392222000)
+++ web/pgadmin/utils/csv.py (date 1545392222000)
@@ -0,0 +1,761 @@
+"""
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,2010
+2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version prepared by
+Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+"""
+
+############################################################################
+# Changes:
+# Added new parameter in dialect 'replace_nulls_with' to compare it against
+# the value to be quoted or not.
+# Handle the null value if value is None or equal to
+# 'replace_nulls_with' then it represents the null value, so no need to
+# quote it.
+############################################################################
+
+from __future__ import unicode_literals, absolute_import
+
+__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "Error", "Dialect", "__doc__", "excel", "excel_tab",
+ "field_size_limit", "reader", "writer", "register_dialect",
+ "get_dialect", "list_dialects", "unregister_dialect",
+ "__version__", "DictReader", "DictWriter"]
+
+import re
+import numbers
+from io import StringIO
+from csv import (
+ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE,
+ __version__, __doc__, Error, field_size_limit,
+)
+
+# Stuff needed from six
+import sys
+PY3 = sys.version_info[0] == 3
+if PY3:
+ string_types = str
+ text_type = str
+ binary_type = bytes
+ unichr = chr
+else:
+ string_types = basestring
+ text_type = unicode
+ binary_type = str
+
+
+class QuoteStrategy(object):
+ quoting = None
+
+ def __init__(self, dialect):
+ if self.quoting is not None:
+ assert dialect.quoting == self.quoting
+ self.dialect = dialect
+ self.setup()
+
+ escape_pattern_quoted = r'({quotechar})'.format(
+ quotechar=re.escape(self.dialect.quotechar or '"'))
+ escape_pattern_unquoted = r'([{specialchars}])'.format(
+ specialchars=re.escape(self.specialchars))
+
+ self.escape_re_quoted = re.compile(escape_pattern_quoted)
+ self.escape_re_unquoted = re.compile(escape_pattern_unquoted)
+
+ def setup(self):
+ """Optional method for strategy-wide optimizations."""
+
+ def quoted(self, field=None, raw_field=None, only=None):
+ """Determine whether this field should be quoted."""
+ raise NotImplementedError(
+ 'quoted must be implemented by a subclass')
+
+ @property
+ def specialchars(self):
+ """The special characters that need to be escaped."""
+ raise NotImplementedError(
+ 'specialchars must be implemented by a subclass')
+
+ def escape_re(self, quoted=None):
+ if quoted:
+ return self.escape_re_quoted
+ return self.escape_re_unquoted
+
+ def escapechar(self, quoted=None):
+ if quoted and self.dialect.doublequote:
+ return self.dialect.quotechar
+ return self.dialect.escapechar
+
+ def prepare(self, raw_field, only=None):
+ field = text_type(raw_field if raw_field is not None else '')
+ quoted = self.quoted(field=field, raw_field=raw_field, only=only)
+
+ escape_re = self.escape_re(quoted=quoted)
+ escapechar = self.escapechar(quoted=quoted)
+
+ if escape_re.search(field):
+ escapechar = '\\\\' if escapechar == '\\' else escapechar
+ if not escapechar:
+ raise Error('No escapechar is set')
+ escape_replace = r'{escapechar}\1'.format(escapechar=escapechar)
+ field = escape_re.sub(escape_replace, field)
+
+ if quoted:
+ field = '{quotechar}{field}{quotechar}'.format(
+ quotechar=self.dialect.quotechar, field=field)
+
+ return field
+
+
+class QuoteMinimalStrategy(QuoteStrategy):
+ quoting = QUOTE_MINIMAL
+
+ def setup(self):
+ self.quoted_re = re.compile(r'[{specialchars}]'.format(
+ specialchars=re.escape(self.specialchars)))
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == self.dialect.quotechar and not self.dialect.doublequote:
+ # If the only character in the field is the quotechar, and
+ # doublequote is false, then just escape without outer quotes.
+ return False
+ return field == '' and only or bool(self.quoted_re.search(field))
+
+
+class QuoteAllStrategy(QuoteStrategy):
+ quoting = QUOTE_ALL
+
+ @property
+ def specialchars(self):
+ return self.dialect.quotechar
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return True
+
+
+class QuoteNonnumericStrategy(QuoteStrategy):
+ quoting = QUOTE_NONNUMERIC
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return not isinstance(raw_field, numbers.Number)
+
+
+class QuoteNoneStrategy(QuoteStrategy):
+ quoting = QUOTE_NONE
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ (self.dialect.quotechar or '') +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == '' and only:
+ raise Error('single empty field record must be quoted')
+ return False
+
+
+class writer(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ if fileobj is None:
+ raise TypeError('fileobj must be file-like, not None')
+
+ self.fileobj = fileobj
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ strategies = {
+ QUOTE_MINIMAL: QuoteMinimalStrategy,
+ QUOTE_ALL: QuoteAllStrategy,
+ QUOTE_NONNUMERIC: QuoteNonnumericStrategy,
+ QUOTE_NONE: QuoteNoneStrategy,
+ }
+ self.strategy = strategies[self.dialect.quoting](self.dialect)
+
+ def writerow(self, row):
+ if row is None:
+ raise Error('row must be an iterable')
+
+ row = list(row)
+ only = len(row) == 1
+ row = [self.strategy.prepare(field, only=only) for field in row]
+
+ line = self.dialect.delimiter.join(row) + self.dialect.lineterminator
+ return self.fileobj.write(line)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+START_RECORD = 0
+START_FIELD = 1
+ESCAPED_CHAR = 2
+IN_FIELD = 3
+IN_QUOTED_FIELD = 4
+ESCAPE_IN_QUOTED_FIELD = 5
+QUOTE_IN_QUOTED_FIELD = 6
+EAT_CRNL = 7
+AFTER_ESCAPED_CRNL = 8
+
+
+class reader(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ self.input_iter = iter(fileobj)
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ self.fields = None
+ self.field = None
+ self.line_num = 0
+
+ def parse_reset(self):
+ self.fields = []
+ self.field = []
+ self.state = START_RECORD
+ self.numeric_field = False
+
+ def parse_save_field(self):
+ field = ''.join(self.field)
+ self.field = []
+ if self.numeric_field:
+ field = float(field)
+ self.numeric_field = False
+ self.fields.append(field)
+
+ def parse_add_char(self, c):
+ if len(self.field) >= field_size_limit():
+ raise Error('field size limit exceeded')
+ self.field.append(c)
+
+ def parse_process_char(self, c):
+ switch = {
+ START_RECORD: self._parse_start_record,
+ START_FIELD: self._parse_start_field,
+ ESCAPED_CHAR: self._parse_escaped_char,
+ AFTER_ESCAPED_CRNL: self._parse_after_escaped_crnl,
+ IN_FIELD: self._parse_in_field,
+ IN_QUOTED_FIELD: self._parse_in_quoted_field,
+ ESCAPE_IN_QUOTED_FIELD: self._parse_escape_in_quoted_field,
+ QUOTE_IN_QUOTED_FIELD: self._parse_quote_in_quoted_field,
+ EAT_CRNL: self._parse_eat_crnl,
+ }
+ return switch[self.state](c)
+
+ def _parse_start_record(self, c):
+ if c == '\0':
+ return
+ elif c == '\n' or c == '\r':
+ self.state = EAT_CRNL
+ return
+
+ self.state = START_FIELD
+ return self._parse_start_field(c)
+
+ def _parse_start_field(self, c):
+ if c == '\n' or c == '\r' or c == '\0':
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == ' ' and self.dialect.skipinitialspace:
+ pass # Ignore space at start of field
+ elif c == self.dialect.delimiter:
+ # Save empty field
+ self.parse_save_field()
+ else:
+ # Begin new unquoted field
+ if self.dialect.quoting == QUOTE_NONNUMERIC:
+ self.numeric_field = True
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_escaped_char(self, c):
+ if c == '\n' or c == '\r':
+ self.parse_add_char(c)
+ self.state = AFTER_ESCAPED_CRNL
+ return
+ if c == '\0':
+ c = '\n'
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_after_escaped_crnl(self, c):
+ if c == '\0':
+ return
+ return self._parse_in_field(c)
+
+ def _parse_in_field(self, c):
+ # In unquoted field
+ if c == '\n' or c == '\r' or c == '\0':
+ # End of line - return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ else:
+ # Normal character - save in field
+ self.parse_add_char(c)
+
+ def _parse_in_quoted_field(self, c):
+ if c == '\0':
+ pass
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPE_IN_QUOTED_FIELD
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ if self.dialect.doublequote:
+ self.state = QUOTE_IN_QUOTED_FIELD
+ else:
+ self.state = IN_FIELD
+ else:
+ self.parse_add_char(c)
+
+ def _parse_escape_in_quoted_field(self, c):
+ if c == '\0':
+ c = '\n'
+
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+
+ def _parse_quote_in_quoted_field(self, c):
+ if (self.dialect.quoting != QUOTE_NONE and
+ c == self.dialect.quotechar):
+ # save "" as "
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ elif c == '\n' or c == '\r' or c == '\0':
+ # End of line = return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif not self.dialect.strict:
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+ else:
+ # illegal
+ raise Error("{delimiter}' expected after '{quotechar}".format(
+ delimiter=self.dialect.delimiter,
+ quotechar=self.dialect.quotechar,
+ ))
+
+ def _parse_eat_crnl(self, c):
+ if c == '\n' or c == '\r':
+ pass
+ elif c == '\0':
+ self.state = START_RECORD
+ else:
+ raise Error('new-line character seen in unquoted field - do you '
+ 'need to open the file in universal-newline mode?')
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ self.parse_reset()
+
+ while True:
+ try:
+ lineobj = next(self.input_iter)
+ except StopIteration:
+ if len(self.field) != 0 or self.state == IN_QUOTED_FIELD:
+ if self.dialect.strict:
+ raise Error('unexpected end of data')
+ self.parse_save_field()
+ if self.fields:
+ break
+ raise
+
+ if not isinstance(lineobj, text_type):
+ typ = type(lineobj)
+ typ_name = 'bytes' if typ == bytes else typ.__name__
+ err_str = ('iterator should return strings, not {0}'
+ ' (did you open the file in text mode?)')
+ raise Error(err_str.format(typ_name))
+
+ self.line_num += 1
+ for c in lineobj:
+ if c == '\0':
+ raise Error('line contains NULL byte')
+ self.parse_process_char(c)
+
+ self.parse_process_char('\0')
+
+ if self.state == START_RECORD:
+ break
+
+ fields = self.fields
+ self.fields = None
+ return fields
+
+ next = __next__
+
+
+_dialect_registry = {}
+
+
+def register_dialect(name, dialect='excel', **fmtparams):
+ if not isinstance(name, text_type):
+ raise TypeError('"name" must be a string')
+
+ dialect = Dialect.extend(dialect, fmtparams)
+
+ try:
+ Dialect.validate(dialect)
+ except Exception as e:
+ raise TypeError('dialect is invalid')
+
+ assert name not in _dialect_registry
+ _dialect_registry[name] = dialect
+
+
+def unregister_dialect(name):
+ try:
+ _dialect_registry.pop(name)
+ except KeyError:
+ raise Error('"{name}" not a registered dialect'.format(name=name))
+
+
+def get_dialect(name):
+ try:
+ return _dialect_registry[name]
+ except KeyError:
+ raise Error('Could not find dialect {0}'.format(name))
+
+
+def list_dialects():
+ return list(_dialect_registry)
+
+
+class Dialect(object):
+ """Describe a CSV dialect.
+ This must be subclassed (see csv.excel). Valid attributes are:
+ delimiter, quotechar, escapechar, doublequote, skipinitialspace,
+ lineterminator, quoting, strict.
+ """
+ _name = ""
+ _valid = False
+ # placeholders
+ delimiter = None
+ quotechar = None
+ escapechar = None
+ doublequote = None
+ skipinitialspace = None
+ lineterminator = None
+ quoting = None
+ strict = None
+
+ def __init__(self):
+ self.validate(self)
+ if self.__class__ != Dialect:
+ self._valid = True
+
+ @classmethod
+ def validate(cls, dialect):
+ dialect = cls.extend(dialect)
+
+ if not isinstance(dialect.quoting, int):
+ raise Error('"quoting" must be an integer')
+
+ if dialect.delimiter is None:
+ raise Error('delimiter must be set')
+ cls.validate_text(dialect, 'delimiter')
+
+ if dialect.lineterminator is None:
+ raise Error('lineterminator must be set')
+ if not isinstance(dialect.lineterminator, text_type):
+ raise Error('"lineterminator" must be a string')
+
+ if dialect.quoting not in [
+ QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_ALL]:
+ raise Error('Invalid quoting specified')
+
+ if dialect.quoting != QUOTE_NONE:
+ if dialect.quotechar is None and dialect.escapechar is None:
+ raise Error('quotechar must be set if quoting enabled')
+ if dialect.quotechar is not None:
+ cls.validate_text(dialect, 'quotechar')
+
+ @staticmethod
+ def validate_text(dialect, attr):
+ val = getattr(dialect, attr)
+ if not isinstance(val, text_type):
+ if type(val) == bytes:
+ raise Error('"{0}" must be string, not bytes'.format(attr))
+ raise Error('"{0}" must be string, not {1}'.format(
+ attr, type(val).__name__))
+
+ if len(val) != 1:
+ raise Error('"{0}" must be a 1-character string'.format(attr))
+
+ @staticmethod
+ def defaults():
+ return {
+ 'delimiter': ',',
+ 'doublequote': True,
+ 'escapechar': None,
+ 'lineterminator': '\r\n',
+ 'quotechar': '"',
+ 'quoting': QUOTE_MINIMAL,
+ 'skipinitialspace': False,
+ 'strict': False,
+ 'replace_nulls_with': None
+ }
+
+ @classmethod
+ def extend(cls, dialect, fmtparams=None):
+ if isinstance(dialect, string_types):
+ dialect = get_dialect(dialect)
+
+ if fmtparams is None:
+ return dialect
+
+ defaults = cls.defaults()
+
+ if any(param not in defaults for param in fmtparams):
+ raise TypeError('Invalid fmtparam')
+
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in cls.defaults()
+ )
+
+ specified.update(fmtparams)
+ return type(str('ExtendedDialect'), (cls,), specified)
+
+ @classmethod
+ def combine(cls, dialect, fmtparams):
+ """Create a new dialect with defaults and added parameters."""
+ dialect = cls.extend(dialect, fmtparams)
+ defaults = cls.defaults()
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in defaults
+ if getattr(dialect, attr, None) is not None or
+ attr in ['quotechar', 'delimiter', 'lineterminator', 'quoting']
+ )
+
+ defaults.update(specified)
+ dialect = type(str('CombinedDialect'), (cls,), defaults)
+ cls.validate(dialect)
+ return dialect()
+
+ def __delattr__(self, attr):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__delattr__(attr)
+
+ def __setattr__(self, attr, value):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__setattr__(attr, value)
+
+
+class excel(Dialect):
+ """Describe the usual properties of Excel-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\r\n'
+ quoting = QUOTE_MINIMAL
+
+
+register_dialect("excel", excel)
+
+
+class excel_tab(excel):
+ """Describe the usual properties of Excel-generated TAB-delimited files."""
+ delimiter = '\t'
+
+
+register_dialect("excel-tab", excel_tab)
+
+
+class unix_dialect(Dialect):
+ """Describe the usual properties of Unix-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\n'
+ quoting = QUOTE_ALL
+
+
+register_dialect("unix", unix_dialect)
+
+
+class DictReader(object):
+ def __init__(self, f, fieldnames=None, restkey=None, restval=None,
+ dialect="excel", *args, **kwds):
+ self._fieldnames = fieldnames # list of keys for the dict
+ self.restkey = restkey # key to catch long rows
+ self.restval = restval # default value for short rows
+ self.reader = reader(f, dialect, *args, **kwds)
+ self.dialect = dialect
+ self.line_num = 0
+
+ def __iter__(self):
+ return self
+
+ @property
+ def fieldnames(self):
+ if self._fieldnames is None:
+ try:
+ self._fieldnames = next(self.reader)
+ except StopIteration:
+ pass
+ self.line_num = self.reader.line_num
+ return self._fieldnames
+
+ @fieldnames.setter
+ def fieldnames(self, value):
+ self._fieldnames = value
+
+ def __next__(self):
+ if self.line_num == 0:
+ # Used only for its side effect.
+ self.fieldnames
+ row = next(self.reader)
+ self.line_num = self.reader.line_num
+
+ # unlike the basic reader, we prefer not to return blanks,
+ # because we will typically wind up with a dict full of None
+ # values
+ while row == []:
+ row = next(self.reader)
+ d = dict(zip(self.fieldnames, row))
+ lf = len(self.fieldnames)
+ lr = len(row)
+ if lf < lr:
+ d[self.restkey] = row[lf:]
+ elif lf > lr:
+ for key in self.fieldnames[lr:]:
+ d[key] = self.restval
+ return d
+
+ next = __next__
+
+
+class DictWriter(object):
+ def __init__(self, f, fieldnames, restval="", extrasaction="raise",
+ dialect="excel", *args, **kwds):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.restval = restval # for writing short dicts
+ if extrasaction.lower() not in ("raise", "ignore"):
+ raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
+ % extrasaction)
+ self.extrasaction = extrasaction
+ self.writer = writer(f, dialect, *args, **kwds)
+
+ def writeheader(self):
+ header = dict(zip(self.fieldnames, self.fieldnames))
+ self.writerow(header)
+
+ def _dict_to_list(self, rowdict):
+ if self.extrasaction == "raise":
+ wrong_fields = [k for k in rowdict if k not in self.fieldnames]
+ if wrong_fields:
+ raise ValueError("dict contains fields not in fieldnames: " +
+ ", ".join([repr(x) for x in wrong_fields]))
+ return (rowdict.get(key, self.restval) for key in self.fieldnames)
+
+ def writerow(self, rowdict):
+ return self.writer.writerow(self._dict_to_list(rowdict))
+
+ def writerows(self, rowdicts):
+ return self.writer.writerows(map(self._dict_to_list, rowdicts))
Index: pkg/mac/build.sh
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- pkg/mac/build.sh (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ pkg/mac/build.sh (date 1545392222000)
@@ -144,11 +144,6 @@
if test -d $DIR_PYMODULES_PATH; then
ln -s $(basename $DIR_PYMODULES_PATH) $DIR_PYMODULES_PATH/../python
fi
-
- # Fix the backports module which will have no __init__.py file
- if [ "$PYTHON_VERSION" -lt "30" ]; then
- touch $BUILDROOT/$VIRTUALENV/lib/python/site-packages/backports/__init__.py
- fi
}
_build_runtime() {
Index: web/pgadmin/utils/driver/psycopg2/connection.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- web/pgadmin/utils/driver/psycopg2/connection.py (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ web/pgadmin/utils/driver/psycopg2/connection.py (date 1545392222000)
@@ -37,16 +37,13 @@
register_string_typecasters, register_binary_typecasters, \
register_array_to_string_typecasters, ALL_JSON_TYPES
from .encoding import getEncoding
+from pgadmin.utils import csv
if sys.version_info < (3,):
- # Python2 in-built csv module do not handle unicode
- # backports.csv module ported from PY3 csv module for unicode handling
- from backports import csv
from StringIO import StringIO
IS_PY2 = True
else:
from io import StringIO
- import csv
IS_PY2 = False
_ = gettext
@@ -765,7 +762,31 @@
)
return new_results
- def gen(quote='strings', quote_char="'", field_separator=','):
+ def handle_null_values(results, replace_nulls_with):
+ """
+ This function is used to replace null values with the given string
+
+ :param results:
+ :param replace_nulls_with: null values will be replaced by this
+ string.
+ :return: modified result
+ """
+
+ temp_results = []
+ for row in results:
+ res = dict()
+ for k, v in row.items():
+ if v is None:
+ res[k] = replace_nulls_with
+ else:
+ res[k] = v
+ temp_results.append(res)
+ results = temp_results
+
+ return results
+
+ def gen(quote='strings', quote_char="'", field_separator=',',
+ replace_nulls_with=None):
results = cur.fetchmany(records)
if not results:
@@ -815,11 +836,15 @@
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
csv_writer.writeheader()
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
@@ -836,13 +861,17 @@
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
if IS_PY2:
results = convert_keys_to_unicode(results, conn_encoding)
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
Index: Make.bat
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- Make.bat (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ Make.bat (date 1545392222000)
@@ -255,11 +255,6 @@
ECHO Removing Sphinx
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
- IF %PYTHON_MAJOR% == 2 (
- ECHO Fixing backports.csv for Python 2 by adding missing __init__.py
- type nul >> "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\backports\__init__.py"
- )
-
IF %PYTHON_MAJOR% == 3 (
ECHO Fixing PyCrypto module for Python 3...
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py" "-o" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py.new" "-s" "import winrandom" -r "from . import winrandom"
Index: requirements.txt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- requirements.txt (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ requirements.txt (date 1545392222000)
@@ -44,7 +44,6 @@
###############################################################
# Modules specifically required for Python2.7 or lesser version
###############################################################
-backports.csv==1.0.5; python_version <= '2.7'
importlib==1.0.3; python_version <= '2.7'
###############################################################
Index: docs/en_US/preferences.rst
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- docs/en_US/preferences.rst (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ docs/en_US/preferences.rst (date 1545392477000)
@@ -146,6 +146,7 @@
* Use the *CSV field separator* drop-down listbox to specify the separator character that will be used in CSV output.
* Use the *CSV quote character* drop-down listbox to specify the quote character that will be used in CSV output.
* Use the *CSV quoting* drop-down listbox to select the fields that will be quoted in the CSV output; select *Strings*, *All*, or *None*.
+* Use the *Replace null values with* option to replace null values with specified string in the output file. Default is set to 'NULL'.
.. image:: images/preferences_sql_display.png
:alt: Preferences dialog sqleditor display options
Index: web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py (date 1545392477000)
@@ -198,6 +198,16 @@
}
)
+ self.replace_nulls_with = self.preference.register(
+ 'CSV_output', 'csv_replace_nulls_with',
+ gettext("Replace null values with"), 'text', 'NULL',
+ category_label=gettext('CSV output'),
+ help_str=gettext('Specifies the string that represents a null value '
+ 'while downloading query results as CSV. You can '
+ 'specify any arbitrary string to represent a '
+ 'null value, with quotes if desired.')
+ )
+
self.results_grid_quoting = self.preference.register(
'Results_grid', 'results_grid_quoting',
gettext("Result copy quoting"), 'options', 'strings',
Index: web/pgadmin/tools/sqleditor/__init__.py
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- web/pgadmin/tools/sqleditor/__init__.py (revision a000dc6f60cc4bcf527ecab264ca9261e5c8172f)
+++ web/pgadmin/tools/sqleditor/__init__.py (date 1545392222000)
@@ -1434,7 +1434,8 @@
gen(
quote=blueprint.csv_quoting.get(),
quote_char=blueprint.csv_quote_char.get(),
- field_separator=blueprint.csv_field_separator.get()
+ field_separator=blueprint.csv_field_separator.get(),
+ replace_nulls_with=blueprint.replace_nulls_with.get()
),
mimetype='text/csv'
)
diff --git docs/en_US/images/preferences_sql_csv_output.png docs/en_US/images/preferences_sql_csv_output.png
index 48dee9c62a87640af5085cefad9dbd400912c867..ee3475d57ce9865cfe1552f3ebe09fac96767519
GIT binary patch
literal 71521
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
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-21 12:56 ` Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-21 12:56 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave
I have modified the condition, it won't through any exception. Attached is
the updated patch, please review it.
On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
> Sorry! Here is is.
>
> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Dave
>>
>> Can you please attached the updated patch with your changes. I'll try to
>> fix the exception.
>>
>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> Here's an updated patch as I've tweaked some of the wording. The
>>> screenshot probably isn't the right resolution, but as we're replacing them
>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>
>>> With quoting set to either All or Strings, everything looks good. With
>>> it set to None, I still get an exception (below). The query I'm using is
>>> this:
>>>
>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>
>>> Field separator: ,
>>> Quote character: "
>>> Replace null's with: NULL
>>>
>>> Steps:
>>>
>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms, using
>>> the venv detailed below.
>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on MacOS
>>> 10.14.1
>>> 3) Run the above query, wit quoting set to All and check the result in
>>> the grid.
>>> 4) Download the CSV file and check.
>>> 5) Open Preferences and set quoting to Strings.
>>> 6) Download the CSV file and check.
>>> 7) Open Preferences and set quoting to None.
>>> 8) Download the CSV file *exception occurs*.
>>>
>>>
>>> System info:
>>>
>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>
>>> Python 3.6.7
>>>
>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>
>>> alabaster==0.7.11
>>>
>>> alembic==1.0.0
>>>
>>> asn1crypto==0.24.0
>>>
>>> Babel==2.6.0
>>>
>>> bcrypt==3.1.4
>>>
>>> blinker==1.4
>>>
>>> certifi==2018.8.24
>>>
>>> cffi==1.11.5
>>>
>>> chardet==3.0.4
>>>
>>> chromedriver-installer==0.0.6
>>>
>>> click==6.7
>>>
>>> cryptography==2.3
>>>
>>> docutils==0.14
>>>
>>> extras==1.0.0
>>>
>>> fixtures==3.0.0
>>>
>>> Flask==0.12.4
>>>
>>> Flask-BabelEx==0.9.3
>>>
>>> Flask-Gravatar==0.5.0
>>>
>>> Flask-HTMLmin==1.3.2
>>>
>>> Flask-Login==0.3.2
>>>
>>> Flask-Mail==0.9.1
>>>
>>> Flask-Migrate==2.1.1
>>>
>>> Flask-Paranoid==0.2.0
>>>
>>> Flask-Principal==0.4.0
>>>
>>> Flask-Security==3.0.0
>>>
>>> Flask-SQLAlchemy==2.3.2
>>>
>>> Flask-WTF==0.14.2
>>>
>>> html5lib==1.0.1
>>>
>>> htmlmin==0.1.12
>>>
>>> idna==2.7
>>>
>>> imagesize==1.1.0
>>>
>>> itsdangerous==0.24
>>>
>>> Jinja2==2.10
>>>
>>> linecache2==1.0.0
>>>
>>> Mako==1.0.7
>>>
>>> MarkupSafe==1.0
>>>
>>> packaging==18.0
>>>
>>> paramiko==2.4.1
>>>
>>> passlib==1.7.1
>>>
>>> pbr==3.1.1
>>>
>>> psutil==5.4.8
>>>
>>> psycopg2==2.7.5
>>>
>>> pyasn1==0.4.4
>>>
>>> pycodestyle==2.3.1
>>>
>>> pycparser==2.18
>>>
>>> pycrypto==2.6.1
>>>
>>> Pygments==2.2.0
>>>
>>> PyNaCl==1.2.1
>>>
>>> pyparsing==2.2.2
>>>
>>> pyperclip==1.6.4
>>>
>>> pyrsistent==0.14.2
>>>
>>> python-dateutil==2.7.3
>>>
>>> python-editor==1.0.3
>>>
>>> python-mimeparse==1.6.0
>>>
>>> pytz==2018.3
>>>
>>> requests==2.19.1
>>>
>>> selenium==3.14.1
>>>
>>> simplejson==3.13.2
>>>
>>> six==1.11.0
>>>
>>> snowballstemmer==1.2.1
>>>
>>> speaklater==1.3
>>>
>>> Sphinx==1.8.2
>>>
>>> sphinxcontrib-websupport==1.1.0
>>>
>>> SQLAlchemy==1.2.10
>>>
>>> sqlparse==0.2.4
>>>
>>> sshtunnel==0.1.4
>>>
>>> testscenarios==0.5.0
>>>
>>> testtools==2.3.0
>>>
>>> traceback2==1.4.0
>>>
>>> unittest2==1.1.0
>>>
>>> urllib3==1.23
>>>
>>> webencodings==0.5.1
>>>
>>> Werkzeug==0.14.1
>>>
>>> WTForms==2.1
>>>
>>> Exception:
>>>
>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor) for
>>> server #2 - CONN:8760231 (Query-id: 8649354):
>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>> 11:47:29] "GET
>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>> HTTP/1.1" 500 -
>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>> Traceback (most recent call last):
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 270, in run_wsgi
>>> execute(self.server.app)
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>> line 260, in execute
>>> for data in application_iter:
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>> line 870, in __next__
>>> return self._next()
>>> File
>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>> line 82, in _iter_encoded
>>> for item in iterable:
>>> File
>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>> line 848, in gen
>>> csv_writer.writerows(results)
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761,
>>> in writerows
>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268,
>>> in writerows
>>> self.writerow(row)
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>> in writerow
>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>> in <listcomp>
>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142,
>>> in prepare
>>> raise Error('No escapechar is set')
>>> _csv.Error: No escapechar is set
>>>
>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave
>>>>
>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave
>>>>>>>
>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> When testing with quoting set to None, quote = " and delimiter = ,
>>>>>>>> I get the following exception when I try to download:
>>>>>>>>
>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server cursor)
>>>>>>>> for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - - [20/Dec/2018
>>>>>>>> 09:34:02] "GET
>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>> HTTP/1.1" 500 -
>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>> Traceback (most recent call last):
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 270, in run_wsgi
>>>>>>>> execute(self.server.app)
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 260, in execute
>>>>>>>> for data in application_iter:
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>> line 870, in __next__
>>>>>>>> return self._next()
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>> line 82, in _iter_encoded
>>>>>>>> for item in iterable:
>>>>>>>> File
>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>> line 820, in gen
>>>>>>>> csv_writer.writerows(results)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 748, in writerows
>>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 256, in writerows
>>>>>>>> self.writerow(row)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 249, in writerow
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 249, in <listcomp>
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 136, in prepare
>>>>>>>> raise Error('No escapechar is set')
>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>
>>>>>>>
>>>>>>> Not able to reproduce the above issue. I have tested it with the
>>>>>>> same setting as you mentioned. Please refer all the attached screenshots.
>>>>>>> Please specify the steps if they are different.
>>>>>>>
>>>>>>>>
>>>>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>>>>
>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>
>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>
>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>
>>>>>>>> Bar"
>>>>>>>>
>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>
>>>>>>>
>>>>>>> while quoting is set to ALL, all the data types has been quoted,
>>>>>>> so I thought null values should be replaced by "" instead of blank. But if
>>>>>>> you think null values shouldn't be quoted even if user select quote ALL,
>>>>>>> I'll fix it and resend the patch.
>>>>>>>
>>>>>>
>>>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>>>> exactly what the bug is about?
>>>>>>
>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>> that is set to - for which the user could then choose options like:
>>>>>>
>>>>>> NULL
>>>>>> "NULL"
>>>>>> ""
>>>>>> ''
>>>>>> <empty string>
>>>>>>
>>>>>> We would never quote the NULL replacement value - if the user wanted
>>>>>> it to be quoted, they would include the quotes in the configured string.
>>>>>>
>>>>>
>>>>>
>>>>> OK, Will work on it and send the modified patch again.
>>>>>
>>>>
>>>> Attached is the modified patch as per your suggestion.
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave
>>>>>>>>>
>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>
>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>
>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability to
>>>>>>>>>>>> specify NULL values in CSV export.
>>>>>>>>>>>>
>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> A few points;
>>>>>>>>>>>
>>>>>>>>>>> - You've included code from backports.csv, but per the licence
>>>>>>>>>>> you need to include a description of the changes made.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Sure. In that case I'll copy the complete file and will do
>>>>>>>>>> my changes which is of two lines only. With my patch I have remove all the
>>>>>>>>>> unwanted code from backport.csv.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or
>>>>>>>>>>> is it used elsewhere?
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there is
>>>>>>>>>>> code in one or more of the many package build scripts that adds an
>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
Attachments:
[text/x-patch] RM_3780_v5.patch (254.1K, 3-RM_3780_v5.patch)
download | inline diff:
diff --git a/Make.bat b/Make.bat
index fdd62a0c..592d0d88 100644
--- a/Make.bat
+++ b/Make.bat
@@ -255,11 +255,6 @@ REM Main build sequence Ends
ECHO Removing Sphinx
CALL pip uninstall -y sphinx Pygments alabaster colorama docutils imagesize requests snowballstemmer
- IF %PYTHON_MAJOR% == 2 (
- ECHO Fixing backports.csv for Python 2 by adding missing __init__.py
- type nul >> "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\backports\__init__.py"
- )
-
IF %PYTHON_MAJOR% == 3 (
ECHO Fixing PyCrypto module for Python 3...
CALL "%PYTHON_HOME%\python" "%WD%\pkg\win32\replace.py" "-i" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py" "-o" "%PGBUILDPATH%\%VIRTUALENV%\Lib\site-packages\Crypto\Random\OSRNG\nt.py.new" "-s" "import winrandom" -r "from . import winrandom"
diff --git a/docs/en_US/images/preferences_sql_csv_output.png b/docs/en_US/images/preferences_sql_csv_output.png
index 48dee9c62a87640af5085cefad9dbd400912c867..ee3475d57ce9865cfe1552f3ebe09fac96767519 100644
GIT binary patch
literal 71521
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%0A)`EkT9Dxm4H?(f%Tna
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
literal 140688
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%0DPVs
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
Vn2yhodJp^~Eg^R&T};>Ge*s}b_I>~W
diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e47866f0..e547f299 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -146,6 +146,7 @@ Use the fields on the *CSV Output* panel to control the CSV output.
* Use the *CSV field separator* drop-down listbox to specify the separator character that will be used in CSV output.
* Use the *CSV quote character* drop-down listbox to specify the quote character that will be used in CSV output.
* Use the *CSV quoting* drop-down listbox to select the fields that will be quoted in the CSV output; select *Strings*, *All*, or *None*.
+* Use the *Replace null values with* option to replace null values with specified string in the output file. Default is set to 'NULL'.
.. image:: images/preferences_sql_display.png
:alt: Preferences dialog sqleditor display options
diff --git a/pkg/mac/build.sh b/pkg/mac/build.sh
index 11d17e80..3cb97417 100755
--- a/pkg/mac/build.sh
+++ b/pkg/mac/build.sh
@@ -144,11 +144,6 @@ _create_python_virtualenv() {
if test -d $DIR_PYMODULES_PATH; then
ln -s $(basename $DIR_PYMODULES_PATH) $DIR_PYMODULES_PATH/../python
fi
-
- # Fix the backports module which will have no __init__.py file
- if [ "$PYTHON_VERSION" -lt "30" ]; then
- touch $BUILDROOT/$VIRTUALENV/lib/python/site-packages/backports/__init__.py
- fi
}
_build_runtime() {
diff --git a/pkg/pip/setup_pip.py b/pkg/pip/setup_pip.py
index 693fcadf..2ab1c1d3 100644
--- a/pkg/pip/setup_pip.py
+++ b/pkg/pip/setup_pip.py
@@ -96,7 +96,6 @@ setup(
"Flask-BabelEx==0.9.3"
],
":python_version<='2.7'": [
- "backports.csv==1.0.5",
"importlib==1.0.3"
],
":python_version>='2.7'": [
diff --git a/requirements.txt b/requirements.txt
index 74c46035..92eae7dd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -44,7 +44,6 @@ sshtunnel>=0.1.3; python_version >= '2.7'
###############################################################
# Modules specifically required for Python2.7 or lesser version
###############################################################
-backports.csv==1.0.5; python_version <= '2.7'
importlib==1.0.3; python_version <= '2.7'
###############################################################
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index 43e1a094..1245c861 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1434,7 +1434,8 @@ def start_query_download_tool(trans_id):
gen(
quote=blueprint.csv_quoting.get(),
quote_char=blueprint.csv_quote_char.get(),
- field_separator=blueprint.csv_field_separator.get()
+ field_separator=blueprint.csv_field_separator.get(),
+ replace_nulls_with=blueprint.replace_nulls_with.get()
),
mimetype='text/csv'
)
diff --git a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
index 5e2a8ef1..fe112f42 100644
--- a/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
+++ b/web/pgadmin/tools/sqleditor/utils/query_tool_preferences.py
@@ -198,6 +198,16 @@ def RegisterQueryToolPreferences(self):
}
)
+ self.replace_nulls_with = self.preference.register(
+ 'CSV_output', 'csv_replace_nulls_with',
+ gettext("Replace null values with"), 'text', 'NULL',
+ category_label=gettext('CSV output'),
+ help_str=gettext('Specifies the string that represents a null value '
+ 'while downloading query results as CSV. You can '
+ 'specify any arbitrary string to represent a '
+ 'null value, with quotes if desired.')
+ )
+
self.results_grid_quoting = self.preference.register(
'Results_grid', 'results_grid_quoting',
gettext("Result copy quoting"), 'options', 'strings',
diff --git a/web/pgadmin/utils/csv.py b/web/pgadmin/utils/csv.py
new file mode 100644
index 00000000..991e0665
--- /dev/null
+++ b/web/pgadmin/utils/csv.py
@@ -0,0 +1,761 @@
+"""
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,2010
+2011, 2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version prepared by
+Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+"""
+
+############################################################################
+# Changes:
+# Added new parameter in dialect 'replace_nulls_with' to compare it against
+# the value to be quoted or not.
+# Handle the null value if value is None or equal to
+# 'replace_nulls_with' then it represents the null value, so no need to
+# quote it.
+############################################################################
+
+from __future__ import unicode_literals, absolute_import
+
+__all__ = ["QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
+ "Error", "Dialect", "__doc__", "excel", "excel_tab",
+ "field_size_limit", "reader", "writer", "register_dialect",
+ "get_dialect", "list_dialects", "unregister_dialect",
+ "__version__", "DictReader", "DictWriter"]
+
+import re
+import numbers
+from io import StringIO
+from csv import (
+ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE,
+ __version__, __doc__, Error, field_size_limit,
+)
+
+# Stuff needed from six
+import sys
+PY3 = sys.version_info[0] == 3
+if PY3:
+ string_types = str
+ text_type = str
+ binary_type = bytes
+ unichr = chr
+else:
+ string_types = basestring
+ text_type = unicode
+ binary_type = str
+
+
+class QuoteStrategy(object):
+ quoting = None
+
+ def __init__(self, dialect):
+ if self.quoting is not None:
+ assert dialect.quoting == self.quoting
+ self.dialect = dialect
+ self.setup()
+
+ escape_pattern_quoted = r'({quotechar})'.format(
+ quotechar=re.escape(self.dialect.quotechar or '"'))
+ escape_pattern_unquoted = r'([{specialchars}])'.format(
+ specialchars=re.escape(self.specialchars))
+
+ self.escape_re_quoted = re.compile(escape_pattern_quoted)
+ self.escape_re_unquoted = re.compile(escape_pattern_unquoted)
+
+ def setup(self):
+ """Optional method for strategy-wide optimizations."""
+
+ def quoted(self, field=None, raw_field=None, only=None):
+ """Determine whether this field should be quoted."""
+ raise NotImplementedError(
+ 'quoted must be implemented by a subclass')
+
+ @property
+ def specialchars(self):
+ """The special characters that need to be escaped."""
+ raise NotImplementedError(
+ 'specialchars must be implemented by a subclass')
+
+ def escape_re(self, quoted=None):
+ if quoted:
+ return self.escape_re_quoted
+ return self.escape_re_unquoted
+
+ def escapechar(self, quoted=None):
+ if quoted and self.dialect.doublequote:
+ return self.dialect.quotechar
+ return self.dialect.escapechar
+
+ def prepare(self, raw_field, only=None):
+ field = text_type(raw_field if raw_field is not None else '')
+ quoted = self.quoted(field=field, raw_field=raw_field, only=only)
+
+ escape_re = self.escape_re(quoted=quoted)
+ escapechar = self.escapechar(quoted=quoted)
+
+ if escape_re.search(field):
+ escapechar = '\\\\' if escapechar == '\\' else escapechar
+ if escapechar:
+ escape_replace = \
+ r'{escapechar}\1'.format(escapechar=escapechar)
+ field = escape_re.sub(escape_replace, field)
+
+ if quoted:
+ field = '{quotechar}{field}{quotechar}'.format(
+ quotechar=self.dialect.quotechar, field=field)
+
+ return field
+
+
+class QuoteMinimalStrategy(QuoteStrategy):
+ quoting = QUOTE_MINIMAL
+
+ def setup(self):
+ self.quoted_re = re.compile(r'[{specialchars}]'.format(
+ specialchars=re.escape(self.specialchars)))
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == self.dialect.quotechar and not self.dialect.doublequote:
+ # If the only character in the field is the quotechar, and
+ # doublequote is false, then just escape without outer quotes.
+ return False
+ return field == '' and only or bool(self.quoted_re.search(field))
+
+
+class QuoteAllStrategy(QuoteStrategy):
+ quoting = QUOTE_ALL
+
+ @property
+ def specialchars(self):
+ return self.dialect.quotechar
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return True
+
+
+class QuoteNonnumericStrategy(QuoteStrategy):
+ quoting = QUOTE_NONNUMERIC
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ self.dialect.quotechar +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, raw_field, **kwargs):
+ # Handle the null value if raw_field is None or equal to
+ # replace_nulls_with then it represents the null value, so no need to
+ # quote it.
+ if raw_field is None or raw_field == self.dialect.replace_nulls_with:
+ return False
+ return not isinstance(raw_field, numbers.Number)
+
+
+class QuoteNoneStrategy(QuoteStrategy):
+ quoting = QUOTE_NONE
+
+ @property
+ def specialchars(self):
+ return (
+ self.dialect.lineterminator +
+ (self.dialect.quotechar or '') +
+ self.dialect.delimiter +
+ (self.dialect.escapechar or '')
+ )
+
+ def quoted(self, field, only, **kwargs):
+ if field == '' and only:
+ raise Error('single empty field record must be quoted')
+ return False
+
+
+class writer(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ if fileobj is None:
+ raise TypeError('fileobj must be file-like, not None')
+
+ self.fileobj = fileobj
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ strategies = {
+ QUOTE_MINIMAL: QuoteMinimalStrategy,
+ QUOTE_ALL: QuoteAllStrategy,
+ QUOTE_NONNUMERIC: QuoteNonnumericStrategy,
+ QUOTE_NONE: QuoteNoneStrategy,
+ }
+ self.strategy = strategies[self.dialect.quoting](self.dialect)
+
+ def writerow(self, row):
+ if row is None:
+ raise Error('row must be an iterable')
+
+ row = list(row)
+ only = len(row) == 1
+ row = [self.strategy.prepare(field, only=only) for field in row]
+
+ line = self.dialect.delimiter.join(row) + self.dialect.lineterminator
+ return self.fileobj.write(line)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+START_RECORD = 0
+START_FIELD = 1
+ESCAPED_CHAR = 2
+IN_FIELD = 3
+IN_QUOTED_FIELD = 4
+ESCAPE_IN_QUOTED_FIELD = 5
+QUOTE_IN_QUOTED_FIELD = 6
+EAT_CRNL = 7
+AFTER_ESCAPED_CRNL = 8
+
+
+class reader(object):
+ def __init__(self, fileobj, dialect='excel', **fmtparams):
+ self.input_iter = iter(fileobj)
+
+ if isinstance(dialect, text_type):
+ dialect = get_dialect(dialect)
+
+ try:
+ self.dialect = Dialect.combine(dialect, fmtparams)
+ except Error as e:
+ raise TypeError(*e.args)
+
+ self.fields = None
+ self.field = None
+ self.line_num = 0
+
+ def parse_reset(self):
+ self.fields = []
+ self.field = []
+ self.state = START_RECORD
+ self.numeric_field = False
+
+ def parse_save_field(self):
+ field = ''.join(self.field)
+ self.field = []
+ if self.numeric_field:
+ field = float(field)
+ self.numeric_field = False
+ self.fields.append(field)
+
+ def parse_add_char(self, c):
+ if len(self.field) >= field_size_limit():
+ raise Error('field size limit exceeded')
+ self.field.append(c)
+
+ def parse_process_char(self, c):
+ switch = {
+ START_RECORD: self._parse_start_record,
+ START_FIELD: self._parse_start_field,
+ ESCAPED_CHAR: self._parse_escaped_char,
+ AFTER_ESCAPED_CRNL: self._parse_after_escaped_crnl,
+ IN_FIELD: self._parse_in_field,
+ IN_QUOTED_FIELD: self._parse_in_quoted_field,
+ ESCAPE_IN_QUOTED_FIELD: self._parse_escape_in_quoted_field,
+ QUOTE_IN_QUOTED_FIELD: self._parse_quote_in_quoted_field,
+ EAT_CRNL: self._parse_eat_crnl,
+ }
+ return switch[self.state](c)
+
+ def _parse_start_record(self, c):
+ if c == '\0':
+ return
+ elif c == '\n' or c == '\r':
+ self.state = EAT_CRNL
+ return
+
+ self.state = START_FIELD
+ return self._parse_start_field(c)
+
+ def _parse_start_field(self, c):
+ if c == '\n' or c == '\r' or c == '\0':
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == ' ' and self.dialect.skipinitialspace:
+ pass # Ignore space at start of field
+ elif c == self.dialect.delimiter:
+ # Save empty field
+ self.parse_save_field()
+ else:
+ # Begin new unquoted field
+ if self.dialect.quoting == QUOTE_NONNUMERIC:
+ self.numeric_field = True
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_escaped_char(self, c):
+ if c == '\n' or c == '\r':
+ self.parse_add_char(c)
+ self.state = AFTER_ESCAPED_CRNL
+ return
+ if c == '\0':
+ c = '\n'
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+
+ def _parse_after_escaped_crnl(self, c):
+ if c == '\0':
+ return
+ return self._parse_in_field(c)
+
+ def _parse_in_field(self, c):
+ # In unquoted field
+ if c == '\n' or c == '\r' or c == '\0':
+ # End of line - return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPED_CHAR
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ else:
+ # Normal character - save in field
+ self.parse_add_char(c)
+
+ def _parse_in_quoted_field(self, c):
+ if c == '\0':
+ pass
+ elif c == self.dialect.escapechar:
+ self.state = ESCAPE_IN_QUOTED_FIELD
+ elif (c == self.dialect.quotechar and
+ self.dialect.quoting != QUOTE_NONE):
+ if self.dialect.doublequote:
+ self.state = QUOTE_IN_QUOTED_FIELD
+ else:
+ self.state = IN_FIELD
+ else:
+ self.parse_add_char(c)
+
+ def _parse_escape_in_quoted_field(self, c):
+ if c == '\0':
+ c = '\n'
+
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+
+ def _parse_quote_in_quoted_field(self, c):
+ if (self.dialect.quoting != QUOTE_NONE and
+ c == self.dialect.quotechar):
+ # save "" as "
+ self.parse_add_char(c)
+ self.state = IN_QUOTED_FIELD
+ elif c == self.dialect.delimiter:
+ self.parse_save_field()
+ self.state = START_FIELD
+ elif c == '\n' or c == '\r' or c == '\0':
+ # End of line = return [fields]
+ self.parse_save_field()
+ self.state = START_RECORD if c == '\0' else EAT_CRNL
+ elif not self.dialect.strict:
+ self.parse_add_char(c)
+ self.state = IN_FIELD
+ else:
+ # illegal
+ raise Error("{delimiter}' expected after '{quotechar}".format(
+ delimiter=self.dialect.delimiter,
+ quotechar=self.dialect.quotechar,
+ ))
+
+ def _parse_eat_crnl(self, c):
+ if c == '\n' or c == '\r':
+ pass
+ elif c == '\0':
+ self.state = START_RECORD
+ else:
+ raise Error('new-line character seen in unquoted field - do you '
+ 'need to open the file in universal-newline mode?')
+
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ self.parse_reset()
+
+ while True:
+ try:
+ lineobj = next(self.input_iter)
+ except StopIteration:
+ if len(self.field) != 0 or self.state == IN_QUOTED_FIELD:
+ if self.dialect.strict:
+ raise Error('unexpected end of data')
+ self.parse_save_field()
+ if self.fields:
+ break
+ raise
+
+ if not isinstance(lineobj, text_type):
+ typ = type(lineobj)
+ typ_name = 'bytes' if typ == bytes else typ.__name__
+ err_str = ('iterator should return strings, not {0}'
+ ' (did you open the file in text mode?)')
+ raise Error(err_str.format(typ_name))
+
+ self.line_num += 1
+ for c in lineobj:
+ if c == '\0':
+ raise Error('line contains NULL byte')
+ self.parse_process_char(c)
+
+ self.parse_process_char('\0')
+
+ if self.state == START_RECORD:
+ break
+
+ fields = self.fields
+ self.fields = None
+ return fields
+
+ next = __next__
+
+
+_dialect_registry = {}
+
+
+def register_dialect(name, dialect='excel', **fmtparams):
+ if not isinstance(name, text_type):
+ raise TypeError('"name" must be a string')
+
+ dialect = Dialect.extend(dialect, fmtparams)
+
+ try:
+ Dialect.validate(dialect)
+ except Exception as e:
+ raise TypeError('dialect is invalid')
+
+ assert name not in _dialect_registry
+ _dialect_registry[name] = dialect
+
+
+def unregister_dialect(name):
+ try:
+ _dialect_registry.pop(name)
+ except KeyError:
+ raise Error('"{name}" not a registered dialect'.format(name=name))
+
+
+def get_dialect(name):
+ try:
+ return _dialect_registry[name]
+ except KeyError:
+ raise Error('Could not find dialect {0}'.format(name))
+
+
+def list_dialects():
+ return list(_dialect_registry)
+
+
+class Dialect(object):
+ """Describe a CSV dialect.
+ This must be subclassed (see csv.excel). Valid attributes are:
+ delimiter, quotechar, escapechar, doublequote, skipinitialspace,
+ lineterminator, quoting, strict.
+ """
+ _name = ""
+ _valid = False
+ # placeholders
+ delimiter = None
+ quotechar = None
+ escapechar = None
+ doublequote = None
+ skipinitialspace = None
+ lineterminator = None
+ quoting = None
+ strict = None
+
+ def __init__(self):
+ self.validate(self)
+ if self.__class__ != Dialect:
+ self._valid = True
+
+ @classmethod
+ def validate(cls, dialect):
+ dialect = cls.extend(dialect)
+
+ if not isinstance(dialect.quoting, int):
+ raise Error('"quoting" must be an integer')
+
+ if dialect.delimiter is None:
+ raise Error('delimiter must be set')
+ cls.validate_text(dialect, 'delimiter')
+
+ if dialect.lineterminator is None:
+ raise Error('lineterminator must be set')
+ if not isinstance(dialect.lineterminator, text_type):
+ raise Error('"lineterminator" must be a string')
+
+ if dialect.quoting not in [
+ QUOTE_NONE, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_ALL]:
+ raise Error('Invalid quoting specified')
+
+ if dialect.quoting != QUOTE_NONE:
+ if dialect.quotechar is None and dialect.escapechar is None:
+ raise Error('quotechar must be set if quoting enabled')
+ if dialect.quotechar is not None:
+ cls.validate_text(dialect, 'quotechar')
+
+ @staticmethod
+ def validate_text(dialect, attr):
+ val = getattr(dialect, attr)
+ if not isinstance(val, text_type):
+ if type(val) == bytes:
+ raise Error('"{0}" must be string, not bytes'.format(attr))
+ raise Error('"{0}" must be string, not {1}'.format(
+ attr, type(val).__name__))
+
+ if len(val) != 1:
+ raise Error('"{0}" must be a 1-character string'.format(attr))
+
+ @staticmethod
+ def defaults():
+ return {
+ 'delimiter': ',',
+ 'doublequote': True,
+ 'escapechar': None,
+ 'lineterminator': '\r\n',
+ 'quotechar': '"',
+ 'quoting': QUOTE_MINIMAL,
+ 'skipinitialspace': False,
+ 'strict': False,
+ 'replace_nulls_with': None
+ }
+
+ @classmethod
+ def extend(cls, dialect, fmtparams=None):
+ if isinstance(dialect, string_types):
+ dialect = get_dialect(dialect)
+
+ if fmtparams is None:
+ return dialect
+
+ defaults = cls.defaults()
+
+ if any(param not in defaults for param in fmtparams):
+ raise TypeError('Invalid fmtparam')
+
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in cls.defaults()
+ )
+
+ specified.update(fmtparams)
+ return type(str('ExtendedDialect'), (cls,), specified)
+
+ @classmethod
+ def combine(cls, dialect, fmtparams):
+ """Create a new dialect with defaults and added parameters."""
+ dialect = cls.extend(dialect, fmtparams)
+ defaults = cls.defaults()
+ specified = dict(
+ (attr, getattr(dialect, attr, None))
+ for attr in defaults
+ if getattr(dialect, attr, None) is not None or
+ attr in ['quotechar', 'delimiter', 'lineterminator', 'quoting']
+ )
+
+ defaults.update(specified)
+ dialect = type(str('CombinedDialect'), (cls,), defaults)
+ cls.validate(dialect)
+ return dialect()
+
+ def __delattr__(self, attr):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__delattr__(attr)
+
+ def __setattr__(self, attr, value):
+ if self._valid:
+ raise AttributeError('dialect is immutable.')
+ super(Dialect, self).__setattr__(attr, value)
+
+
+class excel(Dialect):
+ """Describe the usual properties of Excel-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\r\n'
+ quoting = QUOTE_MINIMAL
+
+
+register_dialect("excel", excel)
+
+
+class excel_tab(excel):
+ """Describe the usual properties of Excel-generated TAB-delimited files."""
+ delimiter = '\t'
+
+
+register_dialect("excel-tab", excel_tab)
+
+
+class unix_dialect(Dialect):
+ """Describe the usual properties of Unix-generated CSV files."""
+ delimiter = ','
+ quotechar = '"'
+ doublequote = True
+ skipinitialspace = False
+ lineterminator = '\n'
+ quoting = QUOTE_ALL
+
+
+register_dialect("unix", unix_dialect)
+
+
+class DictReader(object):
+ def __init__(self, f, fieldnames=None, restkey=None, restval=None,
+ dialect="excel", *args, **kwds):
+ self._fieldnames = fieldnames # list of keys for the dict
+ self.restkey = restkey # key to catch long rows
+ self.restval = restval # default value for short rows
+ self.reader = reader(f, dialect, *args, **kwds)
+ self.dialect = dialect
+ self.line_num = 0
+
+ def __iter__(self):
+ return self
+
+ @property
+ def fieldnames(self):
+ if self._fieldnames is None:
+ try:
+ self._fieldnames = next(self.reader)
+ except StopIteration:
+ pass
+ self.line_num = self.reader.line_num
+ return self._fieldnames
+
+ @fieldnames.setter
+ def fieldnames(self, value):
+ self._fieldnames = value
+
+ def __next__(self):
+ if self.line_num == 0:
+ # Used only for its side effect.
+ self.fieldnames
+ row = next(self.reader)
+ self.line_num = self.reader.line_num
+
+ # unlike the basic reader, we prefer not to return blanks,
+ # because we will typically wind up with a dict full of None
+ # values
+ while row == []:
+ row = next(self.reader)
+ d = dict(zip(self.fieldnames, row))
+ lf = len(self.fieldnames)
+ lr = len(row)
+ if lf < lr:
+ d[self.restkey] = row[lf:]
+ elif lf > lr:
+ for key in self.fieldnames[lr:]:
+ d[key] = self.restval
+ return d
+
+ next = __next__
+
+
+class DictWriter(object):
+ def __init__(self, f, fieldnames, restval="", extrasaction="raise",
+ dialect="excel", *args, **kwds):
+ self.fieldnames = fieldnames # list of keys for the dict
+ self.restval = restval # for writing short dicts
+ if extrasaction.lower() not in ("raise", "ignore"):
+ raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
+ % extrasaction)
+ self.extrasaction = extrasaction
+ self.writer = writer(f, dialect, *args, **kwds)
+
+ def writeheader(self):
+ header = dict(zip(self.fieldnames, self.fieldnames))
+ self.writerow(header)
+
+ def _dict_to_list(self, rowdict):
+ if self.extrasaction == "raise":
+ wrong_fields = [k for k in rowdict if k not in self.fieldnames]
+ if wrong_fields:
+ raise ValueError("dict contains fields not in fieldnames: " +
+ ", ".join([repr(x) for x in wrong_fields]))
+ return (rowdict.get(key, self.restval) for key in self.fieldnames)
+
+ def writerow(self, rowdict):
+ return self.writer.writerow(self._dict_to_list(rowdict))
+
+ def writerows(self, rowdicts):
+ return self.writer.writerows(map(self._dict_to_list, rowdicts))
diff --git a/web/pgadmin/utils/driver/psycopg2/connection.py b/web/pgadmin/utils/driver/psycopg2/connection.py
index 2c9fcb5a..1e0253d3 100644
--- a/web/pgadmin/utils/driver/psycopg2/connection.py
+++ b/web/pgadmin/utils/driver/psycopg2/connection.py
@@ -37,16 +37,13 @@ from .typecast import register_global_typecasters, \
register_string_typecasters, register_binary_typecasters, \
register_array_to_string_typecasters, ALL_JSON_TYPES
from .encoding import getEncoding
+from pgadmin.utils import csv
if sys.version_info < (3,):
- # Python2 in-built csv module do not handle unicode
- # backports.csv module ported from PY3 csv module for unicode handling
- from backports import csv
from StringIO import StringIO
IS_PY2 = True
else:
from io import StringIO
- import csv
IS_PY2 = False
_ = gettext
@@ -765,7 +762,31 @@ WHERE
)
return new_results
- def gen(quote='strings', quote_char="'", field_separator=','):
+ def handle_null_values(results, replace_nulls_with):
+ """
+ This function is used to replace null values with the given string
+
+ :param results:
+ :param replace_nulls_with: null values will be replaced by this
+ string.
+ :return: modified result
+ """
+
+ temp_results = []
+ for row in results:
+ res = dict()
+ for k, v in row.items():
+ if v is None:
+ res[k] = replace_nulls_with
+ else:
+ res[k] = v
+ temp_results.append(res)
+ results = temp_results
+
+ return results
+
+ def gen(quote='strings', quote_char="'", field_separator=',',
+ replace_nulls_with=None):
results = cur.fetchmany(records)
if not results:
@@ -815,11 +836,15 @@ WHERE
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
csv_writer.writeheader()
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
@@ -836,13 +861,17 @@ WHERE
csv_writer = csv.DictWriter(
res_io, fieldnames=header, delimiter=field_separator,
quoting=quote,
- quotechar=quote_char
+ quotechar=quote_char,
+ replace_nulls_with=replace_nulls_with
)
if IS_PY2:
results = convert_keys_to_unicode(results, conn_encoding)
results = handle_json_data(json_columns, results)
+ # Replace the null values with given string if configured.
+ if replace_nulls_with is not None:
+ results = handle_null_values(results, replace_nulls_with)
csv_writer.writerows(results)
yield res_io.getvalue()
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-21 13:22 ` Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-21 13:22 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
Hi
Looks good - I just found one issue; please go ahead and commit (with a
release notes update) when fixed.
- If I set the NULL replacement value to an empty string, it defaults back
to NULL. It's therefore not possible to replace null values with an empty
value.
Thanks!
On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <[email protected]>
wrote:
> Hi Dave
>
> I have modified the condition, it won't through any exception. Attached is
> the updated patch, please review it.
>
> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>
>> Sorry! Here is is.
>>
>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Dave
>>>
>>> Can you please attached the updated patch with your changes. I'll try to
>>> fix the exception.
>>>
>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>
>>>> With quoting set to either All or Strings, everything looks good. With
>>>> it set to None, I still get an exception (below). The query I'm using is
>>>> this:
>>>>
>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>
>>>> Field separator: ,
>>>> Quote character: "
>>>> Replace null's with: NULL
>>>>
>>>> Steps:
>>>>
>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>> using the venv detailed below.
>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>> MacOS 10.14.1
>>>> 3) Run the above query, wit quoting set to All and check the result in
>>>> the grid.
>>>> 4) Download the CSV file and check.
>>>> 5) Open Preferences and set quoting to Strings.
>>>> 6) Download the CSV file and check.
>>>> 7) Open Preferences and set quoting to None.
>>>> 8) Download the CSV file *exception occurs*.
>>>>
>>>>
>>>> System info:
>>>>
>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>
>>>> Python 3.6.7
>>>>
>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>
>>>> alabaster==0.7.11
>>>>
>>>> alembic==1.0.0
>>>>
>>>> asn1crypto==0.24.0
>>>>
>>>> Babel==2.6.0
>>>>
>>>> bcrypt==3.1.4
>>>>
>>>> blinker==1.4
>>>>
>>>> certifi==2018.8.24
>>>>
>>>> cffi==1.11.5
>>>>
>>>> chardet==3.0.4
>>>>
>>>> chromedriver-installer==0.0.6
>>>>
>>>> click==6.7
>>>>
>>>> cryptography==2.3
>>>>
>>>> docutils==0.14
>>>>
>>>> extras==1.0.0
>>>>
>>>> fixtures==3.0.0
>>>>
>>>> Flask==0.12.4
>>>>
>>>> Flask-BabelEx==0.9.3
>>>>
>>>> Flask-Gravatar==0.5.0
>>>>
>>>> Flask-HTMLmin==1.3.2
>>>>
>>>> Flask-Login==0.3.2
>>>>
>>>> Flask-Mail==0.9.1
>>>>
>>>> Flask-Migrate==2.1.1
>>>>
>>>> Flask-Paranoid==0.2.0
>>>>
>>>> Flask-Principal==0.4.0
>>>>
>>>> Flask-Security==3.0.0
>>>>
>>>> Flask-SQLAlchemy==2.3.2
>>>>
>>>> Flask-WTF==0.14.2
>>>>
>>>> html5lib==1.0.1
>>>>
>>>> htmlmin==0.1.12
>>>>
>>>> idna==2.7
>>>>
>>>> imagesize==1.1.0
>>>>
>>>> itsdangerous==0.24
>>>>
>>>> Jinja2==2.10
>>>>
>>>> linecache2==1.0.0
>>>>
>>>> Mako==1.0.7
>>>>
>>>> MarkupSafe==1.0
>>>>
>>>> packaging==18.0
>>>>
>>>> paramiko==2.4.1
>>>>
>>>> passlib==1.7.1
>>>>
>>>> pbr==3.1.1
>>>>
>>>> psutil==5.4.8
>>>>
>>>> psycopg2==2.7.5
>>>>
>>>> pyasn1==0.4.4
>>>>
>>>> pycodestyle==2.3.1
>>>>
>>>> pycparser==2.18
>>>>
>>>> pycrypto==2.6.1
>>>>
>>>> Pygments==2.2.0
>>>>
>>>> PyNaCl==1.2.1
>>>>
>>>> pyparsing==2.2.2
>>>>
>>>> pyperclip==1.6.4
>>>>
>>>> pyrsistent==0.14.2
>>>>
>>>> python-dateutil==2.7.3
>>>>
>>>> python-editor==1.0.3
>>>>
>>>> python-mimeparse==1.6.0
>>>>
>>>> pytz==2018.3
>>>>
>>>> requests==2.19.1
>>>>
>>>> selenium==3.14.1
>>>>
>>>> simplejson==3.13.2
>>>>
>>>> six==1.11.0
>>>>
>>>> snowballstemmer==1.2.1
>>>>
>>>> speaklater==1.3
>>>>
>>>> Sphinx==1.8.2
>>>>
>>>> sphinxcontrib-websupport==1.1.0
>>>>
>>>> SQLAlchemy==1.2.10
>>>>
>>>> sqlparse==0.2.4
>>>>
>>>> sshtunnel==0.1.4
>>>>
>>>> testscenarios==0.5.0
>>>>
>>>> testtools==2.3.0
>>>>
>>>> traceback2==1.4.0
>>>>
>>>> unittest2==1.1.0
>>>>
>>>> urllib3==1.23
>>>>
>>>> webencodings==0.5.1
>>>>
>>>> Werkzeug==0.14.1
>>>>
>>>> WTForms==2.1
>>>>
>>>> Exception:
>>>>
>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor) for
>>>> server #2 - CONN:8760231 (Query-id: 8649354):
>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>> 11:47:29] "GET
>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>> HTTP/1.1" 500 -
>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>> Traceback (most recent call last):
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>> line 270, in run_wsgi
>>>> execute(self.server.app)
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>> line 260, in execute
>>>> for data in application_iter:
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>> line 870, in __next__
>>>> return self._next()
>>>> File
>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>> line 82, in _iter_encoded
>>>> for item in iterable:
>>>> File
>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>> line 848, in gen
>>>> csv_writer.writerows(results)
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761,
>>>> in writerows
>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268,
>>>> in writerows
>>>> self.writerow(row)
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>>> in writerow
>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>>> in <listcomp>
>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142,
>>>> in prepare
>>>> raise Error('No escapechar is set')
>>>> _csv.Error: No escapechar is set
>>>>
>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> When testing with quoting set to None, quote = " and delimiter = ,
>>>>>>>>> I get the following exception when I try to download:
>>>>>>>>>
>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>> line 270, in run_wsgi
>>>>>>>>> execute(self.server.app)
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>> line 260, in execute
>>>>>>>>> for data in application_iter:
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>> line 870, in __next__
>>>>>>>>> return self._next()
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>> for item in iterable:
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>> line 820, in gen
>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 748, in writerows
>>>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 256, in writerows
>>>>>>>>> self.writerow(row)
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 249, in writerow
>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>> row]
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 249, in <listcomp>
>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>> row]
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 136, in prepare
>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>
>>>>>>>>
>>>>>>>> Not able to reproduce the above issue. I have tested it with
>>>>>>>> the same setting as you mentioned. Please refer all the attached
>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>>>>>
>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>
>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>
>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>
>>>>>>>>> Bar"
>>>>>>>>>
>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>
>>>>>>>>
>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>
>>>>>>>
>>>>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>>>>> exactly what the bug is about?
>>>>>>>
>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>
>>>>>>> NULL
>>>>>>> "NULL"
>>>>>>> ""
>>>>>>> ''
>>>>>>> <empty string>
>>>>>>>
>>>>>>> We would never quote the NULL replacement value - if the user wanted
>>>>>>> it to be quoted, they would include the quotes in the configured string.
>>>>>>>
>>>>>>
>>>>>>
>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>
>>>>>
>>>>> Attached is the modified patch as per your suggestion.
>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave
>>>>>>>>>>
>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>
>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability
>>>>>>>>>>>>> to specify NULL values in CSV export.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> A few points;
>>>>>>>>>>>>
>>>>>>>>>>>> - You've included code from backports.csv, but per the licence
>>>>>>>>>>>> you need to include a description of the changes made.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Sure. In that case I'll copy the complete file and will do
>>>>>>>>>>> my changes which is of two lines only. With my patch I have remove all the
>>>>>>>>>>> unwanted code from backport.csv.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or
>>>>>>>>>>>> is it used elsewhere?
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there is
>>>>>>>>>>>> code in one or more of the many package build scripts that adds an
>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Dave Page
>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>
>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>
>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-21 14:07 ` Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2018-12-21 14:07 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
> Hi
>
> Looks good - I just found one issue; please go ahead and commit (with a
> release notes update) when fixed.
>
> - If I set the NULL replacement value to an empty string, it defaults back
> to NULL. It's therefore not possible to replace null values with an empty
> value.
>
If you remember this is the default behaviour of the Preferences
dialog. It sets the default value again if you set the blank value. Fahar
has raised the same issue before and we have rejected that. If you think we
can create the new RM for that behaviour and will commit the current patch.
>
> Thanks!
>
> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Dave
>>
>> I have modified the condition, it won't through any exception. Attached
>> is the updated patch, please review it.
>>
>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>
>>> Sorry! Here is is.
>>>
>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave
>>>>
>>>> Can you please attached the updated patch with your changes. I'll try
>>>> to fix the exception.
>>>>
>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>
>>>>> With quoting set to either All or Strings, everything looks good. With
>>>>> it set to None, I still get an exception (below). The query I'm using is
>>>>> this:
>>>>>
>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>
>>>>> Field separator: ,
>>>>> Quote character: "
>>>>> Replace null's with: NULL
>>>>>
>>>>> Steps:
>>>>>
>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>> using the venv detailed below.
>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>> MacOS 10.14.1
>>>>> 3) Run the above query, wit quoting set to All and check the result in
>>>>> the grid.
>>>>> 4) Download the CSV file and check.
>>>>> 5) Open Preferences and set quoting to Strings.
>>>>> 6) Download the CSV file and check.
>>>>> 7) Open Preferences and set quoting to None.
>>>>> 8) Download the CSV file *exception occurs*.
>>>>>
>>>>>
>>>>> System info:
>>>>>
>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>
>>>>> Python 3.6.7
>>>>>
>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>
>>>>> alabaster==0.7.11
>>>>>
>>>>> alembic==1.0.0
>>>>>
>>>>> asn1crypto==0.24.0
>>>>>
>>>>> Babel==2.6.0
>>>>>
>>>>> bcrypt==3.1.4
>>>>>
>>>>> blinker==1.4
>>>>>
>>>>> certifi==2018.8.24
>>>>>
>>>>> cffi==1.11.5
>>>>>
>>>>> chardet==3.0.4
>>>>>
>>>>> chromedriver-installer==0.0.6
>>>>>
>>>>> click==6.7
>>>>>
>>>>> cryptography==2.3
>>>>>
>>>>> docutils==0.14
>>>>>
>>>>> extras==1.0.0
>>>>>
>>>>> fixtures==3.0.0
>>>>>
>>>>> Flask==0.12.4
>>>>>
>>>>> Flask-BabelEx==0.9.3
>>>>>
>>>>> Flask-Gravatar==0.5.0
>>>>>
>>>>> Flask-HTMLmin==1.3.2
>>>>>
>>>>> Flask-Login==0.3.2
>>>>>
>>>>> Flask-Mail==0.9.1
>>>>>
>>>>> Flask-Migrate==2.1.1
>>>>>
>>>>> Flask-Paranoid==0.2.0
>>>>>
>>>>> Flask-Principal==0.4.0
>>>>>
>>>>> Flask-Security==3.0.0
>>>>>
>>>>> Flask-SQLAlchemy==2.3.2
>>>>>
>>>>> Flask-WTF==0.14.2
>>>>>
>>>>> html5lib==1.0.1
>>>>>
>>>>> htmlmin==0.1.12
>>>>>
>>>>> idna==2.7
>>>>>
>>>>> imagesize==1.1.0
>>>>>
>>>>> itsdangerous==0.24
>>>>>
>>>>> Jinja2==2.10
>>>>>
>>>>> linecache2==1.0.0
>>>>>
>>>>> Mako==1.0.7
>>>>>
>>>>> MarkupSafe==1.0
>>>>>
>>>>> packaging==18.0
>>>>>
>>>>> paramiko==2.4.1
>>>>>
>>>>> passlib==1.7.1
>>>>>
>>>>> pbr==3.1.1
>>>>>
>>>>> psutil==5.4.8
>>>>>
>>>>> psycopg2==2.7.5
>>>>>
>>>>> pyasn1==0.4.4
>>>>>
>>>>> pycodestyle==2.3.1
>>>>>
>>>>> pycparser==2.18
>>>>>
>>>>> pycrypto==2.6.1
>>>>>
>>>>> Pygments==2.2.0
>>>>>
>>>>> PyNaCl==1.2.1
>>>>>
>>>>> pyparsing==2.2.2
>>>>>
>>>>> pyperclip==1.6.4
>>>>>
>>>>> pyrsistent==0.14.2
>>>>>
>>>>> python-dateutil==2.7.3
>>>>>
>>>>> python-editor==1.0.3
>>>>>
>>>>> python-mimeparse==1.6.0
>>>>>
>>>>> pytz==2018.3
>>>>>
>>>>> requests==2.19.1
>>>>>
>>>>> selenium==3.14.1
>>>>>
>>>>> simplejson==3.13.2
>>>>>
>>>>> six==1.11.0
>>>>>
>>>>> snowballstemmer==1.2.1
>>>>>
>>>>> speaklater==1.3
>>>>>
>>>>> Sphinx==1.8.2
>>>>>
>>>>> sphinxcontrib-websupport==1.1.0
>>>>>
>>>>> SQLAlchemy==1.2.10
>>>>>
>>>>> sqlparse==0.2.4
>>>>>
>>>>> sshtunnel==0.1.4
>>>>>
>>>>> testscenarios==0.5.0
>>>>>
>>>>> testtools==2.3.0
>>>>>
>>>>> traceback2==1.4.0
>>>>>
>>>>> unittest2==1.1.0
>>>>>
>>>>> urllib3==1.23
>>>>>
>>>>> webencodings==0.5.1
>>>>>
>>>>> Werkzeug==0.14.1
>>>>>
>>>>> WTForms==2.1
>>>>>
>>>>> Exception:
>>>>>
>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor)
>>>>> for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>>> 11:47:29] "GET
>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>> HTTP/1.1" 500 -
>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>> Traceback (most recent call last):
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>> line 270, in run_wsgi
>>>>> execute(self.server.app)
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>> line 260, in execute
>>>>> for data in application_iter:
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>> line 870, in __next__
>>>>> return self._next()
>>>>> File
>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>> line 82, in _iter_encoded
>>>>> for item in iterable:
>>>>> File
>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>> line 848, in gen
>>>>> csv_writer.writerows(results)
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 761,
>>>>> in writerows
>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 268,
>>>>> in writerows
>>>>> self.writerow(row)
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>>>> in writerow
>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 261,
>>>>> in <listcomp>
>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line 142,
>>>>> in prepare
>>>>> raise Error('No escapechar is set')
>>>>> _csv.Error: No escapechar is set
>>>>>
>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave
>>>>>>
>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> When testing with quoting set to None, quote = " and delimiter =
>>>>>>>>>> , I get the following exception when I try to download:
>>>>>>>>>>
>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>> File
>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>> execute(self.server.app)
>>>>>>>>>> File
>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>> line 260, in execute
>>>>>>>>>> for data in application_iter:
>>>>>>>>>> File
>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>> line 870, in __next__
>>>>>>>>>> return self._next()
>>>>>>>>>> File
>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>> for item in iterable:
>>>>>>>>>> File
>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>> line 820, in gen
>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>>> 748, in writerows
>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>> rowdicts))
>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>>> 256, in writerows
>>>>>>>>>> self.writerow(row)
>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>>> 249, in writerow
>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>> row]
>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>>> 249, in <listcomp>
>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>> row]
>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>>> 136, in prepare
>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Not able to reproduce the above issue. I have tested it with
>>>>>>>>> the same setting as you mentioned. Please refer all the attached
>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> When I have quoting set to All, the first column is returned as ""
>>>>>>>>>>
>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>
>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>
>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>
>>>>>>>>>> Bar"
>>>>>>>>>>
>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>
>>>>>>>>
>>>>>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>>>>>> exactly what the bug is about?
>>>>>>>>
>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>
>>>>>>>> NULL
>>>>>>>> "NULL"
>>>>>>>> ""
>>>>>>>> ''
>>>>>>>> <empty string>
>>>>>>>>
>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>> string.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>
>>>>>>
>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Dave
>>>>>>>>>>>
>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability
>>>>>>>>>>>>>> to specify NULL values in CSV export.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>
>>>>>>>>>>>>> - You've included code from backports.csv, but per the licence
>>>>>>>>>>>>> you need to include a description of the changes made.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Sure. In that case I'll copy the complete file and will
>>>>>>>>>>>> do my changes which is of two lines only. With my patch I have remove all
>>>>>>>>>>>> the unwanted code from backport.csv.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt, or
>>>>>>>>>>>>> is it used elsewhere?
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there is
>>>>>>>>>>>>> code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>
>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>
>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>
>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2018-12-21 14:14 ` Dave Page <[email protected]>
2018-12-24 02:17 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
0 siblings, 1 reply; 20+ messages in thread
From: Dave Page @ 2018-12-21 14:14 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
On Fri, Dec 21, 2018 at 2:08 PM Akshay Joshi <[email protected]>
wrote:
>
>
> On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
>
>> Hi
>>
>> Looks good - I just found one issue; please go ahead and commit (with a
>> release notes update) when fixed.
>>
>> - If I set the NULL replacement value to an empty string, it defaults
>> back to NULL. It's therefore not possible to replace null values with an
>> empty value.
>>
>
> If you remember this is the default behaviour of the Preferences
> dialog. It sets the default value again if you set the blank value. Fahar
> has raised the same issue before and we have rejected that. If you think we
> can create the new RM for that behaviour and will commit the current patch.
>
Well, we rejected it for a specific case. In this specific case, it makes
sense to be able to enter a blank value.
Maybe we just need an "allow blank" flag on the preference object, that
does nothing except allow you to remove the default (or any other) value
without it being replaced again? Obviously the default still needs to work
until a value is written to the config DB.
>
>> Thanks!
>>
>> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Dave
>>>
>>> I have modified the condition, it won't through any exception. Attached
>>> is the updated patch, please review it.
>>>
>>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>>
>>>> Sorry! Here is is.
>>>>
>>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> Can you please attached the updated patch with your changes. I'll try
>>>>> to fix the exception.
>>>>>
>>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>>
>>>>>> With quoting set to either All or Strings, everything looks good.
>>>>>> With it set to None, I still get an exception (below). The query I'm using
>>>>>> is this:
>>>>>>
>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>
>>>>>> Field separator: ,
>>>>>> Quote character: "
>>>>>> Replace null's with: NULL
>>>>>>
>>>>>> Steps:
>>>>>>
>>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>>> using the venv detailed below.
>>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>>> MacOS 10.14.1
>>>>>> 3) Run the above query, wit quoting set to All and check the result
>>>>>> in the grid.
>>>>>> 4) Download the CSV file and check.
>>>>>> 5) Open Preferences and set quoting to Strings.
>>>>>> 6) Download the CSV file and check.
>>>>>> 7) Open Preferences and set quoting to None.
>>>>>> 8) Download the CSV file *exception occurs*.
>>>>>>
>>>>>>
>>>>>> System info:
>>>>>>
>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>>
>>>>>> Python 3.6.7
>>>>>>
>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>>
>>>>>> alabaster==0.7.11
>>>>>>
>>>>>> alembic==1.0.0
>>>>>>
>>>>>> asn1crypto==0.24.0
>>>>>>
>>>>>> Babel==2.6.0
>>>>>>
>>>>>> bcrypt==3.1.4
>>>>>>
>>>>>> blinker==1.4
>>>>>>
>>>>>> certifi==2018.8.24
>>>>>>
>>>>>> cffi==1.11.5
>>>>>>
>>>>>> chardet==3.0.4
>>>>>>
>>>>>> chromedriver-installer==0.0.6
>>>>>>
>>>>>> click==6.7
>>>>>>
>>>>>> cryptography==2.3
>>>>>>
>>>>>> docutils==0.14
>>>>>>
>>>>>> extras==1.0.0
>>>>>>
>>>>>> fixtures==3.0.0
>>>>>>
>>>>>> Flask==0.12.4
>>>>>>
>>>>>> Flask-BabelEx==0.9.3
>>>>>>
>>>>>> Flask-Gravatar==0.5.0
>>>>>>
>>>>>> Flask-HTMLmin==1.3.2
>>>>>>
>>>>>> Flask-Login==0.3.2
>>>>>>
>>>>>> Flask-Mail==0.9.1
>>>>>>
>>>>>> Flask-Migrate==2.1.1
>>>>>>
>>>>>> Flask-Paranoid==0.2.0
>>>>>>
>>>>>> Flask-Principal==0.4.0
>>>>>>
>>>>>> Flask-Security==3.0.0
>>>>>>
>>>>>> Flask-SQLAlchemy==2.3.2
>>>>>>
>>>>>> Flask-WTF==0.14.2
>>>>>>
>>>>>> html5lib==1.0.1
>>>>>>
>>>>>> htmlmin==0.1.12
>>>>>>
>>>>>> idna==2.7
>>>>>>
>>>>>> imagesize==1.1.0
>>>>>>
>>>>>> itsdangerous==0.24
>>>>>>
>>>>>> Jinja2==2.10
>>>>>>
>>>>>> linecache2==1.0.0
>>>>>>
>>>>>> Mako==1.0.7
>>>>>>
>>>>>> MarkupSafe==1.0
>>>>>>
>>>>>> packaging==18.0
>>>>>>
>>>>>> paramiko==2.4.1
>>>>>>
>>>>>> passlib==1.7.1
>>>>>>
>>>>>> pbr==3.1.1
>>>>>>
>>>>>> psutil==5.4.8
>>>>>>
>>>>>> psycopg2==2.7.5
>>>>>>
>>>>>> pyasn1==0.4.4
>>>>>>
>>>>>> pycodestyle==2.3.1
>>>>>>
>>>>>> pycparser==2.18
>>>>>>
>>>>>> pycrypto==2.6.1
>>>>>>
>>>>>> Pygments==2.2.0
>>>>>>
>>>>>> PyNaCl==1.2.1
>>>>>>
>>>>>> pyparsing==2.2.2
>>>>>>
>>>>>> pyperclip==1.6.4
>>>>>>
>>>>>> pyrsistent==0.14.2
>>>>>>
>>>>>> python-dateutil==2.7.3
>>>>>>
>>>>>> python-editor==1.0.3
>>>>>>
>>>>>> python-mimeparse==1.6.0
>>>>>>
>>>>>> pytz==2018.3
>>>>>>
>>>>>> requests==2.19.1
>>>>>>
>>>>>> selenium==3.14.1
>>>>>>
>>>>>> simplejson==3.13.2
>>>>>>
>>>>>> six==1.11.0
>>>>>>
>>>>>> snowballstemmer==1.2.1
>>>>>>
>>>>>> speaklater==1.3
>>>>>>
>>>>>> Sphinx==1.8.2
>>>>>>
>>>>>> sphinxcontrib-websupport==1.1.0
>>>>>>
>>>>>> SQLAlchemy==1.2.10
>>>>>>
>>>>>> sqlparse==0.2.4
>>>>>>
>>>>>> sshtunnel==0.1.4
>>>>>>
>>>>>> testscenarios==0.5.0
>>>>>>
>>>>>> testtools==2.3.0
>>>>>>
>>>>>> traceback2==1.4.0
>>>>>>
>>>>>> unittest2==1.1.0
>>>>>>
>>>>>> urllib3==1.23
>>>>>>
>>>>>> webencodings==0.5.1
>>>>>>
>>>>>> Werkzeug==0.14.1
>>>>>>
>>>>>> WTForms==2.1
>>>>>>
>>>>>> Exception:
>>>>>>
>>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor)
>>>>>> for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>>>> 11:47:29] "GET
>>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>>> HTTP/1.1" 500 -
>>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>>> Traceback (most recent call last):
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>> line 270, in run_wsgi
>>>>>> execute(self.server.app)
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>> line 260, in execute
>>>>>> for data in application_iter:
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>> line 870, in __next__
>>>>>> return self._next()
>>>>>> File
>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>> line 82, in _iter_encoded
>>>>>> for item in iterable:
>>>>>> File
>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>> line 848, in gen
>>>>>> csv_writer.writerows(results)
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 761, in writerows
>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 268, in writerows
>>>>>> self.writerow(row)
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 261, in writerow
>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 261, in <listcomp>
>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>> 142, in prepare
>>>>>> raise Error('No escapechar is set')
>>>>>> _csv.Error: No escapechar is set
>>>>>>
>>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave
>>>>>>>
>>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> When testing with quoting set to None, quote = " and delimiter =
>>>>>>>>>>> , I get the following exception when I try to download:
>>>>>>>>>>>
>>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>> File
>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>>> execute(self.server.app)
>>>>>>>>>>> File
>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>> line 260, in execute
>>>>>>>>>>> for data in application_iter:
>>>>>>>>>>> File
>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>>> line 870, in __next__
>>>>>>>>>>> return self._next()
>>>>>>>>>>> File
>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>>> for item in iterable:
>>>>>>>>>>> File
>>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>>> line 820, in gen
>>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>> line 748, in writerows
>>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>>> rowdicts))
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>> line 256, in writerows
>>>>>>>>>>> self.writerow(row)
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>> line 249, in writerow
>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>>> row]
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>> line 249, in <listcomp>
>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>>> row]
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>> line 136, in prepare
>>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Not able to reproduce the above issue. I have tested it with
>>>>>>>>>> the same setting as you mentioned. Please refer all the attached
>>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> When I have quoting set to All, the first column is returned as
>>>>>>>>>>> ""
>>>>>>>>>>>
>>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>>
>>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>>
>>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>>
>>>>>>>>>>> Bar"
>>>>>>>>>>>
>>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> So how would you distinguish NULL from an empty string? Isn't that
>>>>>>>>> exactly what the bug is about?
>>>>>>>>>
>>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>>
>>>>>>>>> NULL
>>>>>>>>> "NULL"
>>>>>>>>> ""
>>>>>>>>> ''
>>>>>>>>> <empty string>
>>>>>>>>>
>>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>>> string.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>>
>>>>>>>
>>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>
>>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks ability
>>>>>>>>>>>>>>> to specify NULL values in CSV export.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> - You've included code from backports.csv, but per the
>>>>>>>>>>>>>> licence you need to include a description of the changes made.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Sure. In that case I'll copy the complete file and will
>>>>>>>>>>>>> do my changes which is of two lines only. With my patch I have remove all
>>>>>>>>>>>>> the unwanted code from backport.csv.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt,
>>>>>>>>>>>>>> or is it used elsewhere?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there
>>>>>>>>>>>>>> is code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>
>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
@ 2018-12-24 02:17 ` Akshay Joshi <[email protected]>
2019-01-01 09:48 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2019-01-02 10:58 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
0 siblings, 2 replies; 20+ messages in thread
From: Akshay Joshi @ 2018-12-24 02:17 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
On Fri, 21 Dec 2018, 19:45 Dave Page <[email protected] wrote:
>
>
> On Fri, Dec 21, 2018 at 2:08 PM Akshay Joshi <
> [email protected]> wrote:
>
>>
>>
>> On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
>>
>>> Hi
>>>
>>> Looks good - I just found one issue; please go ahead and commit (with a
>>> release notes update) when fixed.
>>>
>>> - If I set the NULL replacement value to an empty string, it defaults
>>> back to NULL. It's therefore not possible to replace null values with an
>>> empty value.
>>>
>>
>> If you remember this is the default behaviour of the Preferences
>> dialog. It sets the default value again if you set the blank value. Fahar
>> has raised the same issue before and we have rejected that. If you think we
>> can create the new RM for that behaviour and will commit the current patch.
>>
>
> Well, we rejected it for a specific case. In this specific case, it makes
> sense to be able to enter a blank value.
>
> Maybe we just need an "allow blank" flag on the preference object, that
> does nothing except allow you to remove the default (or any other) value
> without it being replaced again? Obviously the default still needs to work
> until a value is written to the config DB.
>
Ok. If i understand correctly this new parameter works for all the
preference parameter if set to true. By default it's value is False and if
user wants to enter blank value they will ser the flag.
>
>
>>
>>> Thanks!
>>>
>>> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave
>>>>
>>>> I have modified the condition, it won't through any exception. Attached
>>>> is the updated patch, please review it.
>>>>
>>>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>>>
>>>>> Sorry! Here is is.
>>>>>
>>>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave
>>>>>>
>>>>>> Can you please attached the updated patch with your changes. I'll try
>>>>>> to fix the exception.
>>>>>>
>>>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>>>
>>>>>>> With quoting set to either All or Strings, everything looks good.
>>>>>>> With it set to None, I still get an exception (below). The query I'm using
>>>>>>> is this:
>>>>>>>
>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>
>>>>>>> Field separator: ,
>>>>>>> Quote character: "
>>>>>>> Replace null's with: NULL
>>>>>>>
>>>>>>> Steps:
>>>>>>>
>>>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>>>> using the venv detailed below.
>>>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>>>> MacOS 10.14.1
>>>>>>> 3) Run the above query, wit quoting set to All and check the result
>>>>>>> in the grid.
>>>>>>> 4) Download the CSV file and check.
>>>>>>> 5) Open Preferences and set quoting to Strings.
>>>>>>> 6) Download the CSV file and check.
>>>>>>> 7) Open Preferences and set quoting to None.
>>>>>>> 8) Download the CSV file *exception occurs*.
>>>>>>>
>>>>>>>
>>>>>>> System info:
>>>>>>>
>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>>>
>>>>>>> Python 3.6.7
>>>>>>>
>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>>>
>>>>>>> alabaster==0.7.11
>>>>>>>
>>>>>>> alembic==1.0.0
>>>>>>>
>>>>>>> asn1crypto==0.24.0
>>>>>>>
>>>>>>> Babel==2.6.0
>>>>>>>
>>>>>>> bcrypt==3.1.4
>>>>>>>
>>>>>>> blinker==1.4
>>>>>>>
>>>>>>> certifi==2018.8.24
>>>>>>>
>>>>>>> cffi==1.11.5
>>>>>>>
>>>>>>> chardet==3.0.4
>>>>>>>
>>>>>>> chromedriver-installer==0.0.6
>>>>>>>
>>>>>>> click==6.7
>>>>>>>
>>>>>>> cryptography==2.3
>>>>>>>
>>>>>>> docutils==0.14
>>>>>>>
>>>>>>> extras==1.0.0
>>>>>>>
>>>>>>> fixtures==3.0.0
>>>>>>>
>>>>>>> Flask==0.12.4
>>>>>>>
>>>>>>> Flask-BabelEx==0.9.3
>>>>>>>
>>>>>>> Flask-Gravatar==0.5.0
>>>>>>>
>>>>>>> Flask-HTMLmin==1.3.2
>>>>>>>
>>>>>>> Flask-Login==0.3.2
>>>>>>>
>>>>>>> Flask-Mail==0.9.1
>>>>>>>
>>>>>>> Flask-Migrate==2.1.1
>>>>>>>
>>>>>>> Flask-Paranoid==0.2.0
>>>>>>>
>>>>>>> Flask-Principal==0.4.0
>>>>>>>
>>>>>>> Flask-Security==3.0.0
>>>>>>>
>>>>>>> Flask-SQLAlchemy==2.3.2
>>>>>>>
>>>>>>> Flask-WTF==0.14.2
>>>>>>>
>>>>>>> html5lib==1.0.1
>>>>>>>
>>>>>>> htmlmin==0.1.12
>>>>>>>
>>>>>>> idna==2.7
>>>>>>>
>>>>>>> imagesize==1.1.0
>>>>>>>
>>>>>>> itsdangerous==0.24
>>>>>>>
>>>>>>> Jinja2==2.10
>>>>>>>
>>>>>>> linecache2==1.0.0
>>>>>>>
>>>>>>> Mako==1.0.7
>>>>>>>
>>>>>>> MarkupSafe==1.0
>>>>>>>
>>>>>>> packaging==18.0
>>>>>>>
>>>>>>> paramiko==2.4.1
>>>>>>>
>>>>>>> passlib==1.7.1
>>>>>>>
>>>>>>> pbr==3.1.1
>>>>>>>
>>>>>>> psutil==5.4.8
>>>>>>>
>>>>>>> psycopg2==2.7.5
>>>>>>>
>>>>>>> pyasn1==0.4.4
>>>>>>>
>>>>>>> pycodestyle==2.3.1
>>>>>>>
>>>>>>> pycparser==2.18
>>>>>>>
>>>>>>> pycrypto==2.6.1
>>>>>>>
>>>>>>> Pygments==2.2.0
>>>>>>>
>>>>>>> PyNaCl==1.2.1
>>>>>>>
>>>>>>> pyparsing==2.2.2
>>>>>>>
>>>>>>> pyperclip==1.6.4
>>>>>>>
>>>>>>> pyrsistent==0.14.2
>>>>>>>
>>>>>>> python-dateutil==2.7.3
>>>>>>>
>>>>>>> python-editor==1.0.3
>>>>>>>
>>>>>>> python-mimeparse==1.6.0
>>>>>>>
>>>>>>> pytz==2018.3
>>>>>>>
>>>>>>> requests==2.19.1
>>>>>>>
>>>>>>> selenium==3.14.1
>>>>>>>
>>>>>>> simplejson==3.13.2
>>>>>>>
>>>>>>> six==1.11.0
>>>>>>>
>>>>>>> snowballstemmer==1.2.1
>>>>>>>
>>>>>>> speaklater==1.3
>>>>>>>
>>>>>>> Sphinx==1.8.2
>>>>>>>
>>>>>>> sphinxcontrib-websupport==1.1.0
>>>>>>>
>>>>>>> SQLAlchemy==1.2.10
>>>>>>>
>>>>>>> sqlparse==0.2.4
>>>>>>>
>>>>>>> sshtunnel==0.1.4
>>>>>>>
>>>>>>> testscenarios==0.5.0
>>>>>>>
>>>>>>> testtools==2.3.0
>>>>>>>
>>>>>>> traceback2==1.4.0
>>>>>>>
>>>>>>> unittest2==1.1.0
>>>>>>>
>>>>>>> urllib3==1.23
>>>>>>>
>>>>>>> webencodings==0.5.1
>>>>>>>
>>>>>>> Werkzeug==0.14.1
>>>>>>>
>>>>>>> WTForms==2.1
>>>>>>>
>>>>>>> Exception:
>>>>>>>
>>>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor)
>>>>>>> for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>>>>> 11:47:29] "GET
>>>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>>>> HTTP/1.1" 500 -
>>>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>>>> Traceback (most recent call last):
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>> line 270, in run_wsgi
>>>>>>> execute(self.server.app)
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>> line 260, in execute
>>>>>>> for data in application_iter:
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>> line 870, in __next__
>>>>>>> return self._next()
>>>>>>> File
>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>> line 82, in _iter_encoded
>>>>>>> for item in iterable:
>>>>>>> File
>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>> line 848, in gen
>>>>>>> csv_writer.writerows(results)
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 761, in writerows
>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 268, in writerows
>>>>>>> self.writerow(row)
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 261, in writerow
>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 261, in <listcomp>
>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>> 142, in prepare
>>>>>>> raise Error('No escapechar is set')
>>>>>>> _csv.Error: No escapechar is set
>>>>>>>
>>>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Dave
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi
>>>>>>>>>>>>
>>>>>>>>>>>> When testing with quoting set to None, quote = " and delimiter
>>>>>>>>>>>> = , I get the following exception when I try to download:
>>>>>>>>>>>>
>>>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>> File
>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>>>> execute(self.server.app)
>>>>>>>>>>>> File
>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>> line 260, in execute
>>>>>>>>>>>> for data in application_iter:
>>>>>>>>>>>> File
>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>>>> line 870, in __next__
>>>>>>>>>>>> return self._next()
>>>>>>>>>>>> File
>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>>>> for item in iterable:
>>>>>>>>>>>> File
>>>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>>>> line 820, in gen
>>>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>> line 748, in writerows
>>>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>>>> rowdicts))
>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>> line 256, in writerows
>>>>>>>>>>>> self.writerow(row)
>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>> line 249, in writerow
>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>>>> row]
>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>> line 249, in <listcomp>
>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>>>>> row]
>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>> line 136, in prepare
>>>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Not able to reproduce the above issue. I have tested it with
>>>>>>>>>>> the same setting as you mentioned. Please refer all the attached
>>>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> When I have quoting set to All, the first column is returned as
>>>>>>>>>>>> ""
>>>>>>>>>>>>
>>>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>>>
>>>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>>>
>>>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>>>
>>>>>>>>>>>> Bar"
>>>>>>>>>>>>
>>>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> So how would you distinguish NULL from an empty string? Isn't
>>>>>>>>>> that exactly what the bug is about?
>>>>>>>>>>
>>>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>>>
>>>>>>>>>> NULL
>>>>>>>>>> "NULL"
>>>>>>>>>> ""
>>>>>>>>>> ''
>>>>>>>>>> <empty string>
>>>>>>>>>>
>>>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>>>> string.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>>
>>>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks
>>>>>>>>>>>>>>>> ability to specify NULL values in CSV export.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> - You've included code from backports.csv, but per the
>>>>>>>>>>>>>>> licence you need to include a description of the changes made.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Sure. In that case I'll copy the complete file and will
>>>>>>>>>>>>>> do my changes which is of two lines only. With my patch I have remove all
>>>>>>>>>>>>>> the unwanted code from backport.csv.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt,
>>>>>>>>>>>>>>> or is it used elsewhere?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there
>>>>>>>>>>>>>>> is code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Dave Page
>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>
>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>
>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-24 02:17 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2019-01-01 09:48 ` Akshay Joshi <[email protected]>
2019-01-02 10:59 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
1 sibling, 1 reply; 20+ messages in thread
From: Akshay Joshi @ 2019-01-01 09:48 UTC (permalink / raw)
To: Dave Page <[email protected]>; +Cc: pgadmin-hackers
Hi Dave/Hackers
On Mon, Dec 24, 2018 at 7:47 AM Akshay Joshi <[email protected]>
wrote:
>
>
> On Fri, 21 Dec 2018, 19:45 Dave Page <[email protected] wrote:
>
>>
>>
>> On Fri, Dec 21, 2018 at 2:08 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
>>>
>>>> Hi
>>>>
>>>> Looks good - I just found one issue; please go ahead and commit (with a
>>>> release notes update) when fixed.
>>>>
>>>> - If I set the NULL replacement value to an empty string, it defaults
>>>> back to NULL. It's therefore not possible to replace null values with an
>>>> empty value.
>>>>
>>>
>>> If you remember this is the default behaviour of the Preferences
>>> dialog. It sets the default value again if you set the blank value. Fahar
>>> has raised the same issue before and we have rejected that. If you think we
>>> can create the new RM for that behaviour and will commit the current patch.
>>>
>>
>> Well, we rejected it for a specific case. In this specific case, it makes
>> sense to be able to enter a blank value.
>>
>> Maybe we just need an "allow blank" flag on the preference object, that
>> does nothing except allow you to remove the default (or any other) value
>> without it being replaced again? Obviously the default still needs to work
>> until a value is written to the config DB.
>>
>
> Ok. If i understand correctly this new parameter works for all the
> preference parameter if set to true. By default it's value is False and if
> user wants to enter blank value they will ser the flag.
>
I think we should not add new preferences flag "allow blank".
Meanwhile I have added new parameter "allow_blank" to the register function
for preferences, so at the time of registering the preference we can set
the value of "allow_blank" parameter, if blank value is acceptable. I have
committed my patch with this changes.
If you think we need that flag as a Preferences object then I'll
create a new RM for it.
>
>>
>>>
>>>> Thanks!
>>>>
>>>> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> I have modified the condition, it won't through any exception.
>>>>> Attached is the updated patch, please review it.
>>>>>
>>>>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Sorry! Here is is.
>>>>>>
>>>>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave
>>>>>>>
>>>>>>> Can you please attached the updated patch with your changes. I'll
>>>>>>> try to fix the exception.
>>>>>>>
>>>>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>>>>
>>>>>>>> With quoting set to either All or Strings, everything looks good.
>>>>>>>> With it set to None, I still get an exception (below). The query I'm using
>>>>>>>> is this:
>>>>>>>>
>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>
>>>>>>>> Field separator: ,
>>>>>>>> Quote character: "
>>>>>>>> Replace null's with: NULL
>>>>>>>>
>>>>>>>> Steps:
>>>>>>>>
>>>>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>>>>> using the venv detailed below.
>>>>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>>>>> MacOS 10.14.1
>>>>>>>> 3) Run the above query, wit quoting set to All and check the result
>>>>>>>> in the grid.
>>>>>>>> 4) Download the CSV file and check.
>>>>>>>> 5) Open Preferences and set quoting to Strings.
>>>>>>>> 6) Download the CSV file and check.
>>>>>>>> 7) Open Preferences and set quoting to None.
>>>>>>>> 8) Download the CSV file *exception occurs*.
>>>>>>>>
>>>>>>>>
>>>>>>>> System info:
>>>>>>>>
>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>>>>
>>>>>>>> Python 3.6.7
>>>>>>>>
>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>>>>
>>>>>>>> alabaster==0.7.11
>>>>>>>>
>>>>>>>> alembic==1.0.0
>>>>>>>>
>>>>>>>> asn1crypto==0.24.0
>>>>>>>>
>>>>>>>> Babel==2.6.0
>>>>>>>>
>>>>>>>> bcrypt==3.1.4
>>>>>>>>
>>>>>>>> blinker==1.4
>>>>>>>>
>>>>>>>> certifi==2018.8.24
>>>>>>>>
>>>>>>>> cffi==1.11.5
>>>>>>>>
>>>>>>>> chardet==3.0.4
>>>>>>>>
>>>>>>>> chromedriver-installer==0.0.6
>>>>>>>>
>>>>>>>> click==6.7
>>>>>>>>
>>>>>>>> cryptography==2.3
>>>>>>>>
>>>>>>>> docutils==0.14
>>>>>>>>
>>>>>>>> extras==1.0.0
>>>>>>>>
>>>>>>>> fixtures==3.0.0
>>>>>>>>
>>>>>>>> Flask==0.12.4
>>>>>>>>
>>>>>>>> Flask-BabelEx==0.9.3
>>>>>>>>
>>>>>>>> Flask-Gravatar==0.5.0
>>>>>>>>
>>>>>>>> Flask-HTMLmin==1.3.2
>>>>>>>>
>>>>>>>> Flask-Login==0.3.2
>>>>>>>>
>>>>>>>> Flask-Mail==0.9.1
>>>>>>>>
>>>>>>>> Flask-Migrate==2.1.1
>>>>>>>>
>>>>>>>> Flask-Paranoid==0.2.0
>>>>>>>>
>>>>>>>> Flask-Principal==0.4.0
>>>>>>>>
>>>>>>>> Flask-Security==3.0.0
>>>>>>>>
>>>>>>>> Flask-SQLAlchemy==2.3.2
>>>>>>>>
>>>>>>>> Flask-WTF==0.14.2
>>>>>>>>
>>>>>>>> html5lib==1.0.1
>>>>>>>>
>>>>>>>> htmlmin==0.1.12
>>>>>>>>
>>>>>>>> idna==2.7
>>>>>>>>
>>>>>>>> imagesize==1.1.0
>>>>>>>>
>>>>>>>> itsdangerous==0.24
>>>>>>>>
>>>>>>>> Jinja2==2.10
>>>>>>>>
>>>>>>>> linecache2==1.0.0
>>>>>>>>
>>>>>>>> Mako==1.0.7
>>>>>>>>
>>>>>>>> MarkupSafe==1.0
>>>>>>>>
>>>>>>>> packaging==18.0
>>>>>>>>
>>>>>>>> paramiko==2.4.1
>>>>>>>>
>>>>>>>> passlib==1.7.1
>>>>>>>>
>>>>>>>> pbr==3.1.1
>>>>>>>>
>>>>>>>> psutil==5.4.8
>>>>>>>>
>>>>>>>> psycopg2==2.7.5
>>>>>>>>
>>>>>>>> pyasn1==0.4.4
>>>>>>>>
>>>>>>>> pycodestyle==2.3.1
>>>>>>>>
>>>>>>>> pycparser==2.18
>>>>>>>>
>>>>>>>> pycrypto==2.6.1
>>>>>>>>
>>>>>>>> Pygments==2.2.0
>>>>>>>>
>>>>>>>> PyNaCl==1.2.1
>>>>>>>>
>>>>>>>> pyparsing==2.2.2
>>>>>>>>
>>>>>>>> pyperclip==1.6.4
>>>>>>>>
>>>>>>>> pyrsistent==0.14.2
>>>>>>>>
>>>>>>>> python-dateutil==2.7.3
>>>>>>>>
>>>>>>>> python-editor==1.0.3
>>>>>>>>
>>>>>>>> python-mimeparse==1.6.0
>>>>>>>>
>>>>>>>> pytz==2018.3
>>>>>>>>
>>>>>>>> requests==2.19.1
>>>>>>>>
>>>>>>>> selenium==3.14.1
>>>>>>>>
>>>>>>>> simplejson==3.13.2
>>>>>>>>
>>>>>>>> six==1.11.0
>>>>>>>>
>>>>>>>> snowballstemmer==1.2.1
>>>>>>>>
>>>>>>>> speaklater==1.3
>>>>>>>>
>>>>>>>> Sphinx==1.8.2
>>>>>>>>
>>>>>>>> sphinxcontrib-websupport==1.1.0
>>>>>>>>
>>>>>>>> SQLAlchemy==1.2.10
>>>>>>>>
>>>>>>>> sqlparse==0.2.4
>>>>>>>>
>>>>>>>> sshtunnel==0.1.4
>>>>>>>>
>>>>>>>> testscenarios==0.5.0
>>>>>>>>
>>>>>>>> testtools==2.3.0
>>>>>>>>
>>>>>>>> traceback2==1.4.0
>>>>>>>>
>>>>>>>> unittest2==1.1.0
>>>>>>>>
>>>>>>>> urllib3==1.23
>>>>>>>>
>>>>>>>> webencodings==0.5.1
>>>>>>>>
>>>>>>>> Werkzeug==0.14.1
>>>>>>>>
>>>>>>>> WTForms==2.1
>>>>>>>>
>>>>>>>> Exception:
>>>>>>>>
>>>>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor)
>>>>>>>> for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>>>>>> 11:47:29] "GET
>>>>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>>>>> HTTP/1.1" 500 -
>>>>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>>>>> Traceback (most recent call last):
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 270, in run_wsgi
>>>>>>>> execute(self.server.app)
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 260, in execute
>>>>>>>> for data in application_iter:
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>> line 870, in __next__
>>>>>>>> return self._next()
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>> line 82, in _iter_encoded
>>>>>>>> for item in iterable:
>>>>>>>> File
>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>> line 848, in gen
>>>>>>>> csv_writer.writerows(results)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 761, in writerows
>>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 268, in writerows
>>>>>>>> self.writerow(row)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 261, in writerow
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 261, in <listcomp>
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 142, in prepare
>>>>>>>> raise Error('No escapechar is set')
>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>
>>>>>>>>>>>>> When testing with quoting set to None, quote = " and delimiter
>>>>>>>>>>>>> = , I get the following exception when I try to download:
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text,
>>>>>>>>>>>>> E'Foo\nBar'::text
>>>>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>>>>> execute(self.server.app)
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>> line 260, in execute
>>>>>>>>>>>>> for data in application_iter:
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>>>>> line 870, in __next__
>>>>>>>>>>>>> return self._next()
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>>>>> for item in iterable:
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>>>>> line 820, in gen
>>>>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 748, in writerows
>>>>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>>>>> rowdicts))
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 256, in writerows
>>>>>>>>>>>>> self.writerow(row)
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 249, in writerow
>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>> in row]
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 249, in <listcomp>
>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>> in row]
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 136, in prepare
>>>>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Not able to reproduce the above issue. I have tested it
>>>>>>>>>>>> with the same setting as you mentioned. Please refer all the attached
>>>>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> When I have quoting set to All, the first column is returned
>>>>>>>>>>>>> as ""
>>>>>>>>>>>>>
>>>>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>>>>
>>>>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>>>>
>>>>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>>>>
>>>>>>>>>>>>> Bar"
>>>>>>>>>>>>>
>>>>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> So how would you distinguish NULL from an empty string? Isn't
>>>>>>>>>>> that exactly what the bug is about?
>>>>>>>>>>>
>>>>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>>>>
>>>>>>>>>>> NULL
>>>>>>>>>>> "NULL"
>>>>>>>>>>> ""
>>>>>>>>>>> ''
>>>>>>>>>>> <empty string>
>>>>>>>>>>>
>>>>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>>>>> string.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks
>>>>>>>>>>>>>>>>> ability to specify NULL values in CSV export.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - You've included code from backports.csv, but per the
>>>>>>>>>>>>>>>> licence you need to include a description of the changes made.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Sure. In that case I'll copy the complete file and
>>>>>>>>>>>>>>> will do my changes which is of two lines only. With my patch I have remove
>>>>>>>>>>>>>>> all the unwanted code from backport.csv.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt,
>>>>>>>>>>>>>>>> or is it used elsewhere?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there
>>>>>>>>>>>>>>>> is code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>
>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>
>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
--
*Akshay Joshi*
*Sr. Software Architect *
*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-24 02:17 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2019-01-01 09:48 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2019-01-02 10:59 ` Dave Page <[email protected]>
0 siblings, 0 replies; 20+ messages in thread
From: Dave Page @ 2019-01-02 10:59 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
On Tue, Jan 1, 2019 at 9:48 AM Akshay Joshi <[email protected]>
wrote:
> Hi Dave/Hackers
>
> On Mon, Dec 24, 2018 at 7:47 AM Akshay Joshi <akshay.joshi@enterprisedb
> .com> wrote:
>
>>
>>
>> On Fri, 21 Dec 2018, 19:45 Dave Page <[email protected] wrote:
>>
>>>
>>>
>>> On Fri, Dec 21, 2018 at 2:08 PM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> Looks good - I just found one issue; please go ahead and commit (with
>>>>> a release notes update) when fixed.
>>>>>
>>>>> - If I set the NULL replacement value to an empty string, it defaults
>>>>> back to NULL. It's therefore not possible to replace null values with an
>>>>> empty value.
>>>>>
>>>>
>>>> If you remember this is the default behaviour of the Preferences
>>>> dialog. It sets the default value again if you set the blank value. Fahar
>>>> has raised the same issue before and we have rejected that. If you think we
>>>> can create the new RM for that behaviour and will commit the current patch.
>>>>
>>>
>>> Well, we rejected it for a specific case. In this specific case, it
>>> makes sense to be able to enter a blank value.
>>>
>>> Maybe we just need an "allow blank" flag on the preference object, that
>>> does nothing except allow you to remove the default (or any other) value
>>> without it being replaced again? Obviously the default still needs to work
>>> until a value is written to the config DB.
>>>
>>
>> Ok. If i understand correctly this new parameter works for all the
>> preference parameter if set to true. By default it's value is False and if
>> user wants to enter blank value they will ser the flag.
>>
>
> I think we should not add new preferences flag "allow blank".
> Meanwhile I have added new parameter "allow_blank" to the register function
> for preferences, so at the time of registering the preference we can set
> the value of "allow_blank" parameter, if blank value is acceptable. I have
> committed my patch with this changes.
>
> If you think we need that flag as a Preferences object then I'll
> create a new RM for it.
>
It sounds like you've committed what I just described in my previous
message :-)
>
>>>
>>>>
>>>>> Thanks!
>>>>>
>>>>> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave
>>>>>>
>>>>>> I have modified the condition, it won't through any exception.
>>>>>> Attached is the updated patch, please review it.
>>>>>>
>>>>>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Sorry! Here is is.
>>>>>>>
>>>>>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave
>>>>>>>>
>>>>>>>> Can you please attached the updated patch with your changes. I'll
>>>>>>>> try to fix the exception.
>>>>>>>>
>>>>>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>>>>>
>>>>>>>>> With quoting set to either All or Strings, everything looks good.
>>>>>>>>> With it set to None, I still get an exception (below). The query I'm using
>>>>>>>>> is this:
>>>>>>>>>
>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>>
>>>>>>>>> Field separator: ,
>>>>>>>>> Quote character: "
>>>>>>>>> Replace null's with: NULL
>>>>>>>>>
>>>>>>>>> Steps:
>>>>>>>>>
>>>>>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>>>>>> using the venv detailed below.
>>>>>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>>>>>> MacOS 10.14.1
>>>>>>>>> 3) Run the above query, wit quoting set to All and check the
>>>>>>>>> result in the grid.
>>>>>>>>> 4) Download the CSV file and check.
>>>>>>>>> 5) Open Preferences and set quoting to Strings.
>>>>>>>>> 6) Download the CSV file and check.
>>>>>>>>> 7) Open Preferences and set quoting to None.
>>>>>>>>> 8) Download the CSV file *exception occurs*.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> System info:
>>>>>>>>>
>>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>>>>>
>>>>>>>>> Python 3.6.7
>>>>>>>>>
>>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>>>>>
>>>>>>>>> alabaster==0.7.11
>>>>>>>>>
>>>>>>>>> alembic==1.0.0
>>>>>>>>>
>>>>>>>>> asn1crypto==0.24.0
>>>>>>>>>
>>>>>>>>> Babel==2.6.0
>>>>>>>>>
>>>>>>>>> bcrypt==3.1.4
>>>>>>>>>
>>>>>>>>> blinker==1.4
>>>>>>>>>
>>>>>>>>> certifi==2018.8.24
>>>>>>>>>
>>>>>>>>> cffi==1.11.5
>>>>>>>>>
>>>>>>>>> chardet==3.0.4
>>>>>>>>>
>>>>>>>>> chromedriver-installer==0.0.6
>>>>>>>>>
>>>>>>>>> click==6.7
>>>>>>>>>
>>>>>>>>> cryptography==2.3
>>>>>>>>>
>>>>>>>>> docutils==0.14
>>>>>>>>>
>>>>>>>>> extras==1.0.0
>>>>>>>>>
>>>>>>>>> fixtures==3.0.0
>>>>>>>>>
>>>>>>>>> Flask==0.12.4
>>>>>>>>>
>>>>>>>>> Flask-BabelEx==0.9.3
>>>>>>>>>
>>>>>>>>> Flask-Gravatar==0.5.0
>>>>>>>>>
>>>>>>>>> Flask-HTMLmin==1.3.2
>>>>>>>>>
>>>>>>>>> Flask-Login==0.3.2
>>>>>>>>>
>>>>>>>>> Flask-Mail==0.9.1
>>>>>>>>>
>>>>>>>>> Flask-Migrate==2.1.1
>>>>>>>>>
>>>>>>>>> Flask-Paranoid==0.2.0
>>>>>>>>>
>>>>>>>>> Flask-Principal==0.4.0
>>>>>>>>>
>>>>>>>>> Flask-Security==3.0.0
>>>>>>>>>
>>>>>>>>> Flask-SQLAlchemy==2.3.2
>>>>>>>>>
>>>>>>>>> Flask-WTF==0.14.2
>>>>>>>>>
>>>>>>>>> html5lib==1.0.1
>>>>>>>>>
>>>>>>>>> htmlmin==0.1.12
>>>>>>>>>
>>>>>>>>> idna==2.7
>>>>>>>>>
>>>>>>>>> imagesize==1.1.0
>>>>>>>>>
>>>>>>>>> itsdangerous==0.24
>>>>>>>>>
>>>>>>>>> Jinja2==2.10
>>>>>>>>>
>>>>>>>>> linecache2==1.0.0
>>>>>>>>>
>>>>>>>>> Mako==1.0.7
>>>>>>>>>
>>>>>>>>> MarkupSafe==1.0
>>>>>>>>>
>>>>>>>>> packaging==18.0
>>>>>>>>>
>>>>>>>>> paramiko==2.4.1
>>>>>>>>>
>>>>>>>>> passlib==1.7.1
>>>>>>>>>
>>>>>>>>> pbr==3.1.1
>>>>>>>>>
>>>>>>>>> psutil==5.4.8
>>>>>>>>>
>>>>>>>>> psycopg2==2.7.5
>>>>>>>>>
>>>>>>>>> pyasn1==0.4.4
>>>>>>>>>
>>>>>>>>> pycodestyle==2.3.1
>>>>>>>>>
>>>>>>>>> pycparser==2.18
>>>>>>>>>
>>>>>>>>> pycrypto==2.6.1
>>>>>>>>>
>>>>>>>>> Pygments==2.2.0
>>>>>>>>>
>>>>>>>>> PyNaCl==1.2.1
>>>>>>>>>
>>>>>>>>> pyparsing==2.2.2
>>>>>>>>>
>>>>>>>>> pyperclip==1.6.4
>>>>>>>>>
>>>>>>>>> pyrsistent==0.14.2
>>>>>>>>>
>>>>>>>>> python-dateutil==2.7.3
>>>>>>>>>
>>>>>>>>> python-editor==1.0.3
>>>>>>>>>
>>>>>>>>> python-mimeparse==1.6.0
>>>>>>>>>
>>>>>>>>> pytz==2018.3
>>>>>>>>>
>>>>>>>>> requests==2.19.1
>>>>>>>>>
>>>>>>>>> selenium==3.14.1
>>>>>>>>>
>>>>>>>>> simplejson==3.13.2
>>>>>>>>>
>>>>>>>>> six==1.11.0
>>>>>>>>>
>>>>>>>>> snowballstemmer==1.2.1
>>>>>>>>>
>>>>>>>>> speaklater==1.3
>>>>>>>>>
>>>>>>>>> Sphinx==1.8.2
>>>>>>>>>
>>>>>>>>> sphinxcontrib-websupport==1.1.0
>>>>>>>>>
>>>>>>>>> SQLAlchemy==1.2.10
>>>>>>>>>
>>>>>>>>> sqlparse==0.2.4
>>>>>>>>>
>>>>>>>>> sshtunnel==0.1.4
>>>>>>>>>
>>>>>>>>> testscenarios==0.5.0
>>>>>>>>>
>>>>>>>>> testtools==2.3.0
>>>>>>>>>
>>>>>>>>> traceback2==1.4.0
>>>>>>>>>
>>>>>>>>> unittest2==1.1.0
>>>>>>>>>
>>>>>>>>> urllib3==1.23
>>>>>>>>>
>>>>>>>>> webencodings==0.5.1
>>>>>>>>>
>>>>>>>>> Werkzeug==0.14.1
>>>>>>>>>
>>>>>>>>> WTForms==2.1
>>>>>>>>>
>>>>>>>>> Exception:
>>>>>>>>>
>>>>>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server
>>>>>>>>> cursor) for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>> [21/Dec/2018 11:47:29] "GET
>>>>>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>> line 270, in run_wsgi
>>>>>>>>> execute(self.server.app)
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>> line 260, in execute
>>>>>>>>> for data in application_iter:
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>> line 870, in __next__
>>>>>>>>> return self._next()
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>> for item in iterable:
>>>>>>>>> File
>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>> line 848, in gen
>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 761, in writerows
>>>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 268, in writerows
>>>>>>>>> self.writerow(row)
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 261, in writerow
>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>> row]
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 261, in <listcomp>
>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in
>>>>>>>>> row]
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>>> 142, in prepare
>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When testing with quoting set to None, quote = " and
>>>>>>>>>>>>>> delimiter = , I get the following exception when I try to download:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text,
>>>>>>>>>>>>>> E'Foo\nBar'::text
>>>>>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>>>> File
>>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>>>>>> execute(self.server.app)
>>>>>>>>>>>>>> File
>>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>>> line 260, in execute
>>>>>>>>>>>>>> for data in application_iter:
>>>>>>>>>>>>>> File
>>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>>>>>> line 870, in __next__
>>>>>>>>>>>>>> return self._next()
>>>>>>>>>>>>>> File
>>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>>>>>> for item in iterable:
>>>>>>>>>>>>>> File
>>>>>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>>>>>> line 820, in gen
>>>>>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>>> line 748, in writerows
>>>>>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>>>>>> rowdicts))
>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>>> line 256, in writerows
>>>>>>>>>>>>>> self.writerow(row)
>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>>> line 249, in writerow
>>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>>> in row]
>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>>> line 249, in <listcomp>
>>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>>> in row]
>>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>>> line 136, in prepare
>>>>>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Not able to reproduce the above issue. I have tested it
>>>>>>>>>>>>> with the same setting as you mentioned. Please refer all the attached
>>>>>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When I have quoting set to All, the first column is returned
>>>>>>>>>>>>>> as ""
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Bar"
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> So how would you distinguish NULL from an empty string? Isn't
>>>>>>>>>>>> that exactly what the bug is about?
>>>>>>>>>>>>
>>>>>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>>>>>
>>>>>>>>>>>> NULL
>>>>>>>>>>>> "NULL"
>>>>>>>>>>>> ""
>>>>>>>>>>>> ''
>>>>>>>>>>>> <empty string>
>>>>>>>>>>>>
>>>>>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>>>>>> string.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks
>>>>>>>>>>>>>>>>>> ability to specify NULL values in CSV export.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> - You've included code from backports.csv, but per the
>>>>>>>>>>>>>>>>> licence you need to include a description of the changes made.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Sure. In that case I'll copy the complete file and
>>>>>>>>>>>>>>>> will do my changes which is of two lines only. With my patch I have remove
>>>>>>>>>>>>>>>> all the unwanted code from backport.csv.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> - Shouldn't backports.csv be removed from
>>>>>>>>>>>>>>>>> requirements.txt, or is it used elsewhere?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure
>>>>>>>>>>>>>>>>> there is code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Dave Page
>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>
>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>
>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>
--
Dave Page
VP, Chief Architect, Tools & Installers
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
^ permalink raw reply [nested|flat] 20+ messages in thread
* Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-18 09:30 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 10:08 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-20 11:42 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:12 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 12:56 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-21 14:07 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Dave Page <[email protected]>
2018-12-24 02:17 ` Re: [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
@ 2019-01-02 10:58 ` Dave Page <[email protected]>
1 sibling, 0 replies; 20+ messages in thread
From: Dave Page @ 2019-01-02 10:58 UTC (permalink / raw)
To: Akshay Joshi <[email protected]>; +Cc: pgadmin-hackers
On Mon, Dec 24, 2018 at 2:17 AM Akshay Joshi <[email protected]>
wrote:
>
>
> On Fri, 21 Dec 2018, 19:45 Dave Page <[email protected] wrote:
>
>>
>>
>> On Fri, Dec 21, 2018 at 2:08 PM Akshay Joshi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Fri, 21 Dec 2018, 18:52 Dave Page <[email protected] wrote:
>>>
>>>> Hi
>>>>
>>>> Looks good - I just found one issue; please go ahead and commit (with a
>>>> release notes update) when fixed.
>>>>
>>>> - If I set the NULL replacement value to an empty string, it defaults
>>>> back to NULL. It's therefore not possible to replace null values with an
>>>> empty value.
>>>>
>>>
>>> If you remember this is the default behaviour of the Preferences
>>> dialog. It sets the default value again if you set the blank value. Fahar
>>> has raised the same issue before and we have rejected that. If you think we
>>> can create the new RM for that behaviour and will commit the current patch.
>>>
>>
>> Well, we rejected it for a specific case. In this specific case, it makes
>> sense to be able to enter a blank value.
>>
>> Maybe we just need an "allow blank" flag on the preference object, that
>> does nothing except allow you to remove the default (or any other) value
>> without it being replaced again? Obviously the default still needs to work
>> until a value is written to the config DB.
>>
>
> Ok. If i understand correctly this new parameter works for all the
> preference parameter if set to true. By default it's value is False and if
> user wants to enter blank value they will ser the flag.
>
No - it would be an internal flag that the user won't see.
If set to false, then attempts to change a field to <blank> would actually
set it to it's default (e.g. for binary paths, it would set it back to the
default from config.py).
If set to true, then attempts to change a field to <blank> would be
accepted. The default value would only be used until such time as its
overridden by the user.
>
>>
>>>
>>>> Thanks!
>>>>
>>>> On Fri, Dec 21, 2018 at 12:57 PM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave
>>>>>
>>>>> I have modified the condition, it won't through any exception.
>>>>> Attached is the updated patch, please review it.
>>>>>
>>>>> On Fri, Dec 21, 2018 at 4:22 AM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Sorry! Here is is.
>>>>>>
>>>>>> On Fri, Dec 21, 2018 at 12:12 PM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave
>>>>>>>
>>>>>>> Can you please attached the updated patch with your changes. I'll
>>>>>>> try to fix the exception.
>>>>>>>
>>>>>>> On Fri, Dec 21, 2018 at 3:57 AM Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> Here's an updated patch as I've tweaked some of the wording. The
>>>>>>>> screenshot probably isn't the right resolution, but as we're replacing them
>>>>>>>> anyway it doesn't seem overly important. Feel free to fix if you like :-)
>>>>>>>>
>>>>>>>> With quoting set to either All or Strings, everything looks good.
>>>>>>>> With it set to None, I still get an exception (below). The query I'm using
>>>>>>>> is this:
>>>>>>>>
>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>>
>>>>>>>> Field separator: ,
>>>>>>>> Quote character: "
>>>>>>>> Replace null's with: NULL
>>>>>>>>
>>>>>>>> Steps:
>>>>>>>>
>>>>>>>> 1) Run pgAdmin in Desktop mode. I'm running from within PyuCharms,
>>>>>>>> using the venv detailed below.
>>>>>>>> 2) Open the Query Tool on a PostgreSQL 9.6.10 database, running on
>>>>>>>> MacOS 10.14.1
>>>>>>>> 3) Run the above query, wit quoting set to All and check the result
>>>>>>>> in the grid.
>>>>>>>> 4) Download the CSV file and check.
>>>>>>>> 5) Open Preferences and set quoting to Strings.
>>>>>>>> 6) Download the CSV file and check.
>>>>>>>> 7) Open Preferences and set quoting to None.
>>>>>>>> 8) Download the CSV file *exception occurs*.
>>>>>>>>
>>>>>>>>
>>>>>>>> System info:
>>>>>>>>
>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ python --version
>>>>>>>>
>>>>>>>> Python 3.6.7
>>>>>>>>
>>>>>>>> (pgadmin4) dpage@hal:*~/git/pgadmin4*$ pip freeze
>>>>>>>>
>>>>>>>> alabaster==0.7.11
>>>>>>>>
>>>>>>>> alembic==1.0.0
>>>>>>>>
>>>>>>>> asn1crypto==0.24.0
>>>>>>>>
>>>>>>>> Babel==2.6.0
>>>>>>>>
>>>>>>>> bcrypt==3.1.4
>>>>>>>>
>>>>>>>> blinker==1.4
>>>>>>>>
>>>>>>>> certifi==2018.8.24
>>>>>>>>
>>>>>>>> cffi==1.11.5
>>>>>>>>
>>>>>>>> chardet==3.0.4
>>>>>>>>
>>>>>>>> chromedriver-installer==0.0.6
>>>>>>>>
>>>>>>>> click==6.7
>>>>>>>>
>>>>>>>> cryptography==2.3
>>>>>>>>
>>>>>>>> docutils==0.14
>>>>>>>>
>>>>>>>> extras==1.0.0
>>>>>>>>
>>>>>>>> fixtures==3.0.0
>>>>>>>>
>>>>>>>> Flask==0.12.4
>>>>>>>>
>>>>>>>> Flask-BabelEx==0.9.3
>>>>>>>>
>>>>>>>> Flask-Gravatar==0.5.0
>>>>>>>>
>>>>>>>> Flask-HTMLmin==1.3.2
>>>>>>>>
>>>>>>>> Flask-Login==0.3.2
>>>>>>>>
>>>>>>>> Flask-Mail==0.9.1
>>>>>>>>
>>>>>>>> Flask-Migrate==2.1.1
>>>>>>>>
>>>>>>>> Flask-Paranoid==0.2.0
>>>>>>>>
>>>>>>>> Flask-Principal==0.4.0
>>>>>>>>
>>>>>>>> Flask-Security==3.0.0
>>>>>>>>
>>>>>>>> Flask-SQLAlchemy==2.3.2
>>>>>>>>
>>>>>>>> Flask-WTF==0.14.2
>>>>>>>>
>>>>>>>> html5lib==1.0.1
>>>>>>>>
>>>>>>>> htmlmin==0.1.12
>>>>>>>>
>>>>>>>> idna==2.7
>>>>>>>>
>>>>>>>> imagesize==1.1.0
>>>>>>>>
>>>>>>>> itsdangerous==0.24
>>>>>>>>
>>>>>>>> Jinja2==2.10
>>>>>>>>
>>>>>>>> linecache2==1.0.0
>>>>>>>>
>>>>>>>> Mako==1.0.7
>>>>>>>>
>>>>>>>> MarkupSafe==1.0
>>>>>>>>
>>>>>>>> packaging==18.0
>>>>>>>>
>>>>>>>> paramiko==2.4.1
>>>>>>>>
>>>>>>>> passlib==1.7.1
>>>>>>>>
>>>>>>>> pbr==3.1.1
>>>>>>>>
>>>>>>>> psutil==5.4.8
>>>>>>>>
>>>>>>>> psycopg2==2.7.5
>>>>>>>>
>>>>>>>> pyasn1==0.4.4
>>>>>>>>
>>>>>>>> pycodestyle==2.3.1
>>>>>>>>
>>>>>>>> pycparser==2.18
>>>>>>>>
>>>>>>>> pycrypto==2.6.1
>>>>>>>>
>>>>>>>> Pygments==2.2.0
>>>>>>>>
>>>>>>>> PyNaCl==1.2.1
>>>>>>>>
>>>>>>>> pyparsing==2.2.2
>>>>>>>>
>>>>>>>> pyperclip==1.6.4
>>>>>>>>
>>>>>>>> pyrsistent==0.14.2
>>>>>>>>
>>>>>>>> python-dateutil==2.7.3
>>>>>>>>
>>>>>>>> python-editor==1.0.3
>>>>>>>>
>>>>>>>> python-mimeparse==1.6.0
>>>>>>>>
>>>>>>>> pytz==2018.3
>>>>>>>>
>>>>>>>> requests==2.19.1
>>>>>>>>
>>>>>>>> selenium==3.14.1
>>>>>>>>
>>>>>>>> simplejson==3.13.2
>>>>>>>>
>>>>>>>> six==1.11.0
>>>>>>>>
>>>>>>>> snowballstemmer==1.2.1
>>>>>>>>
>>>>>>>> speaklater==1.3
>>>>>>>>
>>>>>>>> Sphinx==1.8.2
>>>>>>>>
>>>>>>>> sphinxcontrib-websupport==1.1.0
>>>>>>>>
>>>>>>>> SQLAlchemy==1.2.10
>>>>>>>>
>>>>>>>> sqlparse==0.2.4
>>>>>>>>
>>>>>>>> sshtunnel==0.1.4
>>>>>>>>
>>>>>>>> testscenarios==0.5.0
>>>>>>>>
>>>>>>>> testtools==2.3.0
>>>>>>>>
>>>>>>>> traceback2==1.4.0
>>>>>>>>
>>>>>>>> unittest2==1.1.0
>>>>>>>>
>>>>>>>> urllib3==1.23
>>>>>>>>
>>>>>>>> webencodings==0.5.1
>>>>>>>>
>>>>>>>> Werkzeug==0.14.1
>>>>>>>>
>>>>>>>> WTForms==2.1
>>>>>>>>
>>>>>>>> Exception:
>>>>>>>>
>>>>>>>> 2018-12-21 11:47:28,995: SQL pgadmin: Execute (with server cursor)
>>>>>>>> for server #2 - CONN:8760231 (Query-id: 8649354):
>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text, E'Foo\nBar'::text
>>>>>>>> 2018-12-21 11:47:29,001: INFO werkzeug: 127.0.0.1 - - [21/Dec/2018
>>>>>>>> 11:47:29] "GET
>>>>>>>> /sqleditor/query_tool/download/2133388?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545392848979.csv
>>>>>>>> HTTP/1.1" 500 -
>>>>>>>> 2018-12-21 11:47:29,003: ERROR werkzeug: Error on request:
>>>>>>>> Traceback (most recent call last):
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 270, in run_wsgi
>>>>>>>> execute(self.server.app)
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>> line 260, in execute
>>>>>>>> for data in application_iter:
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>> line 870, in __next__
>>>>>>>> return self._next()
>>>>>>>> File
>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>> line 82, in _iter_encoded
>>>>>>>> for item in iterable:
>>>>>>>> File
>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>> line 848, in gen
>>>>>>>> csv_writer.writerows(results)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 761, in writerows
>>>>>>>> return self.writer.writerows(map(self._dict_to_list, rowdicts))
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 268, in writerows
>>>>>>>> self.writerow(row)
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 261, in writerow
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 261, in <listcomp>
>>>>>>>> row = [self.strategy.prepare(field, only=only) for field in row]
>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py", line
>>>>>>>> 142, in prepare
>>>>>>>> raise Error('No escapechar is set')
>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>
>>>>>>>> On Thu, Dec 20, 2018 at 1:05 PM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave
>>>>>>>>>
>>>>>>>>> On Thu, Dec 20, 2018 at 5:12 PM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 20, 2018 at 4:48 PM Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 20, 2018 at 10:09 AM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Dec 20, 2018 at 3:08 PM Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>
>>>>>>>>>>>>> When testing with quoting set to None, quote = " and delimiter
>>>>>>>>>>>>> = , I get the following exception when I try to download:
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2018-12-20 09:34:02,547: SQL pgadmin: Execute (with server
>>>>>>>>>>>>> cursor) for server #2 - CONN:354106 (Query-id: 4121147):
>>>>>>>>>>>>> SELECT NULL::text, 1234::int, 'Foo bar'::text,
>>>>>>>>>>>>> E'Foo\nBar'::text
>>>>>>>>>>>>> 2018-12-20 09:34:02,570: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>>>> [20/Dec/2018 09:34:02] "GET
>>>>>>>>>>>>> /sqleditor/query_tool/download/5610522?query=SELECT%20NULL%3A%3Atext%2C%201234%3A%3Aint%2C%20%27Foo%20bar%27%3A%3Atext%2C%20E%27Foo%5CnBar%27%3A%3Atext&filename=data-1545298442530.csv
>>>>>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>>>>>> 2018-12-20 09:34:02,572: ERROR werkzeug: Error on request:
>>>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>> line 270, in run_wsgi
>>>>>>>>>>>>> execute(self.server.app)
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/serving.py",
>>>>>>>>>>>>> line 260, in execute
>>>>>>>>>>>>> for data in application_iter:
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wsgi.py",
>>>>>>>>>>>>> line 870, in __next__
>>>>>>>>>>>>> return self._next()
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python3.6/site-packages/werkzeug/wrappers.py",
>>>>>>>>>>>>> line 82, in _iter_encoded
>>>>>>>>>>>>> for item in iterable:
>>>>>>>>>>>>> File
>>>>>>>>>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/connection.py",
>>>>>>>>>>>>> line 820, in gen
>>>>>>>>>>>>> csv_writer.writerows(results)
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 748, in writerows
>>>>>>>>>>>>> return self.writer.writerows(map(self._dict_to_list,
>>>>>>>>>>>>> rowdicts))
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 256, in writerows
>>>>>>>>>>>>> self.writerow(row)
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 249, in writerow
>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>> in row]
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 249, in <listcomp>
>>>>>>>>>>>>> row = [self.strategy.prepare(field, only=only) for field
>>>>>>>>>>>>> in row]
>>>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/csv.py",
>>>>>>>>>>>>> line 136, in prepare
>>>>>>>>>>>>> raise Error('No escapechar is set')
>>>>>>>>>>>>> _csv.Error: No escapechar is set
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Not able to reproduce the above issue. I have tested it
>>>>>>>>>>>> with the same setting as you mentioned. Please refer all the attached
>>>>>>>>>>>> screenshots. Please specify the steps if they are different.
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> When I have quoting set to All, the first column is returned
>>>>>>>>>>>>> as ""
>>>>>>>>>>>>>
>>>>>>>>>>>>> dpage@hal:*~/Downloads*$ more data-1545298598112.csv
>>>>>>>>>>>>>
>>>>>>>>>>>>> "text","int4","text-2","text-3"
>>>>>>>>>>>>>
>>>>>>>>>>>>> "","1234","Foo bar","Foo
>>>>>>>>>>>>>
>>>>>>>>>>>>> Bar"
>>>>>>>>>>>>>
>>>>>>>>>>>>> Isn't the point for it to be NULL?
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> while quoting is set to ALL, all the data types has been
>>>>>>>>>>>> quoted, so I thought null values should be replaced by "" instead of blank.
>>>>>>>>>>>> But if you think null values shouldn't be quoted even if user select quote
>>>>>>>>>>>> ALL, I'll fix it and resend the patch.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> So how would you distinguish NULL from an empty string? Isn't
>>>>>>>>>>> that exactly what the bug is about?
>>>>>>>>>>>
>>>>>>>>>>> I still think we need a "Replace NULLs with" config option, and
>>>>>>>>>>> regardless of quoting settings we always replace NULL values with whatever
>>>>>>>>>>> that is set to - for which the user could then choose options like:
>>>>>>>>>>>
>>>>>>>>>>> NULL
>>>>>>>>>>> "NULL"
>>>>>>>>>>> ""
>>>>>>>>>>> ''
>>>>>>>>>>> <empty string>
>>>>>>>>>>>
>>>>>>>>>>> We would never quote the NULL replacement value - if the user
>>>>>>>>>>> wanted it to be quoted, they would include the quotes in the configured
>>>>>>>>>>> string.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> OK, Will work on it and send the modified patch again.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Attached is the modified patch as per your suggestion.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 11:13 AM Akshay Joshi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Dave
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Attached is the modified patch to fix review comments.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:00 PM Akshay Joshi <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 2:49 PM Dave Page <[email protected]>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Dec 18, 2018 at 3:45 AM Akshay Joshi <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Attached is the patch to fix RM #3780 pgAdmin4 lacks
>>>>>>>>>>>>>>>>> ability to specify NULL values in CSV export.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Please review it.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> A few points;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - You've included code from backports.csv, but per the
>>>>>>>>>>>>>>>> licence you need to include a description of the changes made.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Sure. In that case I'll copy the complete file and
>>>>>>>>>>>>>>> will do my changes which is of two lines only. With my patch I have remove
>>>>>>>>>>>>>>> all the unwanted code from backport.csv.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Shouldn't backports.csv be removed from requirements.txt,
>>>>>>>>>>>>>>>> or is it used elsewhere?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Yes. Will do that.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - If the previous point is true, then I'm fairly sure there
>>>>>>>>>>>>>>>> is code in one or more of the many package build scripts that adds an
>>>>>>>>>>>>>>>> __init__.py file to backports.csv in the venv that's created.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'll remove that code as well.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>
>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>
>>>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
^ permalink raw reply [nested|flat] 20+ messages in thread
end of thread, other threads:[~2019-01-02 10:59 UTC | newest]
Thread overview: 20+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2018-12-18 03:45 [pgAdmin4][Patch] - RM 3780 pgAdmin4 lacks ability to specify NULL values in CSV export Akshay Joshi <[email protected]>
2018-12-18 09:19 ` Dave Page <[email protected]>
2018-12-18 09:30 ` Akshay Joshi <[email protected]>
2018-12-18 11:13 ` Akshay Joshi <[email protected]>
2018-12-20 09:38 ` Dave Page <[email protected]>
2018-12-20 10:08 ` Akshay Joshi <[email protected]>
2018-12-20 11:18 ` Dave Page <[email protected]>
2018-12-20 11:42 ` Akshay Joshi <[email protected]>
2018-12-20 13:05 ` Akshay Joshi <[email protected]>
2018-12-21 11:57 ` Dave Page <[email protected]>
2018-12-21 12:12 ` Akshay Joshi <[email protected]>
2018-12-21 12:22 ` Dave Page <[email protected]>
2018-12-21 12:56 ` Akshay Joshi <[email protected]>
2018-12-21 13:22 ` Dave Page <[email protected]>
2018-12-21 14:07 ` Akshay Joshi <[email protected]>
2018-12-21 14:14 ` Dave Page <[email protected]>
2018-12-24 02:17 ` Akshay Joshi <[email protected]>
2019-01-01 09:48 ` Akshay Joshi <[email protected]>
2019-01-02 10:59 ` Dave Page <[email protected]>
2019-01-02 10:58 ` Dave Page <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox