Commit Graph

88532 Commits

Author SHA1 Message Date
Jarek Kobus
0b2f7dd6fe Axivion: Get rid of AxivionServer::token setting
Remove it also from aspect container.

Change-Id: I0af093bbd5654083dac581e5793ec57e1c7a7b3d
Reviewed-by: Andreas Loth <andreas.loth@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2024-02-20 08:02:31 +00:00
Jarek Kobus
ae20f94949 Axivion: Reuse AxivionPluginPrivate::m_apiToken field in fetchHtmlRecipe
Change-Id: I6bb37678000ba755d65b0275c4350815a9047880
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
2024-02-20 08:00:05 +00:00
Jarek Kobus
bc63b678bd Axivion: Implement trial connection with no authentication
Introduce ServerAccess enum indicating the authentication method.

Change-Id: Ic67bbf94504ec317cb6bf819cbc9dba34a01419c
Reviewed-by: hjk <hjk@qt.io>
2024-02-20 07:59:51 +00:00
Michael Weghorn
84f4fb0818 Debugger: Fix building custom allocator dumper tests for MSVC
3b5c377ce5 had fixed them
for GCC >= 13, but unfortunately made them no longer
compile on Windows with MSVC as reported in the Gerrit
change, error below.

Align the implementation of the custom allocator
more with the "23_containers/vector/52591.cc" [1] ones
referred to in the GCC commit [2], in particular
define ctors, so this compiles with both GCC on Linux
and MSVC on Windows.

Move the definition of that custom allocator
to a new macro "MY_ALLOCATOR" to avoid duplication.

Previous error with MSVC:

    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): error C2440: 'static_cast': cannot convert from 'myallocator<char>' to 'myallocator<_Tp1>'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: 'myallocator<_Tp1>::myallocator': no overloaded function could convert all the argument types
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Users\davschul\Downloads\Archive\main.cpp(8): note: could be 'myallocator<_Tp1>::myallocator(myallocator<_Tp1> &&)'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: 'myallocator<_Tp1>::myallocator(myallocator<_Tp1> &&)': cannot convert argument 1 from 'myallocator<char>' to 'myallocator<_Tp1> &&'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: Reason: cannot convert from 'myallocator<char>' to 'myallocator<_Tp1>'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    C:\Users\davschul\Downloads\Archive\main.cpp(8): note: or       'myallocator<_Tp1>::myallocator(const myallocator<_Tp1> &)'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: 'myallocator<_Tp1>::myallocator(const myallocator<_Tp1> &)': cannot convert argument 1 from 'myallocator<char>' to 'const myallocator<_Tp1> &'
            with
            [
                _Tp1=std::_Container_proxy
            ]
    C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.38.33130\include\xstring(3141): note: Reason: cannot convert from 'myallocator<char>' to 'const myallocator<_Tp1>'
            with
            [
                _Tp1=std::_Container_proxy
            ]

[1] https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/testsuite/23_containers/vector/52591.cc;h=ea80bb277c1f49190ae21b64e738428066eba1e0;hb=64c986b49558a7
[2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=64c986b49558a7

Change-Id: I13a3ed226a411479ea1d24a2eda490c8f293bf8f
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-19 23:03:58 +00:00
Robert Löhning
b508d2e959 SquishTests: Remove one iteration loop
Qt Quick Application projects only allow CMake.

Change-Id: I27ee545a572eadcf98e1ec8188a0d77a9872aa14
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Jukka Nokso <jukka.nokso@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 22:54:50 +00:00
Tim Jenssen
695548cc81 fix CrashPad restart dialog call
Change-Id: I8764e78158d8ffa255ef26324a2f7359707865d1
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2024-02-19 19:32:11 +00:00
Jarek Kobus
f790e337ba Axivion: Isolate authorization recipe
It's going to be used in other recipes.

Change-Id: I314f97cc596ce158b7d20e3bb963ca4e35bcb818
Reviewed-by: hjk <hjk@qt.io>
2024-02-19 18:45:23 +00:00
Jarek Kobus
35c49afae2 Axivion: Implement ApiToken querying and storing
The ApiToken is stored locally safely by using QKeychain lib.
If the local store doesn't contain the ApiToken,
we show the password input dialog to the user.
If the user pressed OK, we send a network query to axivion
server to retrieve the ApiToken for the username + password.

Change-Id: I0dc19aea67750cd674ae4db9a9f469e4621c713b
Reviewed-by: hjk <hjk@qt.io>
2024-02-19 18:45:11 +00:00
Jarek Kobus
5b48d23a0a Axivion: Fix CredentialOperation::Get
Don't report an error on non-existing key read.
Finish with success and provide empty optional data in this case.

Change-Id: I7c4ea50c0f05e13ce793384ec57d50dfff600c9a
Reviewed-by: hjk <hjk@qt.io>
2024-02-19 18:44:32 +00:00
hjk
d56ce22bae FakeVim: Remove some dead code
Found by the Axivion plugin.

Change-Id: I9ebc2ad47c4eb7d19534db932d4a0d087429a35d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2024-02-19 17:10:35 +00:00
Jarek Kobus
5e2854e685 SemanticHighlighter: Don't delete the watcher from its signal handler
Use std::unique_ptr instead, as QScopedPointer doesn't offer release().

Change-Id: I8e885e477d1aeb8ce9462e8fd249a5196424df18
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2024-02-19 16:23:47 +00:00
Tim Jenssen
fe08adbf65 qds: increase to version 4.5
Change-Id: I119eef191fda8a358457a35b2f45b1dd7565b78b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2024-02-19 16:07:28 +00:00
Leena Miettinen
76539a659e Doc: Update the IDE Overview
Use sections instead of a table and move or copy text from
other topics. This is to create a place for information that
becomes homeless when I remove other topics.

Task-number: QTCREATORBUG-29361
Change-Id: Ib3fcc2c345080e05f9f7ad4ed78e049c899e0855
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-02-19 15:28:14 +00:00
Eike Ziller
8a6d94235b Fix that window actions did not bring up minimized windows
Selecting a window from the Window menu didn't bring up minimized
windows from their minimized state, and resulted in two items being
checked in the window list (because the active window did not change, so
the checkmarks where not updated).

Change-Id: Ie89b87fa1273378bb99f69026a58ee92ea0b8f50
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-19 13:52:49 +00:00
Eike Ziller
814e84a5e7 Fix the window list when windows are closed
After a window is closed we don't only have to update the texts of the
action, but also update their visibility state and the checked item.

Fixes: QTCREATORBUG-30381
Change-Id: Id0c343b8a5930ec2e3de03f71bdc8f2628b492b3
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-19 13:50:46 +00:00
Eike Ziller
70f7e275e2 EditorManager: Avoid warnings about already registered actions
When opening new editor windows, we want the _window_ to have the
EditorManager context as well as the individual window context, but the
window _actions_ (close, etc) may only be registered for the individual
window context.

Add the corresponding option to ICore::registerWindow et al.

Change-Id: I67d0a6b386603e0047a77dfb357c207e7ffe99e6
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-19 13:50:38 +00:00
Eike Ziller
8826a8b47b Merge remote-tracking branch 'origin/13.0'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs

Change-Id: I2a3d92a14e4dd16897d19f7d8a8c7b0ec30d14a5
2024-02-19 14:44:54 +01:00
Christian Kandeler
737bf48a0c Utils: Add convenience class for parsing and caching process output
... and base the existing uses of this pattern on it.

Change-Id: I0eaf7535b68ff8c3e8e1c923ce08e63896cc83f7
Reviewed-by: hjk <hjk@qt.io>
2024-02-19 13:26:08 +00:00
hjk
04d7f63186 Debugger: Fix Attach to QML Port
This does not yet fix the reported problem but at least attaches and
gives a working QML inspector in a QML-only debugging session.

Task-number: QTCREATORBUG-30263
Change-Id: Ieac517c2b7c5dde24792f3bbcffe0058073ddbd1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 13:21:08 +00:00
Leena Miettinen
5a05044c0c Doc: Turn Customizing the Build Process into a how-to topic
- Update the screenshot of Preferences > Build & Run > General
  (there is a new option that will be described in another
  change)

Task-number: QTCREATORBUG-29361
Task-number: QTCREATORBUG-30209
Change-Id: I62eaeef96b2d40dfec42022a4430da15c1590050
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2024-02-19 12:33:32 +00:00
Leena Miettinen
c28a388b1f Doc: Turn "Running on Multiple Platforms" into how-to topics
- Update screenshots of kit selector and Devices preferences,
  which now show the device status
- Turn running on QML and Linux into their own topics
- Remove conditions because the projects folder is excluded from
  QDS Manual

Task-number: QTCREATORBUG-30209
Task-number: QTCREATORBUG-29361
Change-Id: I869f6b577016c6712c6b37170dbee2249ded1f8e
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2024-02-19 12:33:24 +00:00
Christian Kandeler
eea7fae890 RemoteLinux: Announce initial connection attempt
So if the device turns out to be unresponsive, users will not be
confused about the temporary freeze.

Task-number: QTCREATORBUG-30319
Change-Id: If65d6ea2777232239c8fb324b06352d92ad451c6
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
2024-02-19 12:07:04 +00:00
Christian Kandeler
4b042f1aeb Update qbs submodule to HEAD of 2.3 branch
Change-Id: Id0bdf4a85008f11de34953832cd02d2e0b46b3bd
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 12:06:30 +00:00
Eike Ziller
8a532af3af Markdown: Fix the Show Editor/Preview buttons
Calling QToolButton::setCheckable on a button with a defaultAction
doesn't work as expected. It needs to be called on the action itself.

Amends acedf93ba3

Fixes: QTCREATORBUG-30382
Change-Id: Icbddb1d331fe6547622bf0428d890012fef0d9c5
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-19 11:48:28 +00:00
Robert Löhning
cfb26a06a7 SquishTests: Improve toggling filter names in "Issues" view
- Explicitly set a shorter timeout. After the menu appears, it
  should not take that long until the item is there, too.

- Warn when an item can't be found. This should not go unnoticed,
  because it either means that the GUI changed or that there's a
  bug in the test. Both require a fix.

Change-Id: Id7faa2b91926c392bd0d894214f498d8ba8edaa1
Reviewed-by: Jukka Nokso <jukka.nokso@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 11:25:48 +00:00
Robert Löhning
c4abbef0a8 SquishTests: Stabilize adding documentation
I noticed that Creator built on Qt 6.6.0 never needed longer than
two seconds to update the documentation after adding qtcreator.qch.
The same sources of Creator built on Qt 6.6.2 needed up to four
seconds. This subtle difference can lead to the situation that the
documentation was not yet updated when clicking "Getting Started"
in tst_WELP01, which then just displays an empty page.

Change-Id: I11ab2a902825190ed8ae27dad55a847f01ba44dc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 11:20:26 +00:00
David Schulz
95bad0c91d Debugger: add more debug output to the python cdbext module
Change-Id: I48b4fb6a65eb486b190238ff161ea358bf4d3bf5
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 10:06:03 +00:00
David Schulz
0a2b6a910a Debugger: make last locals command debuggable in the cdbengine
Change-Id: I4d06cecbd23bdb2f16697b3713be5bca0a695fdb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-19 10:05:58 +00:00
Cristian Adam
d13a7dc9b5 CMakePM: Update cmake conan for auto-setup
Update to https://github.com/conan-io/cmake-conan/commit/
f6464d1e13ef7a47c569f5061f9607ea63339d39

Task-number: QTCREATORBUG-30169
Change-Id: Ibb8f3d353117c5c8ce21b8686cb6e2e5ee146698
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
2024-02-19 08:30:47 +00:00
Miikka Heikkinen
c9d9b4072f QmlDesigner: Disable eyeball in navigator for effect nodes
Fixes: QDS-11918
Change-Id: Id47b396d7a54af64d21d8898fbfd5c82626ccb03
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
2024-02-16 15:11:39 +00:00
Miikka Heikkinen
9d6d521643 QmlDesigner: Fix crash when reparenting items into effected item
Some effect related objects such as QQuickShaderEffectSource can be
silently removed alongside another object, so use QPointer to ensure
all objects are still valid before readding them.

Fixes: QDS-11973
Change-Id: I75ee2dc81e27774f8be87b031e149b135ec84023
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
2024-02-16 14:30:44 +00:00
Christian Kandeler
1bd3c7d9e5 Wizards: Stop chasing The Current Thing in string construction
Guard against random deprecations by using a robust solution that works
across all Qt versions.

Fixes: QTCREATORBUG-30325
Change-Id: I00428d2454fcd6abffd3a25631946ea5d27cc4ae
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-02-16 13:45:41 +00:00
Mahmoud Badri
d83a464615 EffectComposer: Fix scroll to end when adding a node
Change-Id: Id13a825cedfe98500337d1914bda064c2f5e3bb3
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
2024-02-16 13:03:33 +00:00
Eike Ziller
718b4b60b0 Add missing license file
Amends 2ceb1e2ad7

Change-Id: I3e6c1d1e1878a4502b6871cc5ea45b54f52327f8
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
2024-02-16 10:55:00 +00:00
hjk
7c5a0e6bb2 Rename RunControl::aspect to RunControl::aspectData
It's the "persisted" form of the content of the original aspect's data,
calling it 'aspect' already confused me a few times.

Change-Id: I88a6f76f0ca39d3d36dde9b84287032ceecf7033
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2024-02-16 10:21:15 +00:00
Miikka Heikkinen
788d4c0040 EffectComposer: Improve reordering nodes via drag
The dragged effect is collapsed when dragging start, which helps with
large nodes. Autoscrolling content was added when dragging nodes to
the top/bottom of the scrollview.

Fixes: QDS-10857
Change-Id: I5027324918a200746356704e36a6d99cb98aa04e
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
2024-02-16 10:14:19 +00:00
Christian Kandeler
64393a714d QbsProjectManager: Fix potential freeze when importing projects
We forgot to quit the event loop in the case of an incompatible build
graph, causing each such operation to take ten seconds instead of
fractions of a second. In directories with lots of qbs builds, this
could result in Qt Creator freezing for several minutes.

Change-Id: I9f3de2e23fd67a87e9f487eb2a1b6e45fbde6f31
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-16 09:31:51 +00:00
Christian Kandeler
2abe04ff34 CppEditor: Do not duplicate minimum clangd version
Amends 5516188290.

Change-Id: I1de7249c06c0e262d0c36f980cc687f0e792f755
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2024-02-16 09:31:27 +00:00
Jarek Kobus
8f23a64ac3 DocumentClangToolRunner: Fix isEmpty() condition
Since we were adding the parallel item unconditionally to the
tasks list, the if(tasks.isEmpty()) condition was always false.
The intention was to check whether any call to addClangTool()
added at least one task.

The fix is to add parallel item after the condition is checked.

Change-Id: Iafdf21f1ac0f8fdd547a462990313e09a2dc46fd
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-16 09:10:19 +00:00
Eike Ziller
198251db9b Bump version to 13.0.0-beta2
Change-Id: Ia03b43a4e3906350d79a2ba4dbfd800c5f80f77d
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2024-02-16 08:17:44 +00:00
hjk
7201fa0e4d Debugger: Create more uniform summary for debugger selection
Change-Id: I82ddcae84e4ff8d4776aa5fa988bb49b943b8d6f
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2024-02-16 08:01:24 +00:00
hjk
7b198ea3ce Debugger: Select C++ debugger if there is nothing else selected
We want one-or-more debuggers enabled. This was accidentally not
done if the python debugger was the last one to unselect.

Change-Id: I1bcdb43a66dc110dc213eba0db079e6d02c00170
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2024-02-16 08:01:16 +00:00
hjk
8ab6b94c48 Debugger: Move string length annotation to type column
... and make it clear what it is.

Fixes: QTCREATORBUG-30065
Change-Id: Iccbe0f069569ef2682363eb889f34081e2c2b4d7
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-16 07:32:39 +00:00
Jarek Kobus
d0ae84539e Axivion: Don't leak model on shutdown
Detected by memory analyzer.

Change-Id: I715c604f5769b958ad53da6444fd3763f3bdcc30
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-16 07:30:11 +00:00
David Schulz
2ceb1e2ad7 TextEditor: update ksyntaxhighlighting engine to v5.249.0
Task-number: QTCREATORBUG-22558
Change-Id: I0f75fd00828992df37f596148fac98069794248e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2024-02-16 06:28:19 +00:00
Jarek Kobus
f1f4422dce PythonSettings: Reuse Tasking::nullItem
Change-Id: I50675730fa7a7e228b151213610996456a8eacf4
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-16 06:21:59 +00:00
Jarek Kobus
36241b4462 TaskTree: Add global nullItem
This might be useful when using conditional operator.
Might also be used in place of the default c'tor for GroupItem.

Add a test for it.

Change-Id: I622e5d3d94f7020dc294cf5bca643c53a0813d8a
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2024-02-16 06:21:53 +00:00
Jarek Kobus
d95fa019d4 PythonSettings: Don't leak running watchers
Detected by memory analyzer.
When shutdown comes while pythonsFromRegistry() or
pythonsFromPath() is still running, the corresponding
QFutureWatcher is leaked.

Employ TaskTreeRunner instead. It handles the cancellation
of the running tasks automatically on its destruction.

Make pythonsFromRegistry() and pythonsFromPath() cancelable,
by providing QPromise as a parameter and check for canceled
state on every iteration.

Change-Id: Iae7c7d1ed764646b8203bd7ca8b9580cb999b80c
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-02-16 06:21:44 +00:00
hjk
e3b62d0aa5 Debugger: Make DebuggerRunConfig sub-aspects direct members
Change-Id: I53979892598164b26c8fc1977b1366b0a56fa152
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2024-02-15 16:56:32 +00:00
Jarek Kobus
01f106b279 DebuggerRunConfigurationAspect: Don't leak m_pythonAspect
Change-Id: Icef93f08d0d24306c5f187c25cc4ca8d809a4c9f
Reviewed-by: hjk <hjk@qt.io>
2024-02-15 15:59:55 +00:00