Sagar Dhawan
1d0608200c
Restore blob size fix ( #5516 )
...
* Revert "Revert "Fix gossip messages growing beyond blob size (#5460 )" (#5512 )"
This reverts commit 97d57d168b
.
* Fix Crds filters
2019-08-13 18:04:14 -07:00
carllin
cd14a940d8
Allow process_blocktree() to start processing from any root ( #5484 )
...
* Remove unnecessary entry_height from BankInfo
* Refactor process_blocktree to support process_blocktree_from_root
* Refactor to process blocktree after loading from snapshot
* On restart make sure bank_forks contains all the banks between the root and the tip of each fork, not just the head of each fork
* Account for 1 tick_per_slot in bank 0 so that blockhash of bank0 matches the tick
2019-08-13 17:20:14 -07:00
carllin
58d4e32c97
Remove serialization of future AppendVecs and serialize AccountStorage correctly ( #5510 )
2019-08-13 16:05:37 -07:00
Sagar Dhawan
97d57d168b
Revert "Fix gossip messages growing beyond blob size ( #5460 )" ( #5512 )
...
This reverts commit a8eb0409b7
.
2019-08-13 10:29:26 -07:00
Rob Walker
07d11be6ab
add global stake warmup ( #5483 )
...
* add global stake warmup
* integrate stake history into runtime
* fixup core tests
* fixup
* remove existing cooldown tests for now
2019-08-12 20:59:57 -07:00
Greg Fitzgerald
a43922ccbf
Boot hashbrown ( #5505 )
...
As of Rust 1.36.0, hashbrown now implements the HashMap in std (which
implements HashSet).
https://blog.rust-lang.org/2019/07/04/Rust-1.36.0.html#a-new-hashmapk,-v%3E-implementation
2019-08-12 16:46:49 -06:00
Justin Starry
0fde19239b
Rate limit counter metrics points to one per second ( #5496 )
...
* Rate limit counter metrics points to one per second
* Remove old env var
* Test that metrics counter is incrementing
* Fix typo
2019-08-12 18:15:34 -04:00
dependabot-preview[bot]
771d1a78fd
Bump libc from 0.2.60 to 0.2.61 ( #5491 )
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.60 to 0.2.61.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.60...0.2.61 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-12 15:39:26 -06:00
Sagar Dhawan
a8eb0409b7
Fix gossip messages growing beyond blob size ( #5460 )
...
* fixed bloom filter math
* Add split each pull request into multiple pulls with different filters
* Rework CrdsFilter to generate all possible masks to cover the keyspace
* Limit the bloom sizes such that each pull request is no larger than mtu
2019-08-12 13:51:29 -07:00
Rob Walker
ed093f86f9
harmonize percentage members ( #5459 )
...
* harmonize percentage members
* update tests
* update capitalization when burning fees
* verify capitalization in fee burn
* fixup
2019-08-09 13:58:46 -07:00
Justin Starry
4f86c0b74a
Rate limit transaction counters ( #5447 )
...
* Rate limit transaction counters
* @sakridge feedback
* Set default high metrics rate for multinode demo
* Fix tests
* Swap defaults and fix env var tests
* Only set metrics rate if not already set
2019-08-08 17:05:06 -04:00
sakridge
e30ca01999
Only create more append_vecs when the account number grows ( #5454 )
...
We only need many append_vecs if the number of accounts is high,
so only create opportunistic ones as accounts are created.
2019-08-07 16:43:52 -07:00
dependabot-preview[bot]
be9fa22db7
Bump hashbrown from 0.3.1 to 0.5.0 ( #5450 )
...
Bumps [hashbrown](https://github.com/rust-lang/hashbrown ) from 0.3.1 to 0.5.0.
- [Release notes](https://github.com/rust-lang/hashbrown/releases )
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.3.1...v0.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-07 08:35:54 -06:00
Sagar Dhawan
9dcf3347f5
Refactor status cache and remove complex serialize/deserialize ( #5335 )
...
automerge
2019-08-06 18:47:30 -07:00
dependabot-preview[bot]
3ae9357a36
Bump hashbrown from 0.2.2 to 0.3.1 ( #5381 )
...
Bumps [hashbrown](https://github.com/rust-lang/hashbrown ) from 0.2.2 to 0.3.1.
- [Release notes](https://github.com/rust-lang/hashbrown/releases )
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.2.2...v0.3.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-06 10:16:18 -06:00
carllin
1dbb5c8647
Deserialize snapshots ( #5417 )
...
* Deserialize snapshots
2019-08-05 22:53:19 -07:00
Michael Vines
dd4640e1ed
Revert "Revert "Bump version to 0.18.0-pre1""
...
This reverts commit 42c7d57fc0
.
2019-08-05 15:55:13 -07:00
Michael Vines
42c7d57fc0
Revert "Bump version to 0.18.0-pre1"
...
This reverts commit 14f6d5c82b
.
2019-08-05 15:53:55 -07:00
Michael Vines
14f6d5c82b
Bump version to 0.18.0-pre1
2019-08-05 15:11:44 -07:00
sakridge
832dfd4ab0
Change bank to not create default ( #5409 )
2019-08-02 14:46:53 -07:00
dependabot-preview[bot]
f03e066ec5
Bump log from 0.4.7 to 0.4.8 ( #5382 )
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.7 to 0.4.8.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang-nursery/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-01 14:31:18 -07:00
Rob Walker
f7d3f55566
fix epoch_stakes again ( #5396 )
2019-08-01 14:27:47 -07:00
carllin
6cb2040a1b
Snapshot Packaging Service ( #5262 )
...
* Snapshot serialization and packaging
2019-07-31 17:58:10 -07:00
sakridge
c2fc0f2418
Plumb libra accounts to genesis ( #5333 )
...
* Plumb move_loader to genesis
* Remove core dependency on genesis-programs
2019-07-31 16:10:55 -07:00
Rob Walker
9278201198
fix epoch_stakes ( #5355 )
...
* fix epoch_stakes
* fix stake_state to use stakers_epoch
* don't allow withdrawal before deactivation
2019-07-31 15:13:26 -07:00
Jack May
d09afdbefe
Synchronize and cleanup instruction processor lists ( #5356 )
2019-07-31 14:28:14 -07:00
dependabot-preview[bot]
af733a678a
Bump serde_derive from 1.0.97 to 1.0.98 ( #5314 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.97 to 1.0.98.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.97...v1.0.98 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-30 21:45:34 -07:00
dependabot-preview[bot]
b7e08052ae
Bump serde from 1.0.97 to 1.0.98 ( #5315 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.97 to 1.0.98.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.97...v1.0.98 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-30 19:46:50 -07:00
sakridge
8d243221f0
Ignore flaky local cluster tests ( #5347 )
...
* Add logging to local_cluster tests
* Ignore flaky test_leader_failure_4, test_repairman_catchup
And crashing banking benchmarks.
2019-07-30 13:48:46 -07:00
Justin Starry
84368697af
Fix metrics when leader does not report metrics ( #5291 )
2019-07-30 16:18:33 -04:00
Rob Walker
4a57cd3300
Update bank.rs
2019-07-30 11:33:06 -07:00
Rob Walker
50a991fdf9
add executable checks to verify_instruction ( #5326 )
2019-07-29 15:29:20 -07:00
sakridge
c209718a6f
Add libray_api ( #5304 )
...
Simple move-based payment api
2019-07-27 12:11:51 -07:00
Dan Albert
b8835312bb
Update cargo.toml files to 0.18.0-pre0 ( #5303 )
2019-07-27 11:42:06 -06:00
dependabot-preview[bot]
349ebec629
Bump serde from 1.0.94 to 1.0.97 ( #5285 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.94 to 1.0.97.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.94...v1.0.97 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-26 07:22:25 -06:00
Rob Walker
8537da19bb
groom accounts_db ( #5283 )
2019-07-25 22:59:28 -07:00
Sagar Dhawan
a233a1c822
Fix poh recorder not flushing virtual ticks immediately ( #5277 )
...
* Fix poh not flushing virtual ticks immediately
* Fix test_would_be_leader_soon
2019-07-25 11:08:44 -07:00
dependabot-preview[bot]
7ee8383e02
Bump serde_derive from 1.0.94 to 1.0.97 ( #5279 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.94 to 1.0.97.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.94...v1.0.97 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-25 06:47:24 -06:00
Rob Walker
8a12ed029c
make accounts_db own the directory paths ( #5230 )
...
* change paths to something accounts_db (the singleton) owns, fixes SIGILL
* fail deserialize if paths don't work
serialize paths, too
* test that paths are populated from a bank snapshot
2019-07-23 13:47:48 -07:00
sakridge
264a3d7dde
Increase ticks_per_slot for banking benchmark ( #5221 )
2019-07-22 13:57:28 -07:00
sakridge
595017499e
accounts_index: RwLock per-account ( #5198 )
...
* accounts_index: RwLock per-account
Lots of lock contention on the accounts_index lock,
only take write-lock on accounts_index if we need to insert/remove an
account.
For updates, take a read-lock and then write-lock on the individual
account.
* Remove unneeded enumerate and add comments.
2019-07-20 17:58:39 -07:00
Trent Nelson
111d0eb89b
runtime: Add bench for accounts::hash_internal_state ( #5157 )
...
* runtime: Add bench for accounts::hash_internal_state
* fixup! cargo fmt
* fixup! cargo clippy
* fixup! Use a more representitive number of accounts
* fixup! More descriptive name for accounts creation helper
2019-07-19 10:32:29 -06:00
Rob Walker
d47caf2af8
add information to panic ( #5177 )
2019-07-18 14:41:32 -07:00
Rob Walker
027ebb6670
no more OUT_DIR ( #5139 )
...
* no more OUT_DIR
* no more OUT_DIR
* more information about failure
2019-07-17 14:27:58 -07:00
dependabot-preview[bot]
7aad427511
Bump libloading from 0.5.1 to 0.5.2 ( #4950 )
...
Bumps [libloading](https://github.com/nagisa/rust_libloading ) from 0.5.1 to 0.5.2.
- [Release notes](https://github.com/nagisa/rust_libloading/releases )
- [Commits](https://github.com/nagisa/rust_libloading/compare/0.5.1...0.5.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-17 09:29:45 -06:00
dependabot-preview[bot]
bbd0455418
Bump log from 0.4.6 to 0.4.7 ( #5144 )
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.6 to 0.4.7.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang-nursery/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.6...0.4.7 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-17 09:25:57 -06:00
sakridge
b505a0df22
Throw more threads at hash_internal_state ( #5023 )
2019-07-16 16:58:30 -07:00
Greg Fitzgerald
77ea8b9b3e
Add LoaderInstruction::InvokeMain ( #5116 )
...
* Remove unreachable, untested runtime check
* tx_data -> ix_data
* Add LoaderInstruction::InvokeMain
* Add test and allow loaders to be registered statically.
* Fix clippy error
2019-07-16 10:45:32 -06:00
Rob Walker
fe87c05423
fix transaction_count ( #5110 )
...
* fix transaction_count
* add sig count to bank hash
2019-07-15 13:42:59 -07:00
Greg Fitzgerald
04649de6a6
Boot remote native loads, take 2 ( #5106 )
...
* Drop dependencies on remote native loads
* Remove remote native loads
2019-07-15 13:16:09 -06:00
Rob Walker
16b6576839
use precalculated max_tick_height ( #5084 )
2019-07-12 22:25:48 -07:00
Rob Walker
0d27515d09
tmp dirs target to farf ( #5079 )
2019-07-12 18:28:42 -07:00
Rob Walker
d2b6c2e0ce
syscall work, rename syscall to sysvar, rename current to clock ( #5074 )
...
* syscall work, rename syscall to sysvar, rename current to clock
* missed one
* nit
2019-07-12 16:38:15 -07:00
carllin
22315d88e7
Fix credit only commit_credits race ( #5028 )
...
* Fix credit only drain race
* Refactor commit credits for tests
* Fix tests to use commit_credits_unsafe
2019-07-11 18:46:49 -07:00
Tyera Eulberg
b2c776eabc
Fix getProgramAccounts RPC ( #5024 )
...
* Use scan_accounts to load accounts by program_id
* Add bank test
* Use get_program_accounts in RPC
2019-07-11 12:58:28 -06:00
Tyera Eulberg
08f6de0acd
Plumb scan_accounts into accounts_db, adding load from storage ( #5029 )
2019-07-11 12:16:02 -06:00
Rob Walker
2abbc89dcd
add accounts_index_scan_accounts ( #5020 )
2019-07-10 22:06:32 -07:00
Rob Walker
8cad992170
reduce replicode in accounts, fix cast to i64 ( #5025 )
2019-07-10 21:22:58 -07:00
Rob Walker
727c15ef8a
start from random point in fork stores ( #5010 )
2019-07-10 18:44:49 -07:00
Sagar Dhawan
b8e7736af2
Move SLOTS_PER_SEGMENT to genesis ( #4992 )
...
automerge
2019-07-09 16:48:40 -07:00
Rob Walker
49250f62aa
make commit_credits one trip through the rwlock ( #4969 )
2019-07-08 20:46:21 -07:00
Rob Walker
eb4edd75e6
make bank commit_credits non public ( #4944 )
...
* make bank commit_credits non pub
* track down create() failure
* move bank_client to process_transaction(), which commits credits
2019-07-08 15:37:54 -07:00
dependabot-preview[bot]
db13b52e6a
Bump serde_json from 1.0.39 to 1.0.40 ( #4881 )
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.39 to 1.0.40.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.39...v1.0.40 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-03 16:15:56 -06:00
Pankaj Garg
f551b34725
Fix issue in polling for transaction signatures ( #4923 )
...
- Specifically if multiple confirmation for the signature is requested
2019-07-02 20:56:10 -07:00
TristanDebrunner
091999a17e
fix Instruction and CompiledInstruction field names ( #4895 )
...
* s/program_ids_index/program_id for Instruction
* s/program_ids_index/program_id_index for CompiledInstruction
2019-07-01 18:34:22 -06:00
carllin
0c8f187993
remove syscall tick height ( #4891 )
2019-07-01 16:21:51 -07:00
sakridge
a89589a1d5
Add Measure abstraction over measuring time intervals ( #4851 )
...
Allows one to swap in different implementations. This provides
the normal Insant::now() -> .elapsed() path.
2019-06-29 15:34:49 +02:00
dependabot-preview[bot]
f0191a98ab
Bump serde from 1.0.93 to 1.0.94 ( #4864 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.93...v1.0.94 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-28 15:07:16 -07:00
Tyera Eulberg
66552d7047
Credit-Only Accounts: Cache account balance for thread-safe load/store ( #4691 )
...
* Implement CreditOnlyLocks
* Update credit-only atomic on account load
* Update credit-only atomic after bank.freeze_lock; store credits if all credit-only lock references are dropped
* Commit credit-only credits on bank freeze
* Update core to CreditAccountLocks
* Impl credit-only in System Transfer
* Rework CreditAccountLocks, test, and fix bugs
* Review comments: Pass CreditAccountLocks by reference; Tighten up insert block
* Only store credits on completed slot
* Check balance in bench_exchange funding to ensure commit_credits has completed
* Add is_debitable info to KeyedAccount meta to pass into programs
* Reinstate CreditOnlyLocks check on lock_account
* Rework CreditAccountLocks to remove strong_count usage
* Add multi-threaded credit-only locks test
* Improve RwLocks usage
* Review comments: panic if bad things happen; tighter code
* Assert lock_accounts race does not happen
* Revert panic if bad things happen; not a bad thing
2019-06-27 17:25:10 -04:00
dependabot-preview[bot]
979df17328
Bump serde_derive from 1.0.93 to 1.0.94 ( #4856 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.93 to 1.0.94.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.93...v1.0.94 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-27 13:18:19 -07:00
carllin
97c97db97e
Fix early exit clearing all buffered packets ( #4810 )
2019-06-26 22:39:50 -07:00
Sagar Dhawan
8cea650535
Handle NaN and inifinite point values ( #4839 )
2019-06-26 18:33:52 -07:00
Sagar Dhawan
df1c473341
Add storage point tracking and tie in storage rewards to economics ( #4824 )
...
* Add storage point tracking and tie in storage rewards to epochs and economics
* Prevent validators from updating their validations for a segment
* Fix test
* Retain syscall scoping for readability
* Update Credits to own epoch tracking
2019-06-26 10:40:03 -07:00
Rob Walker
8a64e1ddc3
add fee burning ( #4818 )
2019-06-26 10:13:21 -07:00
Sathish
1f950781c2
Use temp path for append_vec tests ( #4765 )
...
* Use temp path for serialize test
* set account path
2019-06-25 16:11:57 -07:00
Sathish
9e7f618cff
Set proper count value for account stores ( #4797 )
...
* set count values for store accounts
* Use AppendVecId type
2019-06-25 07:21:45 -07:00
Rob Walker
70f93cc126
remove mining_pool from stake_state ( #4804 )
2019-06-24 16:01:02 -07:00
anatoly yakovenko
29611fb61d
tower consensus naming ( #4598 )
...
s/locktower/tower/g
2019-06-24 13:41:23 -07:00
dependabot-preview[bot]
4e78354ab6
Bump serde_derive from 1.0.92 to 1.0.93 ( #4790 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.92...v1.0.93 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-23 20:23:41 -07:00
dependabot-preview[bot]
0e1480b84e
Bump serde from 1.0.92 to 1.0.93 ( #4791 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.92 to 1.0.93.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.92...v1.0.93 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-23 17:23:41 -07:00
Sagar Dhawan
11992946a4
Add storage reward pools ( #4779 )
2019-06-22 17:18:35 -07:00
Dan Albert
9911942dbd
Increment cargo.toml files to v0.17.0
2019-06-22 04:35:25 +00:00
Rob Walker
a49f5378e2
rewrite vote credits redemption to eat from rewards_pools on an epoch-sensitive basis ( #4775 )
...
* move redemption to rewards pools
* rewrite redemption, touch a few other things
* re-establish test coverage
2019-06-21 20:43:24 -07:00
dependabot-preview[bot]
deb83cdef6
Bump rayon from 1.0.3 to 1.1.0 ( #4729 )
...
automerge
2019-06-21 09:32:41 -07:00
Rob Walker
1f0f947ed2
add validator rewards pools ( #4742 )
...
* add validator rewards pools
* populate rewards syscall
2019-06-20 12:22:29 -07:00
Sathish
48b11d1841
Initialize paths for non existent accounts ( #4744 )
2019-06-19 23:15:22 -07:00
Rob Walker
7ea522e851
add rewards syscall, groom some others ( #4740 )
2019-06-19 19:46:47 -07:00
Rob Walker
41fbdc6e08
use stake ( #4721 )
2019-06-19 11:54:52 -07:00
Sathish Ambley
2562e48b9d
Check for non zero count value
2019-06-19 08:47:12 -07:00
Sathish Ambley
44967abd1c
update storage len
2019-06-17 22:48:27 -07:00
Sathish Ambley
8b41a5d725
periodically save config in separate folders
2019-06-17 22:48:27 -07:00
Sathish Ambley
07c183bb84
Fix test
2019-06-17 22:48:27 -07:00
Sathish Ambley
7fd879b417
Restart validator nodes from snapshots
2019-06-17 22:48:27 -07:00
Sathish Ambley
dc5c6e7cf8
validator restart
2019-06-17 22:48:27 -07:00
Rob Walker
0ff9c4cd8e
add stake warmup and cool down ( #4711 )
2019-06-17 19:34:21 -07:00
Rob Walker
d86358eedc
add Account::new_data ( #4701 )
...
* add account_new_data
* fixup
* fixup
2019-06-17 15:58:05 -07:00
Rob Walker
3fe5f886d7
change store to store_account ( #4689 )
2019-06-14 13:34:15 -07:00
Rob Walker
4c6a6d63bf
add MiningPools, fund validator MiningPools from inflation ( #4676 )
...
* add MiningPool fund validator MinigPools from inflation
* fixup
* finish rename of MINIMUM_SLOT_LENGTH to MINIMUM_SLOTS_PER_EPOCH
* deterministic miningpool location
* point_value, not credit_value... use f64
2019-06-14 11:38:37 -07:00
Sagar Dhawan
119467df59
Add storage mining pool to genesis and implement automatic reward redeeming ( #4683 )
...
* Add storage mining pool to genesis and implement automatic reward collection
* Address review comments
2019-06-13 22:30:51 -07:00
Greg Fitzgerald
c6b4a3a706
Witness account data in Budget ( #4650 )
...
* Add support for contracts based on account data to Budget
* Add program_id to account constraints
* No longer require a signature for the account data witness
* Rename bank::store to store_account
* fmt
* Add a doc
* clippy
2019-06-13 18:20:28 -07:00