baloghadamsoftware (Balogh, Ádám)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 9 2016, 4:07 AM (127 w, 5 d)

Recent Activity

Sat, Aug 4

baloghadamsoftware added a comment to D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.
Sat, Aug 4, 12:11 AM

Fri, Aug 3

baloghadamsoftware added a comment to D32859: [Analyzer] Iterator Checker - Part 5: Move Assignment of Containers.
In D32859##inline-360206, @NoQ wrote:

I do not immediately understand what is this useful for. At least tests don't look like they make use of these offset manipulations(?)

Without full understanding, i wonder: when we overwrite one container with another, why don't we just overwrite all symbols associated with it, instead of creating a mixture of old and new symbols?

Or maybe this is an accidental part of another patch, that has something to do with resizes?

Fri, Aug 3, 8:44 AM
baloghadamsoftware added inline comments to D32845: [Analyzer] Iterator Checker - Part 4: Mismatched iterator checker for function parameters.
Fri, Aug 3, 8:31 AM
baloghadamsoftware added a dependency for D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager: D50256: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager (for == and != only).
Fri, Aug 3, 8:16 AM
baloghadamsoftware added a dependent revision for D50256: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager (for == and != only): D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.
Fri, Aug 3, 8:16 AM
baloghadamsoftware updated the diff for D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.

Completely rewritten: works correctly for modular arithmetic (multiplication), works correctly for truncation (division), only uses integers, no floats.

Fri, Aug 3, 8:15 AM
baloghadamsoftware created D50256: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager (for == and != only).
Fri, Aug 3, 8:12 AM

Thu, Aug 2

baloghadamsoftware added a comment to D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Yes, it is working now without the hack.

Thu, Aug 2, 1:47 AM
baloghadamsoftware updated the diff for D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Copying iterator position for the this pointer of C++ operators from the caller's context to the callee's context is no longer needed.

Thu, Aug 2, 1:45 AM

Wed, Aug 1

baloghadamsoftware added inline comments to D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.
Wed, Aug 1, 1:45 AM
baloghadamsoftware updated the diff for D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Pre-statement check of CXXOperatorCallExpr merged into pre-call check.

Wed, Aug 1, 1:44 AM

Mon, Jul 30

baloghadamsoftware added inline comments to D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.
Mon, Jul 30, 11:59 PM
baloghadamsoftware committed rL338234: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its….
[Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its…
Mon, Jul 30, 1:52 AM
baloghadamsoftware committed rC338234: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its….
[Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its…
Mon, Jul 30, 1:52 AM
baloghadamsoftware closed D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Mon, Jul 30, 1:52 AM

Thu, Jul 26

baloghadamsoftware added a comment to D49627: [CFG] [analyzer] Constructors of member CXXOperatorCallExpr's argument 0 are not argument constructors..

How much different is a correct this-argument construction context from real argument construction contexts?

Thu, Jul 26, 1:59 AM
baloghadamsoftware added a comment to D49627: [CFG] [analyzer] Constructors of member CXXOperatorCallExpr's argument 0 are not argument constructors..
Thu, Jul 26, 1:55 AM

Mon, Jul 23

baloghadamsoftware committed rC337679: Fix for last commit: adding new test file forgotten..
Fix for last commit: adding new test file forgotten.
Mon, Jul 23, 3:53 AM
baloghadamsoftware committed rL337679: Fix for last commit: adding new test file forgotten..
Fix for last commit: adding new test file forgotten.
Mon, Jul 23, 3:53 AM
baloghadamsoftware committed rC337678: [Analyzer] Quick Fix for exponential execution time when simpilifying complex….
[Analyzer] Quick Fix for exponential execution time when simpilifying complex…
Mon, Jul 23, 3:50 AM
baloghadamsoftware committed rL337678: [Analyzer] Quick Fix for exponential execution time when simpilifying complex….
[Analyzer] Quick Fix for exponential execution time when simpilifying complex…
Mon, Jul 23, 3:50 AM
baloghadamsoftware closed D49536: [Analyzer] Quick Fix for exponential execution time when simpilifying complex additive expressions.
Mon, Jul 23, 3:50 AM

Jul 19 2018

baloghadamsoftware added a comment to D41938: [Analyzer] SValBuilder Comparison Rearrangement (with Restrictions and Analyzer Option).

The flag is off by default. Except the rearrangement of additive operations. Should we put it also behind the flag?

Jul 19 2018, 3:32 AM
baloghadamsoftware updated the summary of D49536: [Analyzer] Quick Fix for exponential execution time when simpilifying complex additive expressions.
Jul 19 2018, 3:31 AM
baloghadamsoftware updated the summary of D49536: [Analyzer] Quick Fix for exponential execution time when simpilifying complex additive expressions.
Jul 19 2018, 3:31 AM
baloghadamsoftware updated the summary of D49536: [Analyzer] Quick Fix for exponential execution time when simpilifying complex additive expressions.
Jul 19 2018, 3:30 AM
baloghadamsoftware created D49536: [Analyzer] Quick Fix for exponential execution time when simpilifying complex additive expressions.
Jul 19 2018, 3:30 AM

Jul 18 2018

baloghadamsoftware added a comment to D41938: [Analyzer] SValBuilder Comparison Rearrangement (with Restrictions and Analyzer Option).
In D41938#1167313, @NoQ wrote:

There are still performance regressions coming in, and this time it doesn't look like it's my fault: https://bugs.llvm.org/show_bug.cgi?id=38208

I suspect that this might be because we aren't enforcing complexity thresholds over all the symbols we're constructing, but that's not certain, we need to get to the bottom of it some day.

I suggest reverting the patch or putting it behind an off-by-default flag until we debug these cases.

Jul 18 2018, 11:57 PM

Jul 16 2018

baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.
In D49074#1160793, @NoQ wrote:

I'd also rather stick to integer arithmetic and avoid using floats even in intermediate calculations. It'd be hard to make sure that no rounding errors kick in if we use floats.

Jul 16 2018, 4:04 AM
baloghadamsoftware committed rC337151: [Analyzer] Mark `SymbolData` parts of iterator position as live in program….
[Analyzer] Mark `SymbolData` parts of iterator position as live in program…
Jul 16 2018, 2:32 AM
baloghadamsoftware committed rL337151: [Analyzer] Mark `SymbolData` parts of iterator position as live in program….
[Analyzer] Mark `SymbolData` parts of iterator position as live in program…
Jul 16 2018, 2:32 AM
baloghadamsoftware closed D48764: [Analyzer] Hotfix for iterator checkers: Mark left-hand side of `SymIntExpr` objects as live in the program state maps..
Jul 16 2018, 2:32 AM

Jul 13 2018

baloghadamsoftware retitled D48831: [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix from alpha.unix.cstring.OutOfBounds checker enable/disable fix to [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix.
Jul 13 2018, 6:51 AM
baloghadamsoftware committed rL337000: [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix.
[Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix
Jul 13 2018, 6:49 AM
baloghadamsoftware committed rC337000: [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix.
[Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix
Jul 13 2018, 6:49 AM
baloghadamsoftware closed D48831: [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix.
Jul 13 2018, 6:49 AM
baloghadamsoftware committed rCTE336997: [clang-tidy] Exception Escape Checker.
[clang-tidy] Exception Escape Checker
Jul 13 2018, 6:14 AM
baloghadamsoftware committed rL336997: [clang-tidy] Exception Escape Checker.
[clang-tidy] Exception Escape Checker
Jul 13 2018, 6:14 AM
baloghadamsoftware closed D33537: [clang-tidy] Exception Escape Checker.
Jul 13 2018, 6:14 AM · Restricted Project

Jul 11 2018

baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.
Jul 11 2018, 2:18 AM
baloghadamsoftware added a comment to D33537: [clang-tidy] Exception Escape Checker.

Any news regarding this?

Jul 11 2018, 12:54 AM · Restricted Project
baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.

The overall point is that writing this kind of code is *extremely* error-prone.

Jul 11 2018, 12:31 AM
baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.

@baloghadamsoftware @dkrupp @xazax.hun Interesting. What do you think about instead using Z3 cross-check functionality recently added, to solve this and all other similar problems instead?

Jul 11 2018, 12:24 AM

Jul 9 2018

baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.

This seems to solve https://bugs.llvm.org/show_bug.cgi?id=32911.

Jul 9 2018, 5:22 AM
baloghadamsoftware added a comment to D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.

All existing tests pass. I could not find the appropriate test file so I created a new one, but this is probably not the correct way.

Jul 9 2018, 5:20 AM
baloghadamsoftware created D49074: [Analyzer] [WIP] Basic support for multiplication and division in the constraint manager.
Jul 9 2018, 5:19 AM

Jul 6 2018

baloghadamsoftware retitled D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up from [Analyzer] Defer deletion of container data until its last iterator is cleaned up to [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Jul 6 2018, 1:45 AM
baloghadamsoftware retitled D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up from [Analyzer] Fix for D47417 to make the tests pass to [Analyzer] Defer deletion of container data until its last iterator is cleaned up.
Jul 6 2018, 1:44 AM

Jul 5 2018

baloghadamsoftware added inline comments to D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.
Jul 5 2018, 11:31 PM
baloghadamsoftware updated the diff for D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Re-upload because of a mistake.

Jul 5 2018, 11:28 PM
baloghadamsoftware accepted D48831: [Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix.

LGTM! But wait for Artem's acceptance before submitting.

Jul 5 2018, 11:21 PM
baloghadamsoftware updated the diff for D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Updated according to the comments.

Jul 5 2018, 11:13 PM

Jul 4 2018

baloghadamsoftware added a dependent revision for D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up: D47417: [analyzer] Add missing state transition in IteratorChecker.
Jul 4 2018, 2:02 AM
baloghadamsoftware added a dependency for D47417: [analyzer] Add missing state transition in IteratorChecker: D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Jul 4 2018, 2:02 AM
baloghadamsoftware removed a dependency for D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up: D47417: [analyzer] Add missing state transition in IteratorChecker.
Jul 4 2018, 2:02 AM
baloghadamsoftware removed a dependent revision for D47417: [analyzer] Add missing state transition in IteratorChecker: D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Jul 4 2018, 2:02 AM
baloghadamsoftware updated the diff for D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.

Adding of transition removed since it is part of D47417.

Jul 4 2018, 1:59 AM

Jul 3 2018

baloghadamsoftware updated the diff for D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.

Instead of marking the container alive, now we defer deletion of the container data until all its iterators are cleaned up.

Jul 3 2018, 6:49 AM

Jul 2 2018

baloghadamsoftware added a comment to D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.

Hmm, then the only solution that comes to my mind is to link iterator positions to container data instead of the container regions. I also have to store a link to the class definition of the container in the container data for the invalidation rules. Container data can then be detached from the container region until the last iterator to the container is clean up. Is it OK?

Jul 2 2018, 5:53 AM
baloghadamsoftware updated the diff for D48764: [Analyzer] Hotfix for iterator checkers: Mark left-hand side of `SymIntExpr` objects as live in the program state maps..

Updated according to the comments and assertions added to fail the tests without the fix.

Jul 2 2018, 5:50 AM

Jun 29 2018

baloghadamsoftware updated the diff for D32859: [Analyzer] Iterator Checker - Part 5: Move Assignment of Containers.

Rebased to rL335835.

Jun 29 2018, 5:34 AM
baloghadamsoftware updated the diff for D32845: [Analyzer] Iterator Checker - Part 4: Mismatched iterator checker for function parameters.

Previous rebase was wrong, this is the correct one.

Jun 29 2018, 5:33 AM
baloghadamsoftware added a comment to D48650: [analyzer] Fix constraint being dropped when analyzing a program without taint tracking enabled.

Actually, one test is crashing because of D32642. The following cast in lib/StaticAnalyzer/Checkers/IteratorChecker.cpp:1168:

return assumeNoOverflow(NewState, cast<SymIntExpr>(CompSym)->getLHS(), 2);

A SymExpr object is reaching that call and the cast fails.

Jun 29 2018, 4:38 AM
baloghadamsoftware added a dependent revision for D48764: [Analyzer] Hotfix for iterator checkers: Mark left-hand side of `SymIntExpr` objects as live in the program state maps.: D48650: [analyzer] Fix constraint being dropped when analyzing a program without taint tracking enabled.
Jun 29 2018, 4:36 AM
baloghadamsoftware added a dependency for D48650: [analyzer] Fix constraint being dropped when analyzing a program without taint tracking enabled: D48764: [Analyzer] Hotfix for iterator checkers: Mark left-hand side of `SymIntExpr` objects as live in the program state maps..
Jun 29 2018, 4:36 AM
baloghadamsoftware created D48764: [Analyzer] Hotfix for iterator checkers: Mark left-hand side of `SymIntExpr` objects as live in the program state maps..
Jun 29 2018, 4:23 AM

Jun 28 2018

baloghadamsoftware updated the diff for D32845: [Analyzer] Iterator Checker - Part 4: Mismatched iterator checker for function parameters.

Rebased to rL335835.

Jun 28 2018, 6:41 AM
baloghadamsoftware updated the diff for D32747: [Analyzer] Iterator Checker - Part 3: Invalidation check, first for (copy) assignments.

Rebased to rL335835.

Jun 28 2018, 6:31 AM
baloghadamsoftware added a comment to D48650: [analyzer] Fix constraint being dropped when analyzing a program without taint tracking enabled.

Do the tests pass now because of rL333670?

Jun 28 2018, 6:29 AM
baloghadamsoftware committed rC335835: [Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead….
[Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead…
Jun 28 2018, 4:04 AM
baloghadamsoftware committed rL335835: [Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead….
[Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead…
Jun 28 2018, 4:04 AM
baloghadamsoftware closed D32642: [Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead-of-begin checks.
Jun 28 2018, 4:04 AM
baloghadamsoftware committed rL335814: [Analyzer] Constraint Manager Negates Difference.
[Analyzer] Constraint Manager Negates Difference
Jun 28 2018, 12:40 AM
baloghadamsoftware committed rC335814: [Analyzer] Constraint Manager Negates Difference.
[Analyzer] Constraint Manager Negates Difference
Jun 28 2018, 12:40 AM
baloghadamsoftware closed D35110: [Analyzer] Constraint Manager Negates Difference.
Jun 28 2018, 12:40 AM

Jun 27 2018

baloghadamsoftware updated the diff for D32642: [Analyzer] Iterator Checker - Part 2: Increment, decrement operators and ahead-of-begin checks.

Updated to work with the latest Constrain Manager patch.

Jun 27 2018, 2:13 AM

Jun 25 2018

baloghadamsoftware updated the diff for D35110: [Analyzer] Constraint Manager Negates Difference.

Comment fixed, assertions inserted, new tests added.

Jun 25 2018, 12:54 PM

Jun 21 2018

baloghadamsoftware added a comment to D48460: [analyzer] Fix invalidation on C++ const methods..

I find it a strange behavior that this-expression is sometimes a pointer, sometimes a record declaration. If references are resolved, why are pointers not?

Jun 21 2018, 11:11 PM
baloghadamsoftware added a dependency for D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up: D47417: [analyzer] Add missing state transition in IteratorChecker.
Jun 21 2018, 6:22 AM
baloghadamsoftware added a dependent revision for D47417: [analyzer] Add missing state transition in IteratorChecker: D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Jun 21 2018, 6:22 AM
baloghadamsoftware created D48427: [Analyzer] Iterator Checker Hotfix: Defer deletion of container data until its last iterator is cleaned up.
Jun 21 2018, 6:22 AM

Jun 19 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.
Jun 19 2018, 12:03 PM
baloghadamsoftware updated the diff for D33537: [clang-tidy] Exception Escape Checker.

Typo fixed.

Jun 19 2018, 2:27 AM · Restricted Project
baloghadamsoftware added inline comments to D33537: [clang-tidy] Exception Escape Checker.
Jun 19 2018, 1:32 AM · Restricted Project

Jun 18 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.

I added extra assertion into the test for the difference. Interestingly, it also works if I assert n-m is in the range instead of m-n. However, I wonder how can I apply such constraint to the difference of iterator positions without decomposing them to symbols and constants.

Jun 18 2018, 8:51 AM
baloghadamsoftware updated the diff for D35110: [Analyzer] Constraint Manager Negates Difference.

-(-2³¹) == -2³¹

Jun 18 2018, 8:46 AM
baloghadamsoftware updated the diff for D33537: [clang-tidy] Exception Escape Checker.

New warning message, more detailed docs.

Jun 18 2018, 1:16 AM · Restricted Project

Jun 14 2018

baloghadamsoftware committed rL334804: [ASTImporter] Corrected diagnostic client handling in tests..
[ASTImporter] Corrected diagnostic client handling in tests.
Jun 14 2018, 11:50 PM
baloghadamsoftware committed rC334804: [ASTImporter] Corrected diagnostic client handling in tests..
[ASTImporter] Corrected diagnostic client handling in tests.
Jun 14 2018, 11:50 PM
baloghadamsoftware closed D47445: [ASTImporter] Corrected diagnostic client handling in tests..
Jun 14 2018, 11:50 PM

Jun 13 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.

Any idea how to proceed?

Jun 13 2018, 9:48 AM

Jun 4 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.
In D35110#1119496, @NoQ wrote:

Which expressions are constrained? Why does the difference use the whole range? Is it something that could have been fixed by the "enforce that separately" part in my old comment:

iterator-related symbols are all planned to be within range [-2²⁹, -2²⁹], right? So if we subtract one such symbol from another, it's going to be in range [-2³⁰, 2³⁰]. Can we currently infer that? Or maybe we should make the iterator checker to enforce that separately?

?

Jun 4 2018, 12:27 AM

Jun 1 2018

baloghadamsoftware added a comment to D47417: [analyzer] Add missing state transition in IteratorChecker.

Did the tests execute? I am not sure. First problem is the the container may become dead before the iterator, so its Begin and End symbols may be inaccessible. This is easy to solve by marking the container of the iterator as live. However, there is a second problem that disables correct tracking of iterators: memory regions are marked as dead, however there are LazyCompoundVals referring to them. Is this maybe a bug in SymbolReaper?

Jun 1 2018, 2:06 AM

May 31 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.

Maybe if we could apply somehow a [-MAX/2..MAX/2] constraint to both sides of the rearranged equality in SimpleSValBuilder.

May 31 2018, 4:17 AM
baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.

Sorry, Artem, but it does not work this way. Even if the symbolic expressions are constrained to [-MAX/4..MAX/4], after rearrangement the difference still uses the whole range, thus m>n becomes m-n>0, where in the false branch the range for m-n is [MIN..0]. Then if we check n>=m the range set is reversed to [MIN..MIN]U[0..MAX] which results UNKNOWN for n-m. It does not solve any of our problems and there is no remedy on the checker's side.

May 31 2018, 2:49 AM

May 30 2018

baloghadamsoftware accepted D47417: [analyzer] Add missing state transition in IteratorChecker.

Oh, it slipped through somehow. Thanks for fixing this!

May 30 2018, 11:52 PM

May 28 2018

baloghadamsoftware updated the diff for D35110: [Analyzer] Constraint Manager Negates Difference.

I still disagree, but I want the review to continue so I did the requested modifications.

May 28 2018, 4:43 AM

May 25 2018

baloghadamsoftware added inline comments to D33537: [clang-tidy] Exception Escape Checker.
May 25 2018, 6:18 AM · Restricted Project

May 23 2018

baloghadamsoftware added a comment to D35110: [Analyzer] Constraint Manager Negates Difference.

Can we continue the discussion here, please? We should involve Devin and/or George as well if we cannot agree ourselves.

May 23 2018, 6:04 AM
baloghadamsoftware added a comment to D47155: [analyzer] Improve simplifySVal performance..

Hello! Thank you for addressing this problem. Are these kinds of symbols common in real code? For me it seems very artificial. However, I agree with George, it would be better to have this value as an analyzer option with a default value (of 20).

May 23 2018, 6:03 AM