Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | For the content repo, don't just use homeserver.hostname as that might not ↵ | Erik Johnston | 2014-08-24 | 2 | -1/+10 |
| | | | | include the port due to SRV. | ||||
* | Add a unique constraint on the room hosts table | Erik Johnston | 2014-08-24 | 1 | -1/+2 |
| | |||||
* | Encode unicode from json as utf-8. This was required to allow people to ↵ | Erik Johnston | 2014-08-24 | 1 | -2/+2 |
| | | | | register on my laptop | ||||
* | Oops, we need to use defer.returnValue. | Erik Johnston | 2014-08-22 | 1 | -1/+2 |
| | |||||
* | Make is_presence_visible always return true as it was thrashing the database. | Erik Johnston | 2014-08-22 | 1 | -0/+3 |
| | |||||
* | Turn off more spammy logging. | Erik Johnston | 2014-08-22 | 1 | -1/+1 |
| | |||||
* | Turn off spammy logging | Erik Johnston | 2014-08-22 | 1 | -1/+1 |
| | |||||
* | Add indices to schema | Erik Johnston | 2014-08-22 | 2 | -0/+24 |
| | |||||
* | Don't return state event outlier's when paginating. | Erik Johnston | 2014-08-22 | 3 | -2/+9 |
| | |||||
* | Bump versions to 0.0.1 | Erik Johnston | 2014-08-22 | 1 | -0/+2 |
| | |||||
* | Make the content repo work with in daemon mode. Return the full url on ↵ | Erik Johnston | 2014-08-22 | 2 | -8/+23 |
| | | | | upload. Update the webclient to use new content repo api. | ||||
* | host a webclient by default | Matthew Hodgson | 2014-08-21 | 1 | -2/+2 |
| | |||||
* | Add ts field to all events. | Erik Johnston | 2014-08-21 | 2 | -2/+7 |
| | |||||
* | Change IM sync api to also return the current presence list. | Erik Johnston | 2014-08-21 | 2 | -6/+23 |
| | |||||
* | In the initial sync api, return the inviter for rooms in the 'invited' state | Erik Johnston | 2014-08-21 | 1 | -0/+4 |
| | |||||
* | Return the current state in the initial sync api. | Erik Johnston | 2014-08-21 | 1 | -0/+3 |
| | |||||
* | Stop internal keys from getting into SynapseEvents | Erik Johnston | 2014-08-21 | 2 | -0/+6 |
| | |||||
* | Wait for getting a Join in response to an invite/join dance. | Erik Johnston | 2014-08-21 | 2 | -2/+28 |
| | |||||
* | Make event stream storage return all membership events about the user, ↵ | Erik Johnston | 2014-08-20 | 1 | -4/+6 |
| | | | | regardless of if they were in the room or not. | ||||
* | Use the "collect_presencelike_data" distributor signal instead of ↵ | Paul "LeoNerd" Evans | 2014-08-20 | 1 | -30/+2 |
| | | | | re-implementing its behaviour | ||||
* | Fix exception name in _fill_out_join_content() exception | Paul "LeoNerd" Evans | 2014-08-20 | 1 | -1/+3 |
| | |||||
* | Define __copy__ and __deepcopy__ as identity functions on ↵ | Paul "LeoNerd" Evans | 2014-08-20 | 1 | -0/+8 |
| | | | | DomainSpecificString, so that copy.deepcopy() will work on them | ||||
* | Kill the "_homeserver_" injected messages for room membership changes | Paul "LeoNerd" Evans | 2014-08-20 | 2 | -58/+6 |
| | |||||
* | Give the event_id of the failed event | Erik Johnston | 2014-08-20 | 1 | -1/+4 |
| | |||||
* | Better handle the edge cases of trying to remote join rooms | Erik Johnston | 2014-08-20 | 2 | -37/+88 |
| | |||||
* | Don't generate room membership messages. Include previous state of in ↵ | Erik Johnston | 2014-08-20 | 1 | -7/+10 |
| | | | | membership messages. | ||||
* | Only hit get_room_events_stream if we have a valid user_id | Erik Johnston | 2014-08-19 | 1 | -0/+3 |
| | |||||
* | Fix token to correct format | Erik Johnston | 2014-08-19 | 1 | -1/+1 |
| | |||||
* | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-19 | 1 | -3/+0 |
|\ | |||||
| * | Don't delete OFFLINE users from the presence cache, so we can report on ↵ | Paul "LeoNerd" Evans | 2014-08-19 | 1 | -3/+0 |
| | | | | | | | | their offline mtime | ||||
* | | Remove debug logging from token parsing funcs. | Erik Johnston | 2014-08-19 | 1 | -2/+0 |
| | | |||||
* | | Add comment about what strorage.stream does | Erik Johnston | 2014-08-19 | 1 | -0/+20 |
| | | |||||
* | | Default from param to 'END' | Erik Johnston | 2014-08-19 | 1 | -0/+1 |
| | | |||||
* | | PresenceStreamData was expecting *_key to be ints | Erik Johnston | 2014-08-19 | 1 | -0/+3 |
| | | |||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-19 | 8 | -18/+194 |
|\| | | | | | | | | | | | | | Conflicts: tests/rest/test_presence.py tests/rest/test_rooms.py tests/utils.py | ||||
| * | Ensure that federation's .send_edu() returns a Deferred | Paul "LeoNerd" Evans | 2014-08-19 | 1 | -0/+1 |
| | | |||||
| * | More unquotes. Also, don't return the room_id on membership state changes, ↵ | Kegan Dougal | 2014-08-19 | 1 | -6/+8 |
| | | | | | | | | they already know it. | ||||
| * | Unquote sender IDs. | Kegan Dougal | 2014-08-19 | 1 | -2/+2 |
| | | |||||
| * | Perform the 'REST'-level tests of Presence against the real Presence handler ↵ | Paul "LeoNerd" Evans | 2014-08-19 | 1 | -1/+1 |
| | | | | | | | | as well, mocking out the datastore beneath it | ||||
| * | Implement and test presence dropping of remote users | Paul "LeoNerd" Evans | 2014-08-19 | 1 | -2/+6 |
| | | |||||
| * | Deny __iter__ on UserID/RoomID/RoomName instances as it's a subtle bug that ↵ | Paul "LeoNerd" Evans | 2014-08-19 | 1 | -0/+6 |
| | | | | | | | | will bite you | ||||
| * | Reduce the amount of incredibly spammy stack traces. Expected errors (e.g. ↵ | Kegan Dougal | 2014-08-19 | 1 | -1/+13 |
| | | | | | | | | SynapseErrors) shouldn't have their full trace logged every time. Don't send responses to disconnected requests. | ||||
| * | Small amounts of cleanup and bonus round comments. | Kegan Dougal | 2014-08-18 | 1 | -4/+8 |
| | | |||||
| * | Implemented GETs for the ContentRepoResource. It all actually appears to be ↵ | Kegan Dougal | 2014-08-18 | 2 | -13/+62 |
| | | | | | | | | working. | ||||
| * | hs: Make the uploads directory if it doesn't exist. Namespace uploads by the ↵ | Kegan Dougal | 2014-08-18 | 1 | -5/+46 |
| | | | | | | | | base64 encoded user id of the uploader. Make a reasonable attempt to retry clashing upload paths. Try to guess a sensible file extension depending on the content type. | ||||
| * | Auth content uploads. Added a mapping function from request > filename. ↵ | Kegan Dougal | 2014-08-18 | 2 | -13/+33 |
| | | | | | | | | Added exception handling for content uploads. webclient: Only prefix the client API path on doRequest, not doBaseRequest (this would've broken the identity server auth too). Added matrixService.uploadContent. May not require mFileUpload anymore. | ||||
| * | Added /matrix/content path, HS resource_for_content_repo attribute and ↵ | Kegan Dougal | 2014-08-18 | 4 | -4/+41 |
| | | | | | | | | FileUploadResource. Added stub methods. | ||||
* | | Fix bug where we sometimes set min_token to None. | Erik Johnston | 2014-08-19 | 1 | -1/+2 |
| | | |||||
* | | Print out stacktrace when we failed to persist event. | Erik Johnston | 2014-08-19 | 1 | -1/+1 |
| | | |||||
* | | Add a 'backfill room' button | Erik Johnston | 2014-08-19 | 6 | -25/+81 |
| | | |||||
* | | Change the way pagination works to support out of order events. | Erik Johnston | 2014-08-19 | 6 | -79/+225 |
| | | |||||
* | | Fix typos in SQL and where we still had rowid's (which no longer exist) | Erik Johnston | 2014-08-18 | 2 | -7/+7 |
| | | |||||
* | | Make snapshot_all_rooms return results in the correct form, including start ↵ | Erik Johnston | 2014-08-18 | 2 | -6/+28 |
| | | | | | | | | and end tokens. | ||||
* | | SQL doesn't allow AUTOINCREMENT on non PRIMARY KEY columns. | Erik Johnston | 2014-08-18 | 2 | -3/+20 |
| | | |||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-18 | 3 | -12/+14 |
|\| | |||||
| * | Update the default longpoll timeout time. | Kegan Dougal | 2014-08-18 | 1 | -1/+1 |
| | | |||||
| * | Allow room presence visibility between users who share a room | Paul "LeoNerd" Evans | 2014-08-18 | 1 | -7/+5 |
| | | |||||
| * | Precent lack of presence visiblity from causing room /members/list to fail | Paul "LeoNerd" Evans | 2014-08-18 | 1 | -4/+8 |
| | | |||||
* | | Add two different columns for ordering the events table, one which can be ↵ | Erik Johnston | 2014-08-18 | 4 | -19/+33 |
| | | | | | | | | used for pagination and one which can be as tokens for notifying clients. Also add a 'processed' field which is currently always set to True | ||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-18 | 2 | -2/+8 |
|\| | |||||
| * | improve comment | Matthew Hodgson | 2014-08-16 | 1 | -1/+1 |
| | | |||||
| * | emergency bodges to turn off presence ACLs in order to make | Matthew Hodgson | 2014-08-16 | 1 | -2/+7 |
| | | | | | | | | matrix.org:8080 actually work | ||||
| * | retcols is mandatory. i have no idea how this could ever have worked? | Matthew Hodgson | 2014-08-16 | 1 | -0/+1 |
| | | |||||
* | | Not all event streams returns SynapseEvents | Erik Johnston | 2014-08-18 | 1 | -1/+5 |
| | | |||||
* | | We don't need to do a json.loads here | Erik Johnston | 2014-08-18 | 1 | -2/+2 |
| | | |||||
* | | Ensure we have a 'membership' key in RoomMemberEvents | Erik Johnston | 2014-08-18 | 1 | -0/+2 |
| | | |||||
* | | Disable the ability to GET individualy messages. We need to think about the ↵ | Erik Johnston | 2014-08-18 | 1 | -5/+7 |
| | | | | | | | | correct API to do this, as the current one doesn't make much sense. | ||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-15 | 1 | -3/+12 |
|\| | |||||
| * | When starting to poll for presence, also include members of all shared rooms | Paul "LeoNerd" Evans | 2014-08-15 | 1 | -3/+12 |
| | | |||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-15 | 1 | -0/+7 |
|\| | |||||
| * | Also include users' presence when responding to /rooms/:room_id/members/list | Paul "LeoNerd" Evans | 2014-08-15 | 1 | -0/+7 |
| | | |||||
| * | Fix imsync's SELECT query to only find the rooms I'm actually joined in, not ↵ | Paul "LeoNerd" Evans | 2014-08-15 | 1 | -2/+5 |
| | | | | | | | | every room I have ever joined | ||||
* | | Rename method name to not clash with other ones in storage. | Erik Johnston | 2014-08-15 | 2 | -4/+4 |
| | | |||||
* | | Fix typo of key name | Erik Johnston | 2014-08-15 | 1 | -1/+1 |
| | | |||||
* | | We no longer need to special case room config events. | Erik Johnston | 2014-08-15 | 1 | -2/+2 |
| | | |||||
* | | PEP8 cleanups | Erik Johnston | 2014-08-15 | 7 | -16/+29 |
| | | |||||
* | | Comment. | Erik Johnston | 2014-08-15 | 1 | -0/+1 |
| | | |||||
* | | Support generic events. | Erik Johnston | 2014-08-15 | 2 | -5/+8 |
| | | |||||
* | | Fix bug when generating a key when get_room_events_stream returned zero rows | Erik Johnston | 2014-08-15 | 1 | -3/+7 |
| | | |||||
* | | Actually use MAX_STREAM_SIZE constant. | Erik Johnston | 2014-08-15 | 1 | -1/+1 |
| | | |||||
* | | Fix pagination to work with new db schema | Erik Johnston | 2014-08-15 | 2 | -31/+48 |
| | | |||||
* | | Correctly return new token when returning events. Serialize events correctly. | Erik Johnston | 2014-08-15 | 5 | -9/+25 |
| | | |||||
* | | Start chagning the events stream to work with the new DB schema | Erik Johnston | 2014-08-15 | 8 | -118/+102 |
| | | |||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-15 | 20 | -107/+235 |
|\| | | | | | | | | | Conflicts: synapse/storage/stream.py | ||||
| * | Add a check to make sure that during state conflict res we only request a ↵ | Erik Johnston | 2014-08-15 | 1 | -2/+10 |
| | | | | | | | | PDU we don't have. | ||||
| * | Fix pontenial bug in state resolution handler that compared dicts rather ↵ | Erik Johnston | 2014-08-15 | 1 | -1/+4 |
| | | | | | | | | than their id's | ||||
| * | Remember to reflect membership LEAVE events to the leaving member so they ↵ | Paul "LeoNerd" Evans | 2014-08-15 | 1 | -0/+4 |
| | | | | | | | | know it happened | ||||
| * | Pass back the user_id in the response to /login in case it has changed. ↵ | Kegan Dougal | 2014-08-14 | 2 | -5/+7 |
| | | | | | | | | Store and use that on the webclient rather than the input field. | ||||
| * | hs: Make /login accept full user IDs or just local parts. webclient: Only ↵ | Kegan Dougal | 2014-08-14 | 1 | -1/+5 |
| | | | | | | | | enable Register button when both password fields match. | ||||
| * | Reflect user's messages up to themselves before pushing it to federatoin; ↵ | Paul "LeoNerd" Evans | 2014-08-14 | 1 | -2/+2 |
| | | | | | | | | also release roomlock before touching federation so we don't halt progress on the world | ||||
| * | We really don't need debug logging of all the SQL statements we execute; ↵ | Paul "LeoNerd" Evans | 2014-08-14 | 1 | -4/+0 |
| | | | | | | | | we're quite happy these all work now | ||||
| * | Put some DEBUG logging in lockutils.py so we can debug roomlocks | Paul "LeoNerd" Evans | 2014-08-14 | 1 | -3/+9 |
| | | |||||
| * | Be more helpful when failing to register/login, stating why (communication ↵ | Kegan Dougal | 2014-08-14 | 1 | -2/+2 |
| | | | | | | | | error, user in user, wrong credentials, etc). Make the HS send M_USER_IN_USE. | ||||
| * | Send forbidden codes when doing login attempts. | Kegan Dougal | 2014-08-14 | 1 | -3/+3 |
| | | |||||
| * | Round Presence mtime and mtime_age to nearest msec; avoids floats for msec ↵ | Paul "LeoNerd" Evans | 2014-08-14 | 1 | -5/+15 |
| | | | | | | | | values over the wire | ||||
| * | Change relative db paths to absolute paths in case we daemonize. | Erik Johnston | 2014-08-14 | 1 | -2/+9 |
| | | |||||
| * | chmod +x homeserver.py | Paul "LeoNerd" Evans | 2014-08-14 | 1 | -0/+0 |
| | | |||||
| * | Added M_UNKNOWN_TOKEN error code and send it when there is an unrecognised ↵ | Kegan Dougal | 2014-08-14 | 2 | -2/+4 |
| | | | | | | | | access_token | ||||
| * | Default error code BAD_PAGINATION for EventStreamErrors | Kegan Dougal | 2014-08-14 | 1 | -1/+4 |
| | | |||||
| * | Added web client prefix | Kegan Dougal | 2014-08-14 | 2 | -4/+5 |
| | | |||||
| * | Added a urls module for keeping client and federation prefixes. | Kegan Dougal | 2014-08-14 | 5 | -14/+23 |
| | | |||||
| * | If the web client is enabled, automatically redirect root '/' to the web ↵ | Kegan Dougal | 2014-08-14 | 2 | -4/+30 |
| | | | | | | | | client path. | ||||
| * | Fixed dynamic resource mapping to clobber dummy Resources with the actual ↵ | Kegan Dougal | 2014-08-14 | 1 | -5/+27 |
| | | | | | | | | desired Resource in the event of a collision (as is the case for '/matrix/client' and '/matrix/client/api/v1') | ||||
| * | Honour the -w flag to enable the web client at /matrix/client | Kegan Dougal | 2014-08-14 | 1 | -5/+8 |
| | | |||||
| * | Removed http_server from HomeServer. Updated unit tests to use either ↵ | Kegan Dougal | 2014-08-14 | 3 | -14/+7 |
| | | | | | | | | resource_for_federation or resource_for_client depending on what is being tested. | ||||
| * | Make federation use resource_for_federation as well. | Kegan Dougal | 2014-08-14 | 4 | -49/+5 |
| | | |||||
| * | Start phasing out HttpServer: we should be using Resources instead. Added ↵ | Kegan Dougal | 2014-08-14 | 5 | -21/+97 |
| | | | | | | | | resource_for_client/federation/web_client to the HomeServer and hooked the C-S servlets to operate on resource_for_client. Dynamically construct the Resource tree. | ||||
* | | Reimplement the get public rooms api to work with new DB schema | Erik Johnston | 2014-08-15 | 7 | -37/+101 |
| | | |||||
* | | Fix up typos and correct sql queries | Erik Johnston | 2014-08-14 | 6 | -44/+36 |
| | | |||||
* | | Update StreamStore | Erik Johnston | 2014-08-14 | 1 | -245/+36 |
| | | |||||
* | | Start fixing places that use the data store. | Erik Johnston | 2014-08-14 | 6 | -39/+33 |
| | | |||||
* | | Fix typo | Erik Johnston | 2014-08-14 | 1 | -1/+1 |
| | | |||||
* | | Rename _execute_query | Erik Johnston | 2014-08-14 | 4 | -4/+4 |
| | | |||||
* | | Fix up RoomMemberStore to work with the new schema. | Erik Johnston | 2014-08-14 | 3 | -97/+79 |
| | | |||||
* | | Actually encode dicts as json in the DB | Erik Johnston | 2014-08-14 | 2 | -3/+4 |
| | | |||||
* | | Change relative db paths to absolute paths in case we daemonize. | Erik Johnston | 2014-08-14 | 1 | -2/+9 |
| | | |||||
* | | Merge branch 'master' of github.com:matrix-org/synapse into sql_refactor | Erik Johnston | 2014-08-14 | 16 | -93/+124 |
|\| | | | | | | | | | Conflicts: synapse/storage/_base.py | ||||
| * | fix http client GET parameters; somehow missing named param. how could this ↵ | Matthew Hodgson | 2014-08-14 | 1 | -2/+2 |
| | | | | | | | | have ever worked!? | ||||
| * | fix whitespace | Matthew Hodgson | 2014-08-14 | 1 | -0/+1 |
| | | |||||
| * | An initial hack at storing presence state-change mtimes in database and ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 4 | -9/+39 |
| | | | | | | | | presenting age durations to clients/federation events | ||||
| * | Set datastore's .hs field in SQLBaseStore rather than in the toplevel ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 2 | -1/+1 |
| | | | | | | | | DataStore mixed-in result class | ||||
| * | when we're talking about backfilling data in federation, call it backfilling ↵ | Matthew Hodgson | 2014-08-13 | 5 | -41/+41 |
| | | | | | | | | - not pagination. | ||||
| * | Implement directory service federation by Federation Queries; avoid ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 2 | -27/+29 |
| | | | | | | | | local_only hack; add unit tests | ||||
| * | Add a HomeServer.parse_roomalias() to avoid having to ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 3 | -14/+12 |
| | | | | | | | | RoomAlias.from_sring(..., hs=hs) - similar to parse_userid() | ||||
* | | Make feedback table also store sender. | Erik Johnston | 2014-08-13 | 2 | -1/+3 |
| | | |||||
* | | Initial stab at refactoring the SQL tables, including rejigging some of the ↵ | Erik Johnston | 2014-08-13 | 6 | -261/+115 |
| | | | | | | | | storage layer. | ||||
* | | Convert im schema to a 'one' table structure | Erik Johnston | 2014-08-13 | 1 | -26/+31 |
|/ | |||||
* | Now that HS->HS Profile lookups use Federation Queries, we don't need the ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 2 | -10/+4 |
| | | | | 'local_only' antirecursion hack | ||||
* | Use new Federation Query API to implement HS->HS fetching of remote users' ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 1 | -25/+41 |
| | | | | profile information instead of (ab)using the client-side REST API | ||||
* | Define the concept of a 'federation Query'; creating API for making and ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 2 | -0/+75 |
| | | | | handling Queries on the Federation's increasingly-inaccurately-named ReplicationLayer | ||||
* | Update get_json()'s documentation to match the actual observed behaviour | Paul "LeoNerd" Evans | 2014-08-13 | 1 | -4/+3 |
| | |||||
* | Handle a potential race in the notifier when calling get_events_for which ↵ | Erik Johnston | 2014-08-13 | 1 | -3/+7 |
| | | | | resulted in an uncaught KeyError | ||||
* | Don't pass host_web_client flag to register_servlets, it needs to be a ↵ | Kegan Dougal | 2014-08-13 | 2 | -4/+2 |
| | | | | Resource not a RestServlet. | ||||
* | Merge branch 'master' of github.com:matrix-org/synapse | Kegan Dougal | 2014-08-13 | 3 | -22/+24 |
|\ | |||||
| * | Fix logging verbosity parsing code | Paul "LeoNerd" Evans | 2014-08-13 | 1 | -3/+2 |
| | | |||||
| * | Namespace all the Federation HTTP URLs to /matrix/federation/v1/... | Paul "LeoNerd" Evans | 2014-08-13 | 1 | -15/+18 |
| | | |||||
| * | Use strings instead of opaque magic-number constants for presence states; ↵ | Paul "LeoNerd" Evans | 2014-08-13 | 1 | -4/+4 |
| | | | | | | | | rename AWAY to UNAVAILABLE | ||||
* | | Merge branch 'master' of github.com:matrix-org/synapse | Kegan Dougal | 2014-08-13 | 1 | -3/+3 |
|\| | |||||
| * | verbose by default please | Matthew Hodgson | 2014-08-13 | 1 | -3/+3 |
| | | |||||
* | | Added a -w flag which will host the web client if specified. Currently this ↵ | Kegan Dougal | 2014-08-13 | 5 | -48/+65 |
|/ | | | | just delegates to the webclient RestServlet. | ||||
* | Return the room_alias when GETing public rooms. | Kegan Dougal | 2014-08-13 | 1 | -2/+5 |
| | |||||
* | add in whitespace after copyright statements to improve legibility | Matthew Hodgson | 2014-08-13 | 75 | -1/+75 |
| | |||||
* | actually register the login servlet (uncommitted code thinko?) | Matthew Hodgson | 2014-08-13 | 1 | -3/+2 |
| | |||||
* | Just say yes to OPTIONS requests, since we want to turn on CORS headers for ↵ | Erik Johnston | 2014-08-12 | 1 | -0/+5 |
| | | | | all paths | ||||
* | Reference Matrix Home Server | matrix.org | 2014-08-12 | 83 | -0/+11941 |