Lioncash
3f06dd0a64
CAuiEnergyBarT01: Prevent truncation within DownloadBarCoordFunc
...
Without float literals, the calculation is performed in double precision
and then truncated down to float implicitly.
2019-09-19 22:31:46 -04:00
Lioncash
04cc300019
CGuiWidgetDrawParms: Mark Default instance as const
...
This isn't ever modified, so it can be made const to prevent
unintentional modification (and allow it to be placed within the RO
segment).
2019-09-19 21:46:11 -04:00
Phillip Stephens
613f690c42
Merge pull request #66 from lioncash/lockfire
...
CCompoundTargetReticle: Fix typo in lock fire string
2019-09-13 00:11:37 -07:00
Lioncash
0aa749ce0c
CCompoundTargetReticle: Fix typo in lock fire string
...
In the actual game executable, the string is stored with a lower-case 'i', not an upper-case one.
2019-09-12 06:40:52 -04:00
Lioncash
20696fd500
CCompoundTargetReticle: Declare file-scope strings as arrays
...
Reduces the overall size of the resulting binary, as only the string
data will be stored rather than the string and a pointer pointing to
said string data.
2019-09-12 06:38:05 -04:00
Lioncash
267fd2962a
CCompoundTargetReticle: Move private strings into the cpp file
...
This is an internal detail, so we don't need to expose this in the
header,
2019-09-12 05:45:53 -04:00
Lioncash
f9079f0215
Runtime: Make use of std::make_unique where applicable
...
Makes use of the C++14 make_unique allocation function to allocate class
instances where applicable instead of a reset with a new operator within
it.
This doesn't touch cases where buffers are allocated, given make_unique
would zero-initialize them.
2019-09-12 04:09:48 -04:00
Lioncash
d5fa8b72b0
CStringTable: Remove unnecessary initializer
...
std::unique_ptr always initializes to nullptr. We can remove this
implicit convertion from 0 to nullptr.
2019-09-01 03:16:54 -04:00
Lioncash
e23dfbd8db
CStringTable: Use std::array instead of std::vector
...
Gets rid of a static constructor, as well as a few heap allocations
2019-09-01 03:13:45 -04:00
Lioncash
d3d629d405
RuntimeCommon: Use const on member functions where applicable
...
Adds missing const qualifiers on class member functions that don't
modify instance state.
2019-08-14 09:25:39 -04:00
Phillip Stephens
5eaa7a23e8
Merge branch 'override' of https://github.com/lioncash/urde
2019-08-09 06:27:54 -07:00
Lioncash
2059535b55
RuntimeCommonB: Use the override specifier where applicable
...
Applies the override keyword where applicable to indicate visually where
member function overriding is occurring. This only targets
the RuntimeCommonB target as a starting point, which resolves around
900+ cases where the keyword could be used.
2019-08-09 09:13:26 -04:00
Lioncash
af8731f2d2
GuiSys/CInstruction: Correct erroneous assignment in TestLargestFont
...
Without this, x20_largestMonoW will never be any value other than zero,
which is indicative of a logic bug.
2019-08-09 07:08:04 -04:00
Jack Andersen
5acf9ecbcf
Graphics debug groups and bug fixes
2019-07-20 22:42:52 -10:00
Jack Andersen
7a3da1f7a6
Massive fmtlib refactor
2019-07-19 18:27:21 -10:00
Jack Andersen
e218b8aeb5
CActorContraption fixes, better CMake dependency handling
2019-06-11 16:05:17 -10:00
Jack Andersen
3a0d2930fa
Numerous uninitialized memory fixes
2019-04-06 19:14:48 -10:00
Jack Andersen
52b36795ac
Proper handling for persistently resident resources
2019-03-09 23:37:36 -10:00
Jack Andersen
2f963b9ce3
Various bug fixes
2019-03-08 22:58:27 -10:00
Jack Andersen
8df0a4913c
zeus constexpr refactor and thermal visor fixes
2019-02-23 21:15:54 -10:00
Jack Andersen
1186b8097c
Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/urde
2019-02-17 19:48:01 -10:00
Jack Andersen
48eaa2545b
Working CScriptGunTurret
2019-02-17 19:47:46 -10:00
Phillip Stephens
fb1f65434d
Fix IA8 texture decoding
2019-02-16 09:16:34 -08:00
Jack Andersen
ad2681f857
Windows fixes
2019-01-28 22:28:35 -10:00
Jack Andersen
137968ecc7
Bug fixes and CAutoMapper mouse events
2019-01-22 21:52:19 -10:00
Jack Andersen
aeb6a9a147
More mouse events for pause screen
2019-01-21 18:23:51 -10:00
Jack Andersen
f3f9924309
Initial mouse events for pause screen
2019-01-20 18:10:34 -10:00
Jack Andersen
47c6b5cba8
Bug fixes and CGuiFrame mouse events
2019-01-19 20:43:11 -10:00
Jack Andersen
f9b0614327
Various bug fixes
2019-01-04 22:34:09 -10:00
Jack Andersen
b7f35e0528
CRelAngle fix
2018-12-16 17:52:51 -10:00
Jack Andersen
636c82a568
New code style refactor
2018-12-07 19:30:43 -10:00
Jack Andersen
7c7da6671a
SIMD refactor
2018-12-07 15:49:15 -10:00
Jack Andersen
9c88971df6
Initial CSpacePirate and rag doll imps
2018-11-23 22:09:35 -10:00
Jack Andersen
427f5d8786
Various bug fixes
2018-10-26 20:16:12 -10:00
Jack Andersen
c91e5df986
Convert to pragma once
2018-10-06 17:42:33 -10:00
Jack Andersen
c307e354ca
Huge shader refactor
2018-10-06 16:59:17 -10:00
Jack Andersen
e46ec80b64
Integrate Amuse into hecl cook/extract for MP1/2
2018-09-02 14:46:16 -10:00
Jack Andersen
718d2cb29e
Water rendering order fix, morphball visor fixes
2018-06-21 11:04:16 -10:00
Jack Andersen
cd3bba2f0e
Working grapple beam
2018-06-20 14:57:57 -10:00
Jack Andersen
a5f25bf3f4
Fix water rendering
2018-06-02 20:11:39 -10:00
Jack Andersen
98549a7785
Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/urde
2018-05-24 20:40:18 -10:00
Jack Andersen
70b3404b7c
Windows build fixes and warning avoidance
2018-05-24 20:39:38 -10:00
Phillip Stephens
48f41b6c73
Minor fixes to CMetroidAreaCollider and CHudThreatInterface
2018-05-24 18:23:27 -07:00
Jack Andersen
f60af632b3
Big fixes and big memory leak refactor (linux only for now)
2018-05-19 20:14:57 -10:00
Jack Andersen
12430610f1
Lots of bug fixes
2018-05-09 21:25:26 -10:00
Jack Andersen
1c977e8021
Scan visor fixes
2018-05-07 19:10:24 -10:00
Jack Andersen
70e791babc
Missing SCAN packaging fix
2018-05-07 16:11:07 -10:00
Jack Andersen
9d25d44fe8
CGuiFrame destructor fix
2018-05-06 13:47:55 -10:00
Phillip Stephens
6d60ccfd04
Various fixes and tweaks, Implement CExplosion, Add cheats
2018-04-26 14:12:20 -07:00
Jack Andersen
b405f33ded
Correct rstl::prereserved_vector implementation
2018-02-14 18:37:21 -10:00
Jack Andersen
59af54afad
Merge branch 'master' of ssh://gitlab.axiodl.com:6431/AxioDL/urde
2018-02-04 20:57:18 -10:00
Jack Andersen
ac8dfde174
Various bug fixes and CActor rendering
2018-02-04 20:56:09 -10:00
Jack Andersen
97835607d9
More windows build fixes
2018-02-03 20:46:47 -10:00
Jack Andersen
13a31be23b
Implement rumble classes
2018-01-25 23:48:42 -10:00
Jack Andersen
168fab6b14
HUD rendering bug fixes
2018-01-05 20:50:42 -10:00
Jack Andersen
a78c4c6b36
Animation transitions and pause screen fixes
2018-01-04 17:02:30 -10:00
Jack Andersen
99fc9e3598
Various bug fixes and CAnimTree implementations
2018-01-03 18:17:44 -10:00
Jack Andersen
8301adc3d6
Huge compile performance refactor
2017-12-28 22:08:12 -10:00
Jack Andersen
053ebd41c4
HUD bug fixes
2017-12-20 17:19:54 -10:00
Jack Andersen
c00cc6cea9
Lots of bug fixes; working CPhazonSuitFilter
2017-12-19 20:06:54 -10:00
Jack Andersen
1c44f8d1bc
Various movement and HUD bug fixes
2017-12-18 17:05:50 -10:00
Jack Andersen
8901ac2150
Various fixes
2017-12-09 19:30:01 -10:00
Jack Andersen
cff5198e6b
Major graphics resource performance improvement
2017-11-19 13:48:09 -10:00
Jack Andersen
a2c79eb996
More CAutoMapper fixes
2017-11-17 17:35:37 -10:00
Jack Andersen
2df95c01cf
General resource handling bug fixes
2017-11-14 18:12:13 -10:00
Phillip Stephens
f4de84b5fa
Fix invalid asset ID handling in CGuiModel and CAuiImagePane
2017-11-13 05:13:34 -08:00
Jack Andersen
f7ec7bdc0c
string_view refactor
2017-11-12 20:19:18 -10:00
Jack Andersen
742ab2514f
First skybox and HUD rendering
2017-11-11 19:14:57 -10:00
Jack Andersen
ff5c7321c7
Merge branch 'gl-fixes'
2017-11-05 20:58:43 -10:00
Phillip Stephens
67748655ba
Compile fixes, Implement CStateSetterFlow::OnMessage
2017-11-04 23:29:22 -07:00
Jack Andersen
3894749675
Changes to support boo object tracker API
2017-11-04 20:17:12 -10:00
Jack Andersen
3fcc50d82d
Finish CCompoundTargetReticle
2017-10-29 17:37:20 -10:00
Jack Andersen
6eff4f2e01
Implement most of CTargetingManager
2017-10-28 20:21:52 -10:00
Jack Andersen
e274cd12b9
Refactorings to support .upak generation
2017-10-24 21:47:49 -10:00
Jack Andersen
4ee4963aaf
Windows fixes
2017-10-23 17:12:10 -10:00
Jack Andersen
ddb1d584b7
More work on CPlayerGun
2017-08-30 16:42:37 -10:00
Jack Andersen
96b17ac73d
Implement MetroidPrimeStage1 loader
2017-08-19 19:23:22 -10:00
Phillip Stephens
870e8c80ee
Refactor ResId into CAssetId
2017-08-12 22:26:14 -07:00
Phillip Stephens
ecff2b7f8d
Implement WorldTeleporter and SpiderBallWaypoint
2017-08-08 15:12:14 -07:00
Jack Andersen
daef773f39
Implement additive body states, rstl::binary_find
2017-07-10 21:17:03 -10:00
Phillip Stephens
b22c0bc75f
Fix CGuiTextSupport crash
2017-07-07 05:23:20 -07:00
Jack Andersen
ff15bfbec3
Finish CMetroidAreaCollider
2017-06-29 15:39:34 -10:00
Jack Andersen
4f33422423
Lots of CPlayer implementations
2017-06-11 18:23:34 -10:00
Jack Andersen
db8a7d3433
CParticleDatabase implementations
2017-06-02 20:03:07 -10:00
Jack Andersen
ca69a54faf
Camera filter refactor
2017-05-31 19:34:24 -10:00
Jack Andersen
a550ce1959
Finish CMessageScreen
2017-05-31 11:26:50 -10:00
Jack Andersen
0c5e4efc46
Work on CPlayerVisor
2017-05-29 17:45:31 -10:00
Jack Andersen
4b048a0dff
Finish CInGameGuiManager
2017-05-21 12:01:04 -04:00
Jack Andersen
0459192951
Implement CInGameGuiManager::Update()
2017-05-18 09:27:21 -10:00
Jack Andersen
1f25becf8e
Finish CAuiImagePane
2017-05-17 21:07:49 -10:00
Jack Andersen
08a8b1819a
Finish CScanDisplay
2017-05-16 19:04:38 -10:00
Jack Andersen
5835e5173e
Finish CLogBookScreen
2017-05-14 09:58:44 -10:00
Jack Andersen
855ef53407
Work on CInventoryScreen
2017-05-07 09:35:52 -10:00
Jack Andersen
4ff1475f0e
Work on CSamusDoll
2017-05-04 08:56:20 -10:00
Jack Andersen
0fe125d913
Finish CSamusHud and subsystems
2017-04-13 09:28:31 -10:00
Jack Andersen
9cd421888d
Additional HUD work
2017-04-08 20:14:22 -10:00
Jack Andersen
e070844e8a
Additional HUD work
2017-04-08 10:40:36 -10:00
Jack Andersen
d3c4f69e6f
Work on HUD interfaces
2017-04-06 19:35:09 -10:00
Jack Andersen
dc781f5c67
Additional HUD interfaces
2017-04-03 19:48:13 -10:00
Jack Andersen
67ed82bc52
Implement CHudEnergyInterface
2017-04-02 19:37:54 -10:00
Jack Andersen
a2b9bfb1a2
Lots of CSamusHud imps
2017-04-02 15:39:23 -10:00
Jack Andersen
b3c94f1d2b
Lots of HUD-related implementations
2017-04-01 17:03:37 -10:00
Jack Andersen
8e7773aa94
AutoMapper work
2017-03-19 19:09:53 -10:00
Jack Andersen
1629882113
Refactors to support fog volume rendering
2017-03-13 21:03:58 -10:00
Jack Andersen
ce723d5505
Frontface culling support boo sync
2017-03-10 10:52:53 -10:00
Phillip Stephens
fe72458f48
Restore CCameraManager::GetCurrentCamera's proper behavior (AKA, I'm an idiot)
2017-03-05 09:54:00 -08:00
Jack Andersen
5c884fec0c
Work on CStateManager rendering functions
2017-03-02 21:18:12 -10:00
Phillip Stephens
fc51cd38aa
Initial CCollisionActor imps, minor cleanup
2017-02-20 19:29:45 -08:00
Jack Andersen
4e01787e09
More efficient cooked resource loading, AQS audio fixes
2017-02-14 20:02:30 -10:00
Jack Andersen
59406a069b
Bug fixes and more CStateManager imps
2017-02-13 18:27:20 -10:00
Phillip Stephens
ac5f28eeff
Add missing factories, update hecl
2017-02-13 13:29:00 -08:00
Jack Andersen
7085b837b7
Subresource cooking and various bug fixes
2017-02-12 20:51:47 -10:00
Jack Andersen
a7cab596e6
Initial InGameGuiManager imps
2017-02-11 17:17:18 -10:00
Phillip Stephens
7e4c82a013
Fix SCAN state saving, clean up MLVL, add support for newer CRasterFont versions
2017-02-08 23:37:00 -08:00
Jack Andersen
802cf9d811
Minor CRasterFont tweaks
2017-01-31 21:20:18 -10:00
Jack Andersen
83baca806d
GuiSys Image geometry fixes
2017-01-29 20:58:59 -10:00
Jack Andersen
83176b41a9
FRME bug fixes and shader adjustments
2017-01-29 18:16:20 -10:00
Jack Andersen
1fbd08b7c6
Conform HLSL shaders
2017-01-28 21:27:48 -10:00
Jack Andersen
d5c7efce58
Tons of refactors and bug fixes
2017-01-28 17:58:16 -10:00
Phillip Stephens
933e731817
CTweakPlayerGun rep (THE FINAL ONE YAY!!!)
2017-01-26 18:58:21 -08:00
Jack Andersen
3a3298d48e
STRG cooking bug fixes
2017-01-26 16:22:52 -10:00
Phillip Stephens
bcc524e084
Merge branch 'master' of https://github.com/AxioDL/urde
2017-01-26 02:06:41 -08:00
Phillip Stephens
0f3e4b4a38
Tweak Imps
2017-01-26 02:06:18 -08:00
Jack Andersen
d6482874d6
Path-substitution integrated into MP1 STRG cook/uncook
2017-01-25 22:09:22 -10:00
Jack Andersen
7a60151d3e
Char16 refactor and GuiSys bug fixes
2017-01-23 21:41:33 -10:00
Jack Andersen
eb955c53ec
Windows fixes
2017-01-21 23:06:03 -10:00
Jack Andersen
e9222c7aba
Merge branch 'master' of https://github.com/AxioDL/urde
2017-01-21 15:53:11 -10:00
Jack Andersen
0744a2307a
Several architectural fixes and additions
2017-01-21 15:40:12 -10:00
Phillip Stephens
02d9c7199a
Unfuck my fuckup
2017-01-21 08:58:43 -08:00
Phillip Stephens
49839bbd6d
Remove dbug printf
2017-01-21 07:49:31 -08:00
Phillip Stephens
4a7a3bea2f
FRME Fixes
2017-01-21 07:46:51 -08:00
Jack Andersen
56b24c39f0
Ensure directories are created late in extract
2017-01-16 15:23:19 -10:00
Jack Andersen
3544cbd278
Work on FRME widgets; initial DSP streaming
2017-01-13 18:16:10 -10:00
Jack Andersen
904166e016
RumbleFxTable and final FrontEnd options functions
2017-01-12 14:16:26 -10:00
Jack Andersen
f16c61cce8
Work on options portion of CFrontEndUI
2017-01-09 21:15:49 -10:00
Jack Andersen
4c09493a3f
CFrontEndUI work
2017-01-08 17:44:00 -10:00
Jack Andersen
db7c2aeaf2
GuiSys and FrontEnd work
2016-12-30 14:51:51 -10:00
Jack Andersen
20677700e0
Return fixes for MSVC
2016-12-30 08:38:01 -10:00
Jack Andersen
a93ca26ea1
CFrontEndUI work
2016-12-29 20:37:01 -10:00
Jack Andersen
b3cae0d4d5
Work on CSaveUI and CSfxManager
2016-12-28 19:53:00 -10:00
Phillip Stephens
7b79e52740
Collision flags and SFX type handling
2016-12-25 23:58:44 -08:00
Jack Andersen
513d283bee
Merge branch 'master' of https://github.com/AxioDL/urde
2016-12-22 20:43:26 -10:00
Jack Andersen
d7f79d6ec3
Work on CMemoryCardDriver
2016-12-22 20:41:39 -10:00
Phillip Stephens
598f64002c
Silence warnings, and fix Windows build
2016-12-21 11:27:15 -08:00
Jack Andersen
46cf8cd86d
Refactor memory card access class as CMemoryCardDriver
2016-12-19 09:20:30 -10:00
Jack Andersen
03a93c52b9
CSaveUI work
2016-12-17 18:16:04 -10:00
Jack Andersen
a2b07ba357
CFrontEndUI work
2016-12-16 13:05:29 -10:00
Jack Andersen
f665812d6e
More CGuiSys and CFrontEndUI work
2016-12-15 18:35:49 -10:00
Jack Andersen
19a371c931
Refactor GuiSys (remove general logic handling)
2016-12-15 12:37:34 -10:00
Jack Andersen
6b765838a7
Work on CFrontEndUI
2016-12-14 12:56:59 -10:00
Jack Andersen
2d961af921
CFrontEndUI work
2016-12-12 19:22:30 -10:00
Jack Andersen
cfb16f34f1
Self-rebuilding resource cache; init performance improvements
2016-09-17 11:33:32 -10:00
Jack Andersen
6ea727e4a8
Additional CSlideShow work; amuse voice handle integration
2016-09-16 13:43:33 -10:00
Jack Andersen
2fed8f36fb
Initial CSlideShow
2016-09-16 10:18:03 -10:00
Jack Andersen
f5ac582541
Ensure correct Vulkan coordinate system for CTexturedQuadFilter
2016-09-13 20:08:29 -10:00
Jack Andersen
31eb3e5223
Merge branch 'master' of https://github.com/AxioDL/urde
2016-09-13 19:55:37 -10:00
Jack Andersen
1d8dfa3205
CSplashScreen integration
2016-09-13 19:54:09 -10:00
Phillip Stephens
c20eb76189
Various imps and stubs
2016-09-13 22:45:46 -07:00
Jack Andersen
8580c5d972
Implement CSplashScreen
2016-09-12 19:36:21 -10:00
Jack Andersen
f4ea728a61
Resource factories now provided with self-ref
2016-09-02 09:32:57 -10:00
Jack Andersen
0aaeed2aeb
const_cast refactor
2016-08-28 18:22:54 -10:00
Phillip Stephens
fd26dd56c3
CStringTable and CRasterFont fixes
2016-08-16 22:40:25 -07:00
Jack Andersen
d2fca93a8e
Merge branch 'master' of https://github.com/AxioDL/urde
2016-08-16 12:49:57 -10:00
Jack Andersen
12f23ba340
Several CWorldTransManager imps
2016-08-16 12:49:19 -10:00
Phillip Stephens
bb0977733f
Add factory function
2016-08-16 14:12:27 -07:00
Phillip Stephens
de7d5f9d59
CStringTable imps
2016-08-16 14:05:33 -07:00
Jack Andersen
0dacc2233c
Work on CWorldTransManager
2016-08-15 10:58:07 -10:00
Phillip Stephens
165735ba1b
CScannableObjectInfo imps
2016-08-03 16:20:31 -07:00
Phillip Stephens
40cd1226fa
Re-add accidentally removed CRSM types
2016-06-23 12:40:09 -07:00
Phillip Stephens
00a98bce85
Various implementatations
2016-04-29 03:08:46 -07:00
Jack Andersen
b60d55d784
Bad level link fixes
2016-04-23 18:03:30 -10:00
Jack Andersen
8608b52774
CModelData imps
2016-04-14 11:42:47 -10:00
Jack Andersen
5de5c3d85f
Character factory support classes
2016-04-12 20:07:23 -10:00
Jack Andersen
80006a9ac4
Update hecl
2016-04-04 16:26:43 -10:00
Jack Andersen
9f0e9a808b
Implement Metal lighting shader
2016-04-03 20:16:03 -10:00
Jack Andersen
929f8263fc
Windows Fixes; D3D depth support
2016-04-02 19:25:34 -10:00
Jack Andersen
7b865683e7
More CModel imps
2016-03-30 20:18:56 -10:00
Jack Andersen
b373493cf3
Much CModel work
2016-03-30 16:44:43 -10:00
Jack Andersen
99cf1153b6
Boo D3D lambda sync
2016-03-30 10:44:19 -10:00
Jack Andersen
77a8ce5f17
boo lambda-API refactor
2016-03-30 09:16:01 -10:00
Phillip Stephens
dc24a864fd
CPlayerState imps
2016-03-23 13:38:01 -07:00
Phillip
6301af3133
Windows Fixes
2016-03-22 11:35:52 -07:00
Jack Andersen
7c99de82ec
CTextRenderBuffer boo implementations
2016-03-21 22:15:00 -10:00
Jack Andersen
5108456dc9
CGuiTextPane imps
2016-03-21 16:27:46 -10:00
Jack Andersen
9f82900cdc
CGuiTextSupport imps
2016-03-21 12:01:19 -10:00
Jack Andersen
6fcdb3a99c
Initial CGuiTextSupport fields; integrated optional template
2016-03-20 19:02:56 -10:00
Jack Andersen
89daac544f
CTextParser imps
2016-03-20 14:25:53 -10:00
Jack Andersen
18e0e208a7
Various Invoke imps
2016-03-19 20:37:08 -10:00
Jack Andersen
7835769a98
CTextExecuteBuffer imps
2016-03-19 14:32:30 -10:00
Jack Andersen
5a4033e925
More field discoveries and imps
2016-03-18 17:58:01 -10:00
Jack Andersen
ee534de7be
Various stubs and imps
2016-03-18 14:07:31 -10:00
Jack Andersen
ad577754c4
CGuiTextSupport declarations
2016-03-17 17:35:16 -10:00
Jack Andersen
a5e3440866
Merge branch 'master' of https://github.com/AxioDL/urde
2016-03-17 16:46:10 -10:00
Jack Andersen
a9826de57f
CGuiVirtualBox imps
2016-03-17 16:45:45 -10:00
Phillip Stephens
72d96d18db
Merge branch 'master' of https://github.com/AxioDL/urde
2016-03-17 19:24:47 -07:00
Phillip Stephens
c0afcc2a22
CRasterFont fixes
2016-03-17 19:22:19 -07:00
Jack Andersen
7c7140cffd
Merge branch 'master' of https://github.com/AxioDL/urde
2016-03-17 12:20:06 -10:00
Jack Andersen
5b6333fb60
More widget imps
2016-03-17 12:19:25 -10:00
Phillip Stephens
b989c8efd1
Remove extraneous variable
2016-03-17 13:26:25 -07:00
Phillip Stephens
2528a366f3
Finalize CRasterFont reimp
2016-03-17 13:21:08 -07:00