summary refs log tree commit diff
Commit message (Expand)AuthorAgeFilesLines
* Update changelog v0.19.0-rc2Erik Johnston2017-02-022-1/+7
* Merge branch 'develop' of github.com:matrix-org/synapse into release-v0.19.0Erik Johnston2017-02-023-5/+57
|\
| * Merge pull request #1872 from matrix-org/erikj/key_changesErik Johnston2017-02-013-5/+57
| |\
| | * Doc argsErik Johnston2017-02-012-0/+11
| | * CommentErik Johnston2017-02-011-0/+3
| | * Include newly joined users in /keys/changes APIErik Johnston2017-02-013-5/+43
| |/
* | Update changelog v0.19.0-rc1Erik Johnston2017-02-021-1/+1
* | Bump version and changelogErik Johnston2017-02-022-1/+49
|/
* Merge pull request #1871 from matrix-org/erikj/ratelimit_401Erik Johnston2017-02-012-4/+6
|\
| * Correctly raise exceptions for ratelimitng. Ratelimit on 401Erik Johnston2017-02-012-4/+6
|/
* Wake sync up for device changesErik Johnston2017-02-011-1/+2
* Merge pull request #1869 from matrix-org/erikj/device_list_streamErik Johnston2017-02-012-0/+65
|\
| * CommentErik Johnston2017-02-011-1/+1
| * CommentErik Johnston2017-02-011-1/+12
| * Implement /keys/changesErik Johnston2017-02-012-0/+54
* | Merge pull request #1870 from matrix-org/erikj/cache_get_all_new_eventsErik Johnston2017-02-011-0/+2
|\ \
| * | Add a small cache get_all_new_eventsErik Johnston2017-02-011-0/+2
* | | Merge pull request #1868 from matrix-org/erikj/replication_cacheErik Johnston2017-02-015-84/+5
|\ \ \
| * | | Remote membership tests for replicationErik Johnston2017-01-311-43/+0
| * | | Only invalidate membership caches based on the cache streamErik Johnston2017-01-314-41/+5
* | | | Add m.room.member type to queryErik Johnston2017-02-011-1/+1
* | | | Merge pull request #1867 from matrix-org/erikj/member_indexErik Johnston2017-02-013-1/+26
|\ \ \ \ | |_|/ / |/| | |
| * | | Add an index to make membership queries fasterErik Johnston2017-01-313-1/+26
| |/ /
* | / Up get_latest_event_ids_in_room cacheErik Johnston2017-02-011-1/+1
| |/ |/|
* | Merge pull request #1866 from matrix-org/erikj/device_list_fixesErik Johnston2017-02-012-2/+18
|\ \ | |/ |/|
| * Remove explicit < 400 check as apparently this is confusingErik Johnston2017-01-311-3/+1
| * CommentErik Johnston2017-01-311-0/+2
| * CommentErik Johnston2017-01-311-0/+4
| * Better handle 404 response for federation /send/Erik Johnston2017-01-312-2/+14
* | Merge pull request #1864 from matrix-org/erikj/device_list_fixesErik Johnston2017-01-311-8/+26
|\|
| * Fix deletion of old sent devices correctlyErik Johnston2017-01-311-5/+17
| * Only fetch with row ts and count > 1Erik Johnston2017-01-311-1/+2
| * Fix clearing out old device list outbound pokesErik Johnston2017-01-311-2/+7
* | Merge pull request #1862 from matrix-org/erikj/presence_updateErik Johnston2017-01-312-5/+9
|\ \
| * | Stream cache invalidations for room membership storage functionsErik Johnston2017-01-301-2/+6
| * | Use DB cache of joined users for presenceErik Johnston2017-01-301-3/+3
* | | Merge pull request #1861 from matrix-org/erikj/device_list_fixesErik Johnston2017-01-306-25/+63
|\ \ \ | | |/ | |/|
| * | Don't have such a large cacheErik Johnston2017-01-301-1/+1
| * | Fix unit testsErik Johnston2017-01-303-7/+15
| * | Noop device key changes if they're the sameErik Johnston2017-01-303-15/+45
| * | Fix queryErik Johnston2017-01-301-1/+1
| |/
| * Use get_users_in_room and declare it iterableErik Johnston2017-01-302-2/+2
|/
* Merge pull request #1857 from matrix-org/erikj/device_list_streamErik Johnston2017-01-3027-120/+1032
|\
| * Rename funcErik Johnston2017-01-302-2/+2
| * Remove debug loggingErik Johnston2017-01-301-1/+0
| * Clear out old destination pokes.Erik Johnston2017-01-301-0/+42
| * Always use the latest stream_id, sent or unsentErik Johnston2017-01-301-4/+4
| * Add ts column to device_lists_outbound_pokesErik Johnston2017-01-272-1/+5
| * Hook device list updates to replicationErik Johnston2017-01-277-29/+159
| * CommentErik Johnston2017-01-271-0/+2
| * CommentErik Johnston2017-01-271-0/+2
| * SQL param orderingErik Johnston2017-01-271-1/+1
| * User if rather than forErik Johnston2017-01-271-1/+4
| * Better nameErik Johnston2017-01-272-2/+4
| * Remove unused paramErik Johnston2017-01-271-2/+1
| * Fix unit testsErik Johnston2017-01-261-0/+17
| * Fix on sqlite: use left rather than outer joinErik Johnston2017-01-261-3/+3
| * Handle users leaving roomsErik Johnston2017-01-262-1/+24
| * Add commentsErik Johnston2017-01-264-7/+61
| * Implement device key caching over federationErik Johnston2017-01-2613-57/+381
| * Fix up sending of m.device_list_update edusErik Johnston2017-01-253-80/+82
| * Add basic implementation of local device list changesErik Johnston2017-01-2514-39/+348
* | Merge pull request #1852 from matrix-org/paul/issue-1382Paul Evans2017-01-251-2/+4
|\ \ | |/ |/|
| * Don't clobber a displayname or avatar_url if provided by an m.room.member eventPaul "LeoNerd" Evans2017-01-241-2/+4
|/
* Merge branch 'erikj/current_state_fix' into developErik Johnston2017-01-231-1/+1
|\
| * TypoErik Johnston2017-01-231-1/+1
* | Merge pull request #1840 from matrix-org/erikj/current_state_fixErik Johnston2017-01-235-182/+163
|\|
| * Refactor to calculate state delta outside transactionErik Johnston2017-01-231-87/+118
| * CommentsErik Johnston2017-01-201-8/+19
| * Insert delta of current_state_events to be more efficientErik Johnston2017-01-205-119/+58
* | Merge pull request #1836 from matrix-org/erikj/current_state_fixErik Johnston2017-01-205-201/+217
|\|
| * SpellingErik Johnston2017-01-201-1/+1
| * Update all call sites after renameErik Johnston2017-01-201-1/+1
| * CommentsErik Johnston2017-01-201-0/+11
| * Calculate the forward extremeties onceErik Johnston2017-01-202-126/+92
| * Derive current_state_events from state groupsErik Johnston2017-01-204-99/+138
* | Merge pull request #1837 from matrix-org/rav/fix_purge_media_docRichard van der Hoff2017-01-201-5/+3
|\ \
| * | fix doc for purge_media_cacheRichard van der Hoff2017-01-201-5/+3
|/ /
* | Merge pull request #1835 from matrix-org/erikj/fix_workersErik Johnston2017-01-201-0/+10
|\|
| * Make worker listener config backwards compatErik Johnston2017-01-201-0/+10
* | Merge pull request #1832 from xsteadfastx/xsteadfastx/turn-username-passwordDavid Baker2017-01-192-10/+25
|\ \ | |/ |/|
| * Added default config for turn username and passwordMarvin Steadfast2017-01-191-0/+5
| * Added username and password for turn serverMarvin Steadfast2017-01-192-10/+20
|/
* Merge pull request #1828 from matrix-org/erikj/iterable_cache_sizeErik Johnston2017-01-181-0/+2
|\
| * Update LruCache size estimate on clearErik Johnston2017-01-181-0/+2
* | Merge pull request #1811 from aperezdc/unhardcode-riot-urlsDavid Baker2017-01-182-6/+21
|\ \
| * | Allow configuring the Riot URL used in notification emailsAdrian Perez de Castro2017-01-132-6/+21
* | | Merge pull request #1827 from matrix-org/dbkr/email_case_insensitiveDavid Baker2017-01-182-1/+12
|\ \ \ | |_|/ |/| |
| * | Lowercase all email addresses before querying dbDavid Baker2017-01-182-1/+12
|/ /
* | Merge pull request #1823 from matrix-org/erikj/load_events_logsErik Johnston2017-01-181-2/+2
|\ \
| * | Lower loading events log to DEBUGErik Johnston2017-01-171-2/+2
* | | Merge pull request #1824 from matrix-org/erikj/retry_host_logErik Johnston2017-01-181-1/+1
|\ \ \
| * | | Lower the not retrying host log line to debugErik Johnston2017-01-171-1/+1
| |/ /
* | | Merge pull request #1822 from matrix-org/erikj/statE_loggingErik Johnston2017-01-183-6/+6
|\ \ \
| * | | Change resolve_state_groups call site logging to DEBUGErik Johnston2017-01-173-6/+6
| |/ /
* | | Merge pull request #1821 from matrix-org/erikj/cache_metrics_string_internErik Johnston2017-01-181-3/+8
|\ \ \
| * | | Measure metrics of string_cacheErik Johnston2017-01-171-3/+8
| |/ /
* | | Merge pull request #1818 from matrix-org/erikj/state_auth_splitout_splitErik Johnston2017-01-188-76/+249
|\ \ \
| * | | PEP8Erik Johnston2017-01-171-1/+1
| * | | Only construct sets when necessaryMark Haines2017-01-171-14/+19
| * | | Use better namesErik Johnston2017-01-171-9/+7
| * | | Use better variable nameErik Johnston2017-01-171-3/+3
| * | | Correctly handle case of rejected events in state resErik Johnston2017-01-171-10/+16
| * | | Check event is in state_mapErik Johnston2017-01-171-2/+7
| * | | Fix couple of federation state bugsErik Johnston2017-01-172-3/+5
| * | | Optimise state resolutionErik Johnston2017-01-177-72/+229
* | | | Merge pull request #1820 from matrix-org/erikj/push_toolsErik Johnston2017-01-171-1/+1
|\ \ \ \ | |_|/ / |/| | |
| * | | Get state at event rather than for room in pushErik Johnston2017-01-171-1/+1
* | | | Fix typo in return typeErik Johnston2017-01-171-3/+2
|/ / /
* | | Merge pull request #1812 from matrix-org/erikj/state_auth_splitout_splitErik Johnston2017-01-171-138/+140
|\| |
| * | Put staticmethods at module levelErik Johnston2017-01-161-123/+121
| * | Split out static state methods from StateHandlerErik Johnston2017-01-131-70/+74
* | | Merge pull request #1815 from matrix-org/erikj/iter_cache_sizeErik Johnston2017-01-1712-85/+308
|\ \ \
| * | | Tidy up testErik Johnston2017-01-171-12/+12
| * | | Rename and comment tree_to_leaves_iteratorErik Johnston2017-01-172-5/+8
| * | | Remove needless call to evict()Erik Johnston2017-01-171-1/+0
| * | | Increase state_group_cache_sizeErik Johnston2017-01-171-1/+1
| * | | Speed up cache size calculationErik Johnston2017-01-177-62/+148
| * | | Add ExpiringCache testsErik Johnston2017-01-161-0/+84
| * | | Use OrderedDict in ExpiringCacheErik Johnston2017-01-161-10/+4
| * | | Up cache max entries for stateErik Johnston2017-01-163-3/+3
| * | | Add support for 'iterable' to ExpiringCacheErik Johnston2017-01-162-10/+22
| * | | Increase cache size limitErik Johnston2017-01-162-2/+2
| * | | Optionally measure size of cache by sum of length of valuesErik Johnston2017-01-135-21/+66
|/ / /
* | | Merge pull request #1810 from matrix-org/erikj/state_auth_splitout_splitErik Johnston2017-01-132-571/+649
|\| |
| * | Remove unused functionErik Johnston2017-01-131-3/+0
| * | Split event auth code into seperate moduleErik Johnston2017-01-132-645/+650
| * | Split out static auth methods from Auth objectErik Johnston2017-01-101-419/+495
* | | Merge pull request #1793 from matrix-org/erikj/change_device_inbox_indexErik Johnston2017-01-133-3/+55
|\ \ \ | |_|/ |/| |
| * | Add commentErik Johnston2017-01-131-0/+1
| * | Explicitly close the cursorErik Johnston2017-01-101-0/+1
| * | Don't disable autocommitErik Johnston2017-01-101-8/+4
| * | Change device_inbox stream index to include userErik Johnston2017-01-103-3/+57
* | | Merge pull request #1795 from matrix-org/erikj/port_defaultsErik Johnston2017-01-139-84/+29
|\ \ \
| * | | Pop bind_addressErik Johnston2017-01-101-1/+1
| * | | Restore default bind addressErik Johnston2017-01-109-84/+29
| | |/ | |/|
* | | README.rst: fix formattingRichard van der Hoff2017-01-131-0/+1
* | | Merge pull request #1803 from matrix-org/erikj/swallow_errorsErik Johnston2017-01-131-1/+5
|\ \ \
| * | | Fix spurious Unhandled Error log linesErik Johnston2017-01-121-1/+5
|/ / /
* | | Merge pull request #1802 from matrix-org/erikj/remove_debug_deferredsErik Johnston2017-01-122-79/+0
|\ \ \
| * | | Remove full_twisted_stacktraces optionErik Johnston2017-01-122-79/+0
|/ / /
* | | Add missing None checkErik Johnston2017-01-111-5/+6
* | | credit patrik properlyMatthew Hodgson2017-01-101-0/+1
|/ /
* | Remove spurious for..else..Erik Johnston2017-01-101-11/+0
* | Merge pull request #1792 from matrix-org/erikj/limit_cache_prefill_deviceErik Johnston2017-01-102-3/+6
|\ \
| * | Limit number of entries to prefill from cacheErik Johnston2017-01-102-3/+6
| |/
* | Merge pull request #1790 from matrix-org/erikj/linearizerErik Johnston2017-01-101-2/+5
|\ \
| * | Add paranoia exception catch in LinearizerErik Johnston2017-01-101-2/+5
| |/
* | Merge pull request #1791 from matrix-org/markjh/file_loggingMark Haines2017-01-103-0/+11
|\ \
| * | Log which files we saved attachments to in the media_repositoryMark Haines2017-01-103-0/+11
|/ /
* | Merge pull request #1789 from matrix-org/erikj/decouple_presenceErik Johnston2017-01-101-1/+3
|\ \
| * | CommentErik Johnston2017-01-101-0/+2
| * | Don't block messages sending on bumping presenceErik Johnston2017-01-101-1/+1
| |/
* | Merge pull request #1787 from matrix-org/erikj/linearize_memberErik Johnston2017-01-104-18/+38
|\ \
| * | Linearize updates to membership via PUT /state/Erik Johnston2017-01-094-18/+38
| |/
* | Merge pull request #1786 from matrix-org/erikj/linearizer_nameErik Johnston2017-01-104-5/+5
|\ \ | |/ |/|
| * Name linearizer's for better logsErik Johnston2017-01-094-5/+5
|/
* Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2017-01-092-1/+12
|\
| * Bump version and changelog v0.18.7Erik Johnston2017-01-092-1/+12
* | gah, fix mangled merge of 0.18.7 into developMatthew Hodgson2017-01-071-1/+1
* | Merge branch 'release-v0.18.7' into developMatthew2017-01-073-21/+31
|\|
| * bump changelog & version v0.18.7-rc2Matthew2017-01-072-1/+9
| * do the discard check in the right place to avoid grabbing dependent eventsMatthew2017-01-071-20/+20
| * changelogMatthew Hodgson2017-01-071-0/+2
* | Merge branch 'release-v0.18.7' into developMatthew Hodgson2017-01-074-3/+33
|\|
| * Discard PDUs from invalid origins due to #1753 in 0.18.[56] v0.18.7-rc1Matthew2017-01-071-1/+23
| * oops, this should have been rc1Matthew Hodgson2017-01-072-3/+4
| * move logging to right placeMatthew Hodgson2017-01-071-1/+1
| * bump versionMatthew2017-01-061-1/+1
| * update changelogMatthew2017-01-061-0/+7
* | Merge branch 'release-v0.18.6' into developMatthew Hodgson2017-01-070-0/+0
|\ \
| * | Revert "fix typo breaking the fix to #1753"Matthew2017-01-061-1/+1
| |/
| * fix typo breaking the fix to #1753Matthew2017-01-061-1/+1
* | Merge branch 'release-v0.18.6' into developMark Haines2017-01-063-5/+14
|\|
| * Bump version and changelog v0.18.6Mark Haines2017-01-062-1/+8
| * Merge pull request #1772 from matrix-org/markjh/fix_guest_access_checkMark Haines2017-01-061-4/+6
| |\
| | * handlers/room_member: fix guest access check when joining roomsPatrik Oldsberg2017-01-061-4/+6
| |/
* | Merge branch 'release-v0.18.6' into developMatthew Hodgson2017-01-057-4/+25
|\|
| * Fix flake8 and update changelog v0.18.6-rc3Mark Haines2017-01-053-6/+6
| * Merge pull request #1767 from matrix-org/matthew/resolve_state_group_loggingMatthew Hodgson2017-01-055-3/+9
| |\
| | * Fix caseMatthew Hodgson2017-01-051-1/+1
| | * add logging for all the places we call resolve_state_groups. my kingdom for a...Matthew Hodgson2017-01-053-0/+6
| | * fix annoying typosMatthew Hodgson2017-01-052-3/+3
| * | Bump version and changelog to v0.18.6-rc3Mark Haines2017-01-052-1/+16
| |/
* | Merge branch 'release-v0.18.6' into developMatthew Hodgson2017-01-055-8/+47
|\|
| * Merge pull request #1766 from matrix-org/markjh/linear_loggingMatthew Hodgson2017-01-052-2/+13
| |\
| | * More logging for the linearizer and for get_eventsMark Haines2017-01-052-2/+13
| |/
| * Merge pull request #1765 from matrix-org/markjh/timeout_get_missing_eventsMark Haines2017-01-053-3/+27
| |\
| | * fix commentMatthew Hodgson2017-01-051-1/+17
| | * limit total timeout for get_missing_events to 10sMatthew Hodgson2017-01-053-3/+11
| |/
| * Merge pull request #1764 from matrix-org/markjh/fix_send_pduMark Haines2017-01-053-0/+25
| |\
| | * Only send events that originate on this server.Mark Haines2017-01-053-0/+25
| |/
| * Merge pull request #1758 from matrix-org/markjh/fix_ban_propagationMark Haines2017-01-041-6/+9
| |\
| | * Get the destinations from the state from before the eventMark Haines2017-01-041-8/+9
| | * Send ALL membership events to the server that was affected.Mark Haines2017-01-041-3/+5
| |/
* | Merge pull request #1744 from matrix-org/matthew/timeout_get_missing_eventsMark Haines2017-01-053-3/+27
|\ \
| * | fix commentMatthew Hodgson2017-01-051-1/+17
| * | limit total timeout for get_missing_events to 10sMatthew Hodgson2016-12-313-3/+11
|/ /
* | Merge branch 'release-v0.18.6' into developMatthew Hodgson2016-12-315-70/+25
|\|
| * Bump version and changelog v0.18.6-rc2Mark Haines2016-12-302-1/+11
| * Merge pull request #1736 from matrix-org/markjh/linearizer_loggingMark Haines2016-12-302-0/+14
| |\
| | * s/aquire/acquire/gMark Haines2016-12-302-3/+3
| | * Add more useful logging when we block fetching eventsMark Haines2016-12-302-0/+14
| |/
| * Merge pull request #1734 from matrix-org/markjh/fix_get_missingMark Haines2016-12-301-69/+0
| |\
| | * Remove fallback from get_missing_events.Mark Haines2016-12-301-69/+0
| |/
* | Merge remote-tracking branch 'origin/release-v0.18.6' into developMark Haines2016-12-301-3/+13
|\|
| * Merge pull request #1731 from matrix-org/markjh/logging-memleakMark Haines2016-12-301-3/+13
| |\
| | * Use the new twisted logging framework.Mark Haines2016-12-301-3/+13
| |/
* | Merge branch 'release-v0.18.6' into developMark Haines2016-12-294-8/+78
|\|
| * Bump changelog and version v0.18.6-rc1Mark Haines2016-12-292-1/+8
| * Merge pull request #1725 from matrix-org/erikj/timeout_connMark Haines2016-12-292-7/+70
| |\
| | * Manually abort the underlying TLS connection.Mark Haines2016-12-291-2/+10
| | * Respect long_retries param and default to offErik Johnston2016-12-291-2/+2
| | * Spelling and commentsErik Johnston2016-12-291-4/+6
| | * Clean upErik Johnston2016-12-292-7/+4
| | * Wrap connections in an N minute timeout to ensure they get reaped correctlyErik Johnston2016-12-292-5/+61
* | | Fix another comment typoDavid Baker2016-12-211-1/+1
* | | Merge pull request #1714 from matrix-org/dbkr/delete_threepidDavid Baker2016-12-213-1/+57
|\ \ \
| * | | Add /account/3pid/delete endpointDavid Baker2016-12-203-1/+57
|/ / /
* | | Merge pull request #1712 from kyrias/fix-bind-address-noneMatthew Hodgson2016-12-208-16/+16
|\ \ \
| * | | Fix check for bind_addressJohannes Löthberg2016-12-208-16/+16
|/ / /
* | | Merge pull request #1711 from matrix-org/matthew/utf8-password-changeMatthew Hodgson2016-12-201-2/+2
|\ \ \
| * | | fix ability to change password to a non-ascii oneMatthew Hodgson2016-12-181-2/+2
* | | | Merge pull request #1709 from kyrias/bind_addressesMatthew Hodgson2016-12-1910-176/+304
|\ \ \ \
| * | | | Add IPv6 comment to default configJohannes Löthberg2016-12-181-0/+4
| * | | | Update README to use `bind_addresses`Johannes Löthberg2016-12-181-1/+1
| * | | | Make default homeserver config use bind_addressesJohannes Löthberg2016-12-181-4/+5
| * | | | Add support for specifying multiple bind addressesJohannes Löthberg2016-12-188-171/+294
| |/ / /
* | | | Merge pull request #1696 from kyrias/ipv6Matthew Hodgson2016-12-193-24/+23
|\ \ \ \ | |/ / / |/| | |
| * | | Bump twisted dependencyJohannes Löthberg2016-12-181-1/+1
| * | | Remove spurious newlineJohannes Löthberg2016-12-121-1/+0
| * | | Fixup for #1689 and #1690Johannes Löthberg2016-12-122-8/+13
| * | | IPv6 support for endpoint.pyGlyph2016-12-111-4/+4
| * | | IPv6 support for client.pyGlyph2016-12-111-16/+11
* | | | Cache network room list queries.Erik Johnston2016-12-161-3/+4
| |_|/ |/| |
* | | Merge branch 'release-v0.18.5' of github.com:matrix-org/synapse v0.18.5Erik Johnston2016-12-16105-1213/+2917
|\ \ \ | | |/ | |/|
| * | Bump version and changelogErik Johnston2016-12-162-1/+10
| * | Merge pull request #1704 from matrix-org/rav/log_todevice_syncsRichard van der Hoff2016-12-152-5/+10
| |\ \
| | * | Add some logging for syncing to_device eventsRichard van der Hoff2016-12-152-5/+10
| |/ /
| * | Merge pull request #1698 from matrix-org/erikj/room_listErik Johnston2016-12-151-2/+4
| |\ \
| | * \ Merge branch 'develop' of github.com:matrix-org/synapse into erikj/room_listErik Johnston2016-12-132-1/+35
| | |\ \
| | * | | Fix caching on public room listErik Johnston2016-12-131-2/+4
| * | | | Merge pull request #1702 from manuroe/mac_install_updateErik Johnston2016-12-151-0/+1
| |\ \ \ \
| | * | | | Update prerequisites instructions on Mac OSmanuroe2016-12-151-0/+1
| |/ / / /
| * | | | Merge pull request #1700 from matrix-org/erikj/backfill_filterErik Johnston2016-12-151-2/+5
| |\ \ \ \
| | * | | | CommentErik Johnston2016-12-141-0/+2
| | * | | | Fix /backfill returning events it shouldn'tErik Johnston2016-12-141-2/+3
| * | | | | Merge pull request #1701 from mbachry/fix-preview-crashErik Johnston2016-12-152-1/+54
| |\ \ \ \ \ | | |/ / / / | |/| | | |
| | * | | | Fix crash in url preview when html tag has no textMarcin Bachry2016-12-142-1/+54
| |/ / / /
| * | / / Fixup membership queryErik Johnston2016-12-141-2/+2
| | |/ / | |/| |