Commit Graph

2141 Commits

Author SHA1 Message Date
dependabot[bot] 54fc875e59
Bump mypy from 1.9.0 to 1.10.0 in /spiffworkflow-backend (#1729)
* Bump mypy from 1.9.0 to 1.10.0 in /spiffworkflow-backend

Bumps [mypy](https://github.com/python/mypy) from 1.9.0 to 1.10.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fixed mypy issue w/ burnettk

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-17 13:34:44 -07:00
Kevin Burnett 991759deee
Generate markdown table (#1738)
* script for markdown table

* refactor

* refactor

* allow kwargs

* tests

* refactor tests

* sanitize markdown

* Update spiffworkflow-backend/src/spiffworkflow_backend/scripts/generate_markdown_table.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update spiffworkflow-backend/src/spiffworkflow_backend/scripts/generate_markdown_table.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* lint

* allow turning off sanitization for a column w/ burnettk

---------

Co-authored-by: burnettk <burnettk@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-17 13:33:53 -07:00
jasquat 6a99762f70
better-db-migration-waiting (#1732)
* explicitly wait for db migrations to be completed instead of sleeping w/ burnettk

* code rabbit suggestion w/ burnettk

* get rid of the set x w/ burnettk

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-13 13:34:32 -04:00
jbirddog 613d09c958
Only save all process models when a new bpmn file is added (#1725) 2024-06-12 14:50:08 -04:00
jasquat a63bba7257
use logging since celerly does not pass in a real logger w/ burnettk (#1715)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-12 11:23:28 -07:00
dependabot[bot] b5cbd34068
Bump cryptography from 42.0.5 to 42.0.8 in /spiffworkflow-backend (#1723)
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.5 to 42.0.8.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.5...42.0.8)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 14:44:21 +00:00
jbirddog 5659171fa3
Fix dictionary changed size during iteration error (#1711) 2024-06-12 08:00:50 -04:00
jasquat 7536bc3716
only create the force run event if the instance was actually forced to run w/ burnettk (#1713)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-11 14:40:04 -04:00
dependabot[bot] f3c51cdf88
Bump gunicorn from 21.2.0 to 22.0.0 in /spiffworkflow-backend (#1709)
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 21.2.0 to 22.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 15:08:21 +00:00
Kevin Burnett eae5f7dd2d
the big message improvements branch (#1549)
* imported patch from old message_improvements branch w/ burnettk

* wip.

* merging in changes from message_improvements

* remove patch files that were accidendetally added.

* Added a modal for editing a correlation.  Added ability to delete whole correlation keys.
A little css cleanup.

* * Removing migration - will add back in at the end.
* The Message models API should not require page and per_age parameters, it will return all.
* The Message model list should return a full json description of all messages/correlations for all containing groups.
*

* wip

* Add import, fix class name

* Getting ./bin/pyl to pass

* Getting ./bin/pyl to pass

* Some fe lint fixes

* Some ruff fixes

* Commands to nuke poetry dirs

* Temp skipping of a couple tests

* Getting ./bin/pyl to pass

* This needs to be back in

* Revert back to main

* Factored out data store handling

* Working on factoring out collecting messages, has test failure

* Formatting

* Fixed up test failures

* Remove commentted out lines

* Adding fields

* Fix merge issue

* Re-enable modal

* WIP

* Untested relationships

* Remove correlation key table

* Remove retrieval expression from uniqueness

* Remove commentted out lines

* WIP

* WIP

* WIP

* WIP

* WIP

* Make mypy pass

* Getting formatters to pass

* Add migration

* WIP fixing tests

* WIP fixing tests

* WIP fixing tests

* WIP fixing tests

* WIP fixing tests

* Getting ./bin/pyl to pass

* Fix skipped test

* Fix skipped test

* Getting ./bin/pyl to pass

* Remove unused method

* Remove unused methods

* Clean up unused code

* Refactor to support creating single messages from the UI

* Untested support for processing one process_group

* WIP test

* WIP test

* Filled out test

* Getting ./bin/pyl to pass

* Message Editor Modal Work

* Change migration and add in schemas.

* Swtich to using the associated branch of the process BPMN.io mods

* Get the backend returning messages created from the frontend to the drop down list in the BPMN.io editor.

* Merge main, fix up test

* Getting ./bin/pyl to pass

* Show path in location

* Rename var

* install packages from bpmn-js-spiffworkflow as well for local development

* process group api can add and update message models now w/ burnettk

* backend tests are passing now w/ burnettk

* the launch message edit button is loading the editor w/ burnettk

* updated bpmn-js-spiffworkflow

* pyl is passing w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* fixed console errors w/ burnettk

* a couple tweaks w/ burnettk

* save the message json in the new format from the mform w/ burnettk

* display the correlation props in the form w/ burnettk

* default to empty schema so the format is obvious

* allow removing correlation props from web ui w/ burnettk

* added save notification when saving a message on a process model w/ burnettk

* fixed broken test w/ burnettk

* Updating test cases to new message format, tests are failing

* support schema from messages in frontend

* Fixing tests

* Fixing tests

* Fixing tests

* removed references to correlation keys and removed unused components w/ burnettk

* removed temp mesasge model edit button w/ burnettk

* Make mypy pass

* Fixing tests

* Fixing tests

* Getting ./bin/pyl to pass

* save deleted messages before attempting to add new ones w/ burnettk

* set state for the message id so it can be changed w/ burnettk

* do not wait for the message id to be set since it is not necessary w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* build images for this branch w/ burnettk

* put location in path of message-models so we can control permissions on it w/ burnettk

* fix black

* some coderabbit suggestions

* pull in spiff fix

* Default schema to {}

* Temp fix for invalid schema

* updated bpmn-js-spiffworkflow

* some updates for issue 1626

* minor name tweaks and attempts to update message dropdown in panel when message changes - does not work yet w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* attempt to call add_message.returned event when message updates w/ burnettk

* treat formData as a state in the MesasgeEditor so it can be updated when the form contents is modified w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* Feature/merge correlation properties (#1693)

* Merge XML Correlation properties with Process group properties

* updates for messages w/ burnettk

---------

Co-authored-by: theaubmov <ayoubaitlachgar98@gmail.com>
Co-authored-by: jasquat <jasquat@users.noreply.github.com>

* do not wait for message id state to be set to better support new messages w/ burnettk

* updated SpiffWorkflow w/ burnettk

* some cleanup from coderabbit and linting

* added index to message tables, run typecheck in ci, and other updates while code reviewing w/ burnettk

* updated bpmn-js-spiffworkflow w/ burnettk

* remove branch to build

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
Co-authored-by: danfunk <daniel.h.funk@gmail.com>
Co-authored-by: Jon Herron <jon.herron@yahoo.com>
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
Co-authored-by: jasquat <2487833+jasquat@users.noreply.github.com>
Co-authored-by: theaubmov <ayoubaitlachgar98@gmail.com>
2024-06-10 09:15:54 -07:00
dependabot[bot] a63e8a34a1
Bump sentry-sdk from 1.45.0 to 2.5.1 in /spiffworkflow-backend (#1703)
Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.45.0 to 2.5.1.
- [Release notes](https://github.com/getsentry/sentry-python/releases)
- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-python/compare/1.45.0...2.5.1)

---
updated-dependencies:
- dependency-name: sentry-sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-10 15:22:38 +00:00
jbirddog 9b8ceb4af8
Prevent KeyError for optional data store writes (#1700) 2024-06-10 11:17:41 -04:00
pixeebot[bot] 62124525d7
Secure Source of Randomness (#1695)
* Secure Source of Randomness

* lint

---------

Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com>
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
2024-06-08 18:31:11 -07:00
jasquat 586a088e21
update-spiffworkflow (#1694)
* updated SpiffWorkflow w/ burnettk

* added version 5 migration w/ burnettk

* pyl w/ burnettk

* added test for the version 5 migration w/ burnettk

* fixed the version 5 migration w/ burnettk

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-07 13:23:19 -07:00
dependabot[bot] 270e120f5c
Bump safety from 3.2.0 to 3.2.1 in /spiffworkflow-backend (#1689)
Bumps [safety](https://github.com/pyupio/safety) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/pyupio/safety/releases)
- [Changelog](https://github.com/pyupio/safety/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pyupio/safety/compare/3.2.0...3.2.1)

---
updated-dependencies:
- dependency-name: safety
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-07 14:28:09 +00:00
dependabot[bot] 08bc1e90bc
Bump pytest from 7.4.4 to 8.2.2 in /spiffworkflow-backend (#1687)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.4 to 8.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.4...8.2.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 15:07:43 +00:00
jasquat 10b30f6c14
remove the greater than symbol from the md sanitization method since it causes issues and does not seem to help w/ burnettk (#1685)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-06 10:40:50 -04:00
jasquat 4611628554
escape more characters when sanitizing for markdown (#1681)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-05 11:02:23 -04:00
dependabot[bot] 916e17f401
Bump typeguard from 4.2.1 to 4.3.0 in /spiffworkflow-backend (#1679)
Bumps [typeguard](https://github.com/agronholm/typeguard) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/agronholm/typeguard/releases)
- [Changelog](https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst)
- [Commits](https://github.com/agronholm/typeguard/compare/4.2.1...4.3.0)

---
updated-dependencies:
- dependency-name: typeguard
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-05 14:42:43 +00:00
jasquat cee36c2d2d
remove-email-service (#1670)
* this library does not seem used so remove it and its dependency from the app

* use the flask version of sentry-sdk so it can install its dependencies

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-04 11:51:39 -04:00
jasquat 59d19bb457
Rjsf typing is slow (#1663)
* updated rjsf packages w/ burnettk

* use performance improvement branch of validate js v8 w/ burnettk

* Update spiffworkflow-backend/bin/task_data_to_python_variables.py

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
Co-authored-by: Kevin Burnett <18027+burnettk@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-06-03 16:19:15 -07:00
dependabot[bot] 1ced0cc23f
Bump ruff from 0.4.6 to 0.4.7 in /spiffworkflow-backend (#1659)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.4.6 to 0.4.7.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.4.6...v0.4.7)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-03 11:19:53 -07:00
burnettk 1f6ca8b727
allow local test tokens to last 24 hours 2024-06-03 13:04:28 -04:00
jasquat ae6f3119bb
updated libs for safety issues w/ burnettk (#1662)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-06-03 11:18:02 -04:00
dependabot[bot] 5e6ab9adb7
Bump coverage from 7.4.1 to 7.5.3 in /spiffworkflow-backend (#1637)
Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.4.1 to 7.5.3.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.1...7.5.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin Burnett <18027+burnettk@users.noreply.github.com>
2024-05-31 21:10:12 -07:00
jasquat 59c1086d55
Pi fix pm gone (#1648)
* some better error logging when the background processor fails w/ burnettk

* handle process model not found issues better and do not raise in handle exception if it is missing w/ burnettk

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-31 10:12:43 -04:00
burnettk d64f3953e8
fix doc for task list completed, which does not actually filter by calling user 2024-05-30 17:30:48 -04:00
burnettk c5359acaae
remove 172 lines of unused junk from api.yml 2024-05-30 17:03:30 -04:00
jasquat 2992798c5b
reference-cache-integrity-fix-2 (#1645)
* delete from process caller table explicitly before removing from reference cache to hopefully avoid integrity errors

* check if reference cache id list has items to avoid unnecessary db calls

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
Co-authored-by: Kevin Burnett <18027+burnettk@users.noreply.github.com>
2024-05-30 14:15:40 -04:00
jasquat e9022fd2b1
do not restrict blank task list to not started pi but anytime the bpmn process is blank (#1644)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-30 10:18:40 -04:00
jasquat 928273c034
blank-task-list-on-new-pi (#1634)
* return a blank task list if the new instance has not started yet and does not have an associated bpmn process

* fixed minor typo

* use ruff instead of black for formatting w/ burnettk

* upgrade ruff and remove references to black w/ burnettk

* remove unnecessary packages for pre-commit w/ burnettk

* we do not use reorder lib w/ burnettk

* ruff is needed w/ burnettk

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-29 16:25:47 -04:00
jasquat 5db0feb32e
add publish permissions to process model for breadcrumb, not overwrite (#1633)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-29 12:01:28 -07:00
jasquat a6a0d35b08
Reference cache integrity fix (#1627)
* added test to make sure process caller relationship table is properly updated and refactored clear reference cache to hopefully fix oddities when attempting to run it w/ burnettk

* fixed pyl w/ burnettk

---------

Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-28 14:13:10 -07:00
burnettk 7a76ecba50
fix typing issues and fix issue i introduced 2024-05-28 17:01:09 -04:00
burnettk 59c697e9bf
lint 2024-05-28 16:51:53 -04:00
Kevin Burnett 2fed502147
Merge branch 'main' into feature/docker-secrets 2024-05-28 20:47:12 +00:00
dependabot[bot] 3585fff1a0
Bump ruff from 0.4.4 to 0.4.5 in /spiffworkflow-backend (#1623)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.4.4 to 0.4.5.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.4.4...v0.4.5)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 14:47:30 +00:00
dependabot[bot] 37cc952e0d
Bump pygments from 2.17.2 to 2.18.0 in /spiffworkflow-backend (#1618)
Bumps [pygments](https://github.com/pygments/pygments) from 2.17.2 to 2.18.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.17.2...2.18.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-27 15:02:30 +00:00
Chris Daßler 92229f12f8 chore: Remove unused import 2024-05-27 14:51:57 +02:00
Chris Daßler 6e83494384 fix(): Ensure secure handling of file paths and improve error handling (CodeRabbit suggestion) 2024-05-26 20:50:45 +02:00
Sky 40f3dfca23
Update spiffworkflow-backend/src/spiffworkflow_backend/config/default.py
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-05-26 20:27:47 +02:00
Chris Daßler 84a47e0efd fix(): AttributeError: 'NoneType' object has no attribute 'startswith' 2024-05-26 20:19:59 +02:00
Chris Daßler 998e08ee6e fix(): Check if secrets file exists 2024-05-26 16:33:37 +02:00
Chris Daßler 3238fb6d6e feat: Using docker secrets - put file contents to env value 2024-05-26 16:19:30 +02:00
Kevin Burnett 0329c11182
more flexible local dev args (#1613)
Co-authored-by: burnettk <burnettk@users.noreply.github.com>
2024-05-24 23:06:16 +00:00
dependabot[bot] 3d526cab3a
Bump flask-migrate from 4.0.5 to 4.0.7 in /spiffworkflow-backend (#1610)
Bumps [flask-migrate](https://github.com/miguelgrinberg/flask-migrate) from 4.0.5 to 4.0.7.
- [Release notes](https://github.com/miguelgrinberg/flask-migrate/releases)
- [Changelog](https://github.com/miguelgrinberg/Flask-Migrate/blob/main/CHANGES.md)
- [Commits](https://github.com/miguelgrinberg/flask-migrate/compare/v4.0.5...v4.0.7)

---
updated-dependencies:
- dependency-name: flask-migrate
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-24 15:06:34 +00:00
jasquat 7281da6ce6
downgrade gunicorn to avoid SCRIPT_NAME header issue w/ burnettk 2024-05-23 16:12:17 -04:00
dependabot[bot] e2fe17cbbc
Bump gunicorn from 21.2.0 to 22.0.0 in /spiffworkflow-backend (#1597)
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 21.2.0 to 22.0.0.
- [Release notes](https://github.com/benoitc/gunicorn/releases)
- [Commits](https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0)

---
updated-dependencies:
- dependency-name: gunicorn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-23 14:46:27 +00:00
jasquat c11577e990
allow guest users to use typeahead w/ burnettk (#1594)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-22 13:36:25 -07:00
jbirddog 5bf3ea0db2
Detect duplicate process ids when uploading/creating a new file (#1581)
Co-authored-by: jasquat <jasquat@users.noreply.github.com>
2024-05-22 12:18:44 -04:00