Narr the Reg
5676c2e17f
input_common: Use calibration from joycon
2023-01-19 18:05:21 -06:00
Narr the Reg
594b2ade6d
input_common: Add support for joycon generic functions
2023-01-19 18:05:21 -06:00
Narr the Reg
6aa6301acd
input_common: Add joycon low level functions
2023-01-19 18:05:21 -06:00
Narr the Reg
ed5fa10e97
core: hid: Enable pulling color data from controllers
2023-01-19 18:05:20 -06:00
Narr the Reg
2d802893e7
input_common: Disable SDL driver with switch controllers
2023-01-19 18:05:20 -06:00
Narr the Reg
d80e6c399b
input_common: Initial skeleton for custom joycon driver
2023-01-19 18:05:20 -06:00
german77
db6cb9cc0a
input_common: reset sdl motion if data is invalid
2023-01-18 10:05:55 -06:00
bunnei
0e8f98a441
Merge pull request #9605 from german77/mouse_mapping
...
yuzu: Read mouse scroll
2023-01-10 17:32:58 -08:00
Narr the Reg
87b02f78e1
yuzu: Read mouse wheel input
2023-01-10 18:20:58 -06:00
liamwhite
9f974ea818
Merge pull request #9565 from MonsterDruide1/tas-multiplayer-lengths
...
TAS: Show all script lengths for multiplayer
2023-01-10 15:26:36 -05:00
MonsterDruide1
115bf20448
TAS: Show all script lengths for multiplayer
2023-01-07 21:15:37 +01:00
Narr the Reg
8042ce7e19
input_common: Create an update engine
2023-01-05 19:24:29 -06:00
Liam
be43b62d79
cmake: make libusb optional
2022-12-28 17:26:46 -05:00
liamwhite
42d81aab32
Merge pull request #9471 from german77/input
...
input_common: Cleanup project
2022-12-19 11:09:00 -05:00
german77
cf01a507fb
input_common: Cleanup project
2022-12-18 15:33:11 -06:00
german77
f999d268f9
bootmanager: Use proper camera size
2022-12-18 00:13:18 -06:00
bunnei
48108a8c9b
Merge pull request #9456 from german77/virtual_gamepad
...
input_common: Add virtual gamepad
2022-12-17 17:16:13 -08:00
german77
243404bf34
input_common: Add virtual gamepad
2022-12-16 18:26:11 -06:00
ameerj
7bf4bec257
camera: Use pre-allocated vector for camera data
...
And avoid an unnecessary copy
2022-12-16 18:00:47 -05:00
Narr the Reg
3e1e6c66c0
input_common: Filter SDL GUID
2022-12-12 10:37:55 -06:00
liamwhite
a225ba4cda
Merge pull request #9391 from abouvier/cmake-sdl
...
cmake: use sdl2 imported target
2022-12-06 09:58:48 -05:00
Alexandre Bouvier
f385175aa2
cmake: prefer system libusb
2022-12-06 05:30:40 +01:00
liamwhite
04779b3d2a
Merge pull request #9369 from german77/mifare
...
service: nfc: Implement mifare service
2022-12-05 22:17:32 -05:00
Alexandre Bouvier
e6ae720c33
cmake: use sdl2 imported target
2022-12-06 01:26:30 +01:00
Narr the Reg
752236caad
input_common: Allow mifare files
2022-12-04 20:02:48 -06:00
liamwhite
75e16547f8
Merge pull request #9300 from ameerj/pch
...
CMake: Use precompiled headers to improve compile times
2022-12-03 14:10:06 -05:00
liamwhite
22aff09b33
Merge pull request #9289 from liamwhite/fruit-company
...
general: fix compile for Apple Clang
2022-12-03 12:09:21 -05:00
ameerj
5b5612c1cc
CMake: Consolidate common PCH headers
2022-11-30 18:30:30 -05:00
Morph
49219b8a86
Merge pull request #9349 from lat9nq/cmake-322
...
CMakeLists: Bump minimum required CMake version to 3.22
2022-11-29 19:41:47 -05:00
ameerj
37bc5118ea
CMake: Use precompiled headers
2022-11-29 18:50:49 -05:00
liamwhite
cafca891ea
Merge pull request #9322 from german77/pump_events
...
input_common: Pump SDL events from main thread
2022-11-29 18:45:25 -05:00
lat9nq
0941ae0b61
CMake: Directly link to SDL2-static when appropriate
...
Trying to be lazy and alias SDL2 to SDL2-static causes issues in later
versions of CMake. Just use the same condition to tell which one to use.
2022-11-28 23:21:14 -05:00
Morph
51abe35e05
Merge pull request #9338 from lioncash/properties
...
input_common/helpers: Mark analog property structs members as static constexpr
2022-11-28 13:12:14 -05:00
Lioncash
8265c167d3
input_common/helpers: Mark analog property structs members as static constexpr
...
These are const with no dependency on any other data members, so we can
make these static constexpr to reduce the overall object size.
2022-11-28 10:10:37 -05:00
Lioncash
2ec7d0b5fd
common/input: Add helpers functions for creating input and output devices
...
Avoids the redundancy of needing to explictly specify the common
namespace and the type.
2022-11-28 10:00:37 -05:00
german77
7d8095d944
input_common: Pump sdl events from main thread
2022-11-27 11:09:40 -06:00
german77
a67e776af9
yuzu-cmd: Fix input callback crash on close
2022-11-27 10:53:22 -06:00
Liam
9737615948
general: fix compile for Apple Clang
2022-11-22 22:22:28 -05:00
bunnei
57a05b1653
Merge pull request #9238 from german77/cabinet_applet
...
service: am: Implement cabinet applet
2022-11-20 00:48:39 -08:00
Narr the Reg
38c48cf8d8
core: hid: Implement true multitouch support
2022-11-19 08:44:33 -06:00
german77
75e6ec85e1
general: Address review comments
2022-11-13 17:13:43 -06:00
german77
b193d40d22
input_common: Add amiibo applet functions
2022-11-13 10:56:54 -06:00
liamwhite
77803d96be
Merge pull request #9107 from german77/gidoly_rules
...
input_common: cache vibration tests
2022-10-25 12:13:18 -04:00
Morph
cae108404a
CMakeLists: Remove redundant warnings
...
These warnings are already included in /W3.
2022-10-22 15:02:04 -04:00
Morph
f3c40f4a20
CMakeLists: Treat MSVC warnings as errors
2022-10-22 15:02:04 -04:00
Morph
e6ab1f673b
general: Enforce C4800 everywhere except in video_core
2022-10-22 15:02:04 -04:00
Morph
93297d14d8
CMakeLists: Remove all redundant warnings
...
These are already explicitly or implicitly set in src/CMakeLists.txt
2022-10-22 15:02:04 -04:00
german77
7f66050f0c
input_common: cache vibration tests
2022-10-21 00:24:08 -05:00
german77
224a19758e
input_common: have an unique vector in callback status
2022-10-09 12:49:18 -05:00
Liam
35d3e7db2a
common: remove "yuzu:" prefix from thread names
2022-10-03 18:43:56 -04:00
german77
3ce0ef04dd
service: nfp: address comments
2022-10-02 12:32:26 -05:00
german77
da8864d002
input_common: Enable virtual amiibo driver
2022-10-02 12:32:26 -05:00
german77
e8d71712e7
input_common: Create virtual amiibo driver
2022-10-02 12:32:26 -05:00
bunnei
a967c41fa0
Merge pull request #8864 from german77/toggle_analog
...
input_common: Add support for analog toggle
2022-09-09 20:54:01 -07:00
Narr the Reg
2898be69f4
input_common: Add support for analog toggle
2022-09-06 11:21:28 -05:00
Narr the Reg
c3b16cf8d3
input_common: sdl: Always check for motion on reconnect
2022-09-03 17:52:57 -05:00
Andrea Pappacoda
cdb240f3d4
chore: make yuzu REUSE compliant
...
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.
Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.
The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.
Following REUSE has a few advantages over the current approach:
- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
`.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
files like binary assets / images is always accurate and up to date
To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.
[REUSE]: https://reuse.software
Follow-up to 01cf05bc75
2022-07-27 12:53:49 +02:00
FearlessTobi
6c8e456185
Address first part of review comments
2022-07-25 21:59:30 +02:00
german77
f19e7be6e8
input_common: Add camera driver
2022-07-23 19:38:42 -05:00
german77
5e7e55b98a
input_common: sdl: lower vibration frequency and use it's own unique thread
2022-06-28 19:22:16 -05:00
Mai
103997ee56
Merge pull request #8383 from Morph1984/shadow-of-the-past
...
yuzu: Make variable shadowing a compile-time error
2022-06-14 21:08:58 -04:00
Morph
efc89c032b
CMakeLists: Make variable shadowing a compile-time error
...
Now that the entire project is free of variable shadowing, we can enforce this as a compile time error to prevent any further introduction of this logic bug.
2022-06-13 18:19:23 -04:00
Narr the Reg
28877cea31
input_common: Replace usage of string guid to common uuid
2022-06-06 19:56:37 -05:00
bunnei
d879741ec6
Merge pull request #8374 from german77/asnycvibrations
...
input_common: Make vibration request async
2022-05-28 00:55:53 -07:00
Narr the Reg
bf948b5790
input_common: Make vibration request async
2022-05-23 12:25:02 -05:00
german77
c82806f9cb
input_common: touch: Rewrite touch driver to support multiple touch points
2022-05-23 11:01:14 -05:00
bunnei
b06f9f2606
Merge pull request #8272 from german77/stick_range
...
yuzu: config: Improve analog stick mapping
2022-05-03 14:36:39 -07:00
Morph
9398521006
Revert "gc_adapter: fix libusb import on GCC11.2"
...
This reverts commit f72f4377f4
.
2022-05-02 04:23:39 -04:00
Levi Behunin
f72f4377f4
gc_adapter: fix libusb import on GCC11.2
...
Just to silence an intermittent error.
GCC11.2 complains cannot find 'libusb.h' during a fresh build.
2022-05-02 03:46:48 -04:00
Andrea Pappacoda
01cf05bc75
chore: add missing SPDX tags
...
Follow-up to 99ceb03a1c
2022-04-28 18:24:11 +02:00
Narr the Reg
d2388a2ca8
yuzu: config: Set default range to 95%
2022-04-26 19:03:54 -05:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
bunnei
764e5c7fe5
Merge pull request #7978 from german77/sideway
...
input_common: Map sticks correctly when mapped sideways
2022-04-21 22:21:59 -07:00
Narr the Reg
17bff6bf57
input_common: Ignore boost uninitialized local variable
2022-04-20 18:28:24 -05:00
Merry
159ae5e47c
input_common: Replace lock_guard with scoped_lock
2022-04-07 19:44:07 +01:00
Narr the Reg
ee532e5c01
input_common: Map sticks correctly when mapped sideways
2022-03-21 19:39:33 -06:00
ameerj
967ed01fcf
input_common: Reduce unused includes
2022-03-20 02:25:09 -04:00
bunnei
1079215871
Merge pull request #7859 from german77/battery_again
...
input_common: Remove battery duplicated struct and update every button press
2022-02-24 11:42:51 -08:00
bunnei
ca9da569ce
Merge pull request #7852 from Morph1984/new-uuid
...
common: Revise and fix the UUID implementation
2022-02-10 21:52:13 -07:00
german77
6a4ab3e0d2
yuzu: Add auto center on right click
2022-02-06 19:56:03 -06:00
german77
21742f0096
input_common: Remove battery duplicated struct and update every button press
2022-02-06 18:33:55 -06:00
Morph
25db62ce15
general: Rename NewUUID to UUID, and remove the previous UUID impl
...
This completes the removal of the old UUID implementation.
2022-02-05 13:56:21 -05:00
Morph
cb30fe50cd
input/hid: Migrate to the new UUID implementation
2022-02-05 13:18:41 -05:00
bunnei
0ec5b9bff2
Merge pull request #7839 from german77/battery
...
yuzu: ui: Improve battery symbols
2022-02-04 18:23:35 -07:00
Morph
fbefcf7280
input_common: Remove unused core include
2022-02-03 22:44:28 -05:00
bunnei
fc8aef7323
Merge pull request #7811 from german77/analog-mod
...
input_common: Use attributes for analog range modifiers
2022-02-03 12:21:11 -07:00
Narr the Reg
064aa3de11
yuzu: ui: Improve battery symbols
2022-02-02 13:18:06 -06:00
german77
5bd0c1517f
input_common: Use attributes for analog range modifiers
2022-01-30 22:42:40 -06:00
german77
3d2d77eb3f
input_common: Add home and hard touch press buttons to UDP controllers
2022-01-30 09:17:22 -06:00
Morph
1900abde13
Merge pull request #7784 from german77/ds5
...
input_common: Add DS5 to HD rumble list
2022-01-28 18:36:28 -05:00
bunnei
0dec42431f
Merge pull request #7770 from german77/motion-threshold
...
input_common: Add option to configure gyro threshold
2022-01-27 15:44:04 -08:00
Narr the Reg
fd1cef5616
input_common: Add DS5 to HD rumble list
2022-01-26 21:49:32 -06:00
Morph
432f4441b9
Merge pull request #7774 from lioncash/mapping
...
input_common/main: Pass MappingData by const reference in callbacks
2022-01-25 16:15:45 -05:00
Lioncash
651358d0b6
input_common/input_engine: Ensure PadIdentifier UUIDs have a valid initial state
...
The default constructor of a UUID instance doesn't initialize the
underlying array.
2022-01-24 11:57:48 -05:00
Lioncash
187c9d7e33
input_common/input_mapping: Simplify UUID validity checks
...
Makes the checks a little more intuitive to read and doesn't construct
an extra UUID instance
2022-01-24 11:49:52 -05:00
Lioncash
0849be094e
input_common/input_mapping: Add missing includes
...
Ensures that the class always sees the types it needs.
2022-01-24 11:49:31 -05:00
Lioncash
8bb39750a1
input_common/input_mapping: Remove const from return value
...
Top-level const on a return by value can inhibit move semantics, and is
unnecessary.
2022-01-24 11:39:20 -05:00
Lioncash
12e7d3b254
input_common/input_mapping: Default constructor
2022-01-24 11:37:48 -05:00
Lioncash
51dd3da11c
input_common/main: Pass MappingData by const reference in callbacks
...
Avoids creating unnecessary 168 byte copies per callback invocation.
2022-01-24 11:31:43 -05:00
Lioncash
87eb3cb083
input_common/udp_client: Replace deprecated from_string()/to_ulong() functions
...
These are deprecated and make_address variants and to_uint() should be used instead.
2022-01-24 11:14:30 -05:00
Lioncash
b084a9bf0a
input_common/udp_client: Prevent unnecessary string copies
...
We can also remove some redundant const on the return values, since
these don't do anything
2022-01-24 10:58:25 -05:00
german77
ebf19616f4
input_common: Add option to configure gyro threshold
2022-01-23 21:54:33 -06:00
bunnei
8433edacb3
Merge pull request #7735 from german77/udp_battery
...
input_common: Report battery for UDP controllers
2022-01-22 01:28:14 -08:00
bunnei
fc3eb72359
Merge pull request #7715 from gidoly/patch-4
...
Xbox controller default name nit pick
2022-01-18 21:14:30 -08:00
bunnei
eceee8e5f4
Merge pull request #7725 from german77/mouse_in_motion
...
input_common: Reintroduce motion from mouse and use button names
2022-01-18 18:16:27 -08:00
Narr the Reg
36144a5690
input_common: Report battery for UDP controllers
2022-01-17 13:30:15 -06:00
Mai M
45ac3f414e
Merge pull request #7730 from v1993/patch-6
...
input_common: nitpick about SetHatButton usage
2022-01-17 13:43:34 -05:00
Valeri
3431e0acf5
input_common: nitpick about SetHatButton usage
2022-01-17 12:04:38 +03:00
Valeri
a99f84f4b2
input_common: fix copy-paste error
...
Found by static analysis with PVS-Studio.
2022-01-17 11:31:38 +03:00
german77
9eab07f863
input_common: Reintroduce motion from mouse and use button names
2022-01-16 20:37:34 -06:00
gidoly
92d676d788
Xbox controller default name nit pick
...
Discord User moon lacer pointed us that official name is 'Xbox' not 'XBox'
2022-01-16 05:59:31 +09:00
gidoly
7978ea4e8c
Change default name for ps controllers
...
Minor nitpick
Code is from narr
2022-01-15 10:29:42 +09:00
bunnei
c65c651b6f
Merge pull request #7633 from german77/hotkeys
...
yuzu: Add controller hotkeys
2022-01-11 10:49:23 -08:00
Morph
18adea343e
Merge pull request #7687 from german77/tas_handle
...
input_common: Handle errors on TAS scripts
2022-01-09 16:43:06 -08:00
bunnei
acbfb0083a
Merge pull request #7682 from german77/udp_fix
...
input_common: Fix UDP controller mappings
2022-01-08 13:41:39 -08:00
german77
ea089c012e
input_common: Handle errors on TAS scripts
2022-01-08 12:27:16 -06:00
german77
d05675242a
input_common: Fix udp motion not automapping to both sides
2022-01-07 16:56:36 -06:00
german77
72c8a94a6c
yuzu: Add controller hotkeys
2022-01-06 21:26:05 -06:00
german77
4b4af29f86
input_common: Use accelerometer data for mapping
2022-01-06 20:05:49 -06:00
bunnei
212b497d5c
Merge pull request #7302 from VPeruS/check-deadlock
...
[input_common] Fixed thread hang
2021-12-17 23:43:19 -08:00
vperus
11f4bf8a9a
[input_common] Move variable declaration closer to usage
...
MSVC supplied with VS2022 generates "warning C4189: 'CALIBRATION_THRESHOLD':
local variable is initialized but not referenced" which is treated as an
error.
Circumvent it by moving constexpr variable directly into body of lambda function.
2021-12-17 20:51:47 +02:00
Narr the Reg
5e732e7aec
Merge pull request #7581 from lioncash/input-iface
...
common/input: Avoid numerous large copies of CallbackStatus
2021-12-14 19:10:39 -06:00
Narr the Reg
ac0c5be7c0
Merge pull request #7577 from v1993/patch-2
...
input/SDL: Update SDL hints
2021-12-14 10:12:17 -06:00
Valeri
7f965172c5
input/SDL: Update SDL hints
...
SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED is no longer needed thanks to new default in SDL 2.0.18.
SDL_HINT_JOYSTICK_HIDAPI_XBOX is reported to cause conflicts with native driver Xbox driver on Linux, and Xbox controllers don't benefit from hidapi anyways.
2021-12-14 15:02:03 +03:00
Lioncash
e05d2a70b2
common/input: Avoid numerous large copies of CallbackStatus
...
CallbackStatus instances aren't the cheapest things to copy around
(relative to everything else), given that they're currently 520 bytes in
size and are currently copied numerous times when callbacks are invoked.
Instead, we can pass the status by const reference to avoid all the
copying.
2021-12-13 21:22:02 -05:00
Lioncash
5e7e38ac72
input_poller: Add missing override specifiers
2021-12-13 20:41:17 -05:00
Lioncash
6497fbfa96
input_mapping: Amend specification of parameters
...
param tags are supposed to specify the parameter name without any
quoting.
Silences several -Wdocumentation warnings.
2021-12-13 20:31:59 -05:00
Lioncash
7783c0aaef
input_poller: Remove several unnecessary @param tags
...
Silences quite a bit of -Wdocumentation warnings, given the @param tag
is only intended to be used to identify function parameters, not what it
contains.
2021-12-13 20:28:30 -05:00
bunnei
ad45963b45
Merge pull request #7575 from lioncash/input
...
input_engine: Minor object churn cleanup
2021-12-13 16:50:54 -08:00
Lioncash
54ca48e8b7
tas_input: Avoid minor copies in Read/WriteCommandButtons()
...
We don't need to copy the whole pair
2021-12-13 11:45:19 -05:00
Lioncash
734fb180bb
tas_input: Remove unnecessary semicolon
...
Resolves a -Wextra-semi warning
2021-12-13 11:45:19 -05:00
Lioncash
ddda6ae776
tas_input: Execute clear() even if empty
...
clear() when empty is simply a no-op, so we can get rid of the check
here and let the stdlib do it for us.
2021-12-13 11:45:18 -05:00
Lioncash
db9320e754
tas_input: Remove unnecessary includes
...
Gets rid of indirect includes and includes only what the interface
needs.
2021-12-13 11:45:18 -05:00
Lioncash
26ef76213c
tas_input: std::move strings into vector
...
While we're in the same area, we can also avoid performing std::stoi in
a loop when it only needs to be performed once.
2021-12-13 11:45:15 -05:00
Lioncash
a515ede2af
tas_input: Use istringstream over stringstream
...
This is only using the input facilities, so we don't need to use the
fully-fleged stringstream.
2021-12-13 10:57:53 -05:00
Lioncash
6be730bdcd
tas_input: Use u8string_view instead of u8string
...
Same behavior, but without the potential for extra allocations.
2021-12-13 10:54:43 -05:00
Lioncash
37a8e2a67e
tas_input: Remove unused std::smatch variable
...
This also means we can get rid of the dependency on <regex>
2021-12-13 10:50:24 -05:00
Lioncash
d52ad96ce3
tas_input: Amend -Wdocumentation warnings
...
Parameters shouldn't have the colon by their name.
2021-12-13 10:49:11 -05:00
Lioncash
c126b0718c
tas_input: Make TasAxes enum an enum class
...
Prevents these values from potentially clashing with anything in other
headers.
2021-12-13 10:41:32 -05:00
Lioncash
e4de1783e1
input_engine: Fix typo in TriggerOnAxisChange() parameter name
2021-12-13 10:21:37 -05:00
Lioncash
a9d39b6895
input_engine: Simplify PreSet* family of functions
...
We can make use of try_emplace() to insert values only if they don't
already exist.
2021-12-13 10:18:04 -05:00
Lioncash
4d4a234476
input_engine: Avoid redundant map lookups
...
We can use iterators to avoid looking up into maps twice in the getter
functions.
At the same time we can also avoid copying the ControllerData structs,
since they're 264 bytes in size.
2021-12-13 09:57:51 -05:00
Lioncash
e51b852aee
input_engine: Remove left-over namespace qualifiers
...
These types are part of the InputCommon namespace.
2021-12-13 09:57:51 -05:00
Lioncash
e826e6715a
input_engine: Iterate by reference rather than by value where applicable
...
Avoids creating copies of several object instances (some of which being
over 100 bytes in size).
2021-12-13 09:57:51 -05:00
Lioncash
755822ceec
input_engine: Take BasicMotion by const reference with SetMotion() and TriggerOnMotionChange()
...
Copies the BasicMotion instance once instead of twice.
2021-12-13 09:57:39 -05:00
Lioncash
a92dbec962
input_engine: std::move InputIdentifier in SetCallback()
...
Allows avoiding std::function allocations.
2021-12-13 09:23:23 -05:00
Lioncash
985599e485
input_engine: Pass LedStatus by const reference
...
Avoids copies where reasonably applicable
2021-12-13 09:20:58 -05:00
Lioncash
38f3442ea5
input_engine: Pass VibrationStatus by const reference in SetRumble()
...
Avoids creating copies of the struct where not necessary.
2021-12-13 09:16:10 -05:00
Lioncash
2b92d22bda
input_engine: std::move engine name where applicable
...
We can allow the name to be moved into, allowing allocations to be
avoided.
2021-12-13 09:05:50 -05:00
Lioncash
9a104e2b60
input_engine: Remove callback clearing in constructor
...
The callback map is a member variable, so this will always be empty on
initial construction.
2021-12-13 08:54:23 -05:00