2426 Commits

Author SHA1 Message Date
Noel Grandin
5e1b57b8e6 loplugin:virtualdead in slideshow
Change-Id: Ie158b76e6d552b1189173e30fbea5a43a774180b
Reviewed-on: https://gerrit.libreoffice.org/79640
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-27 19:35:05 +02:00
Noel Grandin
4b995afda3 loplugin:virtualdead in svl
Change-Id: Idbb5d0a633f12d5813561a2ad8aed46ec6d67c48
Reviewed-on: https://gerrit.libreoffice.org/79639
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-27 14:50:11 +02:00
Noel Grandin
c0731052db loplugin:virtualdead in svx
Change-Id: I8af09a2f0a4a8c7952c5855b2934f2d0a64d9740
Reviewed-on: https://gerrit.libreoffice.org/79638
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-27 08:33:58 +02:00
Noel Grandin
5a1163c202 loplugin:virtualdead filter out some more stuff
in the post-processing step

Change-Id: I5c57f9ded6a52d541694c5972656e33bb7771de6
Reviewed-on: https://gerrit.libreoffice.org/79637
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 20:16:45 +02:00
Noel Grandin
250c2ec78b loplugin:virtualdead in vcl
Change-Id: I54cacce6d843f41f220ac5350868bd6d70dbc6b4
Reviewed-on: https://gerrit.libreoffice.org/79585
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 20:13:30 +02:00
Noel Grandin
352bcf4114 loplugin:virtualdead in sw(2)
Change-Id: Ib948148fa21d595faa8a4a86d4f47243755885ee
Reviewed-on: https://gerrit.libreoffice.org/79588
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 16:57:49 +02:00
Noel Grandin
464fe63e33 loplugin:virtualdead in sw
Change-Id: Ib96caad8a2bbfc4ff9a5191abbd49789d142d2eb
Reviewed-on: https://gerrit.libreoffice.org/79587
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 14:05:52 +02:00
Noel Grandin
e7a1d057c4 new loplugin virtualdead
to look for virtual methods where all of the implementations of that
method do nothing useful

Change-Id: I623456ade1c55fe8048d23f69cb692540378daa4
Reviewed-on: https://gerrit.libreoffice.org/79579
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 08:04:37 +02:00
Noel Grandin
b722989678 loplugin:unnecessaryvirtual
Change-Id: I866d7bd03a41260a9b4f4be87a7a02d3ceecc1c7
Reviewed-on: https://gerrit.libreoffice.org/79534
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-26 03:04:12 +02:00
Stephan Bergmann
3a7d479c4c Improve loplugin:sequenceloop diagnostic advice
"make range var const" sounded to me like it talked about the variable declared
in the for-range-declaration, not a variable referenced in the for-range-
initializer

Change-Id: Ie777e1374ead7f37c8efb022cd87e980d2ee9810
Reviewed-on: https://gerrit.libreoffice.org/79563
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-09-25 22:14:02 +02:00
Luboš Luňák
2f5f45921b support O(U)String::number() for fast string concatenation
When I did the fast string concatenation, I didn't add any support
for number(), which simply returned a O(U)String, and so it did
the extra allocation/deallocation, although that could be avoided.
In order to support this, number() now returns a special temporary
return type, similarly to O(U)StringConcat, which allows delaying
the concatenation the same way.
Also similarly, the change of the return type in some cases requires
explicit cast to the actual string type. Usage of OString::getStr()
is so extensive in the codebase that I actually added it to the helper
class, after that it's only relatively few cases.

Change-Id: Iba6e158010e1e458089698c426803052b6f46031
Reviewed-on: https://gerrit.libreoffice.org/78873
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-09-24 12:58:14 +02:00
Luboš Luňák
a7d40f5754 compiler check for rtl::OUStringConcat instances
Something like auto str = "string" + OUString::number( 10 ); will
not be OUString but actually rtl::OUStringConcat (which gets implicitly
converted to OUString, but not with auto). Since those refer to temporaries
from the expression, they should not outlive the expression.

Change-Id: Ib4cde4b38befb3d49927d0cf01c52ebb2d36df89
Reviewed-on: https://gerrit.libreoffice.org/78830
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-09-24 12:53:39 +02:00
Noel Grandin
82572caae4 improve and enable loplugin:fragiledestructor
Where the problem was benign and the class was not extended, I marked
the class as final.
Where the problem was benign and the class was extended, I marked the
relevant callee methods as final.

Other cases were excluded in the plugin.

Change-Id: Idb762fb2206af4e8b534aa35ff77f8368c7909bc
Reviewed-on: https://gerrit.libreoffice.org/79089
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-19 11:42:47 +02:00
Noel Grandin
6e1cb2e9dd disable stringbuffer plugin
as pointed out by mike kaganski:

the 'aCellStr + u"\x0001"' expression gives an OUStringConcat which
holds the references to the strings and doesn't allocate any memory; the
OUStringBuffer has a dedicated overload of append() for the
OUStringConcat, which allocates only once for the combined concat length
and then copies everything from the concat, instead of doing the append
twice for each element... why the strange warning for a more efficient
method?

Change-Id: I6492e99c335e2375cfe78547a87b3079a86890f0
Reviewed-on: https://gerrit.libreoffice.org/79036
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-17 10:13:47 +02:00
Stephan Bergmann
d27e70fce2 Avoid some false loplugin:redundantfcast involving std::function and lambdas
Change-Id: Id9a93fb60f957d75450deb93f1461b1d9dacf8ca
Reviewed-on: https://gerrit.libreoffice.org/78860
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-09-13 09:27:20 +02:00
Noel Grandin
81fd3bb4d7 loplugin:redundantfcast check for std::function cast
noticed by mike kaganski

Change-Id: I210f6d2655edde74d9256c6147b7d15a88180196
Reviewed-on: https://gerrit.libreoffice.org/78743
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-11 15:33:28 +02:00
Luboš Luňák
dc79dc76f1 make clangplugin analyzer use internally a PCH to speed things up
This generally makes the sharedvisitor performance reasonable.
The only costly thing that remains is compiling the large sharedvisitor.cxx,
which with optimizations takes quite some time, but there's ccache for that.

Change-Id: Iffa5fc9df34cdb5edf1cde34fc558fd007ef8263
Reviewed-on: https://gerrit.libreoffice.org/78569
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-09-06 12:07:23 +02:00
Luboš Luňák
ceb26770b3 split clangplugins sharedvisitor generator into two steps
Analysing all the plugin sources using just one process takes a lot of time,
so split out a separate analyzer tool that'll analyse one source and
print out the data to a .plugininfo file. The generator then will read
all of these and generate sharedvisitor.cxx . This allows parallelising
the expensive analysis.

With this commit sharedvisitor.cxx is no longer included in the repository,
as this and the next commit should make the generation fast enough.

Change-Id: Idfc33c4ea6ccfd84f829b51001c8ddeb0be09961
Reviewed-on: https://gerrit.libreoffice.org/78568
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-09-06 12:06:54 +02:00
Andrea Gelmini
22ef2a15bb Fixing "...."
Change-Id: Id005a7531d546dd43de13b49bcb3e93081c5ad8d
Reviewed-on: https://gerrit.libreoffice.org/78679
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-09-06 09:15:58 +02:00
Stephan Bergmann
265552e8ab Use compat::IgnoreImplicit
...for reliable results across Clang versions.  Also, there appears to be no
need to check for CXXTemporaryObjectExpr both before and after IgnoreImplicit.

Change-Id: Ib804591b6d50073c99680d0933e21f32bba29342
Reviewed-on: https://gerrit.libreoffice.org/78640
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-09-05 14:13:33 +02:00
Noel Grandin
9dac199094 loplugin:noexceptmove improve feedback
Change-Id: I16612abd535812bdb9d46aa9886b1e02747aab6f
Reviewed-on: https://gerrit.libreoffice.org/78614
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-05 08:27:43 +02:00
Szabolcs Toth
5bfa8b8d5e tdf#118314 Code clean up on imestatuswindow
Change-Id: I8bc5a73a91f28fcfd22ef716e9cf87d53997b1ad
Reviewed-on: https://gerrit.libreoffice.org/77337
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: László Németh <nemeth@numbertext.org>
2019-09-04 09:12:32 +02:00
Mike Kaganski
a06b83ff92 Parent reference should be const in VCL builder entry points
Change-Id: I2331e19f5e23e0dde8edd22befc7287515adf37e
Reviewed-on: https://gerrit.libreoffice.org/78536
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-03 12:00:40 +02:00
Noel Grandin
9c4ae2ac2b loplugin:unusedfields
Change-Id: I73e94fe2bcf6e206ae8f78380abf2a399aa6dc01
Reviewed-on: https://gerrit.libreoffice.org/78365
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-01 18:35:58 +02:00
Noel Grandin
6fb4528649 loplugin:unusedmethods
Change-Id: Ifaf3860a31fc151bb7052db1b87962b8aba27c37
Reviewed-on: https://gerrit.libreoffice.org/78366
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-01 15:35:41 +02:00
Andrea Gelmini
0940229305 Fix '..'
To complete this:
https://gerrit.libreoffice.org/#/c/78312/

This is a massive replace for lines ending with
".." instead of "..."

It passed "make check" on Linux.

Change-Id: I07fa7b2e30ba9ea17a1f9a5e21c57216ba958efe
Reviewed-on: https://gerrit.libreoffice.org/78356
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2019-09-01 11:15:11 +02:00
Noel Grandin
70093d8153 adapt to runToolOnCodeWithArgs API change in clang 10
which required including config_host in generator, which in turn
required adapting the makefile

Change-Id: Icafa3b59816f52c349fbbd76ce71305856c9ce33
Reviewed-on: https://gerrit.libreoffice.org/78293
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-30 20:44:39 +02:00
Andrea Gelmini
4b4b1689db Fix typos
Change-Id: I965ade27bdbd5d1f0e6cc902c1f01fa905e668f2
Reviewed-on: https://gerrit.libreoffice.org/78305
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2019-08-30 17:19:34 +02:00
Noel Grandin
6e4a2540d4 new loplugin:noexceptmove
idea from mike kaganski

look for places where we can mark move operators as noexcept, which
makes some STL operations more efficient

Change-Id: Id732b89d1fcadd5ceb0ea2b9d159fed06136330f
Reviewed-on: https://gerrit.libreoffice.org/78251
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-30 08:12:07 +02:00
Stephan Bergmann
5f3c2204eb New loplugin:stdfunction
...finding dubious additions to namespace std (concentrating on functions for
now).  C++17 [namespace.std]/1: "The behavior of a C ++ program is undefined if
it adds declarations or definitions to namespace std or to a namespace within
namespace std unless otherwise specified."

This found

ad4c7b97752b4da73808402604d6f96b39d920f5 "Avoid declaring function templates in
 namespace std"
042e30a3dc057aef4a02d95960e4dd4fb8d083ae "Avoid adding a function template
 declaration to namespace std"
cae9240a76cdb0eeed92421930d3b4cbef0ac201 "Avoid adding a function declaration to
 namespace std"

Change-Id: Ic2ba54e2a8bf931d5c58cedf499c0d1229eb2166
Reviewed-on: https://gerrit.libreoffice.org/78220
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-28 12:47:21 +02:00
Noel Grandin
9e0b3423f2 loplugin:referencecasting find more redundant static_cast
Change-Id: I3a51812bbd3fcdc6b11e47cb12962f0d4fa7a2ae
Reviewed-on: https://gerrit.libreoffice.org/78191
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-27 18:42:13 +02:00
Noel Grandin
205c47443e loplugin:unusedmethods
Change-Id: I9d1abe62e7e0ae3434e0b2d440d6ccf0435e97cc
Reviewed-on: https://gerrit.libreoffice.org/78131
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-26 20:48:57 +02:00
Noel Grandin
568eea45de loplugin:unusedenumconstants
Change-Id: I4c75db3931e234d04a8d14f0a9dc9103132b0e72
Reviewed-on: https://gerrit.libreoffice.org/78137
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-26 18:51:01 +02:00
Noel Grandin
e87761688d use shared-plugin infra for some recent plugins
Change-Id: Ia9cba59718de91fed2045ffd7e0ec06d28bf37dc
Reviewed-on: https://gerrit.libreoffice.org/78118
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-26 13:48:13 +02:00
Noel Grandin
2fd083579d loplugin:returnconstval in various
Change-Id: Ib5d293417b1faeb7ef63a8df99fc1ba644989cdc
Reviewed-on: https://gerrit.libreoffice.org/78079
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-26 08:18:10 +02:00
Stephan Bergmann
9a251699d7 Improve loplugin:sequenceloop warning
...from

> sfx2/source/appl/shutdowniconaqua.mm:416:13: error: use std::as_const, or make range var const, to avoid creating a copy of the Sequence [loplugin:sequenceloop]
>             for ( auto const & newMenuProp : aNewMenu )
>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

to

> sfx2/source/appl/shutdowniconaqua.mm:416:46: error: use std::as_const, or make range var const, to avoid creating a copy of the Sequence [loplugin:sequenceloop]
>             for ( auto const & newMenuProp : aNewMenu )
>             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~

Change-Id: I1eabe80abeed1784a246a6e3c9b7036f664ee681
Reviewed-on: https://gerrit.libreoffice.org/77989
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-23 14:40:19 +02:00
Noel Grandin
4ad54c3471 new loplugin:returnconstval
look for code that thwarts copy-elision/move optimisations by
returning const values.

Change-Id: Iafa038d15051e06ee76d8a1c0ce8b7d234cd8488
Reviewed-on: https://gerrit.libreoffice.org/77964
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-23 09:12:16 +02:00
Stephan Bergmann
8b30e6f034 llvm::make_unique is gone from LLVM trunk
(but when targeting older versions of LLVM/Clang, COMPILER_PLUGINS_CXX can still
specify -std=c++11)

Change-Id: I1b91f2817516d015bc12b6a3faf1874ab938a3ae
Reviewed-on: https://gerrit.libreoffice.org/77866
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-21 12:37:36 +02:00
Noel Grandin
10280dabe2 loplugin:constvars, look for loop vars that can be const
Change-Id: I67ee714739800f3718f9d3facf57474cd564d855
Reviewed-on: https://gerrit.libreoffice.org/77415
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-21 11:16:15 +02:00
Noel Grandin
25cce7cd24 Revert "loplugin:unusedmethods"
This reverts commit 7990680e92e4fba376ef4f9346d1bc53661bde30.

screenshot build is failing

Change-Id: Idfe4cac73edaf9be1e704c0bd734e858643defda
Reviewed-on: https://gerrit.libreoffice.org/77654
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-18 12:35:08 +02:00
Noel Grandin
7990680e92 loplugin:unusedmethods
Change-Id: I781a514787c83063dadd549ee043bbb264eee060
Reviewed-on: https://gerrit.libreoffice.org/77619
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-17 20:42:31 +02:00
Noel Grandin
0e0fb5eaae loplugin:unnecessaryvirtual
Change-Id: I9f2e524a4fb467ddc198fce1ff4740d3768ceeac
Reviewed-on: https://gerrit.libreoffice.org/77618
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-17 14:18:13 +02:00
Caolán McNamara
4d450704d6 move WizardMachine to vcl
Change-Id: I55cc4a6c1ad111a22a43fd66a3cd01b5b02fb7cb
Reviewed-on: https://gerrit.libreoffice.org/76902
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-08-16 22:32:42 +02:00
Stephan Bergmann
e380e35348 Adapt loplugin:nullptr to RecursiveASTVisitior::TraverseInitListExpr change
...<https://github.com/llvm/llvm-project/commit/
0a42fe70a566f22599e04a6f1344ca2dc5565e17> "[AST] Treat semantic form of
InitListExpr as implicit code in traversals"

Change-Id: Ifd17009fcc6933abf0e9178dbe47fb9c14b274b7
Reviewed-on: https://gerrit.libreoffice.org/77595
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-16 19:54:25 +02:00
Noel Grandin
7d7a7862a7 new loplugin:sequenceloop
look for places we should be using std::as_const on for-range
loops over uno::Sequence, to avoid triggering a copy

Change-Id: I7efb641bf09d37c87946f03428ee4eec90298c8a
Reviewed-on: https://gerrit.libreoffice.org/77441
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-16 09:04:51 +02:00
Stephan Bergmann
cd6698ca91 LLVM trunk requires C++14 now
...which caused failures like

> [GEN] compilerplugins/clang/sharedvisitor/sharedvisitor.cxx
> In file included from /data/sbergman/lo/core/compilerplugins/clang/badstatics.cxx:14:
> In file included from /data/sbergman/lo/core/compilerplugins/clang/check.hxx:15:
> In file included from /data/sbergman/llvm/inst/include/clang/AST/DeclBase.h:18:
> In file included from /data/sbergman/llvm/inst/include/clang/AST/DeclarationName.h:16:
> In file included from /data/sbergman/llvm/inst/include/clang/AST/Type.h:48:
> /data/sbergman/llvm/inst/include/llvm/Support/TrailingObjects.h:252:24: error: no member named 'is_final' in namespace 'std'
>     static_assert(std::is_final<BaseTy>(), "BaseTy must be final.");
>                   ~~~~~^
[...]

However, unconditionally using -std=c++14 in generator.cxx would cause failures
for builds against older Clang (and with COMPILER_PLUGINS_CXX specifying
-std=c++11) on machines that have an old C++11-only system libstdc++.  Those
machines typically use --gcc-toolchain to use a newer non-system libstdc++ (cf.
e.g. setting CC and CXX in lode's bin/linux_clang_dbgutil_64.env), so one
solution could be to propagate such an option from CXX through to generator.cxx.
But the easier fix appears to be to instead propagate the -std option.

Change-Id: Ib081754ce8ad567305d1520e3a1ff6700fb22755
Reviewed-on: https://gerrit.libreoffice.org/77502
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-15 15:51:16 +02:00
Caolán McNamara
3c498ff3de drop newly unused EnableImageDisplay + EnableTextDisplay
Change-Id: I534c5fcfe2e8b55d0f01075b62e7168a10e805a9
Reviewed-on: https://gerrit.libreoffice.org/76819
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2019-08-01 22:19:41 +02:00
Noel Grandin
9496e3d2ac skip some indirection
these don't need to use std::unique_ptr

Change-Id: I03140c7957fd59443db932c37890a6742c6d3bec
Reviewed-on: https://gerrit.libreoffice.org/76800
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-01 20:07:55 +02:00
Stephan Bergmann
ed115c1bb7 missing include
Change-Id: I9c3d551d2053b53bde3b032036bc531a02217300
Reviewed-on: https://gerrit.libreoffice.org/76782
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-01 14:40:46 +02:00
Noel Grandin
12062cb281 new loplugin:mapindex
Change-Id: I6b5f73b2187009e95d4d666e03e5803f522cee06
Reviewed-on: https://gerrit.libreoffice.org/76584
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-08-01 09:09:34 +02:00