<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" class=""><span style="font-size: 11px;" class="">Here it is:</span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" class=""><span style="font-size: 11px;" class=""><br class=""></span></font></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><font face="Menlo" class=""><span style="font-size: 11px;" class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Effective uid=8, gid=8, home=/var/spool/mail/iwascoding/paul<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Quota root: name=User quota backend=dict args=:file:/var/spool/mail/iwascoding/paul/dovecot-quota<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Quota rule: root=User quota mailbox=* bytes=2147483648 messages=0<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Quota rule: root=User quota mailbox=* bytes=2147483648 messages=60000<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Quota grace: root=User quota bytes=214748364 (10%)<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: dict quota: <a href="mailto:user=paul@iwascoding.com" class="">user=paul@iwascoding.com</a>, uri=file:/var/spool/mail/iwascoding/paul/dovecot-quota, noenforcing=0<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Namespace inbox: type=private, prefix=, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=mdbox:~/mdbox<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: fs: root=/var/spool/mail/iwascoding/paul/mdbox, index=, indexpvt=, control=, inbox=, alt=<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: FTS Xapian: Partial=2, Full=20 DB_PATH=/var/spool/mail/iwascoding/paul/mdbox/xapian-indexes<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: quota: quota_over_flag check: quota_over_script unset - skipping<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Mailbox sent: Mailbox opened because: indexing<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: FTS Xapian : Mailbox sent : Last UID=0<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: FTS Xapian : Mailbox sent : Last UID=0<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Namespace : Using permissions from /var/spool/mail/iwascoding/paul/mdbox: mode=0700 gid=default<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Mailbox sent: UID 1: Opened mail because: fts indexing<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Opening RW /var/spool/mail/iwascoding/paul/mdbox/xapian-indexes/db_9ddfe10d8a8a8a568c120000654d370e<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Mailbox sent: UID 2: Opened mail because: fts indexing<br class="">Jan 14 09:26:08 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Mailbox sent: UID 3: Opened mail because: fts indexing<br class=""></span></font><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">Thank you!</div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">On 14. Jan 2019, at 10:11, Joan Moreau via dovecot <<a href="mailto:dovecot@dovecot.org" class="">dovecot@dovecot.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class=""><div style="font-size: 9pt; font-family: Verdana,Geneva,sans-serif" class=""><p class="">Can you send the log part that includes the "init" of the plugins (something similar as below) ?</p><p class="">WHich version of Xapian are you on ?</p><p class="">Jan 14 09:10:04 gjserver dovecot[31082]: indexer-worker(<a href="mailto:admin@grosjo.net" class="">admin@grosjo.net</a>)<14725><apZfHexRPFy9QAAA0thIag:UL+TNOxRPFyFOQAA0thIag>: FTS Xapian: Partial=2, Full=20 DB_PATH=/data/mail/<a href="http://grosjo.net/admin/xapian-indexes" class="">grosjo.net/admin/xapian-indexes</a><br class="">Jan 14 09:10:04 gjserver dovecot[31082]: indexer-worker(<a href="mailto:admin@grosjo.net" class="">admin@grosjo.net</a>)<14725><apZfHexRPFy9QAAA0thIag:UL+TNOxRPFyFOQAA0thIag>: FTS Xapian : Mailbox Mail : Last UID=815055<br class="">Jan 14 09:10:04 gjserver dovecot[31082]: indexer-worker(<a href="mailto:admin@grosjo.net" class="">admin@grosjo.net</a>)<14725><apZfHexRPFy9QAAA0thIag:UL+TNOxRPFyFOQAA0thIag>: FTS Xapian : Mailbox Mail : Last UID=815055<br class="">Jan 14 09:10:04 gjserver dovecot[31082]: indexer-worker(<a href="mailto:admin@grosjo.net" class="">admin@grosjo.net</a>)<14725><apZfHexRPFy9QAAA0thIag:UL+TNOxRPFyFOQAA0thIag>: Opening RW /data/mail/<a href="http://grosjo.net/admin/xapian-indexes/db_5c935034609bc14c0e550000d6a3092d" class="">grosjo.net/admin/xapian-indexes/db_5c935034609bc14c0e550000d6a3092d</a></p><p class=""><br class=""></p>
<div id="signature" class=""> </div><p class=""><br class=""></p><p id="reply-intro" class="">On 2019-01-14 10:08, Paul Hecker via dovecot wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class=""><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Hi,<br class=""><br class="">I installed and tested your version, but the indexer process crashes reproducible with the following command after about 2000 messages were indexed:<br class=""><br class="">doveadm index -u <a href="mailto:paul@iwascoding.com" rel="noreferrer" class="">paul@iwascoding.com</a> -q \*<br class=""><br class="">Jan 14 09:26:15 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" rel="noreferrer" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Debug: Mailbox sent: UID 2038: Opened mail because: fts indexing<br class="">Jan 14 09:26:15 mail dovecot: indexer-worker: Error: terminate called after throwing an instance of 'std::bad_alloc'<br class="">Jan 14 09:26:15 mail dovecot: indexer-worker: Error:   what():  std::bad_alloc<br class="">Jan 14 09:26:15 mail dovecot: indexer: Error: Indexer worker disconnected, discarding 48 requests for <a href="mailto:paul@iwascoding.com" rel="noreferrer" class="">paul@iwascoding.com</a><br class="">Jan 14 09:26:15 mail dovecot: indexer-worker(<a href="mailto:paul@iwascoding.com" rel="noreferrer" class="">paul@iwascoding.com</a>)<16777><IKpfOqBHPFyJQQAADYqDFA>: Fatal: master: service(indexer-worker): child 16777 killed with signal 6 (core dumps disabled - <a href="https://dovecot.org/bugreport.html#coredumps" target="_blank" rel="noopener noreferrer" class="">https://dovecot.org/bugreport.html#coredumps</a>)<br class=""><br class="">I tried to delete the message, but this does not help (crashes e.g. after message 2029 or 2044). Other folders with fewer messages were successfully indexed before.<br class=""><br class="">Sorry, could not convince dovecot to create core dumps (read the docs, changed /proc/sys/kernel/core_pattern, added LimitCORE=unlimited/infinity, even created /etc/systemd/system/dovecot.service.d/coredump.conf to no avail). Custom Dovecot 2.3.4 on Debian Stretch.<br class=""><br class="">Thanks,<br class="">Paul<br class=""><br class=""><br class="">
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class="">On 14. Jan 2019, at 07:42, Joan Moreau via dovecot <<a href="mailto:dovecot@dovecot.org" rel="noreferrer" class="">dovecot@dovecot.org</a>> wrote:<br class=""><br class="">Thank you Stephan.<br class=""><br class="">The version here shall be up and running : <a href="https://github.com/grosjo/fts-xapian" target="_blank" rel="noopener noreferrer" class="">https://github.com/grosjo/fts-xapian</a><br class=""><br class=""><br class=""><br class=""> <br class=""><br class=""><br class="">On 2019-01-14 00:07, Stephan Bosch wrote:<br class=""><br class="">
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class=""><br class=""><br class="">Op 13/01/2019 om 21:25 schreef Joan Moreau via dovecot:
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class=""><br class="">I tried to combined it, the "autoreconf" errors are solved<br class=""><br class="">Now, when I type "make install", the lib is not pushed into dovecot folder, but somewhere in /usr/local/...<br class=""><br class="">How to adjust this to have it arriving in the proper folder ?<br class=""><br class=""></blockquote>
<br class="">Depends on your system. It mostly a matter of setting a proper --prefix directory for configure, but other paths are configurable as well. I usually check what the official distribution package for Dovecot is doing and use that as a basis.<br class=""><br class="">For Debian I use the following configure command:<br class=""><br class="">./configure --with-ldap=plugin --with-ssl=openssl --with-sql=plugin --with-lua=plugin --with-pgsql --with-mysql --with-sqlite \<br class="">        --with-gssapi=plugin --with-solr --with-ioloop=best --enable-maintainer-mode \<br class="">        --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man \<br class="">        --infodir=/usr/share/info --with-moduledir=/usr/lib/dovecot/modules --disable-rpath --disable-static<br class=""><br class="">Regards,<br class=""><br class="">Stephan<br class=""><br class="">
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class=""><br class="">On 2019-01-13 21:01, Tuomi, Aki wrote:<br class=""><br class="">
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0" class="">You copied your Makefile.am there. Stephan made you a working version, can you try that?<br class="">(sorry for dup)<br class="">Aki<br class="">-------- Original message --------<br class="">From: Joan Moreau <<a href="mailto:jom@grosjo.net" rel="noreferrer" class="">jom@grosjo.net</a>><br class="">Date: 13/01/2019 21:39 (GMT+02:00)<br class="">To: Stephan Bosch <<a href="mailto:stephan@rename-it.nl" rel="noreferrer" class="">stephan@rename-it.nl</a>><br class="">Cc: Aki Tuomi <<a href="mailto:aki.tuomi@open-xchange.com" rel="noreferrer" class="">aki.tuomi@open-xchange.com</a>><br class="">Subject: Re: [FTS Xapian] Beta release<br class=""><br class="">I used the skeleton from Aki : <a href="https://github.com/grosjo/fts-xapian" target="_blank" rel="noopener noreferrer" class="">https://github.com/grosjo/fts-xapian</a><br class=""><br class="">However, when I try to act as a visitor, I reach teh follwoing error:<br class=""><br class=""># autoreconf -vi<br class="">autoreconf: Entering directory `.'<br class="">autoreconf: configure.ac: not using Gettext<br class="">autoreconf: running: aclocal -I m4<br class="">autoreconf: configure.ac: tracing<br class="">autoreconf: running: libtoolize --copy<br class="">libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'.<br class="">libtoolize: copying file './ltmain.sh'<br class="">libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.<br class="">libtoolize: copying file 'm4/libtool.m4'<br class="">libtoolize: copying file 'm4/ltoptions.m4'<br class="">libtoolize: copying file 'm4/ltsugar.m4'<br class="">libtoolize: copying file 'm4/ltversion.m4'<br class="">libtoolize: copying file 'm4/lt~obsolete.m4'<br class="">autoreconf: running: /usr/bin/autoconf<br class="">autoreconf: running: /usr/bin/autoheader<br class="">autoreconf: running: automake --add-missing --copy --no-force<br class="">configure.ac:9: installing './compile'<br class="">configure.ac:11: installing './config.guess'<br class="">configure.ac:11: installing './config.sub'<br class="">configure.ac:7: installing './install-sh'<br class="">configure.ac:7: installing './missing'<br class="">src/Makefile.am: installing './depcomp'<br class="">/usr/share/automake-1.16/am/depend2.am: error: am__fastdepCXX does not appear in AM_CONDITIONAL<br class="">/usr/share/automake-1.16/am/depend2.am: The usual way to define 'am__fastdepCXX' is to add 'AC_PROG_CXX'<br class="">/usr/share/automake-1.16/am/depend2.am: to 'configure.ac' and run 'aclocal' and 'autoconf' again<br class="">src/Makefile.am: error: C++ source seen but 'CXX' is undefined<br class="">src/Makefile.am: The usual way to define 'CXX' is to add 'AC_PROG_CXX'<br class="">src/Makefile.am: to 'configure.ac' and run 'autoconf' again.<br class="">src/Makefile.am:11: warning: variable 'NOPLUGIN_LDFLAGS' is defined but no program or<br class="">src/Makefile.am:11: library has 'NOPLUGIN' as canonical name (possible typo)<br class="">autoreconf: automake failed with exit status: 1<br class=""><br class=""><br class=""><br class="">On 2019-01-13 20:24, Stephan Bosch wrote:<br class=""><br class="">    Oh, right, a distribution tarball doesn't include some of the<br class="">    necessary files for your repository like autogen.sh and<br class="">    .gitignore. The attached tarball includes all those and is ready<br class="">    for `git init`. The previous tarball was made with `make<br class="">    distcheck` from this one.<br class=""><br class="">    Regards,<br class=""><br class="">    Stephan.<br class=""><br class="">    Op 13/01/2019 om 20:14 schreef Stephan Bosch:<br class=""><br class="">        Hi Joan,<br class=""><br class="">        Op 13/01/2019 om 19:03 schreef Aki Tuomi:<br class=""><br class="">            Yes, from compiling point of view it is done.<br class=""><br class="">            Unfortunately what is not done is all the other work<br class="">            involved, such as fixing all the inevitable bugs it has<br class="">            and maintaining it. We do not want, at this moment, take<br class="">            up maintaining and developing yet another FTS plugin as<br class="">            we have plenty of things to do already.<br class=""><br class="">            I invite you to setup your own repository and provide<br class="">            this plugin from there, being the maintainer of this<br class="">            plugin. We can add a link to your plugin on our FTS page<br class="">            so people can also find it.<br class=""><br class="">            There are other plugins like this, e.g.<br class="">            <a href="https://github.com/st3fan/dovecot-xaps-plugin" target="_blank" rel="noopener noreferrer" class="">https://github.com/st3fan/dovecot-xaps-plugin</a><br class=""><br class=""><br class="">        I turned the code you provided into a separate plugin<br class="">        package. The distribution tarball is attached.<br class=""><br class="">        Notable changes:<br class=""><br class="">        - Added example copyright headers and COPYING and AUTHORS<br class="">        files. You should modify those to your preference.<br class="">        - Added README and INSTALL files (in markdown using Pandoc).<br class="">        Those need to be amended with details.<br class="">        - Amended the plugin code to display a debug message with the<br class="">        plugin name and version upon plugin load.<br class=""><br class="">        I advise you to turn this into a git repository and continue from there.<br class=""><br class="">        I do not recommend releasing this plugin with the<br class="">        -fpermissive flag and the resulting warning as it is now. But<br class="">        I'm assuming this is still a work in progress, so that is OK.<br class=""><br class="">        Regards,<br class=""><br class="">        Stephan.<br class=""><br class=""><br class="">                On 13 January 2019 at 19:52 Joan Moreau <<a href="mailto:jom@grosjo.net" rel="noreferrer" class="">jom@grosjo.net</a><br class="">                <mailto:<a href="mailto:jom@grosjo.net" rel="noreferrer" class="">jom@grosjo.net</a>>> wrote:<br class=""><br class=""><br class="">                The only point here of this fts-xapian is to get rid<br class="">                of solr (because it<br class="">                is just a nightmare to setup) and squat (because it is considere<br class="">                obsolete).<br class=""><br class="">                I already sent the changed in configure.ac, makefile.am, etc.. in order<br class="">                to include it in the dovecot, and it compiles properly<br class=""><br class="">                The only remaining point is to push it in hte git (yes, everything is<br class="">                already done)<br class=""><br class="">                On 2019-01-13 18:45, Aki Tuomi wrote:<br class=""><br class="">                        On 13 January 2019 at 17:05 Joan Moreau via<br class="">                        dovecot <<a href="mailto:dovecot@dovecot.org" rel="noreferrer" class="">dovecot@dovecot.org</a><br class="">                        <mailto:<a href="mailto:dovecot@dovecot.org" rel="noreferrer" class="">dovecot@dovecot.org</a>>> wrote:<br class=""><br class="">                        Hi<br class=""><br class="">                        Please find attached the beta release of FTS<br class="">                        Xapian, with the objective<br class="">                        to replace fts_squat that is being deprecated.<br class=""><br class="">                        Configuration is exactly the same as for fts_squat:<br class=""><br class="">                        plugin {<br class=""><br class="">                        plugin = fts fts_xapian (...)<br class="">                        fts = xapian<br class="">                        fts_autoindex = yes<br class="">                        fts_enforced = yes<br class="">                        fts_xapian = partial=2 full=20<br class=""><br class="">                        This is installed on my production server<br class="">                        (>120Gb of mailboxes), and I<br class="">                        will observe it during the coming days.<br class=""><br class="">                        I will definitely appreciate that this is added in the core git of<br class="">                        docevot, in order to have a versionning of<br class="">                        it, to remove squat and let<br class="">                        basic users able to avoid Solr alternative as much as possible.<br class=""><br class="">                        Thanks<br class=""><br class="">                        JM<br class=""><br class="">                    Hi!<br class=""><br class="">                    I still recommend you setup a, say, github<br class="">                    repository for your plugin. We are not able to<br class="">                    currently include your work in dovecot core as it<br class="">                    is more work than just pushing the code into the<br class="">                    repo. Maybe it can be included in the future.<br class=""><br class="">                    If you want, I can help you in setting up the<br class="">                    required configuration scripts and such to make<br class="">                    it possible to compile it as plugin.<br class=""><br class="">                    Then anyone can download it and install it for<br class="">                    their dovecot, even if dovecot itself has been<br class="">                    installed from packages, and also makes it<br class="">                    possible for package maintainers to consider<br class="">                    including it in distributions.<br class=""><br class="">                    Aki<br class=""><br class=""></blockquote>
</blockquote>
<br class=""><br class=""></blockquote>
</blockquote>
<br class=""><br class="">Paul Hecker<br class=""><a href="mailto:paul@iwascoding.com" rel="noreferrer" class="">paul@iwascoding.com</a><br class=""><a href="http://www.iwascoding.com/" target="_blank" rel="noopener noreferrer" class="">http://www.iwascoding.com</a><br class=""><br class="">iwascoding GmbH<br class="">Weserstr 18, 10247 Berlin<br class="">HRB 97269 B Amtsgericht Berlin-Charlottenburg<br class="">Geschäftsführer: Paul Hecker, Ilja Iwas<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""></div>
</blockquote>
</div>
</div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><div class=""><br class="Apple-interchange-newline">Paul Hecker<br class=""><a href="mailto:paul@iwascoding.com" class="">paul@iwascoding.com</a><br class=""><a href="http://www.iwascoding.com/" class="">http://www.iwascoding.com</a><br class=""><br class=""></div><div class="">iwascoding GmbH<br class="">Weserstr 18, 10247 Berlin<br class="">HRB 97269 B Amtsgericht Berlin-Charlottenburg<br class="">Geschäftsführer: Paul Hecker, Ilja Iwas</div></div><div class=""><br class=""></div><div class=""><br class=""></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div></div></div></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class="Apple-interchange-newline">
</div>
<br class=""></body></html>